import numpy as np import pyrelacs as pr def get_times(stimulation): times = np.arange(-stimulation["before_protocol"], stimulation["stimulus_length"]+stimulation["after_protocol"], stimulation["dt"]) return times def get_trace(stimulation, trace_id): available_traces = pr.get_available_traces(stimulation["recording"]) trace_ids = [available_trace["identifier"] for available_trace in available_traces] trace_index = trace_ids.index(trace_id) trace_file = open("{}/{}".format(stimulation["recording"], available_traces[trace_index]["data_file"])) is_current = "Current" in trace_id is_affected_recording = stimulation.name.startswith("20170217") scale_correction = 1.0 if not (is_current and is_affected_recording) else 0.1 return scale_correction * pr.read_from_trace_file(trace_file, stimulation["start_index"], stimulation["end_index"] - stimulation["start_index"]) def get_traces(stimulation): available_trace_ids = [available_trace["identifier"] for available_trace in pr.get_available_traces(stimulation["recording"])] traces = [get_trace(stimulation, trace_id) for trace_id in available_trace_ids] return traces def get_filters(stimulations): filter_columnns = filter(lambda key: key.startswith("filter"), stimulations.keys()) combined_filters = reduce(lambda filtering_status, filtering_column: filtering_status & stimulations[filtering_column] == True, filter_columnns, True) return combined_filters def get_pulse_times(stimulation): pulse_length = stimulation["pulse_length"] pulse_period = stimulation["pulse_period"] return [{"start": (pulse_idx - 1) * pulse_period, "pulse_end": (pulse_idx - 1) * pulse_period + pulse_length, "end": pulse_idx * pulse_period} for pulse_idx in range(1, stimulation["pulse_number"] + 1)] pulse_mean_string = "p_{:d}_ISI_mean" after_pulse_mean_string = "ap_{:d}_ISI_mean"