class PiReport(Report): def get_text(self): lines = [] for run_id, run in self.props.items(): lines.append('%s %s' % (run['time'], run['diff'])) return '\n'.join(lines) exp = Experiment(EXPPATH) exp.add_resource('PARSER', 'pi-parser-ext.py', 'pi-parser.py') exp.add_resource('CALC', 'calculate.py', 'calculate.py') for rounds in [1, 5, 10, 50, 100, 500, 1000, 5000, 10000]: run = exp.add_run() run.require_resource('PARSER') run.require_resource('CALC') run.add_command('calc-pi', ['CALC', rounds], time_limit=10, mem_limit=1024) run.add_command('parse-pi', ['PARSER']) run.set_property('id', ['calc-%d' % rounds]) def good(run): return run['diff'] <= 0.01 exp.add_step(Step('report', Report(format='html', attributes=['pi', 'diff'], filter=good), exp.eval_dir, os.path.join(exp.eval_dir, 'report.html'))) exp.add_step(Step('plot', PiReport(), exp.eval_dir, os.path.join(exp.eval_dir, 'plot.dat'))) exp()
from lab.environments import LocalEnvironment from lab.experiment import Step from lab.reports import Report EXPNAME = 'simple-exp' EXPPATH = os.path.join('/tmp', EXPNAME) ENV = LocalEnvironment() # Create a new experiment. exp = Experiment(path=EXPPATH, environment=ENV) exp.add_resource('SIMPLE_PARSER', 'simple-parser.py', 'simple-parser.py') reportfile = os.path.join(exp.eval_dir, EXPNAME + '.html') run = exp.add_run() run.add_command('list-dir', ['ls', '-l']) # Every run has to have an id in the form of a list. run.set_property('id', ['current-dir']) run.require_resource('SIMPLE_PARSER') run.add_command('parse', ['SIMPLE_PARSER']) # Make a default report. exp.add_report(Report(attributes=['number_of_files', 'first_number']), outfile=reportfile) # Compress the experiment directory. exp.add_step(Step.zip_exp_dir(exp)) # Parse the commandline and run the specified steps. exp()