#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import math
from pylab import *
# The PYTHONPATH should contain the location of moose.py and _moose.so
# files. Putting ".." with the assumption that moose.py and _moose.so
# has been generated in ${MOOSE_SOURCE_DIRECTORY}/pymoose/ (as default
# pymoose build does) and this file is located in
# ${MOOSE_SOURCE_DIRECTORY}/pymoose/examples
# sys.path.append('..\..')
try:
import moose
except ImportError:
print "ERROR: Could not import moose. Please add the directory containing moose.py in your PYTHONPATH"
import sys
sys.exit(1)
from synapseConstants import *
from moose.utils import * # for BSplineFill
## if plastic synapse, choose the short term plasticity syn chan
if GABA_plastic: GABAbaseSynChan = moose.STPSynChan
else: GABAbaseSynChan = moose.SynChan
class granule_mitral_GABA(GABAbaseSynChan):
"""Non-saturating GABA synapse from granule to mitral cell."""
def __init__(self, synchan_activation_correction, *args):
GABAbaseSynChan.__init__(self,*args)
self.Ek = granule_mitral_GABA_Ek
self.Gbar = granule_mitral_GABA_Gbar
self.tau1 = granule_mitral_GABA_tau1
self.tau2 = granule_mitral_GABA_tau2
self.addField('graded')
if GRANULE_INH_GRADED:
self.setField('graded','True')
######## Graded synapse
inhsyntable = moose.Table(self.path+"/graded_table")
inhsyntable.xmin = -43e-3#-52e-3 # V
inhsyntable.xmax = -19e-3#-28e-3 # V
inhsyntable.xdivs = 12
# adjust activation curve so that all the dynamics happens between -52 and -28mV.
act = [0.0] # at -52mV
act.extend( [1/(1+math.exp(-(vm + 31.5e-3)/1.0e-3)) for vm in arange(-41e-3,-21.00001e-3,2e-3)] )
act.extend([1.0]) # for -28mV
for i,activation in enumerate(act):
inhsyntable[i] = activation*synchan_activation_correction # synchan_activation_correction depends on SIMDT!
inhsyntable.tabFill(1000,BSplineFill)
inhsyntable.connect("outputSrc",self,"activation")
else:
self.setField('graded','False')
self.addField('mgblock')
self.setField('mgblock','False')
## Only depression, no facilitation:
## Venki Murthy 2005 paper
self.tauD1 = GABA_recovery_time
self.deltaF = 0.0
self.d1 = GABA_depression_factor
self.d2 = 1.0
########## Remember that the Vm graded synapse is actually a proxy for Ca dependent synapse:
########## Graded Ca dependent synapse
#inhsyntable = moose.Table(granule._gran.path+"/InhSynTable_"+mcstr+"_"+gcstr+"_"+nsstr)
#inhsyntable.xmin = 0 # Ca concentration - mMolar = mol/m^3 SI
#inhsyntable.xmax = 4.0e-4 # Ca concentration - mMolar = mol/m^3 SI
#inhsyntable.xdivs = 10
##for i,activation in enumerate([0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.01,1.0,1.0]):
#for i,activation in enumerate([0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.01,1.0,1.0]):
# inhsyntable[i] = activation*synchan_activation_correction
#inhsyntable.tabFill(1000,BSplineFill)
#inhsyntable.connect("outputSrc",inhsyn,"activation")
#granule._granPeriCaPool.connect('concSrc',inhsyntable,'msgInput')