P-unit_model/Figures_Model.py

56 lines
1.6 KiB
Python

from models.LIFACnoise import LifacNoiseModel
from stimuli.SinusoidalStepStimulus import SinusoidalStepStimulus
import matplotlib.pyplot as plt
import numpy as np
def main():
plot_model_example()
pass
def plot_model_example():
parameter = {}
model = LifacNoiseModel(parameter)
# frequency, contrast, start_time=0, duration=np.inf, amplitude=1)
frequency = 350
contrast = 0
start_time = 5
duration = 0
stimulus = SinusoidalStepStimulus(frequency, contrast, start_time, duration)
time_start = 0
time_duration = 0.5
time_step = model.get_sampling_interval()
v1, spikes = model.simulate_fast(stimulus, total_time_s=time_duration, time_start=time_start)
adaption = model.get_adaption_trace()
time = np.arange(time_start, time_start+time_duration, time_step)
fig, axes = plt.subplots(2, sharex=True)
# axes[0].plot(time, stimulus.as_array(time_start, time_duration, time_step))
start = 0.26
end = 0.29
start_idx = int(start / time_step)
end_idx = int(end / time_step)
time_part = np.arange(0, end_idx-start_idx, 1) * time_step *1000
# axes[0].plot(time[start_idx:end_idx], v1[start_idx:end_idx])
axes[0].plot(time_part, v1[start_idx:end_idx])
axes[0].set_ylabel("Membrane voltage [mV]")
# axes[1].plot(time[start_idx:end_idx], adaption[start_idx:end_idx])
axes[1].plot(time_part, adaption[start_idx:end_idx])
axes[1].set_ylabel("Adaption current [mV]")
axes[1].set_xlabel("Time [ms]")
axes[1].set_xlim((0, 30))
plt.show()
plt.close()
if __name__ == '__main__':
main()