brainpy / BrainPy

Brain Dynamics Programming in Python
https://brainpy.readthedocs.io/
GNU General Public License v3.0
508 stars 92 forks source link

Unit of current and membrane resistance in Generalized Integrate-and-Fire model. #548

Open CloudyDory opened 9 months ago

CloudyDory commented 9 months ago

Hi, in BrainPy's documentation on Generalized Integrate-and-Fire model, the model parameters and variables are:

  **Model Parameters**
  ============= ============== ======== ====================================================================
  **Parameter** **Init Value** **Unit** **Explanation**
  ------------- -------------- -------- --------------------------------------------------------------------
  V_rest        -70            mV       Resting potential.
  V_reset       -70            mV       Reset potential after spike.
  V_th_inf      -50            mV       Target value of threshold potential :math:`V_{th}` updating.
  V_th_reset    -60            mV       Free parameter, should be larger than :math:`V_{reset}`.
  R             20             \        Membrane resistance.
  tau           20             ms       Membrane time constant. Compute by :math:`R * C`.
  a             0              \        Coefficient describes the dependence of
                                        :math:`V_{th}` on membrane potential.
  b             0.01           \        Coefficient describes :math:`V_{th}` update.
  k1            0.2            \        Constant pf :math:`I1`.
  k2            0.02           \        Constant of :math:`I2`.
  R1            0              \        Free parameter.
                                        Describes dependence of :math:`I_1` reset value on
                                        :math:`I_1` value before spiking.
  R2            1              \        Free parameter.
                                        Describes dependence of :math:`I_2` reset value on
                                        :math:`I_2` value before spiking.
  A1            0              \        Free parameter.
  A2            0              \        Free parameter.
  ============= ============== ======== ====================================================================

  **Model Variables**
  ================== ================= =========================================================
  **Variables name** **Initial Value** **Explanation**
  ------------------ ----------------- ---------------------------------------------------------
  V                  -70               Membrane potential.
  input              0                 External and synaptic input current.
  spike              False             Flag to mark whether the neuron is spiking.
  V_th               -50               Spiking threshold potential.
  I1                 0                 Internal current 1.
  I2                 0                 Internal current 2.
  t_last_spike       -1e7              Last spike time stamp.
  ================== ================= =========================================================

It is unclear on the unit of membrane resistance and internal current (and possibly several other parameters and variables?). This may become a problem when using parameters of the GLIF neurons from other simulator which have explicit units.

chaoming0625 commented 9 months ago

Thanks for raising this issue.

CloudyDory commented 9 months ago

For reference: If we use parameters values from NEST (https://nest-simulator.readthedocs.io/en/stable/models/glif_psc.html), then I1 and I2 are in unit of pA, R is in unit of GOhm, a, b, k1 and k2 are in unit of 1/ms. If we want to compute tau from R * C, then the membrane capacitance should be in unit of pF.