Skip to main content

Runs python script in argument combinations and produces dataset of all results.

Project description

args_to_db - Data Generation Tool for Argument Optimisation

pip install args_to_db

You want to analyze a (python) script for different arguments/settings? - Argument optimization is becoming more and more important in many application areas. args_to_db is an attempt to generalize and simplify the process of running a programm in different modes or configurations and combining the resulting datasets to allow for further analysis.

When should I use args_to_db?

You have a programm which is highly dependent on parameters and arguments, for example a solver framework for linear system of equations. Different inputs vary performance of solving methods dramatically. So we want to optimize the solver and preonditioner used for a specific linear system of equations.

This is performed once and results in preferences which are then to be used automatically by the programm. args_to_db simplifies the process of argument variation and dataset generation.

How to use args_to_db to run a script?

Argument construction is made easy with the usage of arg, option, flag.

from args_to_db import arg, flag, option

py = arg('python')
# > py=[['python']]

script = arg('script.py')
# > py=[['script.py']]

data = option('--input', ['file1.csv', 'file2.csv'])
# > data=[['--input', 'file1.csv'],
#         ['--input', 'file2.csv']]

opt_flags = flag('-O') + flag('-r')
# > opt_flags=[[],
#              ['-r'],
#              ['-O'],
#              ['-O', '-r']]

log_flag = flag('--log', vary=False)
# > log_flag=[['--log']]

cmds = py + script + data + opt_flags + log_flag
# > cmds=[['python', 'script.py', '--input', 'file1.csv', '--log'],
#         ['python', 'script.py', '--input', 'file1.csv', '-r', '--log'],
#         ['python', 'script.py', '--input', 'file1.csv', '-O', '--log'],
#         ['python', 'script.py', '--input', 'file1.csv', '-O', '-r', '--log'],
#         ['python', 'script.py', '--input', 'file2.csv', '--log'],
#         ['python', 'script.py', '--input', 'file2.csv', '-r', '--log'],
#         ['python', 'script.py', '--input', 'file2.csv', '-O', '--log'],
#         ['python', 'script.py', '--input', 'file2.csv', '-O', '-r', '--log']]

The container objects are arrays of commands (which themselves are arrays again), they behave like normal python arrays except for the differnt usage of the + and += operator.

Such object or any other 2D command array may then be executed.

run(cmds, threads=4)
# runs all specified commands with upto 4 concurrent threads.

How to report (config specific) results of the scripts?

The values of interest on which we want to optimize need to be logged and combined. args_to_db makes this easy.

results = {'key': value}
write_results(__file__, args, results) 

This produces an output which is then later on combined with the others by the run(...) task.

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

args_to_db-0.1.3.tar.gz (20.9 kB view hashes)

Uploaded Source

Built Distribution

args_to_db-0.1.3-py3-none-any.whl (21.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