OpenSourceBrain / BlueBrainProjectShowcase

A project to illustrate how models and data from the Blue Brain Project can be converted to NeuroML and PyNN
http://opensourcebrain.org/projects/blue-brain-project-showcase
Other
23 stars 16 forks source link

-neuron version of Channelpedia vclamp LEMS file does not run in NEURON #10

Open JustasB opened 7 years ago

JustasB commented 7 years ago

The example LEMS file for converted Channelpedia channels works with jnml LEMS, but not with NEURON.

$ jnml LEMS_Test_Cav2.1.xml --> OK $ jnml LEMS_Test_Cav2.1.xml -neuron -run --> ERRORS

The problem seems to be related to NEURON's WATCH statement only allowing a single condition check, whereas the vClampedCell component defined in the LEMS file specifies multiple conditions.

The full output is pasted below:

$ jnml LEMS_Test_Cav2.1.xml -neuron -run
 jNeuroML v0.7.5
(INFO) Reading from: /Users/gazelle/Downloads/nrntest/LEMS_Test_Cav2.1.xml
(WARNING) Unused attribute in Component(id=null type=rdf_RDF): XMLAttribute(xmlns:bqmodel, http://biomodels.net/model-qualifiers/)  at: org.lemsml.jlems.core.type.Component.resolve(Component.java:538)
(WARNING) Unused attribute in Component(id=null type=rdf_RDF): XMLAttribute(xmlns:bqbiol, http://biomodels.net/biology-qualifiers/)  at: 
(INFO) Adding simulation Component(id=sim1 type=Simulation) of network/component: net1 (Type: networkWithTemperature:  temperature=305.15 (SI temperature))
(INFO) -- Writing to mod: /Users/gazelle/Downloads/nrntest/holderCell_min60.mod
(INFO) -- Writing to mod: /Users/gazelle/Downloads/nrntest/holderCell_min50.mod
(INFO) -- Writing to mod: /Users/gazelle/Downloads/nrntest/holderCell_min40.mod
(INFO) -- Writing to mod: /Users/gazelle/Downloads/nrntest/holderCell_min30.mod
(INFO) -- Writing to mod: /Users/gazelle/Downloads/nrntest/holderCell_min20.mod
(INFO) -- Writing to mod: /Users/gazelle/Downloads/nrntest/holderCell_min10.mod
(INFO) -- Writing to mod: /Users/gazelle/Downloads/nrntest/holderCell_0.mod
(INFO) -- Writing to mod: /Users/gazelle/Downloads/nrntest/holderCell_10.mod
(INFO) -- Writing to mod: /Users/gazelle/Downloads/nrntest/holderCell_20.mod
(INFO) -- Writing to mod: /Users/gazelle/Downloads/nrntest/holderCell_30.mod
(INFO) -- Writing to mod: /Users/gazelle/Downloads/nrntest/holderCell_40.mod
(INFO) -- Writing to mod: /Users/gazelle/Downloads/nrntest/holderCell_50.mod
(INFO) -- Writing to mod: /Users/gazelle/Downloads/nrntest/holderCell_60.mod
(INFO) -- Writing to mod: /Users/gazelle/Downloads/nrntest/holderCell_70.mod
(INFO) -- Writing to mod: /Users/gazelle/Downloads/nrntest/holderCell_80.mod
(INFO) -- Writing to mod: /Users/gazelle/Downloads/nrntest/holderCell_90.mod
(INFO) -- Writing to mod: /Users/gazelle/Downloads/nrntest/rampCell0.mod
(INFO) Trying to compile mods in: /Users/gazelle/Downloads/nrntest
(INFO) Going to compile the mod files in: /Users/gazelle/Downloads/nrntest, forcing recompile: false
(INFO) Parent dir: /Users/gazelle/Downloads/nrntest
(INFO) Assuming *nix environment...
(INFO) Name of file to be created: /Users/gazelle/Downloads/nrntest/i686/libnrnmech.la
(INFO) Backup file to check for success: /Users/gazelle/Downloads/nrntest/umac/libnrnmech.la
(INFO) commandToExecute: /Applications/NEURON-7.3/nrn/x86_64/bin/nrnivmodl
(INFO) Going to check if mods in /Users/gazelle/Downloads/nrntest are newer than null
(INFO) Trying to delete any previous: /Users/gazelle/Downloads/nrntest/i686/libnrnmech.la
(INFO) directoryToExecuteIn: /Users/gazelle/Downloads/nrntest
(INFO) NMODL Compile >> > Creating x86_64 directory for .o files.
(INFO) NMODL Compile >> > 
(INFO) Have successfully executed command: /Applications/NEURON-7.3/nrn/x86_64/bin/nrnivmodl
(INFO) NMODL Compile >> > /Users/gazelle/Downloads/nrntest
(INFO) NMODL Compile >> > holderCell_0.mod holderCell_10.mod holderCell_20.mod holderCell_30.mod holderCell_40.mod holderCell_50.mod holderCell_60.mod holderCell_70.mod holderCell_80.mod holderCell_90.mod holderCell_min10.mod holderCell_min20.mod holderCell_min30.mod holderCell_min40.mod holderCell_min50.mod holderCell_min60.mod rampCell0.mod
(INFO) NMODL Compile >> > holderCell_0.mod holderCell_10.mod holderCell_20.mod holderCell_30.mod holderCell_40.mod holderCell_50.mod holderCell_60.mod holderCell_70.mod holderCell_80.mod holderCell_90.mod holderCell_min10.mod holderCell_min20.mod holderCell_min30.mod holderCell_min40.mod holderCell_min50.mod holderCell_min60.mod rampCell0.mod
(INFO) NMODL Compile >> > "/Applications/NEURON-7.3/nrn/x86_64/bin/nocmodl" holderCell_0
(INFO) NMODL Error   >> > Translating holderCell_0.mod into holderCell_0.c
(INFO) NMODL Error   >> > make: *** [holderCell_0.lo] Abort trap: 6
(INFO) Have successfully executed command: /Applications/NEURON-7.3/nrn/x86_64/bin/nrngui -python /Users/gazelle/Downloads/nrntest/LEMS_Test_Cav2.1_nrn.py
(INFO) NRN Error  >>> NEURON -- VERSION 7.4 (1373:f15dcfc7847b) f15dcfc7847b
(INFO) NRN Error  >>> Duke, Yale, and the BlueBrain Project -- Copyright 1984-2015
(INFO) NRN Error  >>> See http://www.neuron.yale.edu/neuron/credits
(INFO) NRN Error  >>> 
(INFO) NRN Error  >>> /Applications/NEURON-7.3/nrn/x86_64/bin/nrniv: holderCell_min60 is not a template
(INFO) NRN Error  >>>  near line 1
(INFO) NRN Error  >>>   holderCellPop_min60[0]  { m_holderCell_min60_holderCellPop_min60[0] = new holderCell_min60(0.5) } 
(INFO) NRN Error  >>>                                                                                                 ^
(INFO) NRN Output >>> Population holderCellPop_min60 contains 1 instance(s) of component: holderCell_min60 of type: vClampedCell
(INFO) NRN Error  >>> Traceback (most recent call last):
(INFO) NRN Output >>> first instance of n_holderCellPop_min60
(INFO) NRN Error  >>>   File "/Users/gazelle/Downloads/nrntest/LEMS_Test_Cav2.1_nrn.py", line 65, in <module>
(INFO) NRN Error  >>>     h.m_holderCell_min60_holderCellPop_min60[i].delay = 1.0
(INFO) NRN Error  >>> AttributeError: 'NoneType' object has no attribute 'delay'
pgleeson commented 7 years ago

One solution to this would be to rewrite the template for generating the voltage clamped runs using the new voltageClampTriple (see here) rather than the custom cell type (vClampedCell) which is a voltage clampable cell. This custom cell isn't easily mappable to Neuron, but runs in jLems.

The channel to be investigated could be put on a standard cell, with a channelDensity for the channel, and the cell clamped to the appropriate voltage. This should run fine in Neuron too. What would probably have to happen is a variation of the voltageClampTriple ComponentType should be created to make a ramping clamped cell...

JustasB commented 7 years ago

Ok, I'll give the voltageClampTriple a try and let you know how it goes.

pgleeson commented 7 years ago

Great, thanks.

JustasB commented 7 years ago

The using the voltageClampTripple does work in NEURON, but I don't know how to express the g&i variables in LEMS so that they show up in plots in NEURON.

Related to this issue: https://github.com/NeuroML/jNeuroML/issues/50