12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- 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"
|