diff --git a/FiCurve.py b/FiCurve.py index f3103da..d0ea2af 100644 --- a/FiCurve.py +++ b/FiCurve.py @@ -14,7 +14,7 @@ from sys import stderr class FICurve: - def __init__(self, stimulus_values, save_dir=None): + def __init__(self, stimulus_values, save_dir=None, recalculate=False): self.save_file_name = "fi_curve_values.pkl" self.stimulus_values = stimulus_values @@ -30,9 +30,13 @@ class FICurve: if save_dir is None: self.initialize() else: - if not self.load_values(save_dir): + if recalculate: self.initialize() self.save_values(save_dir) + else: + if not self.load_values(save_dir): + self.initialize() + self.save_values(save_dir) def initialize(self): self.calculate_all_frequency_points() @@ -253,7 +257,7 @@ class FICurve: values = pickle.load(file) if set(values["stimulus_values"]) != set(self.stimulus_values): stderr.write("Fi-Curve:load_values() - Given stimulus values are different to the loaded ones!:\n " - "given: {}\n loaded: {}".format(str(self.stimulus_values), str(values["stimulus_values"]))) + "given: {}\n loaded: {}\n".format(str(self.stimulus_values), str(values["stimulus_values"]))) self.stimulus_values = values["stimulus_values"] self.f_baseline_frequencies = values["f_baseline_frequencies"] @@ -267,9 +271,9 @@ class FICurve: class FICurveCellData(FICurve): - def __init__(self, cell_data: CellData, stimulus_values, save_dir=None): + def __init__(self, cell_data: CellData, stimulus_values, save_dir=None, recalculate=False): self.cell_data = cell_data - super().__init__(stimulus_values, save_dir) + super().__init__(stimulus_values, save_dir, recalculate) def calculate_all_frequency_points(self): mean_frequencies = self.cell_data.get_mean_fi_curve_isi_frequencies() @@ -509,9 +513,9 @@ class FICurveModel(FICurve): plt.close() -def get_fi_curve_class(data, stimulus_values, eod_freq=None, trials=5, save_dir=None) -> FICurve: +def get_fi_curve_class(data, stimulus_values, eod_freq=None, trials=5, save_dir=None, recalculate=False) -> FICurve: if isinstance(data, CellData): - return FICurveCellData(data, stimulus_values, save_dir) + return FICurveCellData(data, stimulus_values, save_dir, recalculate) if isinstance(data, LifacNoiseModel): if eod_freq is None: raise ValueError("The FiCurveModel needs the eod variable to work")