: Modified from https://senselab.med.yale.edu/modeldb/ShowModel.asp?model=150551&file=\AshhadNarayanan2013\mglur.mod
: Authors: Ashhad S and Narayanan R, 2013
: this mod file was significantly altered - there should not be any
: ip3i (transmembrane current for ip3) since ip3 is generated within the membrane
: ip3 degradation is now handled by rxd
: units need adjustment
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
POINT_PROCESS mGLUR
RANGE G, C, lastrelease
RANGE Cmax, Cdur, Deadtime, K1, K2, initmGluR
RANGE rip3 : ip3 production rate
RANGE ip3 : mod-file internal ip3 produced, just need it for fluxes for ip3 production
RANGE scalef : scaling factor to correct units
RANGE degGluRate
: USEION ip3 READ ip3i VALENCE 0 : only needed if want to see rxd's ip3 -- not required
}
UNITS {
(mM) = (milli/liter)
(uM)= (micro/liter)
(mA) = (milliamp)
}
PARAMETER {
initmGluR=0.3e-3 (mM): Bhalla & Iyenger Science 1999
Cmax = 1 (mM) : max transmitter concentration
Deadtime = 1 (ms) : mimimum time between release events
K1 = 0.28 (/ms uM) : forward binding rate to receptor from Bhalla et al
K2 = 0.016 (/ms) : backward (unbinding) rate of receptor from Bhalla et al
K_PLC = 5 (uM) :total concentration of PLC
K_PIP2 = 160 (uM) :total concentration of PIP2
K_G=25 (uM)
:kplc and Vmax describe aPLC catalyzing IP3 production from PIP2
kfplc = 0.83(/ms)
kbplc = 0.68 (/ms) : 0.1/ms in the paper; added to Vmax1=0.58/ms in the paper
Vmax1 = 0.58 (/ms)
:D5 and D6 describe Glu_mGluR catalyzing G_alpha production, Km2=(D6f+D5B)/D5f
D5f = 15 (/ms)
D5b = 7.2 (/ms)
D6f = 1.8(/ms)
Vmax2 = 1.8 (/ms)
Km2 = 0.6 (uM)
:G2 describe aG binding to PLC
G2f = 100 (/ms)
G2b = 100 (/ms)
:degradation of aG (D7f) and IP3 (G9f)
D7f =9 (/ms)
G9f = 0.75(/ms) :4 in original paper
Cdur=2 (ms) : transmitter duration (rising phase)
scalef = 1e10
degGluRate = 1.0 (/ms) : should lookup value
}
ASSIGNED {
C (mM) : transmitter concentration
lastrelease (ms) : time of last spike
rip3
}
STATE {
aG : fraction of activated G-protein
aPLC_aG
aPLC_PIP2
Glu : glutamate
degGlu : degraded glutamate (an unused garbage pool)
Glu_mGluR
GG_mGluR
ip3
: degip3
mGluR
PLC
PIP2
G
ip3i
}
INITIAL {
Glu = 0
degGlu = 0
Glu_mGluR = 0
GG_mGluR = 0
aPLC_aG=0 :0.0035
aPLC_PIP2=0
aG =0: 0.0007
ip3= 0
G=K_G-(aG+GG_mGluR+aPLC_aG+aPLC_PIP2)
PLC=K_PLC-(aPLC_aG+aPLC_PIP2)
PIP2=K_PIP2-(aPLC_PIP2+ip3)
mGluR=initmGluR
lastrelease = -1e8
rip3 = 0
: degip3 = 0
}
BREAKPOINT {
: evaluateC() : original
SOLVE bindkin METHOD sparse
}
KINETIC bindkin { LOCAL a,b
: ~ mGluR <-> Glu_mGluR (C*K1, K2) : original
~ Glu+mGluR <-> Glu_mGluR (K1, K2)
~ Glu <-> degGlu (degGluRate,0)
~ Glu_mGluR + G <-> GG_mGluR (D5f,D5b)
~ GG_mGluR <-> aG+mGluR (D6f,0)
~ aG <-> G (D7f,0)
~ aG+PLC <-> aPLC_aG (G2f, G2b)
~ aPLC_aG+PIP2 <-> aPLC_PIP2 (kfplc,kbplc)
~ aPLC_PIP2 <-> ip3 (Vmax1,0)
rip3 = f_flux * scalef : only using this mod file for ip3 production, degradation done in rxd!
: a = f_flux
: ~ ip3 <-> degip3 (G9f,0)
: b = f_flux
: rip3 = (a - b) * scalef : scaled production rate
:CONSERVE G+aG+GG_mGluR+aPLC_aG+aPLC_PIP2=K_G
:CONSERVE PLC+aPLC_aG+aPLC_PIP2=K_PLC
:CONSERVE PIP2+aPLC_PIP2+ip3=K_PIP2
}
PROCEDURE evaluateC() {
LOCAL q
q = ((t - lastrelease) - Cdur) : time since last release ended
if (q >= 0 && q <= Deadtime && C == Cmax) { : in dead time after release
C = 0.
}
}
NET_RECEIVE (weight) {
Glu = Glu + weight : this safe ?
:
: LOCAL q
: q = ((t - lastrelease) - Cdur) : time since last release ended
: : Spike has arrived, ready for another release?
: if (q > Deadtime) {
: C = Cmax : start new release
: : shouldn't C increase by weight rather than Cmax so that NetCon weights have an effect??
: lastrelease = t
: }
}