improve analysis

This commit is contained in:
alexanderott 2021-02-13 11:36:17 +01:00
parent f7926e02f5
commit 00843beb05
8 changed files with 96 additions and 35 deletions

View File

@ -1,13 +1,29 @@
import os import os
import Figures_Baseline
import Figures_Stimuli import Figures_results as Fr
import Figures_Model import Figure_constants as Fc
import Figures_results import my_util.save_load as sl
fit_folder = "results/sam_cells" # kraken fit
# fit_folder = "results/final_sam_dend_noise_test/" # noise in input fit
# fit_folder = "results/final_sam2/" # noise in input fit
figure_folder = "temp/preliminary_figures/"
pre_analysis_folder = "temp/pre_analysis/"
def main(): def main():
pass
for folder in (figure_folder, pre_analysis_folder):
if not os.path.exists(folder):
os.makedirs(folder)
Fc.SAVE_FOLDER = figure_folder
Fr.run_all_images(fit_folder, filter=False, pre_analysis_path=pre_analysis_folder, recalculate=True)
if __name__ == '__main__': if __name__ == '__main__':
main() main()

View File

@ -2,14 +2,18 @@ import numpy as np
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec import matplotlib.gridspec as gridspec
import matplotlib as mpl import matplotlib as mpl
from scipy.stats import pearsonr
import os
from analysis import get_filtered_fit_info, get_behaviour_values, get_parameter_values, behaviour_correlations, parameter_correlations 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 fitting.ModelFit import get_best_fit
from experiments.Baseline import BaselineModel, BaselineCellData from experiments.Baseline import BaselineModel, BaselineCellData
from experiments.FiCurve import FICurveModel, FICurveCellData from experiments.FiCurve import FICurveModel, FICurveCellData
from parser.CellData import CellData from parser.CellData import CellData
from my_util import functions as fu from my_util import functions as fu
from my_util import save_load
import Figure_constants as consts import Figure_constants as consts
from scipy.stats import pearsonr
parameter_titles = {"input_scaling": r"$\alpha$", "delta_a": r"$\Delta_A$", parameter_titles = {"input_scaling": r"$\alpha$", "delta_a": r"$\Delta_A$",
"mem_tau": r"$\tau_m$", "noise_strength": r"$\sqrt{2D}$", "mem_tau": r"$\tau_m$", "noise_strength": r"$\sqrt{2D}$",
@ -58,12 +62,30 @@ def main():
# example_bad_fi_fits(dir_path) # example_bad_fi_fits(dir_path)
def run_all_images(): def run_all_images(dir_path, filter=True, pre_analysis_path="", recalculate=False):
dend_tau_and_ref_effect()
dir_path = "results/final_2/"
fits_info = get_filtered_fit_info(dir_path, filter=True) if pre_analysis_path != "":
cell_behaviour, model_behaviour = get_behaviour_values(fits_info) fit_info_name = "figures_res_fit_info.npy"
behaviours_name = "figures_res_behaviour.npy"
fit_info_path = os.path.join(pre_analysis_path, fit_info_name)
if not os.path.exists(fit_info_path) or recalculate:
fits_info = get_filtered_fit_info(dir_path, filter=filter)
save_load.save(fits_info, fit_info_path)
else:
fits_info = save_load.load(fit_info_path)
behaviours_path = os.path.join(pre_analysis_path, behaviours_name)
if not os.path.exists(behaviours_path) or recalculate:
cell_behaviour, model_behaviour = get_behaviour_values(fits_info)
save_load.save([cell_behaviour, model_behaviour], behaviours_path)
else:
cell_behaviour, model_behaviour = save_load.load(behaviours_path)
else:
fits_info = get_filtered_fit_info(dir_path, filter=True)
cell_behaviour, model_behaviour = get_behaviour_values(fits_info)
plot_cell_model_comp_baseline(cell_behaviour, model_behaviour) plot_cell_model_comp_baseline(cell_behaviour, model_behaviour)
plot_cell_model_comp_adaption(cell_behaviour, model_behaviour) plot_cell_model_comp_adaption(cell_behaviour, model_behaviour)
@ -75,10 +97,13 @@ def run_all_images():
create_parameter_distributions(get_parameter_values(fits_info)) create_parameter_distributions(get_parameter_values(fits_info))
create_parameter_distributions(get_parameter_values(fits_info, scaled=True, goal_eodf=800), "scaled_to_800_") create_parameter_distributions(get_parameter_values(fits_info, scaled=True, goal_eodf=800), "scaled_to_800_")
example_good_hist_fits(dir_path) # Plots using example cells:
example_bad_hist_fits(dir_path)
example_good_fi_fits(dir_path) # dend_tau_and_ref_effect()
example_bad_fi_fits(dir_path) # example_good_hist_fits(dir_path)
# example_bad_hist_fits(dir_path)
# example_good_fi_fits(dir_path)
# example_bad_fi_fits(dir_path)
def visualize_tested_correlations(fits_info): def visualize_tested_correlations(fits_info):
@ -629,6 +654,7 @@ def plot_cell_model_comp_baseline(cell_behavior, model_behaviour):
ax = fig.add_subplot(gs[1, i]) ax = fig.add_subplot(gs[1, i])
ax_histx = fig.add_subplot(gs[0, i], sharex=ax) ax_histx = fig.add_subplot(gs[0, i], sharex=ax)
print("Cells in cell_model_comp_baseline:", len(cell))
scatter_hist(cell, model, ax, ax_histx, behaviour_titles["vector_strength"], bins) # , cmap, cell_bursting) scatter_hist(cell, model, ax, ax_histx, behaviour_titles["vector_strength"], bins) # , cmap, cell_bursting)
ax.set_xlabel(r"Cell") ax.set_xlabel(r"Cell")
ax.set_ylabel(r"Model") ax.set_ylabel(r"Model")

View File

@ -114,6 +114,9 @@ def get_filtered_fit_info(folder, filter=True):
for item in os.listdir(folder): for item in os.listdir(folder):
cell_folder = os.path.join(folder, item) cell_folder = os.path.join(folder, item)
if not os.path.isdir(cell_folder):
continue
results = get_best_fit(cell_folder, use_comparable_error=False) results = get_best_fit(cell_folder, use_comparable_error=False)
cell_behaviour, model_behaviour = results.get_behaviour_values() cell_behaviour, model_behaviour = results.get_behaviour_values()

View File

@ -79,6 +79,13 @@ class DatParser(AbstractParser):
def has_sam_recordings(self): def has_sam_recordings(self):
return exists(self.sam_file) return exists(self.sam_file)
def get_measured_repros(self):
repros = []
for metadata, key, data in Dl.iload(self.stimuli_file):
repros.extend([d["repro"] for d in metadata if "repro" in d.keys()])
return sorted(np.unique(repros))
def get_baseline_length(self): def get_baseline_length(self):
lengths = [] lengths = []
for metadata, key, data in Dl.iload(self.baseline_file): for metadata, key, data in Dl.iload(self.baseline_file):

View File

@ -5,13 +5,12 @@ from experiments.Baseline import get_baseline_class
from experiments.FiCurve import get_fi_curve_class from experiments.FiCurve import get_fi_curve_class
from fitting.Fitter import Fitter from fitting.Fitter import Fitter
from fitting.ModelFit import get_best_fit, ModelFit from fitting.ModelFit import get_best_fit, ModelFit
from my_util.helperFunctions import plot_errors
import time import time
import os import os
import argparse import argparse
import numpy as np import numpy as np
from my_util.helperFunctions import plot_errors
import multiprocessing as mp import multiprocessing as mp
SAVE_DIRECTORY = "./results/sam_cells/" SAVE_DIRECTORY = "./results/sam_cells/"

View File

@ -10,7 +10,7 @@ import os
def main(): def main():
run_sam_analysis_for_all_cells("results/final_sam2") run_sam_analysis_for_all_cells("results/sam_cells")
# sam_analysis("results/final_2/2011-10-25-ad-invivo-1/") # sam_analysis("results/final_2/2011-10-25-ad-invivo-1/")

View File

44
test.py
View File

@ -1,5 +1,6 @@
import os import os
from parser.CellData import CellData from parser.CellData import CellData
from parser.DataParserFactory import DatParser
import numpy as np import numpy as np
from fitting.ModelFit import ModelFit, get_best_fit from fitting.ModelFit import ModelFit, get_best_fit
# from plottools.axes import labelaxes_params # from plottools.axes import labelaxes_params
@ -9,35 +10,43 @@ colors = ["black", "red", "blue", "orange", "green"]
def main(): def main():
# sam_tests()
# cells = 40
number = len([i for i in iget_start_parameters()])
single_core = number * 1400 / 60 / 60
print("start parameters:", number)
print("single core time:", single_core, "h")
print("single core time:", single_core/24, "days")
cores = 16
cells = 40
print(cores, "core time:", single_core/cores, "h") fit = get_best_fit("results/kraken_fit/2011-10-25-ad-invivo-1/")
print(cores, "core time:", single_core / 24 / cores, "days") print(fit.get_fit_routine_error())
print(cores, "core time all", cells, "cells:", single_core / 24 / cores * cells, "days")
print("left over:", number%cores) quit()
sam_tests()
# cells = 40
# number = len([i for i in iget_start_parameters()])
# single_core = number * 1400 / 60 / 60
# print("start parameters:", number)
# print("single core time:", single_core, "h")
# print("single core time:", single_core/24, "days")
#
# cores = 16
# cells = 40
#
# print(cores, "core time:", single_core/cores, "h")
# print(cores, "core time:", single_core / 24 / cores, "days")
# print(cores, "core time all", cells, "cells:", single_core / 24 / cores * cells, "days")
#
# print("left over:", number%cores)
# fit = get_best_fit("results/final_sam2/2012-12-20-ae-invivo-1/") # fit = get_best_fit("results/final_sam2/2012-12-20-ae-invivo-1/")
# fit.generate_master_plot() # fit.generate_master_plot()
def sam_tests(): def sam_tests():
data_folder = "./data/final/" data_folder = "./data/final_sam/"
for cell in sorted(os.listdir(data_folder)): for cell in sorted(os.listdir(data_folder)):
print(cell) print(cell)
cell_folder = os.path.join(data_folder, cell) cell_folder = os.path.join(data_folder, cell)
if not os.path.exists(os.path.join(cell_folder, "samspikes1.dat")): if not os.path.exists(os.path.join(cell_folder, "samspikes1.dat")):
continue continue
if "2018-05-08-aa-invivo-1" not in cell:
continue
cell_data = CellData(cell_folder) cell_data = CellData(cell_folder)
sampling_rate = int(round(1 / cell_data.get_sampling_interval())) sampling_rate = int(round(1 / cell_data.get_sampling_interval()))
sam_spikes = cell_data.get_sam_spiketimes() sam_spikes = cell_data.get_sam_spiketimes()
@ -46,7 +55,8 @@ def sam_tests():
[time_traces, v1_traces, eod_traces, local_eod_traces, stimulus_traces] = cell_data.get_sam_traces() [time_traces, v1_traces, eod_traces, local_eod_traces, stimulus_traces] = cell_data.get_sam_traces()
print(len(time_traces)) print(len(time_traces))
for i in range(len(delta_freqs)): for i in range(len(delta_freqs)):
if abs(delta_freqs[i]) > 50:
continue
fig, axes = plt.subplots(2, 1, sharex="all") fig, axes = plt.subplots(2, 1, sharex="all")
axes[0].plot(time_traces[i], local_eod_traces[i]) axes[0].plot(time_traces[i], local_eod_traces[i])
@ -59,7 +69,7 @@ def sam_tests():
colors=colors[j % len(colors)]) colors=colors[j % len(colors)])
plt.show() plt.show()
plt.close() plt.close()
break
def average_spike_height(spike_trains, local_eod, sampling_rate): def average_spike_height(spike_trains, local_eod, sampling_rate):