diff --git a/Figures_Baseline.py b/Figures_Baseline.py
index a7b5359..b6aafc4 100644
--- a/Figures_Baseline.py
+++ b/Figures_Baseline.py
@@ -4,17 +4,17 @@ import matplotlib.pyplot as plt
 import matplotlib.gridspec as gridspec
 import numpy as np
 import os
-import functions as fu
-import helperFunctions as hF
+from my_util import functions as fu
 
-from CellData import CellData
-from Baseline import BaselineCellData
-from FiCurve import FICurveCellData, FICurveModel
+from parser.CellData import CellData
+from experiments.Baseline import BaselineCellData
+from experiments.FiCurve import FICurveCellData, FICurveModel
 import Figure_constants as consts
-from ModelFit import get_best_fit
+from fitting.ModelFit import get_best_fit
 
 EXAMPLE_CELL = "data/final/2012-12-20-ac-invivo-1"
 
+
 def main():
     # data_isi_histogram()
     # data_mean_freq_step_stimulus_examples()
diff --git a/Figures_Model.py b/Figures_Model.py
index 7f7109b..289df0d 100644
--- a/Figures_Model.py
+++ b/Figures_Model.py
@@ -1,7 +1,7 @@
 
 from models.LIFACnoise import LifacNoiseModel
 from stimuli.SinusoidalStepStimulus import SinusoidalStepStimulus
-import helperFunctions as hF
+from my_util import helperFunctions as hF
 import Figure_constants as consts
 import matplotlib.pyplot as plt
 import numpy as np
diff --git a/Figures_Stimuli.py b/Figures_Stimuli.py
index 736c74c..373c441 100644
--- a/Figures_Stimuli.py
+++ b/Figures_Stimuli.py
@@ -1,7 +1,7 @@
 
 from stimuli.SinusoidalStepStimulus import SinusoidalStepStimulus
 from stimuli.SinusAmplitudeModulation import SinusAmplitudeModulationStimulus
-from CellData import CellData
+from parser.CellData import CellData
 import numpy as np
 import matplotlib.pyplot as plt
 import Figure_constants as consts
diff --git a/Figures_results.py b/Figures_results.py
index b02bf82..de7948c 100644
--- a/Figures_results.py
+++ b/Figures_results.py
@@ -2,18 +2,15 @@ import numpy as np
 import matplotlib.pyplot as plt
 import matplotlib.gridspec as gridspec
 import matplotlib as mpl
-from analysis import get_filtered_fit_info, get_behaviour_values, get_parameter_values, behaviour_correlations, parameter_correlations, calculate_percent_errors
-from ModelFit import get_best_fit
-from Baseline import BaselineModel, BaselineCellData
-from FiCurve import FICurveModel, FICurveCellData
-from CellData import CellData
-import functions as fu
+from analysis import get_filtered_fit_info, get_behaviour_values, get_parameter_values, behaviour_correlations, parameter_correlations
+from fitting.ModelFit import get_best_fit
+from experiments.Baseline import BaselineModel, BaselineCellData
+from experiments.FiCurve import FICurveModel, FICurveCellData
+from parser.CellData import CellData
+from my_util import functions as fu
 import Figure_constants as consts
 from scipy.stats import pearsonr
 
-from matplotlib.ticker import FormatStrFormatter
-
-
 parameter_titles = {"input_scaling": r"$\alpha$", "delta_a": r"$\Delta_A$",
                     "mem_tau": r"$\tau_m$", "noise_strength": r"$\sqrt{2D}$",
                     "refractory_period": "$t_{ref}$", "tau_a": r"$\tau_A$",
diff --git a/RelationAdaptionVariables.py b/RelationAdaptionVariables.py
index 12ec864..8c3d9db 100644
--- a/RelationAdaptionVariables.py
+++ b/RelationAdaptionVariables.py
@@ -2,11 +2,10 @@
 from models.FirerateModel import FirerateModel
 from models.LIFACnoise import LifacNoiseModel
 from stimuli.StepStimulus import StepStimulus
-import helperFunctions as hf
+from my_util import helperFunctions as hf, functions as fu
 import numpy as np
 import matplotlib.pyplot as plt
 from scipy.optimize import curve_fit
-import functions as fu
 
 
 def main():
diff --git a/analysis.py b/analysis.py
index 2de565b..8a35488 100644
--- a/analysis.py
+++ b/analysis.py
@@ -1,14 +1,13 @@
-
-import argparse
 import os
 import numpy as np
 import matplotlib.pyplot as plt
 from scipy.stats import pearsonr
+import my_util.save_load as sl
 
-from ModelFit import get_best_fit
-from Baseline import BaselineModel
-from FiCurve import FICurveModel
-from CellData import CellData
+from fitting.ModelFit import get_best_fit
+from experiments.Baseline import BaselineModel
+from experiments.FiCurve import FICurveModel, FICurveCellData
+from parser.CellData import CellData
 from models.LIFACnoise import LifacNoiseModel
 from stimuli.SinusoidalStepStimulus import SinusoidalStepStimulus
 
@@ -18,8 +17,9 @@ def main():
     # parser.add_argument("dir", help="folder containing the cell folders with the fit results")
     # args = parser.parse_args()
 
-    dir_path = "results/final_2/"  # args.dir
-
+    dir_path = "results/final_sam/"  # args.dir
+    plot_fi_curves_differences(dir_path)
+    quit()
     # if not os.path.isdir(dir_path):
     #     print("Argument dir is not a directory.")
     #     parser.print_usage()
@@ -46,7 +46,66 @@ def main():
     # create_parameter_distributions(get_parameter_values(fits_info))
     cell_b, model_b = get_behaviour_values(fits_info)
     create_behaviour_distributions(cell_b, model_b)
-    pass
+
+
+def plot_fi_curves_differences(folder, recalculate=False):
+    save_path = "temp/analysis/fi_curve_errors_plot.pkl"
+
+    if not recalculate and os.path.exists(save_path):
+        # load
+        loaded_values = sl.load(save_path)
+        model_f_inf_slopes, f_inf_ref_slope, stim_values, model_f_zero_points, f_zero_ref_values, fit_errors = loaded_values
+
+    else:
+        fit_errors = []
+        model_f_inf_slopes = []
+        f_inf_ref_slope = []
+
+        stim_values = []
+        model_f_zero_points = []
+        f_zero_ref_values = []
+
+        for item in sorted(os.listdir(folder)):
+            print(item)
+            cell_folder = os.path.join(folder, item)
+
+            fit = get_best_fit(cell_folder, use_comparable_error=False)
+            model = fit.get_model()
+            cell_data_path = fit.get_cell_path()
+            if "final_sam" in cell_data_path:
+                cell_data_path = cell_data_path.replace("final_sam", "final")
+
+            cell = CellData(cell_data_path)
+            fit_errors.append(fit.get_fit_routine_error())
+            fi_curve_cell = FICurveCellData(cell, cell.get_fi_contrasts(), cell.get_data_path())
+            cell_f_inf_slope = fi_curve_cell.get_f_inf_slope()
+            f_inf_ref_slope.append(cell_f_inf_slope)
+            cell_f_zero_values = fi_curve_cell.get_f_zero_frequencies()
+            f_zero_ref_values.append(cell_f_zero_values)
+            stim_values.append(cell.get_fi_contrasts())
+            fi_curve_model = FICurveModel(model, cell.get_fi_contrasts(), cell.get_eod_frequency())
+            model_f_inf_slope = fi_curve_model.get_f_inf_slope()
+            model_f_inf_slopes.append(model_f_inf_slope)
+            model_f_zero_values = fi_curve_model.get_f_zero_frequencies()
+            model_f_zero_points.append(model_f_zero_values)
+
+        # save
+        sl.save([model_f_inf_slopes, f_inf_ref_slope, stim_values, model_f_zero_points, f_zero_ref_values, fit_errors],
+                save_path, create_folders=True)
+    cmap = 'brg'
+    maximum_err = 100
+    colors = [fe if fe < maximum_err else maximum_err for fe in fit_errors]
+    colors = np.array(colors) / max(colors)
+    fig, axes = plt.subplots(1, 3)
+    axes[0].scatter(range(len(fit_errors)), fit_errors, c=colors, cmap=cmap)
+    # axes[1].scatter(f_inf_ref_slope, [(model_f_inf_slopes[i]-f_inf_ref_slope[i]) / f_inf_ref_slope[i] for i in range(len(model_f_inf_slopes))], c=colors, cmap=cmap)
+    axes[1].scatter(f_inf_ref_slope, [(model_f_inf_slopes[i]-f_inf_ref_slope[i]) for i in range(len(model_f_inf_slopes))], c=colors, cmap=cmap)
+
+    cmap_obj = plt.get_cmap(cmap)
+    for i in range(len(stim_values)):
+        axes[2].plot(stim_values[i], [(model_f_zero_points[i][j] - f_zero_ref_values[i][j]) / f_zero_ref_values[i][j] for j in range(len(model_f_zero_points[i]))], c=cmap_obj(colors[i]), alpha=0.5)
+
+    plt.show()
 
 
 def get_filtered_fit_info(folder, filter=True):
diff --git a/cell_overview.py b/cell_overview.py
index e87bc9b..90e62de 100644
--- a/cell_overview.py
+++ b/cell_overview.py
@@ -1,11 +1,10 @@
 
-from CellData import icelldata_of_dir, CellData
-from Baseline import BaselineCellData
-from FiCurve import FICurveCellData
-from DataParserFactory import DatParser
+from parser.CellData import icelldata_of_dir, CellData
+from experiments.Baseline import BaselineCellData
+from experiments.FiCurve import FICurveCellData
+from parser.DataParserFactory import DatParser
 import os
 import numpy as np
-import matplotlib.pyplot as plt
 
 
 def main():
diff --git a/AdaptionCurrent.py b/experiments/AdaptionCurrent.py
similarity index 98%
rename from AdaptionCurrent.py
rename to experiments/AdaptionCurrent.py
index 66bdbcf..fb15b81 100644
--- a/AdaptionCurrent.py
+++ b/experiments/AdaptionCurrent.py
@@ -1,11 +1,10 @@
 
-from FiCurve import FICurve, get_fi_curve_class
-from CellData import CellData
+from FiCurve import FICurve
 import matplotlib.pyplot as plt
 from scipy.optimize import curve_fit
 import os
 import numpy as np
-import functions as fu
+from my_util import functions as fu
 
 
 class Adaption:
diff --git a/Baseline.py b/experiments/Baseline.py
similarity index 99%
rename from Baseline.py
rename to experiments/Baseline.py
index 787a51b..2d0f356 100644
--- a/Baseline.py
+++ b/experiments/Baseline.py
@@ -1,8 +1,8 @@
 
-from CellData import CellData
+from parser.CellData import CellData
 from models.LIFACnoise import LifacNoiseModel
 from stimuli.SinusoidalStepStimulus import SinusoidalStepStimulus
-import helperFunctions as hF
+from my_util import helperFunctions as hF
 import numpy as np
 import matplotlib.pyplot as plt
 import pickle
diff --git a/FiCurve.py b/experiments/FiCurve.py
similarity index 99%
rename from FiCurve.py
rename to experiments/FiCurve.py
index 4fa4764..2b42ae1 100644
--- a/FiCurve.py
+++ b/experiments/FiCurve.py
@@ -1,12 +1,11 @@
 
-from CellData import CellData
+from parser.CellData import CellData
 from models.LIFACnoise import LifacNoiseModel
 from stimuli.SinusoidalStepStimulus import SinusoidalStepStimulus
 import numpy as np
 import matplotlib.pyplot as plt
 from warnings import warn
-import functions as fu
-import helperFunctions as hF
+from my_util import helperFunctions as hF, functions as fu
 from os.path import join, exists
 import pickle
 from sys import stderr
diff --git a/Sam.py b/experiments/Sam.py
similarity index 86%
rename from Sam.py
rename to experiments/Sam.py
index d28b3ed..3f512f1 100644
--- a/Sam.py
+++ b/experiments/Sam.py
@@ -1,5 +1,5 @@
 
-from CellData import CellData
+from parser.CellData import CellData
 from models.LIFACnoise import LifacNoiseModel
 
 
diff --git a/experiments/__init__.py b/experiments/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/find_thresholds_for_spike_detection.py b/find_thresholds_for_spike_detection.py
index eac3144..d1c34c0 100644
--- a/find_thresholds_for_spike_detection.py
+++ b/find_thresholds_for_spike_detection.py
@@ -1,5 +1,5 @@
 
-from CellData import CellData, icelldata_of_dir
+from parser.CellData import CellData, icelldata_of_dir
 from os import listdir
 import os
 
diff --git a/Fitter.py b/fitting/Fitter.py
similarity index 99%
rename from Fitter.py
rename to fitting/Fitter.py
index d72d7d4..8e687f2 100644
--- a/Fitter.py
+++ b/fitting/Fitter.py
@@ -1,17 +1,12 @@
 
 from models.LIFACnoise import LifacNoiseModel
 from stimuli.SinusoidalStepStimulus import SinusoidalStepStimulus
-from CellData import CellData
-from Baseline import get_baseline_class
-from FiCurve import get_fi_curve_class
-from AdaptionCurrent import Adaption
+from parser.CellData import CellData
+from experiments.Baseline import get_baseline_class
+from experiments.FiCurve import get_fi_curve_class
 import numpy as np
 from warnings import warn
 from scipy.optimize import minimize
-import time
-from helperFunctions import plot_errors
-
-import matplotlib.pyplot as plt
 
 
 class Fitter:
diff --git a/ModelFit.py b/fitting/ModelFit.py
similarity index 97%
rename from ModelFit.py
rename to fitting/ModelFit.py
index 3c7d90e..adb344d 100644
--- a/ModelFit.py
+++ b/fitting/ModelFit.py
@@ -2,12 +2,11 @@
 import os
 from models.LIFACnoise import LifacNoiseModel
 from stimuli.SinusoidalStepStimulus import SinusoidalStepStimulus
-from Baseline import get_baseline_class
-from FiCurve import get_fi_curve_class
-from CellData import CellData
-import helperFunctions as hF
+from experiments.Baseline import get_baseline_class
+from experiments.FiCurve import get_fi_curve_class
+from parser.CellData import CellData
+from my_util import helperFunctions as hF, functions as fu
 import numpy as np
-import functions as fu
 import matplotlib.pyplot as plt
 
 
diff --git a/fitting/__init__.py b/fitting/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/glm_prediction.py b/glm_prediction.py
index 5d8e3e4..8ca0791 100644
--- a/glm_prediction.py
+++ b/glm_prediction.py
@@ -1,9 +1,8 @@
 
-from ModelFit import get_best_fit
+from fitting.ModelFit import get_best_fit
 import numpy as np
 import os
 import pandas
-import matplotlib.pyplot as plt
 import statsmodels.api as sm
 
 
diff --git a/introduction/NeuronModel.py b/introduction/NeuronModel.py
index c912f1b..e411390 100644
--- a/introduction/NeuronModel.py
+++ b/introduction/NeuronModel.py
@@ -1,7 +1,7 @@
 
-from CellData import CellData
-from FiCurve import FICurve
-from AdaptionCurrent import Adaption
+from parser.CellData import CellData
+from experiments.FiCurve import FICurve
+from experiments.AdaptionCurrent import Adaption
 import numpy as np
 import matplotlib.pyplot as plt
 
diff --git a/introduction/introductionFICurve.py b/introduction/introductionFICurve.py
index 1042f8f..3f6ed06 100644
--- a/introduction/introductionFICurve.py
+++ b/introduction/introductionFICurve.py
@@ -2,8 +2,7 @@ import numpy as np
 import matplotlib.pyplot as plt
 import pyrelacs.DataLoader as dl
 import os
-import helperFunctions as hf
-from IPython import embed
+from my_util import helperFunctions as hf
 from scipy.optimize import curve_fit
 import warnings
 
diff --git a/introduction/test.py b/introduction/test.py
index 27e19ec..251c429 100644
--- a/introduction/test.py
+++ b/introduction/test.py
@@ -1,9 +1,7 @@
 import numpy as np
 import matplotlib.pyplot as plt
-import helperFunctions as hF
-import functions as fu
+from my_util import functions as fu
 import time
-from stimuli.SinusoidalStepStimulus import SinusoidalStepStimulus
 
 
 def main():
diff --git a/main.py b/main.py
deleted file mode 100644
index fb5dc44..0000000
--- a/main.py
+++ /dev/null
@@ -1,17 +0,0 @@
-from CellData import icelldata_of_dir
-
-
-# TODO command line interface needed/nice ?
-
-
-def main():
-
-    for cell_data in icelldata_of_dir("./data/"):
-        print()
-        print(cell_data.get_data_path())
-
-        quit()
-
-
-if __name__ == '__main__':
-    main()
diff --git a/models/FirerateModel.py b/models/FirerateModel.py
index d12345c..731bf9d 100644
--- a/models/FirerateModel.py
+++ b/models/FirerateModel.py
@@ -1,7 +1,7 @@
 from stimuli.AbstractStimulus import AbstractStimulus
 from models.AbstractModel import AbstractModel
 import numpy as np
-from functions import line
+from my_util.functions import line
 
 
 class FirerateModel(AbstractModel):
diff --git a/models/LIFACnoise.py b/models/LIFACnoise.py
index c71f1f7..8a82e76 100644
--- a/models/LIFACnoise.py
+++ b/models/LIFACnoise.py
@@ -1,13 +1,9 @@
 from stimuli.AbstractStimulus import AbstractStimulus
 from models.AbstractModel import AbstractModel
 import numpy as np
-import functions as fu
+from my_util import functions as fu
 from numba import jit
-import helperFunctions as hF
-from stimuli.SinusoidalStepStimulus import SinusoidalStepStimulus
-from scipy.optimize import curve_fit
 from warnings import warn
-import matplotlib.pyplot as plt
 from collections import OrderedDict
 
 
diff --git a/models/smallModels.py b/models/smallModels.py
index bdcd1b4..40112cc 100644
--- a/models/smallModels.py
+++ b/models/smallModels.py
@@ -1,7 +1,5 @@
 
 import numpy as np
-import matplotlib.pyplot as plt
-import helperFunctions as hF
 
 
 def main():
diff --git a/Sounds.py b/my_util/Sounds.py
similarity index 100%
rename from Sounds.py
rename to my_util/Sounds.py
diff --git a/my_util/__init__.py b/my_util/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/functions.py b/my_util/functions.py
similarity index 100%
rename from functions.py
rename to my_util/functions.py
diff --git a/helperFunctions.py b/my_util/helperFunctions.py
similarity index 99%
rename from helperFunctions.py
rename to my_util/helperFunctions.py
index dbcfb32..b2af808 100644
--- a/helperFunctions.py
+++ b/my_util/helperFunctions.py
@@ -2,7 +2,7 @@ import numpy as np
 from warnings import warn
 from thunderfish.eventdetection import threshold_crossing_times, threshold_crossings, detect_peaks
 from scipy.optimize import curve_fit
-import functions as fu
+import my_util.functions as fu
 from numba import jit
 import matplotlib.pyplot as plt
 import time
diff --git a/lines_of_code.py b/my_util/lines_of_code.py
similarity index 73%
rename from lines_of_code.py
rename to my_util/lines_of_code.py
index d30a4f6..3c7f7b1 100644
--- a/lines_of_code.py
+++ b/my_util/lines_of_code.py
@@ -21,7 +21,9 @@ def count_lines_folder(folder):
 total_lines = 0
 total_files = 0
 
-folders = [".", "tests/", "models/", "introduction/", "stimuli/"]
+folders = ["..", "../tests/", "../models/", "../introduction/",
+           "../stimuli/", "../experiments/", "../my_util/", "../parser/",
+           "../fitting/", "../unittests/"]
 
 for folder in folders:
     lines, files = count_lines_folder(folder)
diff --git a/my_util/save_load.py b/my_util/save_load.py
new file mode 100644
index 0000000..acec452
--- /dev/null
+++ b/my_util/save_load.py
@@ -0,0 +1,28 @@
+
+import pickle
+import os
+
+#  small module to handle quick saving and loading of (pre-analyzed) data (for figures)
+
+
+def save(python_object, path, create_folders=True):
+    """
+    save a python object in a file,
+    creates all necessary the folders
+    """
+
+    if create_folders and not os.path.exists(os.path.dirname(path)):
+        os.makedirs(os.path.dirname(path))
+
+    with open(path, 'wb') as file:
+        pickle.dump(python_object, file)
+
+
+def load(path):
+    """
+    load pickled python object saved in the file at path.
+    """
+    with open(path, "rb") as file:
+        py_object = pickle.load(file)
+
+    return py_object
diff --git a/CellData.py b/parser/CellData.py
similarity index 99%
rename from CellData.py
rename to parser/CellData.py
index d2c3cb9..e02585b 100644
--- a/CellData.py
+++ b/parser/CellData.py
@@ -1,11 +1,9 @@
-import DataParserFactory as dpf
+import parser.DataParserFactory as dpf
 from warnings import warn
 import os
-import helperFunctions as hf
+from my_util import helperFunctions as hf
 import numpy as np
 
-import matplotlib.pyplot as plt
-
 COUNT = 0
 
 
diff --git a/DataParserFactory.py b/parser/DataParserFactory.py
similarity index 100%
rename from DataParserFactory.py
rename to parser/DataParserFactory.py
diff --git a/parser/__init__.py b/parser/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/random_models.py b/random_models.py
index aef1c72..1b9b913 100644
--- a/random_models.py
+++ b/random_models.py
@@ -7,10 +7,10 @@ from scipy.optimize import curve_fit
 from scipy.stats import multivariate_normal, pearsonr
 
 from analysis import get_parameter_values, get_filtered_fit_info, parameter_correlations, get_behaviour_values
-from ModelFit import get_best_fit
-import functions as fu
-from Baseline import BaselineModel
-from FiCurve import FICurveModel
+from fitting.ModelFit import get_best_fit
+from my_util import functions as fu
+from experiments.Baseline import BaselineModel
+from experiments.FiCurve import FICurveModel
 from models.LIFACnoise import LifacNoiseModel
 from Figures_results import create_correlation_plot
 import Figure_constants as consts
diff --git a/read_data_infos.py b/read_data_infos.py
index 2a88814..9396342 100644
--- a/read_data_infos.py
+++ b/read_data_infos.py
@@ -1,4 +1,4 @@
-from CellData import icelldata_of_dir, CellData
+from parser.CellData import icelldata_of_dir, CellData
 import numpy as np
 import os
 import pyrelacs.DataLoader as Dl
diff --git a/redetect_fi_curve.py b/redetect_fi_curve.py
index 002beb8..579dcfb 100644
--- a/redetect_fi_curve.py
+++ b/redetect_fi_curve.py
@@ -1,9 +1,7 @@
 
 
-from CellData import CellData
-from DataParserFactory import DatParser
+from parser.CellData import CellData
 import pyrelacs.DataLoader as Dl
-import helperFunctions as hF
 from thunderfish.eventdetection import detect_peaks
 
 import os
diff --git a/run_Fitter.py b/run_Fitter.py
index aaa90bb..dceabf1 100644
--- a/run_Fitter.py
+++ b/run_Fitter.py
@@ -1,16 +1,16 @@
 
 from models.LIFACnoise import LifacNoiseModel
-from CellData import CellData
-from Baseline import get_baseline_class
-from FiCurve import get_fi_curve_class
-from Fitter import Fitter
-from ModelFit import get_best_fit, ModelFit
+from parser.CellData import CellData
+from experiments.Baseline import get_baseline_class
+from experiments.FiCurve import get_fi_curve_class
+from fitting.Fitter import Fitter
+from fitting.ModelFit import get_best_fit, ModelFit
 
 import time
 import os
 import argparse
 import numpy as np
-from helperFunctions import plot_errors
+from my_util.helperFunctions import plot_errors
 
 import multiprocessing as mp
 
diff --git a/run_cellwise_fitting.sh b/run_cellwise_fitting.sh
index 55fa4da..e7f02d1 100755
--- a/run_cellwise_fitting.sh
+++ b/run_cellwise_fitting.sh
@@ -1,6 +1,13 @@
 
+# Screen commands to run script remotely:
+
+# screen -S fitting # open screen session with name: "fitting"
+# press ctrl + A release and then D to detach screen session.
+# screen -r fitting # reconnect after disconnecting ssh / detaching screen
+
+
 for file in data/final_sam/*; do
     if [ -d "$file" ]; then
-        nice python3 run_Fitter.py --cell $file
+        nice python3 run_Fitter.py --cell "$file"
     fi
 done
diff --git a/sam_experiments.py b/sam_experiments.py
index 1e6561d..d7ce6c2 100644
--- a/sam_experiments.py
+++ b/sam_experiments.py
@@ -1,19 +1,16 @@
 
 from stimuli.SinusAmplitudeModulation import SinusAmplitudeModulationStimulus as SAM
-from Baseline import get_baseline_class
-from FiCurve import FICurveModel
 from models.LIFACnoise import LifacNoiseModel
 import numpy as np
 import matplotlib.pyplot as plt
-import helperFunctions as hF
-from CellData import CellData
-from ModelFit import ModelFit, get_best_fit
+from my_util import helperFunctions as hF
+from parser.CellData import CellData
+from fitting.ModelFit import get_best_fit
 import os
-import shutil
 
 
 def main():
-    run_sam_analysis_for_all_cells("results/final_2")
+    run_sam_analysis_for_all_cells("results/final_sam")
 
     # sam_analysis("results/final_2/2011-10-25-ad-invivo-1/")
 
@@ -34,13 +31,14 @@ def run_sam_analysis_for_all_cells(folder):
     count = 0
     for item in os.listdir(folder):
         cell_folder = os.path.join(folder, item)
-        fit = get_best_fit(cell_folder, use_comparable_error=False)
-        cell_data = fit.get_cell_data()
-
-        if cell_data.has_sam_recordings():
-            count += 1
-            # print("Fit quality:", fit.get_fit_routine_error())
-            sam_analysis(cell_folder)
+        # fit = get_best_fit(cell_folder, use_comparable_error=False)
+        # cell_data = fit.get_cell_data()
+        #
+        # if cell_data.has_sam_recordings():
+        #     count += 1
+        #     # print("Fit quality:", fit.get_fit_routine_error())
+        #     sam_analysis(cell_folder)
+        sam_analysis(cell_folder)
     print(count)
 
 
@@ -165,10 +163,14 @@ def plot_mean_of_cuts():
 def sam_analysis(fit_path):
     modelfit = get_best_fit(fit_path)
 
-    if not os.path.exists(os.path.join(modelfit.get_cell_path(), "samallspikes1.dat")):
-        print("Cell: {} \n Has no measured sam stimuli.")
-        return
-    cell_data = CellData(modelfit.get_cell_path())
+    # if not os.path.exists(os.path.join(modelfit.get_cell_path(), "samallspikes1.dat")):
+    #     print("Cell: {} \n Has no measured sam stimuli.")
+    #     return
+    cell_data_path = modelfit.get_cell_path()
+    if "final_sam" in cell_data_path:
+        cell_data_path = cell_data_path.replace("final_sam", "final")
+
+    cell_data = CellData(cell_data_path)
     model = modelfit.get_model()
 
     # parameters = {'delta_a': 0.08820130374685671, 'refractory_period': 0.0006, 'a_zero': 15, 'step_size': 5e-05,
diff --git a/save_model_fits_as_csv.py b/save_model_fits_as_csv.py
index 0a87f73..3d404af 100644
--- a/save_model_fits_as_csv.py
+++ b/save_model_fits_as_csv.py
@@ -1,11 +1,9 @@
 
-from ModelFit import get_best_fit, ModelFit
+from fitting.ModelFit import get_best_fit
 import os
 import pandas as pd
 import numpy as np
 import matplotlib.pyplot as plt
-from Baseline import BaselineCellData
-
 
 SAVE_DIR = "results/lab_rotation/"
 
diff --git a/test.py b/test.py
index 7caf8b8..6373fef 100644
--- a/test.py
+++ b/test.py
@@ -1,24 +1,5 @@
-
-from Baseline import get_baseline_class
-from CellData import CellData, icelldata_of_dir
-from models.LIFACnoise import LifacNoiseModel
-from Baseline import BaselineCellData, BaselineModel
-from os import listdir
-import numpy as np
-from IPython import embed
-import pyrelacs.DataLoader as Dl
-from ModelFit import ModelFit, get_best_fit
-from FiCurve import FICurveModel, FICurveCellData
 import os
-import matplotlib.pyplot as plt
-import functions as fu
-from scipy.optimize import curve_fit
-from scipy.signal import find_peaks
-from thunderfish.eventdetection import threshold_crossing_times, threshold_crossings, detect_peaks
-import helperFunctions as hF
-import models.smallModels as sM
-from stimuli.SinusoidalStepStimulus import SinusoidalStepStimulus
-from matplotlib import gridspec
+
 # from plottools.axes import labelaxes_params
 
 
diff --git a/test_for_cells.py b/test_for_cells.py
index fed0f9a..ef4cd28 100644
--- a/test_for_cells.py
+++ b/test_for_cells.py
@@ -1,12 +1,12 @@
 
-from CellData import icelldata_of_dir, CellData
-from DataParserFactory import DatParser
+from parser.CellData import icelldata_of_dir, CellData
+from parser.DataParserFactory import DatParser
 import numpy as np
 import os
 import matplotlib.pyplot as plt
 import pyrelacs.DataLoader as Dl
-from Baseline import BaselineCellData
-from FiCurve import FICurveCellData
+from experiments.Baseline import BaselineCellData
+from experiments.FiCurve import FICurveCellData
 
 data_save_path = "test_routines/test_files/"
 read = False
diff --git a/tests/ModelTests.py b/tests/ModelTests.py
index 7a378d1..6e40b7f 100644
--- a/tests/ModelTests.py
+++ b/tests/ModelTests.py
@@ -1,12 +1,11 @@
 
 import matplotlib.pyplot as plt
 import numpy as np
-import helperFunctions as hf
+from my_util import helperFunctions as hf, functions as fu
 from models.FirerateModel import FirerateModel
 from models.LIFACnoise import LifacNoiseModel
 from stimuli.StepStimulus import StepStimulus
 from stimuli.SinusoidalStepStimulus import SinusoidalStepStimulus
-import functions as fu
 
 
 def main():
diff --git a/tests/functionalityTests.py b/tests/functionalityTests.py
index 18ff6c9..7357867 100644
--- a/tests/functionalityTests.py
+++ b/tests/functionalityTests.py
@@ -1,7 +1,7 @@
 
 import numpy as np
 import matplotlib.pyplot as plt
-import functions as fu
+from my_util import functions as fu
 
 
 def test_plot_inverses(ficurve):
diff --git a/tests/generalTests.py b/tests/generalTests.py
index 4770be4..beba646 100644
--- a/tests/generalTests.py
+++ b/tests/generalTests.py
@@ -1,20 +1,14 @@
-
-import helperFunctions as hf
-from CellData import icelldata_of_dir
-import functions as fu
+from my_util import helperFunctions as hf, functions as fu
+from parser.CellData import icelldata_of_dir
 import numpy as np
 import time
 import matplotlib.pyplot as plt
-import os
-from scipy.signal import argrelmax
 from thunderfish.eventdetection import detect_peaks
 from stimuli.SinusAmplitudeModulation import SinusAmplitudeModulationStimulus
 from models.LIFACnoise import LifacNoiseModel
-from FiCurve import FICurveModel, get_fi_curve_class
-from Baseline import get_baseline_class
-from AdaptionCurrent import Adaption
-from stimuli.StepStimulus import StepStimulus
-from stimuli.SinusoidalStepStimulus import SinusoidalStepStimulus
+from experiments.FiCurve import FICurveModel, get_fi_curve_class
+from experiments.Baseline import get_baseline_class
+from experiments.AdaptionCurrent import Adaption
 
 
 def time_test_function():
diff --git a/thesis/figures/f_point_detection.pdf b/thesis/figures/f_point_detection.pdf
index df13eef..7d99b45 100644
Binary files a/thesis/figures/f_point_detection.pdf and b/thesis/figures/f_point_detection.pdf differ
diff --git a/thesis/figures/isi_hist_heterogeneity.pdf b/thesis/figures/isi_hist_heterogeneity.pdf
index c96db03..2c9a596 100644
Binary files a/thesis/figures/isi_hist_heterogeneity.pdf and b/thesis/figures/isi_hist_heterogeneity.pdf differ
diff --git a/thesis/figures/p_unit_example.pdf b/thesis/figures/p_unit_example.pdf
index a939128..d6fcdbe 100644
Binary files a/thesis/figures/p_unit_example.pdf and b/thesis/figures/p_unit_example.pdf differ
diff --git a/unittests/testBaseline.py b/unittests/testBaseline.py
index 9926123..6d01b7e 100644
--- a/unittests/testBaseline.py
+++ b/unittests/testBaseline.py
@@ -1,11 +1,7 @@
 
 import unittest
-import numpy as np
-import helperFunctions as hF
-import matplotlib.pyplot as plt
-from CellData import icelldata_of_dir
-from Baseline import BaselineCellData
-import os
+from parser.CellData import icelldata_of_dir
+from experiments.Baseline import BaselineCellData
 
 
 class BaselineTester(unittest.TestCase):
diff --git a/unittests/testFrequencyFunctions.py b/unittests/testFrequencyFunctions.py
index c5d8ac1..fb6bb56 100644
--- a/unittests/testFrequencyFunctions.py
+++ b/unittests/testFrequencyFunctions.py
@@ -1,6 +1,6 @@
 import unittest
 import numpy as np
-import helperFunctions as hF
+from my_util import helperFunctions as hF
 import matplotlib.pyplot as plt
 from warnings import warn
 
diff --git a/unittests/testHelperFunctions.py b/unittests/testHelperFunctions.py
index 5aa0496..181005d 100644
--- a/unittests/testHelperFunctions.py
+++ b/unittests/testHelperFunctions.py
@@ -1,9 +1,8 @@
 import unittest
 import numpy as np
-import helperFunctions as hF
-import matplotlib.pyplot as plt
-from CellData import icelldata_of_dir
-from Baseline import BaselineCellData
+from my_util import helperFunctions as hF
+from parser.CellData import icelldata_of_dir
+from experiments.Baseline import BaselineCellData
 import os
 
 
diff --git a/unittests/testLifacNoise.py b/unittests/testLifacNoise.py
index f22bfea..a7a87c8 100644
--- a/unittests/testLifacNoise.py
+++ b/unittests/testLifacNoise.py
@@ -1,8 +1,7 @@
 
 import unittest
 import numpy as np
-import helperFunctions as hF
-import matplotlib.pyplot as plt
+from my_util import helperFunctions as hF
 from models.LIFACnoise import LifacNoiseModel
 from stimuli.SinusAmplitudeModulation import SinusAmplitudeModulationStimulus
 
diff --git a/unittests/testSinusAmplitudeModulation.py b/unittests/testSinusAmplitudeModulation.py
index c69bd07..dc8c8e8 100644
--- a/unittests/testSinusAmplitudeModulation.py
+++ b/unittests/testSinusAmplitudeModulation.py
@@ -1,9 +1,7 @@
 from stimuli.SinusAmplitudeModulation import SinusAmplitudeModulationStimulus
 import unittest
 import numpy as np
-import helperFunctions as hF
 import matplotlib.pyplot as plt
-from warnings import warn
 
 
 class SinusoidalStimulusTester(unittest.TestCase):
diff --git a/unittests/testSinusoidalStepStimulus.py b/unittests/testSinusoidalStepStimulus.py
index 09d819e..d288598 100644
--- a/unittests/testSinusoidalStepStimulus.py
+++ b/unittests/testSinusoidalStepStimulus.py
@@ -1,9 +1,7 @@
 from stimuli.SinusoidalStepStimulus import SinusoidalStepStimulus
 import unittest
 import numpy as np
-import helperFunctions as hF
 import matplotlib.pyplot as plt
-from warnings import warn
 
 
 class SinusoidalStepStimulusTester(unittest.TestCase):
diff --git a/variableEffect.py b/variableEffect.py
index 354556e..50e1aca 100644
--- a/variableEffect.py
+++ b/variableEffect.py
@@ -1,7 +1,7 @@
 
 from models.LIFACnoise import LifacNoiseModel
-from Baseline import BaselineModel
-from FiCurve import FICurveModel
+from experiments.Baseline import BaselineModel
+from experiments.FiCurve import FICurveModel
 import numpy as np
 import matplotlib.pyplot as plt
 import copy