125 lines
5.0 KiB
Python
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()
|