Skip to main content

The GitResultsManager Python module and scripts (resman) for keeping track of research results using Git.

Project description

GitResultsManager

Note: GitResultsManager does not profess to be remotely operable on any operating system besides Linux and Mac. Evidence of success on other OSs is appreciated.

Installing

One line global install:

git clone https://github.com/yosinski/GitResultsManager.git && \
cd GitResultsManager && \
sudo python setup.py install && \
sudo cp resman resman-td git-recreate /usr/local/bin/

Replace /usr/local/bin with another location on your path, if desired. If installing the Python packages in your home directory (perhaps using virtualenv), you should omit the first sudo, and if installing scripts in your home directory, skip the second.

Usage

GitResultsManager may be used in two ways:

  1. (recommended) Using the resman wrapper script to run programs in any language, or
  2. From within Python as a Python module.

(1) is more general, while (2) offers more control. The following examples are available in the examples directory.

Example of using resman wrapper script to run a C program:

First, we'll compile the demo-c program (from the examples directory) and run it without resman:

g++ -o demo-c demo-c.cc   # compile program first if necessary
./demo-c

Output:

Environment variable GIT_RESULTS_MANAGER_DIR is undefined. To demonstrate logging, run this instead as
    resman junk ./demo-c
This line is logged
This line is logged (stderr)
This line is logged
This line is logged (stderr)
This line is logged
This line is logged (stderr)

Notice that it complains it cannot find the GIT_RESULTS_MANAGER_DIR environment variable. This is how the program knows it is not being run from within resman. Now, try using resman to run it:

resman -r run-name ./demo-c

Output:

WARNING: GitResultsManager running in GIT_DISABLED mode: no git information saved! (Is /Users/jason/temp/examples in a git repo?)
  Logging directory: results/121030_183101_run-name
        Command run: ./demo-c
           Hostname: lapaz
  Working directory: /Users/jason/temp/examples
The current GIT_RESULTS_MANAGER_DIR is: results/121030_183101_run-name
This line is logged
This line is logged
This line is logged
This line is logged (stderr)
This line is logged (stderr)
This line is logged (stderr)
       Wall time:  0.024
  Processor time:  0.012

Notice how resman adds a few lines of information to the beginning and ending of the output? Looking at each line in order:

WARNING: GitResultsManager running in GIT_DISABLED mode: no git information saved! (Is /Users/jason/temp/examples in a git repo?)

Warning because we aren't running from within a git repository, removing most of the usefulness of GitResultsManager.

  Logging directory: results/121030_183101_run-name

The directory that was created for this run, in the format <datestamp>_<timestamp>_<name of run>

        Command run: ./demo-c

Which command you actually ran.

           Hostname: lapaz

The host this run was performed on (useful when running on clusters or multiple machines with non-identical configurations)

  Working directory: /Users/jason/temp/examples

The working directory. Next follows the actual output of the program, and then at the end...

       Wall time:  0.024
  Processor time:  0.012

resman notes how long the program took to execute in wall time and processor time.

Simple code change to use resman wrapper script in Python:

Import the os module:

import os

Check if we're running from within resman. If so, use the directory resman provides, else save output to the current directory:

try:
    savedir = os.environ['GIT_RESULTS_MANAGER_DIR']
except KeyError:
    savedir = '.'

# later in code, when saving plots / etc:

savefig(os.path.join(savedir, 'myplot.png'))

Example of using the GitResultsManager class within Python.

See examples/demo-GRM-module.py.

Development task list

To do

  1. Add settings override via ~/.config/gitresultsmanager_config.py or similar
  2. Documentation

Want to help? Pull requests are welcome!

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

gitresultsmanager-0.5.0.tar.gz (28.2 kB view details)

Uploaded Source

Built Distribution

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

gitresultsmanager-0.5.0-py3-none-any.whl (28.6 kB view details)

Uploaded Python 3

File details

Details for the file gitresultsmanager-0.5.0.tar.gz.

File metadata

  • Download URL: gitresultsmanager-0.5.0.tar.gz
  • Upload date:
  • Size: 28.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for gitresultsmanager-0.5.0.tar.gz
Algorithm Hash digest
SHA256 354468eedc924163db6214bfebe1070d4dbf37dcf34aa064acde7f71343fd9c0
MD5 fd47616f13a2e0c4551eb1e9101c0947
BLAKE2b-256 fd0b1d13089da9772482bce465a50b3f96fdbb45033bf94c49bd22de7a98f497

See more details on using hashes here.

File details

Details for the file gitresultsmanager-0.5.0-py3-none-any.whl.

File metadata

File hashes

Hashes for gitresultsmanager-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0c6a419f06f24409fc60d0e325e649e8883f12a94c1cff1f1885274011f8c3a4
MD5 0e1b45994a157107068e7e12f4db5b12
BLAKE2b-256 f19f96d2fe4049145274ae4b320247ee38f0f9d491dcda624919f8b867ffe050

See more details on using hashes here.

Supported by

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