def main(argv): if len(argv) < 2: print HELP_MESSAGE return file_template = DIRECTORY + FILENAME system, planner = argv[:2] data = defaultdict(list) problems = [] configurations = [] for _, p, c, d in (read_pickle(file_template%(system, planner, date)) for date in argv[2:]): for x in p: if x not in problems: problems.append(x) for x in c: if x not in configurations: configurations.append(x) for k, v in d.items(): data[k] += v if CONVERT_FAILURES: convert_failures(data) data_stats = data_statistics(data) if HISTOGRAMS: for i, problem in enumerate(problems): for j, configuration in enumerate(configurations): histogram('problem%d-%d'%(i, j), 'runtime', map(attrgetter('time'), data[(problem, configuration)])) # TODO - use problem and configuration names print for i, configuration in enumerate(configurations): print i, str_object(configuration) print SEPARATOR for problem in problems: # TODO - print problem dependent sample time here print problem for i, configuration in enumerate(configurations): if (problem, configuration) not in data_stats: continue trials, percent_success, result = data_stats[(problem, configuration)] cost_median, cost_mad = np.nan, np.nan # TODO - put these in the clean itself if result.plan is not None: cost_median, cost_mad = result.plan.cost.median, result.plan.cost.mad if not PRINT_TABLE: #print '{}) {} | {}% | {} | {} | {}'.format(i, trials, int(100*percent_success), clean(result.time.median), # clean(result.time.mad), clean(result.state_space.median)) print '{}) {} | {}% | {} ({}) | {} ({}) | {} ({})'.format(i, trials, clean(100*percent_success), clean(result.time.mean), clean(result.time.std), clean(result.time.median), clean(result.time.mad), clean(result.state_space.median), clean(result.state_space.mad)) else: print '{} & {} ({}) & {} ({}) & {} ({})'.format(clean(100*percent_success), clean(result.time.median), clean(result.time.mad), clean(cost_median), clean(cost_mad), clean(result.expansion.median), clean(result.expansion.mad)) + \ (' &' if i != len(configurations) - 1 else ' \\\\') print
def load_custom_ir(robot): filename = FILENAME%get_ir_hash(robot) ir_database = read_pickle(filename) if DEBUG: print 'Loaded', filename return ir_database