interneuron_fi_curve.py 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import numpy as np
  2. import brian2 as br
  3. from brian2 import mV, ms
  4. import matplotlib.pyplot as plt
  5. from scripts.spatial_network.head_direction_index_over_noise_scale import lif_interneuron_eqs, \
  6. lif_interneuron_params, lif_interneuron_options, calculate_rates
  7. def inh_spike_rate_by_input(input_to_inhibitory_neuron):
  8. inhibitory_neurons = br.NeuronGroup(1, lif_interneuron_eqs, namespace=lif_interneuron_params, name="interneurons",
  9. **lif_interneuron_options)
  10. inhibitory_neurons.v = lif_interneuron_params["u_ext_const"]
  11. recorded_interneuron_idx = 0
  12. inhibitory_trace_recorder = br.StateMonitor(inhibitory_neurons, 'v', record=[recorded_interneuron_idx],
  13. name="inhibitory_trace_recorder")
  14. inhibitory_spike_monitor = br.SpikeMonitor(inhibitory_neurons, name="inhibitory_spike_monitor")
  15. # inhibitory_synapse_strength = traj.synapse.inhibitory * nS
  16. # excitatory_synapse_strength = traj.synapse.excitatory * mV
  17. net = br.Network(inhibitory_neurons)
  18. net.add(inhibitory_spike_monitor)
  19. net.add(inhibitory_trace_recorder)
  20. net.store()
  21. inhibitory_neurons = net["interneurons"]
  22. inhibitory_neurons.u_ext = input_to_inhibitory_neuron * mV
  23. # inhibitory_neurons.u_ext = traj.inh_input.baseline * mV
  24. inhibitory_neurons.tau = 30. * ms
  25. net.run(1000 * ms)
  26. spike_times = inhibitory_spike_monitor.spike_trains()
  27. print(spike_times)
  28. spike_rate = calculate_rates(spike_times.values())
  29. return spike_rate
  30. def main():
  31. input_range = np.linspace(-42.0, 40.0, 21, endpoint=True)
  32. spike_rates = []
  33. for input in input_range:
  34. spike_rate = inh_spike_rate_by_input(input)
  35. spike_rates.append(spike_rate)
  36. plt.plot(input_range, spike_rates)
  37. plt.show()
  38. # traj.f_add_parameter_group("synapse")
  39. # traj.f_add_parameter("synapse.inhibitory", 1.0, "Strength of conductance-based inhibitory synapse in nS.")
  40. # traj.f_add_parameter("synapse.excitatory", 2.5, "Strength of conductance-based inhibitory synapse in mV.")
  41. #
  42. # traj.f_add_parameter("input.baseline", 0.05, comment="Head direction input baseline")
  43. # traj.f_add_parameter("input.amplitude", 0.6, comment="Head direction input amplitude")
  44. #
  45. # traj.f_add_parameter_group("inh_input")
  46. # traj.f_add_parameter("inh_input.baseline", -38., comment="Head direction input baseline")
  47. # traj.f_add_parameter("inh_input.amplitude", 18., comment="Head direction input amplitude")
  48. #
  49. # traj.f_add_parameter_group("interneuron")
  50. # traj.f_add_parameter("interneuron.tau", 30., comment="Interneuron timescale in ms")
  51. #
  52. #
  53. # traj.f_add_parameter_grou<p("simulation")
  54. # traj.f_add_parameter("simulation.entropy_maximisation.steps", 30, comment="Steps for entropy maximisation")
  55. # traj.f_add_parameter("simulation.dt", 0.1, comment="Network simulation time step in ms")
  56. # traj.f_add_parameter("simul>ation.duration", 1000, comment="Network simulation duration in ms")
  57. #
  58. # "synapse.inhibitory": [5.],
  59. # "synapse.excitatory": [0.001]
  60. if __name__ == "__main__":
  61. main()