diff --git a/code/base_chirps.py b/code/base_chirps.py index f19b18e..1b26e6c 100644 --- a/code/base_chirps.py +++ b/code/base_chirps.py @@ -8,45 +8,48 @@ from IPython import embed data_dir = "../data" -data = ("2018-11-09-ad-invivo-1", "2018-11-09-ae-invivo-1", "2018-11-09-ag-invivo-1", "2018-11-13-aa-invivo-1", "2018-11-13-ac-invivo-1", "2018-11-13-ad-invivo-1", "2018-11-13-ah-invivo-1", "2018-11-13-ai-invivo-1", "2018-11-13-aj-invivo-1", "2018-11-13-ak-invivo-1", "2018-11-13-al-invivo-1", "2018-11-14-aa-invivo-1", "2018-11-14-ac-invivo-1", "2018-11-14-ad-invivo-1", "2018-11-14-af-invivo-1", "2018-11-14-ag-invivo-1", "2018-11-14-ah-invivo-1", "2018-11-14-ai-invivo-1", "2018-11-14-ak-invivo-1", "2018-11-14-al-invivo-1", "2018-11-14-am-invivo-1", "2018-11-14-an-invivo-1", "2018-11-20-aa-invivo-1", "2018-11-20-ab-invivo-1", "2018-11-20-ac-invivo-1", "2018-11-20-ad-invivo-1", "2018-11-20-ae-invivo-1", "2018-11-20-af-invivo-1", "2018-11-20-ag-invivo-1", "2018-11-20-ah-invivo-1", "2018-11-20-ai-invivo-1") +dataset = "2018-11-13-ah-invivo-1" +data = ["2018-11-09-ad-invivo-1", "2018-11-09-ae-invivo-1", "2018-11-09-ag-invivo-1", "2018-11-13-aa-invivo-1", "2018-11-13-ac-invivo-1", "2018-11-13-ad-invivo-1", "2018-11-13-ah-invivo-1", "2018-11-13-ai-invivo-1", "2018-11-13-aj-invivo-1", "2018-11-13-ak-invivo-1", "2018-11-13-al-invivo-1", "2018-11-14-aa-invivo-1", "2018-11-14-ac-invivo-1", "2018-11-14-ad-invivo-1", "2018-11-14-af-invivo-1", "2018-11-14-ag-invivo-1", "2018-11-14-ah-invivo-1", "2018-11-14-ai-invivo-1", "2018-11-14-ak-invivo-1", "2018-11-14-al-invivo-1", "2018-11-14-am-invivo-1", "2018-11-14-an-invivo-1", "2018-11-20-aa-invivo-1", "2018-11-20-ab-invivo-1", "2018-11-20-ac-invivo-1", "2018-11-20-ad-invivo-1", "2018-11-20-ae-invivo-1", "2018-11-20-af-invivo-1", "2018-11-20-ag-invivo-1", "2018-11-20-ah-invivo-1", "2018-11-20-ai-invivo-1"] +#for dataset in data: -for dataset in data: - print(dataset) - eod = read_chirp_eod(os.path.join(data_dir, dataset)) - times = read_chirp_times(os.path.join(data_dir, dataset)) - df_map = map_keys(eod) - sort_df = sorted(df_map.keys()) +eod = read_chirp_eod(os.path.join(data_dir, dataset)) +times = read_chirp_times(os.path.join(data_dir, dataset)) +df_map = map_keys(eod) +sort_df = sorted(df_map.keys()) - chirp_eod_plot(df_map, eod, times) +eods = chirp_eod_plot(df_map, eod, times) +plt.show() +plt.close('all') - chirp_mods = [] - beat_mods = [] - for i in sort_df: - freq = list(df_map[i]) - ls_mod, beat_mod = cut_chirps(freq, eod, times) - chirp_mods.append(ls_mod) - beat_mods.append(beat_mod) - +chirp_mods = {} +beat_mods = [] +for i in sort_df: + chirp_mods[i] = [] + freq = list(df_map[i]) + ls_mod, beat_mod = cut_chirps(freq, eod, times) + chirp_mods[i].append(ls_mod) + beat_mods.append(beat_mod) #Chirps einer Phase zuordnen - zusammen plotten - chirp_spikes = read_chirp_spikes(os.path.join(data_dir, dataset)) - df_map = map_keys(chirp_spikes) - sort_df = sorted(df_map.keys()) - - #plot_std_chirp(sort_df, df_map, chirp_spikes, chirp_mods) - - +chirp_spikes = read_chirp_spikes(os.path.join(data_dir, dataset)) +df_map = map_keys(chirp_spikes) +sort_df = sorted(df_map.keys()) +dct_phase = plot_std_chirp(sort_df, df_map, chirp_spikes, chirp_mods) +plt.show() +plt.close('all') +''' #Vatriablen speichern, die man für die Übersicht aller Zellen braucht - name = str(dataset.strip('invivo-1')) + name = str(dataset.replace('-invivo-1', '')) + print('saving ../results/Chirpcut/Cc_' + name + '.dat') f = open('../results/Chirpcut/Cc_' + name + '.dat' , 'w') f.write(str(sort_df)) f.write(str(df_map)) @@ -56,3 +59,4 @@ for dataset in data: #f.write(str(chirp_mods)) #f.write(str(beat_mods)) f.close() +''' diff --git a/code/base_spikes.py b/code/base_spikes.py index 9f8bbc2..754df12 100644 --- a/code/base_spikes.py +++ b/code/base_spikes.py @@ -3,7 +3,7 @@ from read_chirp_data import * from func_spike import * import matplotlib.pyplot as plt import numpy as np -from IPython import embed #Funktionen imposrtieren +from IPython import embed #Funktionen importieren @@ -11,77 +11,77 @@ data_dir = "../data" data_base = ("2018-11-09-ab-invivo-1", "2018-11-09-ad-invivo-1", "2018-11-13-aa-invivo-1", "2018-11-13-ab-invivo-1", "2018-11-13-ad-invivo-1", "2018-11-13-af-invivo-1", "2018-11-13-ag-invivo-1", "2018-11-13-ah-invivo-1", "2018-11-13-ai-invivo-1", "2018-11-13-aj-invivo-1", "2018-11-13-ak-invivo-1", "2018-11-13-al-invivo-1", "2018-11-14-ab-invivo-1", "2018-11-14-ac-invivo-1", "2018-11-14-ad-invivo-1", "2018-11-14-ae-invivo-1", "2018-11-14-af-invivo-1", "2018-11-14-ag-invivo-1", "2018-11-14-aj-invivo-1", "2018-11-14-ak-invivo-1", "2018-11-14-al-invivo-1", "2018-11-14-am-invivo-1", "2018-11-14-an-invivo-1", "2018-11-20-ab-invivo-1", "2018-11-20-ac-invivo-1", "2018-11-20-ad-invivo-1", "2018-11-20-ae-invivo-1", "2018-11-20-af-invivo-1", "2018-11-20-ag-invivo-1", "2018-11-20-ah-invivo-1", "2018-11-20-ai-invivo-1") data_chirps = ("2018-11-09-ad-invivo-1", "2018-11-09-ae-invivo-1", "2018-11-09-ag-invivo-1", "2018-11-13-aa-invivo-1", "2018-11-13-ac-invivo-1", "2018-11-13-ad-invivo-1", "2018-11-13-ah-invivo-1", "2018-11-13-ai-invivo-1", "2018-11-13-aj-invivo-1", "2018-11-13-ak-invivo-1", "2018-11-13-al-invivo-1", "2018-11-14-aa-invivo-1", "2018-11-14-ac-invivo-1", "2018-11-14-ad-invivo-1", "2018-11-14-af-invivo-1", "2018-11-14-ag-invivo-1", "2018-11-14-ah-invivo-1", "2018-11-14-ai-invivo-1", "2018-11-14-ak-invivo-1", "2018-11-14-al-invivo-1", "2018-11-14-am-invivo-1", "2018-11-14-an-invivo-1", "2018-11-20-aa-invivo-1", "2018-11-20-ab-invivo-1", "2018-11-20-ac-invivo-1", "2018-11-20-ad-invivo-1", "2018-11-20-ae-invivo-1", "2018-11-20-af-invivo-1", "2018-11-20-ag-invivo-1", "2018-11-20-ah-invivo-1", "2018-11-20-ai-invivo-1") +dataset = "2018-11-14-al-invivo-1" -''' -for dataset in data_base: +#for dataset in data_base: - print(dataset) - spike_times = read_baseline_spikes(os.path.join(data_dir, dataset)) - spike_iv = np.diff(spike_times) - x = np.arange(0.001, 0.01, 0.0001) - plt.hist(spike_iv,x) +spike_times = read_baseline_spikes(os.path.join(data_dir, dataset)) +spike_iv = np.diff(spike_times) +x = np.arange(0.001, 0.01, 0.0001) +plt.hist(spike_iv,x) - mu = np.mean(spike_iv) - sigma = np.std(spike_iv) - cv = sigma/mu +mu = np.mean(spike_iv) +sigma = np.std(spike_iv) +cv = sigma/mu - plt.title('A.lepto ISI Histogramm', fontsize = 14) - plt.xlabel('duration ISI[ms]', fontsize = 12) - plt.ylabel('number of ISI', fontsize = 12) +plt.title('A.lepto ISI Histogramm', fontsize = 14) +plt.xlabel('duration ISI[ms]', fontsize = 12) +plt.ylabel('number of ISI', fontsize = 12) - plt.xticks(fontsize = 12) - plt.yticks(fontsize = 12) -''' +plt.xticks(fontsize = 12) +plt.yticks(fontsize = 12) +plt.show() -for dataset in data_chirps: +#for dataset in data_chirps: #Nyquist-Theorem Plot: - print(dataset) - chirp_spikes = read_chirp_spikes(os.path.join(data_dir, dataset)) - times = read_chirp_times(os.path.join(data_dir, dataset)) - eod = read_chirp_eod(os.path.join(data_dir, dataset)) - df_map = map_keys(chirp_spikes) - sort_df = sorted(df_map.keys()) - - dct_rate, over_r = spike_rates(sort_df, df_map, chirp_spikes) +chirp_spikes = read_chirp_spikes(os.path.join(data_dir, dataset)) +times = read_chirp_times(os.path.join(data_dir, dataset)) +eod = read_chirp_eod(os.path.join(data_dir, dataset)) +df_map = map_keys(chirp_spikes) +sort_df = sorted(df_map.keys()) - plt.figure() - ls_mean = plot_df_spikes(sort_df, dct_rate) +dct_rate, over_r = spike_rates(sort_df, df_map, chirp_spikes) +plt.figure() +ls_mean = plot_df_spikes(sort_df, dct_rate) +plt.show() #mittlere Feuerrate einer Frequenz auf Frequenz: - plt.figure() - plt.plot(np.arange(0,len(ls_mean),1),ls_mean) - plt.scatter(np.arange(0,len(ls_mean),1), np.ones(len(ls_mean))*over_r) - plt.title('Mean firing rate of a cell for a range of frequency differences') - plt.xticks(np.arange(1,len(sort_df),1), (sort_df)) - plt.xlabel('Range of frequency differences [Hz]') - plt.ylabel('Mean firing rate of the cell') - +plt.figure() +plt.plot(np.arange(0,len(ls_mean),1),ls_mean) +plt.scatter(np.arange(0,len(ls_mean),1), np.ones(len(ls_mean))*over_r) +plt.title('Mean firing rate of a cell for a range of frequency differences') +plt.xticks(np.arange(1,len(sort_df),1), (sort_df)) +plt.xlabel('Range of frequency differences [Hz]') +plt.ylabel('Mean firing rate of the cell') +plt.show() #Adaption der Zellen: #wie viel Prozent der Anfangsrate macht die Adaption von Zellen aus? - adapt = adaptation_df(sort_df, dct_rate) - plt.figure() - plt.boxplot(adapt) - plt.title('Adaptation of cell firing rate during a trial') - plt.xlabel('Cell') - plt.ylabel('Adaptation size [Hz]') +adapt = adaptation_df(sort_df, dct_rate) +plt.figure() +plt.boxplot(adapt) +plt.title('Adaptation of cell firing rate during a trial') +plt.xlabel('Cell') +plt.ylabel('Adaptation size [Hz]') +plt.show() +''' #Vatriablen speichern, die man für die Übersicht aller Zellen braucht - name = str(dataset.strip('invivo-1')) + name = str(dataset.replace('-invivo-1', '')) f = open('../results/Nyquist/Ny_' + name + '.txt' , 'w') f.write(str(sort_df)) f.write(str(df_map)) @@ -91,3 +91,4 @@ for dataset in data_chirps: f.write(str(over_r)) f.write(str(adapt)) f.close() +''' diff --git a/code/func_chirp.py b/code/func_chirp.py index 836b52d..b358e3a 100644 --- a/code/func_chirp.py +++ b/code/func_chirp.py @@ -21,23 +21,21 @@ def chirp_eod_plot(df_map, eod, times): if idx <= 3: axs[0, 0].plot(zeit, eods, color= 'blue', linewidth = 0.25) - axs[0, 0].scatter(np.asarray(ct), np.ones(len(ct))*3, color = 'green', s= 22) + axs[0, 0].scatter(np.asarray(ct), np.ones(len(ct))*np.mean(eods), color = 'green', s= 22) elif 4<= idx <= 7: axs[0, 1].plot(zeit, eods, color= 'blue', linewidth = 0.25) - axs[0, 1].scatter(np.asarray(ct), np.ones(len(ct))*3, color = 'green', s= 22) + axs[0, 1].scatter(np.asarray(ct), np.ones(len(ct))*np.mean(eods), color = 'green', s= 22) elif 8<= idx <= 11: axs[1, 0].plot(zeit, eods, color= 'blue', linewidth = 0.25) - axs[1, 0].scatter(np.asarray(ct), np.ones(len(ct))*3, color = 'green', s= 22) + axs[1, 0].scatter(np.asarray(ct), np.ones(len(ct))*np.mean(eods), color = 'green', s= 22) else: axs[1, 1].plot(zeit, eods, color= 'blue', linewidth = 0.25) - axs[1, 1].scatter(np.asarray(ct), np.ones(len(ct))*3, color = 'green', s= 22) + axs[1, 1].scatter(np.asarray(ct), np.ones(len(ct))*np.mean(eods), color = 'green', s= 22) + axs[0,1].set_ylabel('Amplitude [mV]') + axs[1,0].set_xlabel('Time [ms]') fig.suptitle('EOD for chirps', fontsize = 16) - axs[0,0].set_ylabel('Amplitude [mV]') - axs[0,1].set_xlabel('Amplitude [mV]') - axs[1,0].set_xlabel('Time [ms]') - axs[1,1].set_xlabel('Time [ms]') - plt.close() + @@ -60,15 +58,17 @@ def cut_chirps(freq, eod, times): ls_beat.extend(beat_cut) beat_mod = np.std(ls_beat) #Std vom Bereich vor dem Chirp - plt.figure() - plt.scatter(np.arange(0,len(ls_mod),1), ls_mod) - plt.scatter(np.arange(0,len(ls_mod),1), np.ones(len(ls_mod))*beat_mod, color = 'violet') - plt.close() + #plt.figure() + #plt.scatter(np.arange(0,len(ls_mod),1), ls_mod) + #plt.scatter(np.arange(0,len(ls_mod),1), np.ones(len(ls_mod))*beat_mod, color = 'violet') return(ls_mod, beat_mod) -def plot_std_chirp(sort_df, df_map, chirp_spikes, ls_mod): + + +def plot_std_chirp(sort_df, df_map, chirp_spikes, chirp_mods): + plt.figure() dct_phase = {} num_bin = 12 @@ -80,8 +80,12 @@ def plot_std_chirp(sort_df, df_map, chirp_spikes, ls_mod): for k in freq: for phase in chirp_spikes[k]: dct_phase[i].append(phase[1]) - - plt.scatter(dct_phase[i], ls_mod[i]) - plt.title('Change of std depending on the phase where the chirp occured') - plt.close() + + for i in sort_df: + plt.scatter(dct_phase[i], chirp_mods[i], label = i) + plt.title('Change of std depending on the phase where the chirp occured') + plt.xlabel('Phase') + plt.ylabel('Standard deviation of the amplitude modulation') + plt.legend() + return(dct_phase) diff --git a/code/vector_phase.py b/code/vector_phase.py index c902e6e..7828c2c 100644 --- a/code/vector_phase.py +++ b/code/vector_phase.py @@ -18,8 +18,5 @@ eod_durations = np.diff(eod_times) print(len(spike_times)) print(len(eod_durations)) -#for st in spike_times: - #et = eod_times[eod_times < st] - #dt = st - et #vs = vector_strength(spike_times, eod_durations)