Page 1 of 1

Active Transport

Posted: Wed Aug 20, 2014 5:25 pm
by ahwillia
I'm curious if it is possible to use the rxd module to model active transport of intracellular solutes. For a simple example, suppose I have two sections:

Code: Select all

from neuron import h, rxd
soma = h.Section()
dend = h.Section()
dend.connect(soma , 1, 0)
Lets say that some mRNA transcript of ('m') interest is produced in the soma at some constant rate and degraded at a rate proportional to m. Below is my best guess as to how to implement this. (Disclaimer: I've only just started reading into the rxd module, my apologies for any errors/misunderstanding):

Code: Select all

m = rxd.Species([soma, dend], d=1, name='m')
k1 = 1.0  # rate at which m is produced in the soma
k2 = 1.0  # degradation rate of m
soma_reaction = rxd.Rate(m,k1-(k2*m),regions=soma)
Within the dendritic compartment, m is only degraded (not produced). For simplicity, lets assume the rate at which m is degraded in the dendrites is the same as in the soma.

Code: Select all

dend_reaction = rxd.Rate(m,-(k2*m),regions=dend)
The final component I'm looking for (assuming the above code is basically correct) is to have the mRNA actively transported into dend from the soma. I presume that this could be achieved by adding a drift term to the diffusion equation... Any ideas on how this could be implemented? Thanks in advance for any help.

Re: Active Transport

Posted: Wed Aug 20, 2014 7:11 pm
by ramcdougal
You're almost there with the part that's not active transport. A few notes:
  • rxd.Species (and rxd.Parameter) work on rxd.Region objects which you can think of as high-level concepts, like: all of the cytosol, all of the ER, etc.
  • The regions argument to rxd.Rate (and rxd.Reaction, etc) currently only takes rxd.Region objects, but I like the idea of optionally being able to specify by Section as well.
  • To get a non-constant parameter over an rxd.Region, use rxd.Parameter. The syntax essentially parallels that of rxd.Species.
  • When you say d=1 in the rxd.Species, that specifies a diffusion constant of 1.
  • It's usually a good idea to do a from neuron import gui because otherwise the gui will not be very interactive if you run your script directly from Python instead of from NEURON.
  • Discretization matters. The default is to have one segment per section, which is too coarse to meaningfully show diffusion.
Here's my version with production, degradation, and diffusion (but not active transport). Press enter to end the simulation.

Code: Select all

from neuron import h, rxd, gui

# morphology
soma, dend = h.Section(), h.Section()
dend.connect(soma)
soma.L = 11
soma.diam = 11
dend.L = 31
dend.diam = 2

# discretize morphology
soma.nseg = 11
dend.nseg = 31 

# declare a region for the reaction-diffusion domain
r = rxd.Region([soma, dend], nrn_region='i')

# mRNA
mrna = rxd.Species(r, d=1, name='mrna', initial=0)

# rate at which mrna is produced (1 in soma; 0 elsewhere)
# I'll eventually make a better alias for node._sec._sec
k1 = rxd.Parameter(r, initial=lambda node: 1 if node._sec._sec == soma else 0)
    
# degradation rate of mrna
k2 = 1

# production of mRNA
production = rxd.Rate(mrna, k1)

# degradation
degradation = rxd.Rate(mrna, -k2 * mrna)

# create a rangevarplot to graph things
g = h.Graph()
g.size(0, soma.L + dend.L, 0, 2)
rvp = h.RangeVarPlot('mrnai')
rvp.begin(0, sec=soma); rvp.end(1, sec=dend); rvp.origin(0, sec=soma)
g.addobject(rvp)
h.graphList[0].append(g)

# initialize simulation
h.finitialize()

# run it
for doublet in xrange(7):
    rvp.color(doublet + 1)
    h.continuerun(doublet / 2.)
    g.exec_menu('Keep Lines')
    g.exec_menu('Keep Lines')

# wait for user input
raw_input()
There is no direct support for active transport yet. Are you envisioning modeling this with advection? Some other mechanism?

Re: Active Transport

Posted: Wed Aug 20, 2014 10:11 pm
by ted
He means "axonal transport" not "active transport". Probably slow axonal transport, at that--rate on the order of a few mm per day. Not clear under what circumstances a mechanistic representation of that would be useful. Maybe a phenomenological representation would be sufficient. From the standpoint of some region in a dendrite, something like this might be adequate:
1. something that would cause onset of mRNA synthesis in the soma triggers an event at time t0
2. after sufficient delay tdelay, the event is delivered to a mechanism in the dendritic region that responds by "producing" mRNA at that location at a fixed rate (the rate at which it would be arriving from the soma)

Further elaboration is possible, but you get the idea.

Re: Active Transport

Posted: Thu Aug 21, 2014 11:35 am
by ahwillia
Hi Ted,

I'm interested in activity-dependent transcription of mRNA and its transport to neurites. Some mRNAs can be produced and transported quite rapidly (~15 minutes after high frequency stimulation). I like the idea of a phenomenological model, but I would like to couple mRNA production and expression to electrical activity down the line. We have published a single-compartment model that does this in a mechanistic fashion (http://www.ncbi.nlm.nih.gov/pubmed/24853940). I'm interested in doing something similar in a multi-compartment model.

The model we published above transcribes and translates mRNA on the timescale of 5-10s, while the electrical dynamics of the model are on a much shorter time scale. While the 5-10s timescale of mRNA production is highly unrealistic, increasing the relevant time constants doesn't affect the outcome (it just makes the simulation longer). All that matters is that the time scales are sufficiently separated, so the simulations can be done relatively efficiently.

I'm still interested if you think a phenomenological representation would work and what that would entail. Thanks for the input.

Re: Active Transport

Posted: Mon Aug 25, 2014 11:50 am
by ted
ahwillia wrote:I'm still interested if you think a phenomenological representation would work and what that would entail.
I don't know enough about your conceptual model or its design goals to be more specific. That said, if this is the case
While the 5-10s timescale of mRNA production is highly unrealistic, increasing the relevant time constants doesn't affect the outcome (it just makes the simulation longer).
then your representation of mRNA transport is already teetering on the edge of being phenomenological, so switching to a completely phenomenological representation of it would not be a big deal. If you want to continue this discussion privately, you are welcome to send me an email
ted dot carnevale at yale dot edu