This commit is contained in:
efish 2018-11-28 17:30:08 +01:00
parent 5cd62554fa
commit 23675241f0
4 changed files with 94 additions and 88 deletions

View File

@ -8,45 +8,48 @@ from IPython import embed
data_dir = "../data" 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: eod = read_chirp_eod(os.path.join(data_dir, dataset))
print(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(eod)
times = read_chirp_times(os.path.join(data_dir, dataset)) sort_df = sorted(df_map.keys())
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 = [] chirp_mods = {}
for i in sort_df: beat_mods = []
for i in sort_df:
chirp_mods[i] = []
freq = list(df_map[i]) freq = list(df_map[i])
ls_mod, beat_mod = cut_chirps(freq, eod, times) ls_mod, beat_mod = cut_chirps(freq, eod, times)
chirp_mods.append(ls_mod) chirp_mods[i].append(ls_mod)
beat_mods.append(beat_mod) beat_mods.append(beat_mod)
#Chirps einer Phase zuordnen - zusammen plotten #Chirps einer Phase zuordnen - zusammen plotten
chirp_spikes = read_chirp_spikes(os.path.join(data_dir, dataset)) chirp_spikes = read_chirp_spikes(os.path.join(data_dir, dataset))
df_map = map_keys(chirp_spikes) df_map = map_keys(chirp_spikes)
sort_df = sorted(df_map.keys()) sort_df = sorted(df_map.keys())
dct_phase = plot_std_chirp(sort_df, df_map, chirp_spikes, chirp_mods)
#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 #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 = open('../results/Chirpcut/Cc_' + name + '.dat' , 'w')
f.write(str(sort_df)) f.write(str(sort_df))
f.write(str(df_map)) f.write(str(df_map))
@ -56,3 +59,4 @@ for dataset in data:
#f.write(str(chirp_mods)) #f.write(str(chirp_mods))
#f.write(str(beat_mods)) #f.write(str(beat_mods))
f.close() f.close()
'''

View File

@ -3,7 +3,7 @@ from read_chirp_data import *
from func_spike import * from func_spike import *
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import numpy as np 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_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") 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_times = read_baseline_spikes(os.path.join(data_dir, dataset)) spike_iv = np.diff(spike_times)
spike_iv = np.diff(spike_times) x = np.arange(0.001, 0.01, 0.0001)
x = np.arange(0.001, 0.01, 0.0001) plt.hist(spike_iv,x)
plt.hist(spike_iv,x)
mu = np.mean(spike_iv) mu = np.mean(spike_iv)
sigma = np.std(spike_iv) sigma = np.std(spike_iv)
cv = sigma/mu cv = sigma/mu
plt.title('A.lepto ISI Histogramm', fontsize = 14) plt.title('A.lepto ISI Histogramm', fontsize = 14)
plt.xlabel('duration ISI[ms]', fontsize = 12) plt.xlabel('duration ISI[ms]', fontsize = 12)
plt.ylabel('number of ISI', fontsize = 12) plt.ylabel('number of ISI', fontsize = 12)
plt.xticks(fontsize = 12) plt.xticks(fontsize = 12)
plt.yticks(fontsize = 12) plt.yticks(fontsize = 12)
''' plt.show()
for dataset in data_chirps: #for dataset in data_chirps:
#Nyquist-Theorem Plot: #Nyquist-Theorem Plot:
print(dataset) chirp_spikes = read_chirp_spikes(os.path.join(data_dir, dataset))
chirp_spikes = read_chirp_spikes(os.path.join(data_dir, dataset)) times = read_chirp_times(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))
eod = read_chirp_eod(os.path.join(data_dir, dataset)) df_map = map_keys(chirp_spikes)
df_map = map_keys(chirp_spikes) sort_df = sorted(df_map.keys())
sort_df = sorted(df_map.keys())
dct_rate, over_r = spike_rates(sort_df, df_map, chirp_spikes)
plt.figure() dct_rate, over_r = spike_rates(sort_df, df_map, chirp_spikes)
ls_mean = plot_df_spikes(sort_df, dct_rate)
plt.figure()
ls_mean = plot_df_spikes(sort_df, dct_rate)
plt.show()
#mittlere Feuerrate einer Frequenz auf Frequenz: #mittlere Feuerrate einer Frequenz auf Frequenz:
plt.figure() plt.figure()
plt.plot(np.arange(0,len(ls_mean),1),ls_mean) 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.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.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.xticks(np.arange(1,len(sort_df),1), (sort_df))
plt.xlabel('Range of frequency differences [Hz]') plt.xlabel('Range of frequency differences [Hz]')
plt.ylabel('Mean firing rate of the cell') plt.ylabel('Mean firing rate of the cell')
plt.show()
#Adaption der Zellen: #Adaption der Zellen:
#wie viel Prozent der Anfangsrate macht die Adaption von Zellen aus? #wie viel Prozent der Anfangsrate macht die Adaption von Zellen aus?
adapt = adaptation_df(sort_df, dct_rate) adapt = adaptation_df(sort_df, dct_rate)
plt.figure() plt.figure()
plt.boxplot(adapt) plt.boxplot(adapt)
plt.title('Adaptation of cell firing rate during a trial') plt.title('Adaptation of cell firing rate during a trial')
plt.xlabel('Cell') plt.xlabel('Cell')
plt.ylabel('Adaptation size [Hz]') plt.ylabel('Adaptation size [Hz]')
plt.show()
'''
#Vatriablen speichern, die man für die Übersicht aller Zellen braucht #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 = open('../results/Nyquist/Ny_' + name + '.txt' , 'w')
f.write(str(sort_df)) f.write(str(sort_df))
f.write(str(df_map)) f.write(str(df_map))
@ -91,3 +91,4 @@ for dataset in data_chirps:
f.write(str(over_r)) f.write(str(over_r))
f.write(str(adapt)) f.write(str(adapt))
f.close() f.close()
'''

View File

@ -21,23 +21,21 @@ def chirp_eod_plot(df_map, eod, times):
if idx <= 3: if idx <= 3:
axs[0, 0].plot(zeit, eods, color= 'blue', linewidth = 0.25) 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: elif 4<= idx <= 7:
axs[0, 1].plot(zeit, eods, color= 'blue', linewidth = 0.25) 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: elif 8<= idx <= 11:
axs[1, 0].plot(zeit, eods, color= 'blue', linewidth = 0.25) 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: else:
axs[1, 1].plot(zeit, eods, color= 'blue', linewidth = 0.25) 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)
fig.suptitle('EOD for chirps', fontsize = 16) axs[0,1].set_ylabel('Amplitude [mV]')
axs[0,0].set_ylabel('Amplitude [mV]')
axs[0,1].set_xlabel('Amplitude [mV]')
axs[1,0].set_xlabel('Time [ms]') axs[1,0].set_xlabel('Time [ms]')
axs[1,1].set_xlabel('Time [ms]') fig.suptitle('EOD for chirps', fontsize = 16)
plt.close()
@ -60,15 +58,17 @@ def cut_chirps(freq, eod, times):
ls_beat.extend(beat_cut) ls_beat.extend(beat_cut)
beat_mod = np.std(ls_beat) #Std vom Bereich vor dem Chirp beat_mod = np.std(ls_beat) #Std vom Bereich vor dem Chirp
plt.figure() #plt.figure()
plt.scatter(np.arange(0,len(ls_mod),1), ls_mod) #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.scatter(np.arange(0,len(ls_mod),1), np.ones(len(ls_mod))*beat_mod, color = 'violet')
plt.close()
return(ls_mod, beat_mod) 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() plt.figure()
dct_phase = {} dct_phase = {}
num_bin = 12 num_bin = 12
@ -81,7 +81,11 @@ def plot_std_chirp(sort_df, df_map, chirp_spikes, ls_mod):
for phase in chirp_spikes[k]: for phase in chirp_spikes[k]:
dct_phase[i].append(phase[1]) dct_phase[i].append(phase[1])
plt.scatter(dct_phase[i], ls_mod[i]) 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.title('Change of std depending on the phase where the chirp occured')
plt.close() plt.xlabel('Phase')
plt.ylabel('Standard deviation of the amplitude modulation')
plt.legend()
return(dct_phase)

View File

@ -18,8 +18,5 @@ eod_durations = np.diff(eod_times)
print(len(spike_times)) print(len(spike_times))
print(len(eod_durations)) 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) #vs = vector_strength(spike_times, eod_durations)