Skip to main content

Python Computational Experiments

Project description

https://img.shields.io/pypi/v/pycomex.svg Documentation Status

PyComex - Python Computational Experiments

Microframework to improve the experience of running and managing records of computational experiments, such as machine learning and data science experiments, in Python.

Features

  • Automatically create (nested) folder structure for results of each run of an experiment

  • Simply attach metadata such as performance metrics to experiment object and they will be automatically stored as JSON file

  • Easily attach file artifacts such as matplotlib figures to experiment records

  • Log messages to stdout as well as permanently store into log file

Installation

Install stable version with pip

pip3 install pycomex

Or the most recent development version

git clone https://github.com/the16thpythonist/pycomex.git
cd pycomex ; pip3 install .

Quickstart

Each computational experiment has to be bundled as a standalone python module. Important experiment parameters are placed at the top. Actual execution of the experiment is placed within the Experiment context manager.

Upon entering the context, a new storage folder for each run of the experiment is created.

Storage of metadata, file artifacts and error handling is automatically managed on context exit.

"""
This doc string will be saved as the "description" meta data of the experiment records
"""
from pycomex.experiment import Experiment

# Experiment parameters can simply be defined as uppercase global variables.
# These are automatically detected and can possibly be overwritten in command
# line invocation
HELLO = 'hello '
WORLD = 'world!'

# Experiment context manager needs 3 positional arguments:
# - Path to an existing folder in which to store the results
# - A namespace name unique for each experiment
# - access to the local globals() dict
with Experiment('/tmp/results', 'example', globals()) as e:
    e.prepare() # important!

    # Internally saved into automatically created nested dict
    # {'strings': {'hello_world': '...'}}
    e['strings/hello_world'] = HELLO + WORLD

    # Alternative to "print". Message is printed to stdout as well as
    # recorded to log file
    e.info('some debug message')

    # Automatically saves text file artifact to the experiment record folder
    file_name = 'hello_world.txt'
    e.commit_raw(file_name, HELLO + WORLD)
    # e.commit_fig(file_name, fig)
    # e.commit_png(file_name, image)
    # ...

This example would create the following folder structure:

tmp
|- results
   |- example
      |- 000
         |+ experiment_log.txt
         |+ experiment_data.json
         |+ hello_world.txt

For more information and more interesting examples visit the Documentation: https://pycomex.readthedocs.io !

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

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

pycomex-0.1.0.tar.gz (5.4 kB view hashes)

Uploaded Source

Built Distribution

pycomex-0.1.0-py3-none-any.whl (7.3 kB view hashes)

Uploaded Python 3

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