extend interface + implement scrappy model parser(to be reworked)
This commit is contained in:
parent
3921a55761
commit
3eda710394
@ -24,12 +24,24 @@ class AbstractParser:
|
|||||||
def get_fi_curve_spiketimes(self):
|
def get_fi_curve_spiketimes(self):
|
||||||
raise NotImplementedError("NOT YET OVERRIDDEN FROM ABSTRACT CLASS")
|
raise NotImplementedError("NOT YET OVERRIDDEN FROM ABSTRACT CLASS")
|
||||||
|
|
||||||
|
def get_fi_frequency_traces(self):
|
||||||
|
raise NotImplementedError("NOT YET OVERRIDDEN FROM ABSTRACT CLASS")
|
||||||
|
|
||||||
def get_sampling_interval(self):
|
def get_sampling_interval(self):
|
||||||
raise NotImplementedError("NOT YET OVERRIDDEN FROM ABSTRACT CLASS")
|
raise NotImplementedError("NOT YET OVERRIDDEN FROM ABSTRACT CLASS")
|
||||||
|
|
||||||
def get_recording_times(self):
|
def get_recording_times(self):
|
||||||
raise NotImplementedError("NOT YET OVERRIDDEN FROM ABSTRACT CLASS")
|
raise NotImplementedError("NOT YET OVERRIDDEN FROM ABSTRACT CLASS")
|
||||||
|
|
||||||
|
def traces_available(self) -> bool:
|
||||||
|
raise NotImplementedError("NOT YET OVERRIDDEN FROM ABSTRACT CLASS")
|
||||||
|
|
||||||
|
def spiketimes_available(self) -> bool:
|
||||||
|
raise NotImplementedError("NOT YET OVERRIDDEN FROM ABSTRACT CLASS")
|
||||||
|
|
||||||
|
def frequencies_available(self) -> bool:
|
||||||
|
raise NotImplementedError("NOT YET OVERRIDDEN FROM ABSTRACT CLASS")
|
||||||
|
|
||||||
|
|
||||||
class DatParser(AbstractParser):
|
class DatParser(AbstractParser):
|
||||||
|
|
||||||
@ -42,6 +54,15 @@ class DatParser(AbstractParser):
|
|||||||
self.fi_recording_times = []
|
self.fi_recording_times = []
|
||||||
self.sampling_interval = -1
|
self.sampling_interval = -1
|
||||||
|
|
||||||
|
def traces_available(self) -> bool:
|
||||||
|
return True
|
||||||
|
|
||||||
|
def frequencies_available(self) -> bool:
|
||||||
|
return False
|
||||||
|
|
||||||
|
def spiketimes_available(self) -> bool:
|
||||||
|
return True
|
||||||
|
|
||||||
def cell_get_metadata(self):
|
def cell_get_metadata(self):
|
||||||
raise NotImplementedError("NOT YET OVERRIDDEN FROM ABSTRACT CLASS")
|
raise NotImplementedError("NOT YET OVERRIDDEN FROM ABSTRACT CLASS")
|
||||||
|
|
||||||
@ -62,6 +83,10 @@ class DatParser(AbstractParser):
|
|||||||
def get_fi_curve_traces(self):
|
def get_fi_curve_traces(self):
|
||||||
return self.__get_traces__("FICurve")
|
return self.__get_traces__("FICurve")
|
||||||
|
|
||||||
|
def get_fi_frequency_traces(self):
|
||||||
|
raise NotImplementedError("Not possible in .dat data type.\n"
|
||||||
|
"Please check availability with the x_available functions.")
|
||||||
|
|
||||||
# TODO clean up/ rewrite
|
# TODO clean up/ rewrite
|
||||||
def get_fi_curve_spiketimes(self):
|
def get_fi_curve_spiketimes(self):
|
||||||
spiketimes = []
|
spiketimes = []
|
||||||
@ -208,15 +233,69 @@ class DatParser(AbstractParser):
|
|||||||
raise RuntimeError(self.fi_file + " file doesn't exist!")
|
raise RuntimeError(self.fi_file + " file doesn't exist!")
|
||||||
|
|
||||||
|
|
||||||
|
# MODEL PARSER: ------------------------------
|
||||||
|
|
||||||
class ModelParser(AbstractParser):
|
class ModelParser(AbstractParser):
|
||||||
|
|
||||||
def __init__(self, model: AbstractModel):
|
def __init__(self, model: AbstractModel):
|
||||||
self.model = model
|
self.model = model
|
||||||
|
|
||||||
|
def cell_get_metadata(self):
|
||||||
|
raise NotImplementedError("NOT YET OVERRIDDEN FROM ABSTRACT CLASS")
|
||||||
|
|
||||||
|
def get_baseline_traces(self):
|
||||||
|
raise NotImplementedError("NOT YET OVERRIDDEN FROM ABSTRACT CLASS")
|
||||||
|
|
||||||
|
def get_fi_curve_traces(self):
|
||||||
|
if not self.model.simulates_voltage_trace():
|
||||||
|
raise NotImplementedError("Model doesn't simulated voltage traces!")
|
||||||
|
|
||||||
|
traces = []
|
||||||
|
for stimulus in self.model.get_stimuli_for_fi_curve():
|
||||||
|
self.model.simulate(stimulus, self.model.total_stimulation_time_fi_curve)
|
||||||
|
traces.append(self.model.get_voltage_trace())
|
||||||
|
|
||||||
|
return traces
|
||||||
|
|
||||||
|
def get_fi_curve_spiketimes(self):
|
||||||
|
if not self.model.simulates_spiketimes():
|
||||||
|
raise NotImplementedError("Model doesn't simulated spiketimes!")
|
||||||
|
|
||||||
|
all_spiketimes = []
|
||||||
|
for stimulus in self.model.get_stimuli_for_fi_curve():
|
||||||
|
self.model.simulate(stimulus, self.model.total_stimulation_time_fi_curve)
|
||||||
|
all_spiketimes.append(self.model.get_spiketimes())
|
||||||
|
|
||||||
|
return all_spiketimes
|
||||||
|
|
||||||
|
def get_fi_frequency_traces(self):
|
||||||
|
if not self.model.simulates_frequency():
|
||||||
|
raise NotImplementedError("Model doesn't simulated frequency!")
|
||||||
|
|
||||||
|
frequency_traces = []
|
||||||
|
for stimulus in self.model.get_stimuli_for_fi_curve():
|
||||||
|
self.model.simulate(stimulus, self.model.total_stimulation_time_fi_curve)
|
||||||
|
frequency_traces.append(self.model.get_frequency())
|
||||||
|
|
||||||
|
return frequency_traces
|
||||||
|
|
||||||
|
def get_sampling_interval(self):
|
||||||
|
self.model.get_sampling_interval()
|
||||||
|
|
||||||
|
def get_recording_times(self):
|
||||||
|
raise NotImplementedError("NOT YET OVERRIDDEN FROM ABSTRACT CLASS")
|
||||||
|
|
||||||
|
def traces_available(self) -> bool:
|
||||||
|
return self.model.simulates_voltage_trace()
|
||||||
|
|
||||||
|
def spiketimes_available(self) -> bool:
|
||||||
|
return self.model.simulates_spiketimes()
|
||||||
|
|
||||||
|
def frequencies_available(self) -> bool:
|
||||||
|
return self.model.simulates_frequency()
|
||||||
|
|
||||||
# TODO ####################################
|
# TODO ####################################
|
||||||
|
|
||||||
class NixParser(AbstractParser):
|
class NixParser(AbstractParser):
|
||||||
|
|
||||||
def __init__(self, nix_file_path):
|
def __init__(self, nix_file_path):
|
||||||
@ -232,9 +311,9 @@ def get_parser(data_path) -> AbstractParser:
|
|||||||
return DatParser(data_path)
|
return DatParser(data_path)
|
||||||
elif data_format == NIX_FORMAT:
|
elif data_format == NIX_FORMAT:
|
||||||
return NixParser(data_path)
|
return NixParser(data_path)
|
||||||
elif MODEL:
|
elif data_format == MODEL:
|
||||||
return ModelParser(data_path)
|
return ModelParser(data_path)
|
||||||
elif UNKNOWN:
|
elif data_format == UNKNOWN:
|
||||||
raise TypeError("DataParserFactory:get_parser(data_path):\nCannot determine type of data for:" + data_path)
|
raise TypeError("DataParserFactory:get_parser(data_path):\nCannot determine type of data for:" + data_path)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user