def read_casu_logs(config_data, experiment_folder): list_casu_numbers = config_data['controllers']['domset']['casus'] result = { a_casu_number: casu_log.CASU_Log(a_casu_number, experiment_folder) for a_casu_number in list_casu_numbers } return result
def process_arena (output_path, config_filename, bee_visitation_writer, experiment_duration, casu_A_number, casu_B_number): casu_numbers = [min (casu_A_number, casu_B_number), max (casu_A_number, casu_B_number)] base_path = os.path.dirname (config_filename) # read logs casu_logs = { a_casu_number : casu_log.CASU_Log ( a_casu_number, os.path.join (base_path, 'data_infrared-test/beearena/') ) for a_casu_number in casu_numbers } zero_time = numpy.mean ([ a_casu_log.led_actuator [0, 0] for a_casu_log in casu_logs.values () ]) # compute infrared data build_bee_visitation_CSV_file ( bee_visitation_writer = bee_visitation_writer, experiment_duration = experiment_duration, casu_numbers = casu_numbers, casu_logs = casu_logs, zero_time = zero_time, ) # create plot plot_arena ( output_path = output_path, config_filename = config_filename, experiment_duration = experiment_duration, casu_numbers = casu_numbers, casu_logs = casu_logs, zero_time = zero_time, )
def read_casu_logs(config_data, experiment_folder): list_casu_numbers = [ a_casu_number for an_arena in config_data['arenas'] for a_casu_number in an_arena.itervalues() ] result = { a_casu_number: casu_log.CASU_Log( a_casu_number, os.path.join(experiment_folder, 'data_infrared-test/beearena/')) for a_casu_number in list_casu_numbers } return result
def __init__ (self, csv_row, same_colour_threshold, delta_frame): config_filename = csv_row [0] experiment_folder = os.path.dirname (config_filename) self.graph_name = csv_row [1] self.graph_layout = csv_row [2] self.run_number = int (csv_row [3]) with open (config_filename, 'r') as fd: self.config_data = yaml.safe_load (fd) self.list_casu_numbers = [ a_casu for an_arena in self.config_data ['arenas'] for a_casu in an_arena.itervalues ()] self.list_casu_numbers.sort () self.casu_video_data_column = dict ([ (a_casu, index) for index, a_casu in enumerate (self.list_casu_numbers)]) # self.video_data = None # self.casu_logs = None # def load_data (self, same_colour_threshold, delta_frame): # initialise video data features self.video_data = read_video_data (experiment_folder, same_colour_threshold = same_colour_threshold, delta_frame = delta_frame) # initialise casu log self.casu_logs = { a_casu_number : casu_log.CASU_Log ( a_casu_number, os.path.join ( experiment_folder, 'data_infrared-test/beearena/' ) ) for a_casu_number in self.list_casu_numbers } for a_casu_log in self.casu_logs.values (): a_casu_log.compute_activity ( start_index = 0, end_index = 50, offset = 500, moving_average_length = 61, )
def process_arena ( run_number, base_path, core_casu_number, leaf_casu_number, first_period_length, airflow_period_length, third_period_length, moving_average_length, sampling_length, sampling_delta, bee_where_about_writer): # read logs casu_logs = { a_casu_number : casu_log.CASU_Log (a_casu_number, os.path.join (base_path, 'data_airflow-test/beearena/')) for a_casu_number in [core_casu_number, leaf_casu_number] } casu_domset_logs = { a_casu_number : casu_domset_log.CASU_DOMSET_Log (a_casu_number, os.path.join (base_path, 'data_airflow-test/beearena/')) for a_casu_number in [core_casu_number, leaf_casu_number] } # compute activity (needed by bee where about) for a_casu_log in casu_logs.values (): a_casu_log.compute_activity ( start_index = 0, end_index = 50, offset = 500, moving_average_length = moving_average_length ) # create plot plot_arena ( run_number, core_casu_number, leaf_casu_number, first_period_length, airflow_period_length, third_period_length, casu_logs, casu_domset_logs ) # compute_bee_where_about ( run_number, casu_logs, first_period_length, airflow_period_length, third_period_length, sampling_length = sampling_length, sampling_delta = sampling_delta, writer = bee_where_about_writer)
def process_arena(run_number, core_casu_number, leaf_casu_number, base_path, moving_average_length, first_period_length, third_period_length, sampling_length, sampling_delta, bee_where_about_writer): # read logs casu_logs = [ casu_log.CASU_Log( a_casu_number, os.path.join(base_path, 'data_airflow-test/beearena/')) for a_casu_number in [core_casu_number, leaf_casu_number] ] for a_casu_log in casu_logs: a_casu_log.compute_activity( start_index=0, end_index=50, offset=500, moving_average_length=moving_average_length) plot_arena(run_number, core_casu_number, leaf_casu_number, casu_logs) core_casu_log, leaf_casu_log = casu_logs compute_bee_where_about(run_number, casu_logs, core_casu_log, first_period_length, third_period_length, sampling_length, sampling_delta, bee_where_about_writer)
def plot_arena (run_number, core_casu_number, leaf_casu_number, base_path): print ('[I] Creating plot for arena with core casu {} and leaf casu'.format (core_casu_number, leaf_casu_number)) casu_numbers = [core_casu_number, leaf_casu_number] casu_labels = ['core', 'leaf'] # read logs casu_logs = [ casu_log.CASU_Log (a_casu_number, os.path.join (base_path, 'data_airflow-test/beearena/')) for a_casu_number in casu_numbers ] core_casu_log, leaf_casu_log = casu_logs casu_domset_logs = [ casu_domset_log.CASU_DOMSET_Log (a_casu_number, os.path.join (base_path, 'data_airflow-test/beearena/')) for a_casu_number in casu_numbers ] all_logs = casu_logs + casu_domset_logs number_axes = 3 # create the figure margin_left, margin_right, margin_top, margin_bottom = 0.7, 0.1, 0.5, 0.4 inter_axes_distance = 0.2 axes_width, axes_height = 6, 1.8 figure_width = margin_left + axes_width + margin_right figure_height = margin_top + number_axes * axes_height + (number_axes - 1) * inter_axes_distance + margin_bottom figure = matplotlib.pyplot.figure (figsize = (figure_width, figure_height)) # create the axes list_axes = [ figure.add_axes ([ margin_left / figure_width, (margin_bottom + index * (axes_height + inter_axes_distance)) / figure_height, axes_width / figure_width, axes_height / figure_height]) for index in range (number_axes)] axes_temperature, axes_ir_raw, axes_activity = list_axes # setup axes axes_temperature.set_ylim (26, 38) axes_ir_raw.set_ylim (0, 30000) axes_activity.set_ylim (0, 1) min_time = min ([a_casu_log.min_time () for a_casu_log in all_logs]) max_time = min ([a_casu_log.max_time () for a_casu_log in all_logs]) axes_temperature.set_xlabel ('time (m:ss)', fontsize = 7) axes_temperature.set_ylabel (u'temperature (℃)', fontsize = 7) axes_ir_raw.set_ylabel ('infrared (a.u.)', fontsize = 7) axes_activity.set_ylabel ('sensor activity (a.u.)', fontsize = 7) for axa in list_axes: axa.set_xlim (min_time, max_time) ts = [t for t in range (int (min_time), int (max_time), 60)] axa.set_xticks (ts) axa.set_xticklabels ([datetime.datetime.fromtimestamp (t - ts [0]).strftime ('%M:%S') for t in ts]) for ata in [axa.xaxis, axa.yaxis]: for tick in ata.get_major_ticks (): tick.label.set_fontsize (7) # figure properties figure.suptitle ('airflow test 2\nrun #{} core casu {} leaf casu {}'.format (run_number, core_casu_number, leaf_casu_number)) figure.legend ( handles = [ matplotlib.lines.Line2D ( xdata = [0, 1], ydata = [1, 0], linestyle = 'solid', color = c) for c in plot_common.COLOURS ], labels = ['{}{}'.format (l, n) for l, n in zip (casu_labels, casu_numbers)], loc = 'upper right', fontsize = 7 ) # plot casu_log_axes_dict = { casu_log.IR_RAW : [axes_ir_raw], casu_log.TEMP : [axes_temperature], casu_log.AIRFLOW : [axes_ir_raw, axes_temperature], casu_log.LED : [axes_ir_raw], } for index, a_casu_log in enumerate (casu_logs): a_casu_log.plot ( index, casu_log_axes_dict, ir_raw_avg = True, avg_temp = False, temp_field = [assisipy.casu.TEMP_WAX] ) casu_domset_log_axes_dict = { casu_domset_log.CAS : [axes_activity], casu_domset_log.CAC : [axes_activity], casu_domset_log.NAC : [axes_activity], casu_domset_log.CT : [axes_temperature], casu_domset_log.NT : [axes_temperature], casu_domset_log.CAF : [axes_activity], } for index, a_casu_domset_log in enumerate (casu_domset_logs): a_casu_domset_log.plot ( index, casu_domset_log_axes_dict, avg_active_sensors = True ) # final properties for axa in list_axes: axa.legend ( fontsize = 5 ) # save figure figure.savefig ('casu-log_R{}-C{}-L{}.png'.format (run_number, core_casu_number, leaf_casu_number)) matplotlib.pyplot.close (figure)