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.
75 lines
2.2 KiB
75 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)
|
|
|