Quick IntroductionΒΆ
As a quick start a simple experiment with input and output parameters is show:
#!/usr/bin/env python
from versuchung.experiment import Experiment
from versuchung.types import String
from versuchung.files import File
class SimpleExperiment(Experiment):
inputs = {"input_key": String("default key"),
"input_value": String("default value")}
outputs = {"output_file": File("output")}
def run(self):
# Combine the input parameters
content = self.inputs.input_key.value \
+ ": " + self.inputs.input_value.value
# write the result to the output file
self.outputs.output_file.value = content + "\n"
if __name__ == "__main__":
import sys
experiment = SimpleExperiment()
dirname = experiment(sys.argv[1:])
print(dirname)
This experiment is put in a single python script file. It is a complete experiment and a runnable python script with a command line parser to override the default experiment input parameters.
Every experiment inherits from the
Experiment
class to gain the basic
structure for parameter handling and running the experiment. After
that the member variable
inputs
defines a
dict
of the input parameters. In this case two such input
parameters are defined "input_key"
and "input_value"
, which
are both of type String
and have a
specified default value. This default value is used if no argument is
given on the command line. The attribute
outputs
defines the
output parameter "output_file"
which is of type
File
with the filename "output"
. So
in the experiment output there will be a file called output.
The run()
method is the
heart of every experiment. It is called when all input parameters are
gathered and the experiment environment is set up. In this
SimpleExperiment
the input parameters are simply concatenated and
written to the output file. This SimpleExperiment
can be
instantiated without arguments. The resulting object is called with
the command line parameters to enable a command line interface.
Calling python experiment.py --help
gives:
Usage: experiment.py <options>
Options:
-h, --help show this help message and exit
-d BASE_DIR, --base-dir=BASE_DIR
Directory which is used for storing the experiment
data
-l, --list list all experiment results
-v, --verbose increase verbosity (specify multiple times for more)
--input_key=INPUT_KEY
(default: default key)
--input_value=INPUT_VALUE
(default: default value)
As you can see the two input parameters can be overwritten on the
command line. The experiment can be executed by python
experiment.py
and print on the console:
SimpleExperiment-aeb298601cdc582b1b0d8260195f6cfd
This is the versioned experiment result set. The hash at the end is
calculated from the metadata of the experiment (e.g. input parameter
values and the experiment version). In the current directory there was
a directory created with this name where the results are located. To
examine the experiment results and their metadata python
experiment.py -l
can be called:
+SimpleExperiment-aeb298601cdc582b1b0d8260195f6cfd
| {'date': '2012-01-14 09:46:13.445703',
| 'experiment-name': 'SimpleExperiment',
| 'experiment-version': 1,
| 'input_key': 'default key',
| 'input_value': 'default value'}
As you can see there is one result set in the current directory. All
key parameters for the experiment are stored within the metadata
file in the result directory. The output
file in this result
directory contains:
default key: default value