helper.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. stimulation_metadata_raw = "stimulations_raw.csv"
  24. stimulation_metadata_extended = "stimulations_analysed.csv"
  25. stimulation_metadata_filtered = "stimulations_analysed_and_filtered.csv"
  26. def get_filters(stimulations):
  27. filter_columnns = filter(lambda key: key.startswith("filter"), stimulations.keys())
  28. combined_filters = reduce(lambda filtering_status, filtering_column: filtering_status & stimulations[filtering_column] == True, filter_columnns, True)
  29. return combined_filters
  30. def get_pulse_times(stimulation):
  31. pulse_length = stimulation["pulse_length"]
  32. pulse_period = stimulation["pulse_period"]
  33. return [{"start": (pulse_idx - 1) * pulse_period,
  34. "pulse_end": (pulse_idx - 1) * pulse_period + pulse_length,
  35. "end": pulse_idx * pulse_period} for pulse_idx in range(1, stimulation["pulse_number"] + 1)]
  36. pulse_mean_string = "p_{:d}_ISI_mean"
  37. after_pulse_mean_string = "ap_{:d}_ISI_mean"