NeuroML / jNeuroML

A single package (command line tool and library) in Java to validate, simulate, translate and analyse NeuroML 2 models
https://docs.neuroml.org/Userdocs/Software/jNeuroML.html
GNU Lesser General Public License v3.0
8 stars 20 forks source link

What is the relationship between values for Display/Line quantity field in LEMS vs NEURON? #50

Open JustasB opened 7 years ago

JustasB commented 7 years ago

Using the jLEMS simulator, I can find out the path of a desired variable by using Menu > Simulation > Dump simulation info button.

I then use that path in the quantity field of a Display/Line or a Output/Column element. This works in jLEMS and results in a plot with the variable changing over time, and there are no warnings or errors in the console.... E.g:

        <Display id="CG_LTS_ModelDB_test" title="PospischilEtAl2008: Default Simulation Configuration, CG_LTS_ModelDB, VOLTAGE" xmin="0" xmax="1000" ymin="-100" ymax="70" timeScale="1ms">
            <Line id="v" timeScale="1 ms" quantity="CG_LTS_ModelDB/0/LTS_ModelDB/v" scale="1 mV" color="#000000"/>
        </Display>

        <Display id="CG_LTS_ModelDB_testi" title="i PospischilEtAl2008: Default Simulation Configuration, CG_LTS_ModelDB, VOLTAGE" xmin="0" xmax="1000" ymin="0" ymax="1" timeScale="1ms">
            <Line id="i" timeScale="1 ms" quantity="CG_LTS_ModelDB/0/LTS_ModelDB/biophys/membraneProperties/IT_all/channelf" scale="1" color="#000000"/>
        </Display>

However, when I use the -neuron flag, for some variables I get the expected plot, while for others I get an empty plot, with the NEURON console showing e.g. "Graph:: presently invalid expression: a_CG_LTS_ModelDB[0].Soma.channelf(0.5)". In NEURON, the v plot shows up ok, but the channelf shows 0 values throughout the sim window.

This suggests that there are two different sets of allowable/supported quantity paths for LEMS and NEURON. I cannot find any documentation on what is universally supported, vs. supported in jLEMS only, vs. supported in NEURON only. So, is there a set of rules that can be used to determine if a quantity that is safe for jLEMS will also work in NEURON too?

I could modify the resulting NEURON code after jnml generates it, but I'm looking for a simulator-independent way to reliably set the quantity in the LEMS file.

pgleeson commented 7 years ago

Generally the same paths should be supported in Neuron as jLems. Have a look in the standard examples for usage which is working on jLEMS & Neuron, e.g. https://github.com/NeuroML/NeuroML2/blob/development/LEMSexamples/LEMS_NML2_Ex5_DetCell.xml#L34.

For channels you will usually need to record the current or conductance densities, and paths like hhpop[0]/bioPhys1/membraneProperties/naChans/iDensity and hhpop[0]/bioPhys1/membraneProperties/kChans/gDensity should work in Neuron.

Usually if something is not supported in Neuron, it's just that I haven't gotten round to testing/implementing that type of path yet. There has been some work updating the supported paths in Neuron on the development version recently, so pull down the latest code and you might have more success.

I've been overdue for a while documenting these paths, apologies for this. See for more example paths https://github.com/NeuroML/org.neuroml.export/blob/development/src/main/java/org/neuroml/export/neuron/LEMSQuantityPathNeuron.java, https://github.com/NeuroML/org.neuroml.export/blob/development/src/main/java/org/neuroml/export/utils/LEMSQuantityPath.java#L308