model of DCN pyramidal neuron
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
2.2 KiB

import numpy as np
from neuron import h
from .psd import PSD
class Exp2PSD(PSD):
"""
Simple double-exponential PSD from Neuron (fast).
"""
def __init__(
self, section, terminal, weight=0.01, loc=0.5, tau1=0.1, tau2=0.3, erev=0
):
"""
Parameters
----------
section : Section
The postsynaptic section in which to insert the receptor mechanism.
terminal : Terminal
The presynaptic Terminal instance
weight :
loc : float, default=0.5
Position on the postsynaptic section to insert the mechanism, from [0..1].
"""
PSD.__init__(self, section, terminal)
self.syn = h.Exp2Syn(loc, sec=section)
self.syn.tau1 = tau1
self.syn.tau2 = tau2
self.syn.e = erev
terminal.connect(self.syn, weight=weight)
@property
def n_psd(self):
"""The number of postsynaptic densities represented by this object.
"""
return 1
def record(self, *args):
"""Create a new set of vectors to record parameters for each release
site.
Parameters
----------
\*args :
Allowed parameters are 'i' (current), 'g' (conductnace), and 'Open' (open probability).
"""
self.vectors = {"ampa": [], "nmda": []}
for receptor in self.vectors:
for mech in getattr(self, receptor + "_psd"):
vec = {}
for var in args:
vec[var] = h.Vector()
vec[var].record(getattr(mech, "_ref_" + var))
self.vectors[receptor].append(vec)
def get_vector(self, var):
"""Return an array from a previously recorded vector.
Parameters
----------
receptor : str
May be 'ampa' or 'nmda'
var : str
Allowed parameters are 'i' (current), 'g' (conductance), and 'Open' (open probability).
i : int, default=0
The integer index of the psd (if this is a multi-site synapse)
"""
v = self.vectors[receptor][i][var]
return np.array(v)