From e7eda838a1f81426655d074b0b456740505ca72b Mon Sep 17 00:00:00 2001
From: Harsha Rani <hrani@ncbs.res.in>
Date: Thu, 17 Nov 2016 16:15:28 +0530
Subject: [PATCH] duplicate rdesigneur folder exists one level above

---
 docs/user/py/rdesigneur/index.rst | 763 ------------------------------
 1 file changed, 763 deletions(-)
 delete mode 100644 docs/user/py/rdesigneur/index.rst

diff --git a/docs/user/py/rdesigneur/index.rst b/docs/user/py/rdesigneur/index.rst
deleted file mode 100644
index 796bfddd..00000000
--- a/docs/user/py/rdesigneur/index.rst
+++ /dev/null
@@ -1,763 +0,0 @@
-Rdesigneur: Building multiscale models
-======================================
-
-:Date: 2015-12-28
-:Authors: 
-    - Upi Bhalla
-
-Introduction
-------------
-
-**Rdesigneur** (Reaction Diffusion and Electrical SIGnaling in NEURons)
-is an interface to the multiscale modeling capabilities in MOOSE. It is
-designed to build models incorporating biochemical signaling pathways in
-dendrites and spines, coupled to electrical events in neurons.
-Rdesigneur assembles models from predefined parts: it delegates the
-details to specialized model definition formats. Rdesigneur combines one
-or more of the following cell parts to build models:
-
--  Neuronal morphology
--  Dendritic spines
--  Ion channels
--  Reaction systems
-
-Rdesigneur's main role is to specify how these are put together,
-including assigning parameters to do so. Rdesigneur also helps with
-setting up the simulation input and output.
-
-Quick Start
------------
-
-Here we provide a few use cases, building up from a minimal model to a
-reasonably complete multiscale model spanning chemical and electrical
-signaling.
-
-Bare Rdesigneur: single passive compartment
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If we don't provide any arguments at all to the Rdesigneur, it makes a
-model with a single passive electrical compartment in the MOOSE path
-``/model/elec/soma``. Here is how to do this:
-
-::
-
-    import moose
-    import rdesigneur as rd
-    rdes = rd.rdesigneur()
-    rdes.buildModel()
-
-To confirm that it has made a compartment with some default values we
-can add a line:
-
-::
-
-    moose.showfields( rdes.soma )
-
-This should produce the output:
-
-::
-
-    [ /model[0]/elec[0]/soma[0] ]
-    diameter         = 0.0005
-    fieldIndex       = 0
-    Ra               = 7639437.26841
-    y0               = 0.0
-    Rm               = 424413.177334
-    index            = 0
-    numData          = 1
-    inject           = 0.0
-    initVm           = -0.065
-    Em               = -0.0544
-    y                = 0.0
-    numField         = 1
-    path             = /model[0]/elec[0]/soma[0]
-    dt               = 0.0
-    tick             = -2
-    z0               = 0.0
-    name             = soma
-    Cm               = 7.85398163398e-09
-    x0               = 0.0
-    Vm               = -0.06
-    className        = ZombieCompartment
-    idValue          = 465
-    length           = 0.0005
-    Im               = 1.3194689277e-08
-    x                = 0.0005
-    z                = 0.0
-
-Simulate and display current pulse to soma
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-A more useful script would run and display the model. Rdesigneur can
-help with the stimulus and the plotting. This simulation has the same
-passive compartment, and current is injected as the simulation runs.
-This script displays the membrane potential of the soma as it charges
-and discharges.
-
-::
-
-    import moose
-    import rdesigneur as rd
-    rdes = rd.rdesigneur(
-        stimList = [['soma', '1', 'inject', '(t>0.1 && t<0.2) * 2e-8']],
-        plotList = [['soma', '1', 'Vm', 'Soma membrane potential']],
-    )
-    rdes.buildModel()
-    moose.reinit()
-    moose.start( 0.3 )
-    rdes.display()
-
-The *stimList* defines a stimulus. Each entry has four arguments:
-
-::
-
-    `[region_in_cell, region_expression, parameter, expression_string]`
-
--  ``region_in_cell`` specifies the objects to stimulate. Here it is
-   just the soma.
--  ``region_expression`` specifies a geometry based calculation to
-   decide whether to apply the stimulus. The value must be >0 for the
-   stimulus to be present. Here it is just 1.
--  ``parameter`` specifies the simulation parameter to assign. Here it
-   is the injection current to the compartment.
--  ``expression_string`` calculates the value of the parameter,
-   typically as a function of time. Here we use the function sign(x),
-   where sign(x) == +1 for x > 0, 0 for x = 0 and -1 for x < 0.
-
-To summarise this, the *stimList* here means *inject a current of 20nA
-to the soma between the times of 0.1 and 0.2 s*.
-
-The *plotList* defines what to plot. It has a similar set of arguments:
-
-::
-
-    `[region_in_cell, region_expression, parameter, title_of_plot]`
-
-These mean the same thing as for the stimList except for the title of
-the plot.
-
-The *rdes.display()* function causes the plots to be displayed.
-
-.. figure:: ../../images/rdes2_passive_squid.png
-   :alt: Plot for current input to passive compartment
-
-   Plot for current input to passive compartment
-When we run this we see an initial depolarization as the soma settles
-from its initial -65 mV to a resting Em = -54.4 mV. These are the
-original HH values, see the example above. At t = 0.1 seconds there is
-another depolarization due to the current injection, and at t = 0.2
-seconds this goes back to the resting potential.
-
-HH Squid model in a single compartment
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Here we put the Hodgkin-Huxley squid model channels into a passive
-compartment. The HH channels are predefined as prototype channels for
-Rdesigneur,
-
-::
-
-    import moose
-    import pylab
-    import rdesigneur as rd
-    rdes = rd.rdesigneur(
-        chanProto = [['make_HH_Na()', 'Na'], ['make_HH_K()', 'K']],
-        chanDistrib = [
-            ['Na', 'soma', 'Gbar', '1200' ],
-            ['K', 'soma', 'Gbar', '360' ]],
-        stimList = [['soma', '1', 'inject', '(t>0.1 && t<0.2) * 1e-8' ]],
-        plotList = [['soma', '1', 'Vm', 'Membrane potential']]
-    )
-
-    rdes.buildModel()
-    moose.reinit()
-    moose.start( 0.3 )
-    rdes.display()
-
-Here we introduce two new model specification lines:
-
--  **chanProto**: This specifies which ion channels will be used in the
-   model. Each entry here has two fields: the source of the channel
-   definition, and (optionally) the name of the channel. In this example
-   we specify two channels, an Na and a K channel using the original
-   Hodgkin-Huxley parameters. As the source of the channel definition we
-   use the name of the Python function that builds the channel. The
-   *make\_HH\_Na()* and *make\_HH\_K()* functions are predefined but we
-   can also specify our own functions for making prototypes. We could
-   also have specified the channel prototype using the name of a channel
-   definition file in ChannelML (a subset of NeuroML) format.
--  **chanDistrib**: This specifies *where* the channels should be placed
-   over the geometry of the cell. Each entry in the chanDistrib list
-   specifies the distribution of parameters for one channel using four
-   entries:
-
-   ``[object_name, region_in_cell, parameter, expression_string]``
-
-   In this case the job is almost trivial, since we just have a single
-   compartment named *soma*. So the line
-
-   ``['Na', 'soma', 'Gbar', '1200' ]``
-
-   means *Put the Na channel in the soma, and set its maximal
-   conductance density (Gbar) to 1200 Siemens/m^2*.
-
-As before we apply a somatic current pulse. Since we now have HH
-channels in the model, this generates action potentials.
-
-.. figure:: ../../images/rdes3_squid.png
-   :alt: Plot for HH squid simulation
-
-   Plot for HH squid simulation
-Reaction system in a single compartment
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Here we use the compartment as a place in which to embed a chemical
-model. The chemical oscillator model is predefined in the rdesigneur
-prototypes.
-
-::
-
-    import moose
-    import pylab
-    import rdesigneur as rd
-    rdes = rd.rdesigneur(
-            turnOffElec = True,
-            diffusionLength = 1e-3, # Default diffusion length is 2 microns
-            chemProto = [['make_Chem_Oscillator()', 'osc']],
-            chemDistrib = [['osc', 'soma', 'install', '1' ]],
-            plotList = [['soma', '1', 'dend/a', 'conc', 'a Conc'],
-                ['soma', '1', 'dend/b', 'conc', 'b Conc']]
-    )
-    rdes.buildModel()
-    b = moose.element( '/model/chem/dend/b' )
-    b.concInit *= 5
-    moose.reinit()
-    moose.start( 200 )
-
-    rdes.display()
-
-In this special case we set the turnOffElec flag to True, so that
-Rdesigneur only sets up chemical and not electrical calculations. This
-makes the calculations much faster, since we disable electrical
-calculations and delink chemical calculations from them.
-
-We also have a line which sets the ``diffusionLength`` to 1 mm, so that
-it is bigger than the 0.5 mm squid axon segment in the default
-compartment. If you don't do this the system will subdivide the
-compartment into 2 micron voxels for the purposes of putting in a
-reaction-diffusion system, which we discuss below.
-
-There are a couple of lines to change the initial concentration of the
-molecular pool b. It is scaled up 5x to give rise to slowly decaying
-oscillations.
-
-.. figure:: ../../images/rdes4_osc.png
-   :alt: Plot for single-compartment reaction simulation
-
-   Plot for single-compartment reaction simulation
-Reaction-diffusion system
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-In order to see what a reaction-diffusion system looks like, delete the
-``diffusionLength`` expression in the previous example and add a couple
-of lines to set up 3-D graphics for the reaction-diffusion product:
-
-::
-
-    import moose
-    import pylab
-    import rdesigneur as rd
-    rdes = rd.rdesigneur(
-            turnOffElec = True,
-            chemProto = [['make_Chem_Oscillator()', 'osc']],
-            chemDistrib = [['osc', 'soma', 'install', '1' ]],
-            plotList = [['soma', '1', 'dend/a', 'conc', 'Concentration of a'],
-                ['soma', '1', 'dend/b', 'conc', 'Concentration of b']],
-            moogList = [['soma', '1', 'dend/a', 'conc', 'a Conc', 0, 360 ]]
-    )
-
-    rdes.buildModel()
-    bv = moose.vec( '/model/chem/dend/b' )
-    bv[0].concInit *= 2
-    bv[-1].concInit *= 2
-    moose.reinit()
-
-    rdes.displayMoogli( 1, 400, 0.001 )
-
-This is the line we deleted.
-
-::
-
-        `diffusionLength = 1e-3,`
-
-With this change we permit *rdesigneur* to use the default diffusion
-length of 2 microns. The 500-micron axon segment is now subdivided into
-250 voxels, each of which has a reaction system and diffusing molecules.
-To make it more picturesque, we have added a line after the plotList, to
-display the outcome in 3-D:
-
-::
-
-    'moogList = [['soma', '1', 'dend/a', 'conc', 'a Conc', 0, 360 ]]'
-
-This line says: take the model compartments defined by ``soma`` as the
-region to display, do so throughout the the geometry (the ``1``
-signifies this), and over this range find the chemical entity defined by
-``dend/a``. For each ``a`` molecule, find the ``conc`` and dsiplay it.
-There are two optional arguments, ``0`` and ``360``, which specify the
-low and high value of the displayed variable.
-
-In order to initially break the symmetry of the system, we change the
-initial concentration of molecule b at each end of the cylinder:
-
-::
-
-    bv[0].concInit *= 2
-    bv[-1].concInit *= 2
-
-If we didn't do this the entire system would go through a few cycles of
-decaying oscillation and then reach a boring, spatially uniform, steady
-state. Try putting an initial symmetry break elsewhere to see what
-happens.
-
-To display the concenctration changes in the 3-D soma as the simulation
-runs, we use the line
-
-::
-
-    `rdes.displayMoogli( 1, 400, 0.001 )`
-
-The arguments mean: *displayMoogli( frametime, runtime, rotation )*
-Here,
-
-::
-
-    frametime = time by which simulation advances between display updates
-    runtime = Total simulated time
-    rotation = angle by which display rotates in each frame, in radians.
-
-When we run this, we first get a 3-D display with the oscillating
-reaction-diffusion system making its way inward from the two ends. After
-the simulation ends the plots for all compartments for the whole run
-come up.
-
-.. figure:: ../../images/rdes5_reacdiff.png
-   :alt: Display for oscillatory reaction-diffusion simulation
-
-   Display for oscillatory reaction-diffusion simulation
-Make a toy multiscale model with electrical and chemical signaling.
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Now we put together chemical and electrical models. In this toy model we
-have an HH-squid type single compartment electrical model, cohabiting
-with a chemical oscillator. The chemical oscillator regulates K+ channel
-amounts, and the average membrane potential regulates the amounts of a
-reactant in the chemical oscillator. This is a recipe for some strange
-firing patterns.
-
-::
-
-    import moose
-    import pylab
-    import rdesigneur as rd
-    rdes = rd.rdesigneur(
-            # We want just one compartment so we set diffusion length to be
-            # bigger than the 0.5 mm HH axon compartment default. 
-                diffusionLength = 1e-3,
-                chanProto = [['make_HH_Na()', 'Na'], ['make_HH_K()', 'K']],
-                chanDistrib = [
-                    ['Na', 'soma', 'Gbar', '1200' ],
-                    ['K', 'soma', 'Gbar', '360' ]],
-            chemProto = [['make_Chem_Oscillator()', 'osc']],
-            chemDistrib = [['osc', 'soma', 'install', '1' ]],
-            # These adaptor parameters give interesting-looking but
-            # not particularly physiological behaviour.
-            adaptorList = [
-                [ 'dend/a', 'conc', 'Na', 'modulation', 1, -5.0 ],
-                [ 'dend/b', 'conc', 'K', 'modulation', 1, -0.2],
-                [ 'dend/b', 'conc', '.', 'inject', -1.0e-7, 4e-7 ],
-                [ '.', 'Vm', 'dend/s', 'conc', 2.5, 20.0 ]
-            ],
-            plotList = [['soma', '1', 'dend/a', 'conc', 'a Conc'],
-                ['soma', '1', 'dend/b', 'conc', 'b Conc'],
-                ['soma', '1', 'dend/s', 'conc', 's Conc'],
-                ['soma', '1', 'Na', 'Gk', 'Na Gk'],
-                ['soma', '1', '.', 'Vm', 'Membrane potential']
-        ]
-    )
-
-    rdes.buildModel()
-    moose.reinit()
-    moose.start( 250 ) # Takes a few seconds to run this.
-
-    rdes.display()
-
-We've already modeled the HH squid model and the oscillator
-individually, and you should recognize the parts of those models above.
-The new section that makes this work the *adaptorList* which specifies
-how the electrical and chemical parts talk to each other. This entirely
-fictional set of interactions goes like this:
-
-::
-
-    [ 'dend/a', 'conc', 'Na', 'modulation', 1, -5.0 ]
-
--  *dend/a*: The originating variable comes from the 'a' pool on the
-   'dend' compartment.
-
-   *conc*: This is the originating variable name on the 'a' pool.
-
-   *Na*: This is the target variable
-
-   *modulation*: scale the Gbar of Na up and down. Use 'modulation'
-   rather than direct assignment of Gbar since Gbar is different for
-   each differently-sized compartment.
-
-   *1*: This is the initial offset
-
-   *-5.0*: This is the scaling from the input to the parameter updated
-   in the simulation.
-
-A similar set of adaptor entries couple the molecule *dend/b* to the K
-channel, *dend/b* again to the current injection into the soma, and the
-membrane potential to the concentration of *dend/s*.
-
-.. figure:: ../../images/rdes6_multiscale.png
-   :alt: Plot for toy multiscale model
-
-   Plot for toy multiscale model
-Morphology: Load .swc morphology file and view it
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Here we build a passive model using a morphology file in the .swc file
-format (as used by NeuroMorpho.org). The morphology file is predefined
-for Rdesigneur and resides in the directory ``./cells``. We apply a
-somatic current pulse, and view the somatic membrane potential in a
-plot, as before. To make things interesting we display the morphology in
-3-D upon which we represent the membrane potential as colors.
-
-::
-
-    import moose
-    import rdesigneur as rd
-    rdes = rd.rdesigneur(
-        cellProto = [['./cells/h10.CNG.swc', 'elec']],
-        stimList = [['soma', '1', '.', 'inject', 't * 25e-9' ]], 
-        plotList = [['#', '1', '.', 'Vm', 'Membrane potential'],
-            ['#', '1', 'Ca_conc', 'Ca', 'Ca conc (uM)']],
-        moogList = [['#', '1', '.', 'Vm', 'Soma potential']]
-    )
-
-    rdes.buildModel()
-
-    moose.reinit()
-    rdes.displayMoogli( 0.0002, 0.1 )
-
-Here the new concept is the cellProto line, which loads in the specified
-cell model:
-
-::
-
-    `[ filename, cellname ]`
-
-The system recognizes the filename extension and builds a model from the
-swc file. It uses the cellname **elec** in this example.
-
-We use a similar line as in the reaction-diffusion example, to build up
-a Moogli display of the cell model:
-
-::
-
-    `moogList = [['#', '1', '.', 'Vm', 'Soma potential']]`
-
-Here we have:
-
-::
-
-    *#*: the path to use for selecting the compartments to display. 
-    This wildcard means use all compartments.
-    *1*: The expression to use for the compartments. Again, `1` means use
-    all of them.
-    *.*: Which object in the compartment to display. Here we are using the
-    compartment itself, so it is just a dot.
-    *Vm*: Field to display
-    *Soma potential*: Title for display.
-
-.. figure:: ../../images/rdes7_passive.png
-   :alt: 3-D display for passive neuron
-
-   3-D display for passive neuron
-Build an active neuron model by putting channels into a morphology file
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-We load in a morphology file and distribute voltage-gated ion channels
-over the neuron. Here the voltage-gated channels are obtained from a
-number of channelML files, located in the ``./channels`` subdirectory.
-Since we have a spatially extended neuron, we need to specify the
-spatial distribution of channel densities too.
-
-::
-
-    import moose
-    import rdesigneur as rd
-    rdes = rd.rdesigneur(
-        chanProto = [
-            ['./chans/hd.xml'],
-            ['./chans/kap.xml'],
-            ['./chans/kad.xml'],
-            ['./chans/kdr.xml'],
-            ['./chans/na3.xml'],
-            ['./chans/nax.xml'],
-            ['./chans/CaConc.xml'],
-            ['./chans/Ca.xml']
-        ],
-        cellProto = [['./cells/h10.CNG.swc', 'elec']],
-        chanDistrib = [ \
-            ["hd", "#dend#,#apical#", "Gbar", "50e-2*(1+(p*3e4))" ],
-            ["kdr", "#", "Gbar", "p < 50e-6 ? 500 : 100" ],
-            ["na3", "#soma#,#dend#,#apical#", "Gbar", "850" ],
-            ["nax", "#soma#,#axon#", "Gbar", "1250" ],
-            ["kap", "#axon#,#soma#", "Gbar", "300" ],
-            ["kap", "#dend#,#apical#", "Gbar",
-                "300*(H(100-p*1e6)) * (1+(p*1e4))" ],
-            ["Ca_conc", "#", "tau", "0.0133" ],
-            ["kad", "#soma#,#dend#,#apical#", "Gbar", "50" ],
-            ["Ca", "#", "Gbar", "50" ]
-        ],
-        stimList = [['soma', '1', '.', 'inject', '(t>0.02) * 1e-9' ]],
-        plotList = [['#', '1', '.', 'Vm', 'Membrane potential'],
-                ['#', '1', 'Ca_conc', 'Ca', 'Ca conc (uM)']],
-        moogList = [['#', '1', 'Ca_conc', 'Ca', 'Calcium conc (uM)', 0, 120],
-            ['#', '1', '.', 'Vm', 'Soma potential']]
-    )
-
-    rdes.buildModel()
-
-    moose.reinit()
-    rdes.displayMoogli( 0.0002, 0.052 )
-
-Here we make more extensive use of two concepts which we've already seen
-from the single compartment squid model:
-
-1. *chanProto*: This defines numerous channels, each of which is of the
-   form:
-
-   ``[ filename ]``
-
-   or
-
-   ``[ filename, channelname ]``
-
-If the *channelname* is not specified the system uses the last part of
-the channel name, before the filetype suffix.
-
-2. *chanDistrib*: This defines the spatial distribution of each channel
-   type. Each line is of a form that should be familiar now:
-
-   ``[channelname, region_in_cell, parameter, expression_string]``
-
--  The *channelname* is the name of the prototype from *chanproto*. This
-   is usually an ion channel, but in the example above you can also see
-   a calcium concentration pool defined.
--  The *region\_in\_cell* is typically defined using wildcards, so that
-   it generalizes to any cell morphology. For example, the plain
-   wildcard ``#`` means to consider all cell compartments. The wildcard
-   ``#dend#`` means to consider all compartments with the string
-   ``dend`` somewhere in the name. Wildcards can be comma-separated, so
-   ``#soma#,#dend#`` means consider all compartments with either soma or
-   dend in their name. The naming in MOOSE is defined by the model file.
-   Importantly, in **.swc** files MOOSE generates names that respect the
-   classification of compartments into axon, soma, dendrite, and apical
-   dendrite compartments respectively. SWC files generate compartment
-   names such as:
-
-   ::
-
-       soma_<number>
-       dend_<number>
-       apical_<number>
-       axon_<number>
-
-where the number is automatically assigned by the reader. In order to
-select all dendritic compartments, for example, one would use *"#dend#"*
-where the *"#"* acts as a wildcard to accept any string. - The
-*parameter* is usually Gbar, the channel conductance density in *S/m^2*.
-If *Gbar* is zero or less, then the system economizes by not
-incorporating this channel mechanism in this part of the cell.
-Similarly, for calcium pools, if the *tau* is below zero then the
-calcium pool object is simply not inserted into this part of the cell. -
-The *expression\_string* defines the value of the parameter, such as
-Gbar. This is typically a function of position in the cell. The
-expression evaluator knows about several parameters of cell geometry.
-All units are in metres:
-
--  *x*, *y* and *z* coordinates.
--  *g*, the geometrical distance from the soma
--  *p*, the path length from the soma, measured along the dendrites.
--  *dia*, the diameter of the dendrite.
--  *L*, The electrotonic length from the soma (no units).
-
-Along with these geometrical arguments, we make liberal use of the
-Heaviside function H(x) to set up the channel distributions. The
-expression evaluator also knows about pretty much all common algebraic,
-trignometric, and logarithmic functions, should you wish to use these.
-
-Also note the two Moogli displays. The first is the calcium
-concentration. The second is the membrane potential in each compartment.
-Easy!
-
-.. figure:: ../../images/rdes8_active.png
-   :alt: 3-D display for active neuron
-
-   3-D display for active neuron
-Build a spiny neuron from a morphology file and put active channels in it.
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This model is one step elaborated from the previous one, in that we now
-also have dendritic spines. MOOSE lets one decorate a bare neuronal
-morphology file with dendritic spines, specifying various geometric
-parameters of their location. As before, we use an swc file for the
-morphology, and the same ion channels and distribution.
-
-::
-
-    import moose
-    import pylab
-    import rdesigneur as rd
-    rdes = rd.rdesigneur(
-        chanProto = [
-            ['./chans/hd.xml'],
-            ['./chans/kap.xml'],
-            ['./chans/kad.xml'],
-            ['./chans/kdr.xml'],
-            ['./chans/na3.xml'],
-            ['./chans/nax.xml'],
-            ['./chans/CaConc.xml'],
-            ['./chans/Ca.xml']
-        ],
-        cellProto = [['./cells/h10.CNG.swc', 'elec']],
-        spineProto = [['make_active_spine()', 'spine']],
-        chanDistrib = [
-            ["hd", "#dend#,#apical#", "Gbar", "50e-2*(1+(p*3e4))" ],
-            ["kdr", "#", "Gbar", "p < 50e-6 ? 500 : 100" ],
-            ["na3", "#soma#,#dend#,#apical#", "Gbar", "850" ],
-            ["nax", "#soma#,#axon#", "Gbar", "1250" ],
-            ["kap", "#axon#,#soma#", "Gbar", "300" ],
-            ["kap", "#dend#,#apical#", "Gbar",
-                "300*(H(100-p*1e6)) * (1+(p*1e4))" ],
-            ["Ca_conc", "#", "tau", "0.0133" ],
-            ["kad", "#soma#,#dend#,#apical#", "Gbar", "50" ],
-            ["Ca", "#", "Gbar", "50" ]
-        ],
-        spineDistrib = [['spine', '#dend#,#apical#', '20e-6', '1e-6']],
-        stimList = [['soma', '1', '.', 'inject', '(t>0.02) * 1e-9' ]],
-        plotList = [['#', '1', '.', 'Vm', 'Membrane potential'],
-                ['#', '1', 'Ca_conc', 'Ca', 'Ca conc (uM)']],
-        moogList = [['#', '1', 'Ca_conc', 'Ca', 'Calcium conc (uM)', 0, 120],
-            ['#', '1', '.', 'Vm', 'Soma potential']]
-    )
-
-    rdes.buildModel()
-
-    moose.reinit()
-    rdes.displayMoogli( 0.0002, 0.023 )
-
-Spines are set up in a familiar way: we first define one (or more)
-prototype spines, and then distribute these around the cell. Here is the
-prototype string:
-
-::
-
-        [spine_proto, spinename]
-
-*spine\_proto*: This is typically a function. One can define one's own,
-but there are several predefined ones in rdesigneur. All these define a
-spine with the following parameters:
-
--  head diameter 0.5 microns
--  head length 0.5 microns
--  shaft length 1 micron
--  shaft diameter of 0.2 microns
--  RM = 1.0 ohm-metre square
--  RA = 1.0 ohm-meter
--  CM = 0.01 Farads per square metre.
-
-Here are the predefined spine prototypes:
-
--  *make\_passive\_spine()*: This just makes a passive spine with the
-   default parameters
--  *make\_exc\_spine()*: This makes a spine with NMDA and glu receptors,
-   and also a calcium pool. The NMDA channel feeds the Ca pool.
--  *make\_active\_spine()*: This adds a Ca channel to the exc\_spine.
-   and also a calcium pool.
-
-The spine distributions are specified in a familiar way for the first
-few arguments, and then there are multiple (optional) spine-specific
-parameters:
-
-*[spinename, region\_in\_cell, spacing, spacing\_distrib, size,
-size\_distrib, angle, angle\_distrib ]*
-
-Only the first two arguments are mandatory.
-
--  *spinename*: The prototype name
--  *region\_in\_cell*: Usual wildcard specification of names of
-   compartments in which to put the spines.
--  *spacing*: Math expression to define spacing between spines. In the
-   current implementation this evaluates to
-   ``1/probability_of_spine_per_unit_length``. Defaults to 10 microns.
-   Thus, there is a 10% probability of a spine insertion in every
-   micron. This evaluation method has the drawback that it is possible
-   to space spines rather too close to each other. If spacing is zero or
-   less, no spines are inserted.
--  *spacing\_distrib*: Math expression for distribution of spacing. In
-   the current implementation, this specifies the interval at which the
-   system samples from the spacing probability above. Defaults to 1
-   micron.
--  *size*: Linear scale factor for size of spine. All dimensions are
-   scaled by this factor. The default spine head here is 0.5 microns in
-   diameter and length. If the scale factor were to be 2, the volume
-   would be 8 times as large. Defaults to 1.0.
--  *size\_distrib*: Range for size of spine. A random number R is
-   computed in the range 0 to 1, and the final size used is
-   ``size + (R - 0.5) * size_distrib``. Defaults to 0.5
--  *angle*: This specifies the initial angle at which the spine sticks
-   out of the dendrite. If all angles were zero, they would all point
-   away from the soma. Defaults to 0 radians.
--  *angle\_distrib*: Specifies a random number to add to the initial
-   angle. Defaults to 2 PI radians, so the spines come out in any
-   direction.
-
-One may well ask why we are not using a Python dictionary to handle all
-these parameters. Short answer is: terseness. Longer answer is that the
-rdesigneur format is itself meant to be an intermediate form for an
-eventual high-level, possibly XML-based multiscale modeling format.
-
-.. figure:: ../../images/rdes9_spiny_active.png
-   :alt: 3-D display for spiny active neuron
-
-   3-D display for spiny active neuron
-Build a spiny neuron from a morphology file and put a reaction-diffusion system in it.
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Rdesigneur is specially designed to take reaction systems with a
-dendrite, a spine head, and a spine PSD compartment, and embed these
-systems into neuronal morphologies. This example shows how this is done.
-
-The dendritic molecules diffuse along the dendrite in the region
-specified by the *chemDistrib* keyword. In this case they are placed on
-all apical and basal dendrites, but only at distances over 500 microns
-from the soma. The spine head and PSD reaction systems are inserted only
-into spines within this same *chemDistrib* zone. Diffusion coupling
-between dendrite, and each spine head and PSD is also set up. It takes a
-predefined chemical model file for Rdesigneur, which resides in the
-``./chem`` subdirectory. As in an earlier example, we turn off the
-electrical calculations here as they are not needed. Here we plot out
-the number of receptors on every single spine as a function of time.
-
-.. todo:: (stuff here)
-
-Make a full multiscale model with complex spiny morphology and electrical and chemical signaling.
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. todo:: (stuff here)
-- 
GitLab