gp_neurobio/code/func_spike.py
2018-11-29 16:47:30 +01:00

76 lines
1.8 KiB
Python

from read_baseline_data import *
from read_chirp_data import *
from utility import *
import matplotlib.pyplot as plt
import numpy as np
def map_keys(input):
#gibt ein Dict mit den Keys eines Dict aus, aber als Int
df_map = {}
for k in input.keys():
freq = k[1]
df = int(freq.strip('Hz'))
if df in df_map.keys():
df_map[df].append(k)
else:
df_map[df] = [k]
return df_map
def spike_rates(sort_df, df_map, chirp_spikes):
#damit wird sowohl die individuelle Rate pro Trial, als auch die Gesamt-Feuerrate berechnet
dct_rate = {}
over_spikes = []
for i in sort_df:
freq = list(df_map[i])
dct_rate[i] = []
for k in freq:
for phase in chirp_spikes[k]:
spikes = chirp_spikes[k][phase]
rate = len(spikes)/ 1.2
dct_rate[i].append(rate)
over_spikes.extend(spikes)
duration = 1.2 *1600 #1200ms für 16 Trials
overall_r = len(over_spikes)/ duration
over_r = int(overall_r)
return(dct_rate, over_r)
def plot_df_spikes(sort_df, dct_rate):
#gibt die Feuerrate gegen die Frequenz aufgetragen
inch_factor = 2.54
fig, ax = plt.subplots(figsize=(20/inch_factor, 10/inch_factor))
ls_mean = []
for h in sort_df:
mean = np.mean(dct_rate[h])
ls_mean.append(mean)
plt.plot(np.arange(0,len(dct_rate[h]),1),dct_rate[h], label = h)
plt.legend()
plt.title('Firing rate of the cell for all trials, sorted by df', fontsize = 24)
plt.xlabel('# of trials', fontsize = 22)
plt.ylabel('Instant firing rate of the cell', fontsize = 22)
plt.tick_params(axis='both', which='major', labelsize = 18)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
plt.tight_layout()
return(ls_mean)
def adaptation_df(sort_df, dct_rate):
adapt = []
for d in sort_df:
spur = dct_rate[d]
start = spur[0:-1:10]
stop = spur[9:len(spur):10]
diff = np.asarray(start) - np.asarray(stop)
adapt.extend(diff)
return(adapt)