Skip to content

HiroshiARAKI/spine

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
img
 
 
 
 
 
 
 
 
 
 
 
 
 
 

SPINE: Spiking Neuron simulator

python version

SPINE is a simple Spiking Neuron simulator.

Line-up

LIF: Leaky integrate-and-fire model

from spine import LIF
from spine.tools import PoissonSpike, plot_spike_scatter, random

import numpy as np
import matplotlib.pyplot as plt


if __name__ == '__main__':
    time = 500  # ms
    dt = 0.5  # time step

    pre_neurons = 100

    # Input data from Poisson Spike Gen.
    spikes = PoissonSpike(np.random.random(pre_neurons),
                          time=time,
                          dt=dt).spikes

    # random weights whose size is the same as spikes
    weights = random.U(pre_neurons, -0.05, 0.1)  # U[-0.05, 0.1]

    neu = LIF(time=time,
              dt=dt,
              tau=(10, 2)  # time constants of filter
              )

    v, s, f = neu.calc_v((spikes, weights))

    # Plot
    t = np.arange(0, time, dt)

    plt.subplot(2, 1, 1)
    plot_spike_scatter(spikes, time, dt, title='input spike trains', xlabel=None)

    plt.subplot(2, 1, 2)
    plt.plot(t, v)
    plt.plot(t, np.full_like(t, neu.th), linestyle='dashed')
    plt.ylabel('Membrane Voltage [mV]')
    plt.xlabel('time [ms]')
    plt.xlim(0, time)

    plt.show()
  • Example
    $ python lif_sample.py
    doubleLIF

Hodgkin-Huxley model

$ python hh_sample.py

hh

FitzHugh-Nagumo model

$ python fhn_sample.py

fhn

Izhikevich model

$ python izh_sample.py

izh

Generate Poisson Spike train and a plotting function

from spine.tools import PoissonSpike, plot_spike_scatter

import numpy as np
import matplotlib.pyplot as plt

spikes = PoissonSpike(np.random.random((10, 10)), time=300, dt=0.1).spikes
plot_spike_scatter(spikes, time=300, dt=0.1)
plt.title('Spike firing timing')
plt.show()

poisson

LICENSE

MIT LICENSE
Copyright (c) 2020 Hiroshi ARAKI

About

SPINE is a simple Spiking Neuron simulator

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages