restructure project

This commit is contained in:
alexanderott 2021-01-09 23:59:34 +01:00
parent 309b30b9fa
commit ea580863b1
55 changed files with 206 additions and 190 deletions

View File

@ -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()

View File

@ -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

View File

@ -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

View File

@ -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$",

View File

@ -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():

View File

@ -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):

View File

@ -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():

View File

@ -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:

View File

@ -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

View File

@ -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

View File

@ -1,5 +1,5 @@
from CellData import CellData
from parser.CellData import CellData
from models.LIFACnoise import LifacNoiseModel

0
experiments/__init__.py Normal file
View File

View File

@ -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

View File

@ -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:

View File

@ -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

0
fitting/__init__.py Normal file
View File

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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():

17
main.py
View File

@ -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()

View File

@ -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):

View File

@ -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

View File

@ -1,7 +1,5 @@
import numpy as np
import matplotlib.pyplot as plt
import helperFunctions as hF
def main():

0
my_util/__init__.py Normal file
View File

View File

@ -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

View File

@ -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)

28
my_util/save_load.py Normal file
View File

@ -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

View File

@ -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

0
parser/__init__.py Normal file
View File

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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,12 +31,13 @@ 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())
# 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,

View File

@ -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/"

21
test.py
View File

@ -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

View File

@ -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

View File

@ -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():

View File

@ -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):

View File

@ -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():

Binary file not shown.

Binary file not shown.

View File

@ -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):

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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):

View File

@ -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):

View File

@ -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