Skip to main content

A library for creating complex experimental pipelines

Project description

[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black) [![Worfklow](https://github.com/andrewyates/profane/workflows/pytest/badge.svg)](https://github.com/andrewyates/profane/actions) [![PyPI version fury.io](https://badge.fury.io/py/profane.svg)](https://pypi.python.org/pypi/profane/)

# Overview Profane is a library for creating complex experimental pipelines. Profane pipelines are based on two key ideas: 1. An experiment is a function of its configuration. In other words, an experiment should be deterministic given a set of experimental parameters (random seed, specific algorithms to run, etc). 2. An experiment is described as a DAG representing modules’ (nodes’) dependencies in which the state of a node is independent of its parent’s state. That is, a node’s operation is a function of its configuration and the configurations of its children. This means that a node may not modify the configuration (or state) of its children (or descendants).

These allow for the construction of a flexible pipeline with automatic caching. Each node’s configuration can be modified to change experimental parameters, and a node’s output can be safely cached in a path derived from its configuration and the configurations of its children. These nodes are called modules.

This library is heavily inspired by the excellent [sacred](https://sacred.readthedocs.io/en/stable/) library. Among other differences, profane imposes a specific structure on the pipeline and leverages this to allow profane modules to be dynamically configured (which would be similar to dynamic sacred ingredients). Profane was developed based on experiences using sacred with a heavily modified pipeline initialization step.

## Example The example/ directory contains a module graph similar to that used in Capreolus. Run it with the run.sh script.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

profane-0.2.4.tar.gz (15.4 kB view details)

Uploaded Source

Built Distribution

profane-0.2.4-py3-none-any.whl (21.2 kB view details)

Uploaded Python 3

File details

Details for the file profane-0.2.4.tar.gz.

File metadata

  • Download URL: profane-0.2.4.tar.gz
  • Upload date:
  • Size: 15.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/36.5.0.post20170921 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.6.9

File hashes

Hashes for profane-0.2.4.tar.gz
Algorithm Hash digest
SHA256 6aadc73177192606ea58b6fab3759693ce354798628ae7f91c0be36db0917bd0
MD5 456a9380dea478120a7f7911a96d5897
BLAKE2b-256 0104976bd25ec070f0758f3cae58adb7c98a698a2f541ab2ea7be54f94cc43bc

See more details on using hashes here.

File details

Details for the file profane-0.2.4-py3-none-any.whl.

File metadata

  • Download URL: profane-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 21.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/36.5.0.post20170921 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.6.9

File hashes

Hashes for profane-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 44eeafa775755a80e55293ccb6b20059145ed5dac00f91e21cb60e1c3b882eb9
MD5 f3dc414e025d2ee8a9b61e71361328a9
BLAKE2b-256 6c45d6570508dcd37da68ac59fbd4da69e611ad4015c07d1ad0b4fe003410bc5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page