helper.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import numpy as np
  2. import pyrelacs as pr
  3. def get_times(stimulation):
  4. times = np.arange(-stimulation["before_protocol"], stimulation["stimulus_length"]+stimulation["after_protocol"],
  5. stimulation["dt"])
  6. return times
  7. def get_trace(stimulation, trace_id):
  8. available_traces = pr.get_available_traces(stimulation["recording"])
  9. trace_ids = [available_trace["identifier"] for available_trace in
  10. available_traces]
  11. trace_index = trace_ids.index(trace_id)
  12. trace_file = open("{}/{}".format(stimulation["recording"], available_traces[trace_index]["data_file"]))
  13. is_current = "Current" in trace_id
  14. is_affected_recording = stimulation.name.startswith("20170217")
  15. scale_correction = 1.0 if not (is_current and is_affected_recording) else 0.1
  16. return scale_correction * pr.read_from_trace_file(trace_file, stimulation["start_index"],
  17. stimulation["end_index"] - stimulation["start_index"])
  18. def get_traces(stimulation):
  19. available_trace_ids = [available_trace["identifier"] for available_trace in
  20. pr.get_available_traces(stimulation["recording"])]
  21. traces = [get_trace(stimulation, trace_id) for trace_id in available_trace_ids]
  22. return traces
  23. def get_filters(stimulations):
  24. filter_columnns = filter(lambda key: key.startswith("filter"), stimulations.keys())
  25. combined_filters = reduce(lambda filtering_status, filtering_column: filtering_status & stimulations[filtering_column] == True, filter_columnns, True)
  26. return combined_filters
  27. def get_pulse_times(stimulation):
  28. pulse_length = stimulation["pulse_length"]
  29. pulse_period = stimulation["pulse_period"]
  30. return [{"start": (pulse_idx - 1) * pulse_period,
  31. "pulse_end": (pulse_idx - 1) * pulse_period + pulse_length,
  32. "end": pulse_idx * pulse_period} for pulse_idx in range(1, stimulation["pulse_number"] + 1)]
  33. pulse_mean_string = "p_{:d}_ISI_mean"
  34. after_pulse_mean_string = "ap_{:d}_ISI_mean"