Source code for cnmodel.synapses.exp2_psd
import numpy as np
from neuron import h
from .psd import PSD
[docs]class Exp2PSD(PSD):
"""
Simple double-exponential PSD from Neuron (fast).
"""
def __init__(self, section, terminal, weight=0.01, loc=0.5):
"""
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 = 0.1
self.syn.tau2 = 0.3
self.syn.e = 0
terminal.connect(self.syn, weight=weight)
@property
def n_psd(self):
"""The number of postsynaptic densities represented by this object.
"""
return 1
[docs] 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)
[docs] 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)