P-unit_model/read_data_infos.py
2021-01-09 23:59:34 +01:00

125 lines
5.0 KiB
Python

from parser.CellData import icelldata_of_dir, CellData
import numpy as np
import os
import pyrelacs.DataLoader as Dl
def main():
fish_info()
# eod_info()
# fi_recording_times()
def eod_info():
cells = []
for item in sorted(os.listdir("data/final/")):
cells.append(os.path.join("data/final/", item))
eod_freq = []
for cell in cells:
data = CellData(cell)
eod_f = data.get_eod_frequency()
if not np.isnan(eod_f):
eod_freq.append(eod_f)
else:
print(cell)
print("eod Freq: min {}, max {}, mean: {:.2f}, std: {:.2f}".format(min(eod_freq), max(eod_freq), np.mean(eod_freq),
np.std(eod_freq)))
def fish_info():
cells = []
for item in sorted(os.listdir("data/final/")):
cells.append(os.path.join("data/final/", item))
cell_type = []
weight = []
size = []
eod_freq = []
preparation = []
for cell in cells:
info_file = os.path.join(cell, "info.dat")
for metadata in Dl.load(info_file):
if "CellType" not in metadata.keys():
cell_type.append(metadata["Cell"]["CellType"])
if cell_type[-1] != "P-unit":
print("not P-unit?", cell)
if "Weight" in metadata["Subject"].keys():
weight.append(float(metadata["Subject"]["Weight"][:-1]))
size.append(float(metadata["Subject"]["Size"][:-2]))
if "CellProperties" in metadata.keys():
eod_freq.append(float(metadata["CellProperties"]["EOD Frequency"][:-2]))
elif "Cell properties" in metadata.keys():
eod_freq.append(float(metadata["Cell properties"]["EOD Frequency"][:-2]))
preparation.append(metadata["Preparation"])
# print(metadata)
else:
cell_type.append(metadata["CellType"])
if cell_type[-1] != "P-unit":
print("not P-unit?", cell)
weight.append(float(metadata["Weight"][:-1]))
size.append(float(metadata["Size"][:-2]))
# 'LocalAnaesthesia': 'true', 'AnaestheticDose': '120mg/l', 'Anaesthetic': 'MS 222', 'LocalAnaesthetic': 'Lidocaine', 'Anaesthesia': 'true', 'Type': 'in vivo', 'Immobilization': 'Tubocurarin'
eod_freq.append(float(metadata["EOD Frequency"][:-2]))
prep_dict = {}
for key in ('LocalAnaesthesia', 'AnaestheticDose', 'Anaesthetic', 'LocalAnaesthetic', 'Anaesthesia', 'Immobilization'):
prep_dict[key] = metadata[key]
preparation.append(prep_dict)
# print(metadata)
print("Size: min {}, max {}".format(min(size), max(size)))
print("weight: min {}, max {}".format(min(weight), max(weight)))
print("eod Freq: min {}, max {}, mean: {:.2f}, std: {:.2f}".format(min(eod_freq), max(eod_freq), np.mean(eod_freq), np.std(eod_freq)))
print("anaesthetics:", np.unique([x['Anaesthetic'] for x in preparation]))
print("anaesthetic dosages:", np.unique([x['AnaestheticDose'] for x in preparation]))
print("local anaesthetic:", np.unique([x['LocalAnaesthesia'] for x in preparation]))
print("Immobilization:", np.unique([x['Immobilization'] for x in preparation]))
def fi_recording_times():
recording_times = []
for cell_data in icelldata_of_dir("data/invivo/", test_for_v1_trace=False):
# time_start, stimulus_start, stimulus_duration, after_stimulus_duration
recording_times.append(cell_data.get_recording_times())
for cell_data in icelldata_of_dir("data/invivo_bursty/", test_for_v1_trace=False):
# time_start, stimulus_start, stimulus_duration, after_stimulus_duration
recording_times.append(cell_data.get_recording_times())
recording_times = np.array(recording_times)
time_starts = recording_times[:, 0]
stimulus_starts = recording_times[:, 1]
stimulus_durations = recording_times[:, 2]
after_durations = recording_times[:, 3]
print("Fi-curve stimulus recording times:")
print("time_starts:", np.unique(time_starts))
print("stimulus_starts:", np.unique(stimulus_starts))
unique_durations = np.unique(stimulus_durations)
print("stimulus_durations:", unique_durations)
for d in unique_durations:
print("cells with stimulus duration {}: {}".format(d, np.sum(stimulus_durations == d)))
print("after_durations:", np.unique(after_durations))
def sampling_intervals():
intervals = []
for cell_data in icelldata_of_dir("data/invivo/", test_for_v1_trace=False):
# time_start, stimulus_start, stimulus_duration, after_stimulus_duration
intervals.append(cell_data.get_sampling_interval())
for cell_data in icelldata_of_dir("data/invivo_bursty/", test_for_v1_trace=False):
# time_start, stimulus_start, stimulus_duration, after_stimulus_duration
intervals.append(cell_data.get_sampling_interval())
print(np.unique(intervals))
if __name__ == '__main__':
main()