add prototype to plot sam pdf comparisions cell-model

This commit is contained in:
a.ott 2020-06-04 17:12:15 +02:00
parent 13c807f921
commit 7077c5b8e6

View File

@ -4,6 +4,7 @@ from models.LIFACnoise import LifacNoiseModel
import numpy as np import numpy as np
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import helperFunctions as hF import helperFunctions as hF
from CellData import CellData
def main(): def main():
@ -12,8 +13,23 @@ def main():
'v_base': 0, 'step_size': 5e-05, 'dend_tau': 0.0008667253013050408, 'v_zero': 0, 'v_offset': -6.25, 'v_base': 0, 'step_size': 5e-05, 'dend_tau': 0.0008667253013050408, 'v_zero': 0, 'v_offset': -6.25,
'noise_strength': 0.03337309379328535, 'a_zero': 2, 'threshold': 1, 'delta_a': 0.0726267312975076} 'noise_strength': 0.03337309379328535, 'a_zero': 2, 'threshold': 1, 'delta_a': 0.0726267312975076}
eod_freq = 658 eod_freq = 658
cell_data = CellData("./data/2012-12-13-ao-invivo-1/")
model = LifacNoiseModel(parameters) model = LifacNoiseModel(parameters)
mean_duration = np.mean(cell_data.get_sam_durations())
contrasts = cell_data.get_sam_contrasts()
spiketimes = cell_data.get_sam_spiketimes()
for i, m_freq in enumerate(cell_data.get_sam_delta_frequencies()):
stimulus = SAM(eod_freq, contrasts[i], m_freq)
prob_desnity_function_model = generate_pdf(model, stimulus, sim_length=mean_duration)
for spikes in spiketimes[i]:
prob_density_cell = spiketimes_calculate_pdf(spikes, cell_data.get_sampling_interval())
plt.plot(prob_density_cell)
plt.plot(prob_desnity_function_model)
plt.show()
plt.close()
# __init__(carrier_frequency, contrast, modulation_frequency, start_time=0, duration=np.inf, amplitude=1) # __init__(carrier_frequency, contrast, modulation_frequency, start_time=0, duration=np.inf, amplitude=1)
mod_freqs = np.arange(-60, eod_freq*4 + 61, 10) mod_freqs = np.arange(-60, eod_freq*4 + 61, 10)
@ -58,6 +74,19 @@ def generate_pdf(model, stimulus, trials=4, sim_length=3, kernel_width=0.005):
return mean_rate return mean_rate
def spiketimes_calculate_pdf(spikes, step_size, kernel_width=0.005):
length = int(spikes[-1] / step_size)+1
binary = np.zeros(length)
spikes = [int(s / step_size) for s in spikes]
for s_idx in spikes:
binary[s_idx] = 1
kernel = gaussian_kernel(kernel_width, step_size)
rate = np.convolve(binary, kernel, mode='same')
return rate
def gaussian_kernel(sigma, dt): def gaussian_kernel(sigma, dt):
x = np.arange(-4. * sigma, 4. * sigma, dt) x = np.arange(-4. * sigma, 4. * sigma, dt)
y = np.exp(-0.5 * (x / sigma) ** 2) / np.sqrt(2. * np.pi) / sigma y = np.exp(-0.5 * (x / sigma) ** 2) / np.sqrt(2. * np.pi) / sigma