Skip to main content

Curifactory

Code style: black PyPI version Conda Version status tests Python versions License

Curifactory is a library and CLI tool designed to help organize and manage research experiments in python.

screenshot flow

Experiment management must fulfill several tasks, including experiment orchestration, parameterization, caching, reproducibility, reporting, and parallelization. Existing projects such as MLFlow, MetaFlow, Luigi, and Pachyderm support these tasks in several different ways and to various degrees. Curifactory provides a different opinion, with a heavier focus on supporting general research experiment workflows for individuals or small teams working primarily in python.

You can read more about these design principles in our paper in the SciPy 2022 proceedings.

Features

  • Adds a CLI layer on top of your codebase, a single entrypoint for running experiments
  • Automatic caching of intermediate data and lazy loading of stored objects
  • Jupyter notebook output for further exploration of an experiment run
  • Docker container output with copy of codebase, conda environment, full experiment run cache, and jupyter run notebook
  • HTML report output from each run with graphviz-rendered diagram of experiment
  • Easily report plots and values to HTML report
  • Configuration files are python scripts, allowing programmatic definition, parameter composition, and parameter inheritance
  • Output logs from every run
  • Run experiments directly from CLI or other python code, notebooks, etc.

Installation

pip install curifactory

Graphviz is required for certain features and can be installed through conda via:

conda install python-graphviz

Tab completion

For tab-completion in bash/zsh, install the argcomplete package (if using curifactory inside a conda environment, you'll need to install this in your system python.)

pip install argcomplete

To enable, you can either use argcomplete's global hook activate-global-python-argcomplete, which will enable tab complete on all argcomplete-enabled python packages (e.g. pytest), or you can add eval "$(register-python-argcomplete experiment)" to your shell's rc file. Curifactory can add this line for you automatically with:

curifactory completion [--bash|--zsh]  # use the shell flag appropriate

Once enabled, the experiment command will provide tab complete for experiment names, parameter names, and flags.

Requirements

OS: We primarily develop and test Curifactory on Linux, but it runs on Windows and MacOS as well.

Python: 3.9-3.11

Optional:

  • Conda/Mamba
  • Graphviz
  • Docker
  • Jupyter notebook/lab

Documentation

The documentation for the latest version of Curifactory can be found at: https://ornl.github.io/curifactory/stable/index.html.

Examples

Several small example can be found in the examples folder. examples/notebooks includes walkthroughs demonstrating usage of curifactory solely in Jupyter.

Citation

Please use the following BibTeX if citing this project:

@article{Martindale2023,
  doi = {10.21105/joss.05793},
  url = {https://doi.org/10.21105/joss.05793},
  year = {2023},
  publisher = {The Open Journal},
  volume = {8},
  number = {90},
  pages = {5793},
  author = {Nathan Martindale and Scott L. Stewart and Jason Hite and Mark B. Adams},
  title = {Curifactory: A research experiment manager},
  journal = {Journal of Open Source Software}
}

Similar Projects

Curifactory is one tool and one opinion among many, other projects that have similar goals and/or approaches:

Download files

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

Source Distribution

curifactory-0.20.3.tar.gz (128.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

curifactory-0.20.3-py3-none-any.whl (102.0 kB view details)

Uploaded Python 3

File details

Details for the file curifactory-0.20.3.tar.gz.

File metadata

  • Download URL: curifactory-0.20.3.tar.gz
  • Upload date:
  • Size: 128.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for curifactory-0.20.3.tar.gz
Algorithm Hash digest
SHA256 a338ce761e1f194e5b778add768b0a71bcb59cc7b17bfdd1aa6135fda59d1c5d
MD5 564d7360969ad49a98cd1e7e90b0873f
BLAKE2b-256 4794ab74fc303c853182395c68e43fa6b5809c70b97f2e4cb180e41243d78ba2

See more details on using hashes here.

File details

Details for the file curifactory-0.20.3-py3-none-any.whl.

File metadata

  • Download URL: curifactory-0.20.3-py3-none-any.whl
  • Upload date:
  • Size: 102.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for curifactory-0.20.3-py3-none-any.whl
Algorithm Hash digest
SHA256 874f42c9f9977e58222aff6f79f3ca4032d06125e7306626240294504ccf1be1
MD5 1194968bfab78a11996a1c7736756a03
BLAKE2b-256 952b8c73272a772196a077d67a4173de16afffeef177712c36a41e504eb7073e

See more details on using hashes here.

Release history Release notifications | RSS feed

0.20.4

2 files

This release

0.20.3 This release

2 files

0.20.2

2 files

0.20.1

2 files

0.20.0

2 files

0.19.0

2 files

0.18.0

2 files

0.17.1

2 files

0.17.0

2 files

0.16.1

2 files

0.16.0

2 files

0.15.1

2 files

0.15.0

2 files

0.14.2

2 files

0.14.1

2 files

0.14.0

2 files

0.13.2

2 files

0.13.1

2 files

0.13.0

2 files

0.12.0

2 files

0.11.1

2 files

0.11.0

2 files

0.10.1

2 files

0.10.0

2 files

0.9.3

2 files

0.9.2

2 files

0.9.1

2 files

0.9.0

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.0

2 files

0.6.3

2 files

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.1

2 files

0.5.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page