def add_coupling_plots( report: reporting.Report, trials: typing.List[dict] ): """ Generates coupling report data from the analyzed coupling data and the individual simulation trial results :param report: Grouped coupling data from the grouped simulation results :param trials: Simulation results for each trial run by the group """ distribution_traces = [] population_traces = [] index = 0 for trial in trials: trial_data = reader.trial(trial['id'], paths.results()) index += 1 coupling_data = trial_data['couplings'] distribution_traces.append(dict( x=coupling_data['distribution_profile']['x'], y=coupling_data['distribution_profile']['y'], type='scatter', mode='lines', name='{}'.format(index) )) population_traces.append(dict( x=coupling_data['population'], type='box', name='{}'.format(index), boxpoints=False )) report.add_plotly( data=distribution_traces, layout=plotting.create_layout( title='Coupling Length Trial Distributions', x_label='Expectation Value (au)', y_label='Coupling Length (m)' ) ) report.add_plotly( data=population_traces, layout=plotting.create_layout( title='Coupling Length Trials', x_label='Coupling Length (m)', y_label='Trial Index (#)' ) )
def load( group_ids: list = None, trial_ids: list = None, row_filter: typing.Callable = None ): """ :param group_ids: :param trial_ids: :param row_filter: :return: """ if not group_ids: group_ids = [] groups = [reader.group(gid) for gid in group_ids] if not trial_ids: trial_ids = [] trials = [reader.trial(tid) for tid in trial_ids] for g in groups: trials += g['trials'] df = [] for trial in trials: df.append(to_data_entry(trial)) trial['short_id'] = df[-1]['short_id'] df = pd.DataFrame(df).sort_values( by=['coupling_length', 'gait_index', 'duty_cycle'] ) if row_filter is not None: df['keep'] = df.apply(row_filter, axis=1) df = df[df.keep] df.drop('keep', 1) keep_trial_ids = df['id'].tolist() keep_trials = [] for trial in trials: if trial['id'] in keep_trial_ids: keep_trials.append(trial) trials = keep_trials df['order'] = np.arange(0, df.shape[0], 1) df['relative_uncertainty'] = df.uncertainty / df.coupling_length return dict( trials=trials, groups=groups, df=df )
from tracksim import reader as tk_reader import cauldron as cd # TRIAL_ID = 'G2-walk_BEB-515-2009-1-S-21_v0_st9_et21' TRIAL_ID = 'G2-walk_BEB-500-2014-1-S-1_v0_st9point5_et21' # TRIAL_ID = 'G2-walk_BEB-500-2014-1-S-4_v0_full' # TRIAL_ID = 'G2-walk2_BEB-500-2014-1-S-1_v0_st9point5_et21' cd.shared.trial_id = TRIAL_ID cd.shared.trial = tk_reader.trial(TRIAL_ID)