diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cfb639f..5408614 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,9 +3,9 @@ name: Build all NML Java on: push: - branches: [ master, development, experimental, documentation_update, osb* ] + branches: [ master, development, experimental, documentation_update, osb*, update* ] pull_request: - branches: [ master, development, experimental, documentation_update, osb* ] + branches: [ master, development, experimental, documentation_update, osb*, update* ] jobs: build: @@ -13,17 +13,17 @@ jobs: strategy: fail-fast: false matrix: - java: [ '8', '11', '16', '17', '19' ] + java: [ '8', '11', '16', '17', '19', '21' ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up JDK ${{ matrix.java }} - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: java-version: ${{ matrix.java }} java-package: jdk - distribution: 'adopt' + distribution: 'temurin' - name: Install NeuroML 2 with Maven run: | diff --git a/.github/workflows/omv-ci.yml b/.github/workflows/omv-ci.yml index bec4a7c..898510b 100644 --- a/.github/workflows/omv-ci.yml +++ b/.github/workflows/omv-ci.yml @@ -2,9 +2,9 @@ name: Run OMV tests on: push: - branches: [ master, development, experimental, documentation_update, osb* ] + branches: [ master, development, experimental, documentation_update, osb*, update* ] pull_request: - branches: [ master, development, experimental, documentation_update, osb* ] + branches: [ master, development, experimental, documentation_update, osb*, update* ] jobs: build: @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [ 3.9 ] + python-version: [ "3.9" ] engine: - jNeuroML - jNeuroML_Brian2 @@ -25,10 +25,10 @@ jobs: - PyLEMS_NeuroML2 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} diff --git a/.gitignore b/.gitignore index e58f53e..0dfe0af 100644 --- a/.gitignore +++ b/.gitignore @@ -68,3 +68,15 @@ examples/*.pov /LEMSexamples/tmp arm64 /examples/NML2_SingleCompHHCell.nml__flattened.xml +/LEMSexamples/morphologies/*.mod +/LEMSexamples/morphologies/*.c +/LEMSexamples/morphologies/*.so +*eden.py +*netpyne.py +*nrn.py +/LEMSexamples/morphologies/*.dat +/LEMSexamples/morphologies/*.hoc +/LEMSexamples/morphologies/NET_m_in_b_in.net.nml +/LEMSexamples/morphologies/simulator.props +/LEMSexamples/morphologies/NET_m_in_b_out.net.nml +/LEMSexamples/morphologies/NET_m_out_b_in.net.nml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 97ab837..0000000 --- a/.travis.yml +++ /dev/null @@ -1,75 +0,0 @@ -dist: xenial - -addons: - apt: - packages: - # Requirements for Brian & NEST - - python-numpy - - python-scipy - - python-matplotlib - - python-sympy - # Requirements for NetPyNE & libNeuroML - - python-tk - - python-lxml - - python-tornado - # Requirements for Moose - - python-dev - - libhdf5-dev - - libgsl0-dev - - g++ - - -language: python - -python: - - 2.7 - - 3.7 - -branches: - except: - - documentation_update - -env: - - OMV_ENGINE=jNeuroML - - OMV_ENGINE=PyLEMS_NeuroML2 - - OMV_ENGINE=jNeuroML_NEURON - - OMV_ENGINE=jNeuroML_NetPyNE - - OMV_ENGINE=jNeuroML_Brian - - OMV_ENGINE=jNeuroML_Brian2 - #- OMV_ENGINE=jNeuroML_Moose # issue on xenial and python 3? - - OMV_ENGINE=jNeuroML_validate - -install: - - - pip install kiwisolver==1.1.0 # Temporary, due to issues with 1.2.0 - - export main_repo_branch=$TRAVIS_BRANCH - - echo $main_repo_branch - - if [[ ${main_repo_branch} != "master" && ${main_repo_branch} != "development" && ${main_repo_branch} != "experimental" ]]; then main_repo_branch=development ; fi - - - mvn install - - - git clone https://github.com/NeuroML/jNeuroML.git - - cd jNeuroML - - git checkout $main_repo_branch - - - python getNeuroML.py $main_repo_branch # will call mvn install on this & other repos - - ls -alt - - mvn dependency:tree - - - export PATH=$PATH:$TRAVIS_BUILD_DIR/jNeuroML - - export JNML_HOME=$TRAVIS_BUILD_DIR/jNeuroML - - cd - - pip install git+https://github.com/OpenSourceBrain/osb-model-validation - - - pip install matplotlib>=2.2.5 # This is more because Matplotlib v2.x is required... - - pip install future pandas matplotlib-scalebar bokeh scipy - - -script: - - jnml -v - - cd $TRAVIS_BUILD_DIR/NeuroML2/LEMSexamples - - pwd - - ls -alt - - if [ "$TRAVIS_PYTHON_VERSION" == "2.7" ]; then omv all -V; else omv all -V --ignore-non-py3; fi - - omv list -V - - java -version diff --git a/HISTORY.md b/HISTORY.md index eaf1f66..570f3d8 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -8,6 +8,32 @@ and [LEMS](https://github.com/LEMS/LEMS), but also the Python ([libNeuroML](http **Only contributors who are not [NeuroML Editors](https://docs.neuroml.org/NeuroMLOrg/Board.html) are specifically pointed out below.** +v2.3.1 / 2024-08-25 +-------------------- + +* **Renamed the main Schema from NeuroML_v2.3.xsd to [NeuroML_v2.3.1.xsd](https://github.com/NeuroML/NeuroML2/blob/master/Schemas/NeuroML2/NeuroML_v2.3.1).** + +* Adds support for external / in cell element. Also simulator mappings for NEURON/NetPyNE support this. See [here](https://docs.neuroml.org/Userdocs/ImportingMorphologyFiles.html#neuroml2) for more details. Multiple examples of NeuroML2/LEMS files using this feature can be found [here](https://github.com/NeuroML/NeuroML2/tree/development/LEMSexamples/morphologies). + +* pyNeuroML analysis feature updates: better support for analysing kinetic scheme based channels in `pynml-channelanalysis`; better support for plotting generated spike trains with `pynml-plotspikes`. + +* Improved testing of Java based libraries on latest versions of Java and recent Mac OS versions. + +* Improved support for adding RDF annotations to NeuroML files. + +* Added ability to load (a subset of) XPPAUT files with `pynml-xpp` and export the model to LEMS or back to XPPAUT. + +* Improvements to handling of SBML and SED-ML files - added to pynml ability to validate both formats, or run SED-ML files which refer to SBML models using simulator tellurium. + +* Added option to archive NeuroML models as COMBINE Archives with `pynml-archive`. + +* Initial support for sending archived NeuroML models to Biosimulations.org for simulation. + +* Improved ability for pynml and related tools to detect the correct file type (NeuroML or LEMS) for the appropriate export/simulation option, and give advice when an incorrect file is provided. + +* Updates to `pynml-plotmorph` for plotting morphologies in 2D, and in 3D with VisPy. + + v2.3 / 2023-09-20 -------------------- diff --git a/LEMSexamples/morphologies/.test.jnml.omt b/LEMSexamples/morphologies/.test.jnml.omt new file mode 100644 index 0000000..15552fa --- /dev/null +++ b/LEMSexamples/morphologies/.test.jnml.omt @@ -0,0 +1,17 @@ +# Script for running automated tests on OSB, see https://github.com/OpenSourceBrain/osb-model-validation + +target: LEMS_m_in_b_in.xml +engine: jNeuroML +mep: .test.mep +experiments: + Current clamp pyramidal: + observables: + spike times: + file: + path: pyramidal_soma_0.dat + columns: [0,1] + scaling: [1000, 1000] + spike detection: + method: threshold + threshold: 0 + tolerance: 0.004018425953151025 diff --git a/LEMSexamples/morphologies/.test.jnmleden.multi.omt b/LEMSexamples/morphologies/.test.jnmleden.multi.omt new file mode 100644 index 0000000..584aad5 --- /dev/null +++ b/LEMSexamples/morphologies/.test.jnmleden.multi.omt @@ -0,0 +1,20 @@ +# Script for running automated tests on OSB, see https://github.com/OpenSourceBrain/osb-model-validation + +target: LEMS_pyrfull_in.xml +engine: jNeuroML_EDEN +mep: .test.multi.mep +experiments: + Current clamp pyramidal: + observables: + spike times: + file: + path: pyramidals_0.0.dat + columns: [0,1] + scaling: [1000, 1000] + spike detection: + method: threshold + threshold: 0 + tolerance: 0.017719626168224333 + + + diff --git a/LEMSexamples/morphologies/.test.jnmleden.multi.out.omt b/LEMSexamples/morphologies/.test.jnmleden.multi.out.omt new file mode 100644 index 0000000..b81acec --- /dev/null +++ b/LEMSexamples/morphologies/.test.jnmleden.multi.out.omt @@ -0,0 +1,20 @@ +# Script for running automated tests on OSB, see https://github.com/OpenSourceBrain/osb-model-validation + +target: LEMS_pyrfull_out.xml +engine: jNeuroML_EDEN +mep: .test.multi.mep +experiments: + Current clamp pyramidal: + observables: + spike times: + file: + path: pyramidals_0.0.dat + columns: [0,1] + scaling: [1000, 1000] + spike detection: + method: threshold + threshold: 0 + tolerance: 0.017719626168224333 + + + diff --git a/LEMSexamples/morphologies/.test.jnmleden.omt b/LEMSexamples/morphologies/.test.jnmleden.omt new file mode 100644 index 0000000..b488705 --- /dev/null +++ b/LEMSexamples/morphologies/.test.jnmleden.omt @@ -0,0 +1,17 @@ +# Script for running automated tests on OSB, see https://github.com/OpenSourceBrain/osb-model-validation + +target: LEMS_m_in_b_in.xml +engine: jNeuroML_EDEN +mep: .test.mep +experiments: + Current clamp pyramidal: + observables: + spike times: + file: + path: pyramidal_soma_0.dat + columns: [0,1] + scaling: [1000, 1000] + spike detection: + method: threshold + threshold: 0 + tolerance: 0.0024858998690222445 diff --git a/LEMSexamples/morphologies/.test.jnmleden.out.omt b/LEMSexamples/morphologies/.test.jnmleden.out.omt new file mode 100644 index 0000000..e3a1926 --- /dev/null +++ b/LEMSexamples/morphologies/.test.jnmleden.out.omt @@ -0,0 +1,17 @@ +# Script for running automated tests on OSB, see https://github.com/OpenSourceBrain/osb-model-validation + +target: LEMS_m_out_b_out.xml +engine: jNeuroML_EDEN +mep: .test.mep +experiments: + Current clamp pyramidal: + observables: + spike times: + file: + path: pyramidal_soma_0.dat + columns: [0,1] + scaling: [1000, 1000] + spike detection: + method: threshold + threshold: 0 + tolerance: 0.0024858998690222445 diff --git a/LEMSexamples/morphologies/.test.jnmlnetpyne.multi.omt b/LEMSexamples/morphologies/.test.jnmlnetpyne.multi.omt new file mode 100644 index 0000000..51aefcc --- /dev/null +++ b/LEMSexamples/morphologies/.test.jnmlnetpyne.multi.omt @@ -0,0 +1,20 @@ +# Script for running automated tests on OSB, see https://github.com/OpenSourceBrain/osb-model-validation + +target: LEMS_pyrfull_in.xml +engine: jNeuroML_NetPyNE +mep: .test.multi.mep +experiments: + Current clamp pyramidal: + observables: + spike times: + file: + path: pyramidals_0.0.dat + columns: [0,1] + scaling: [1000, 1000] + spike detection: + method: threshold + threshold: 0 + tolerance: 0 + + + diff --git a/LEMSexamples/morphologies/.test.jnmlnetpyne.multi.out.omt b/LEMSexamples/morphologies/.test.jnmlnetpyne.multi.out.omt new file mode 100644 index 0000000..aa53dcc --- /dev/null +++ b/LEMSexamples/morphologies/.test.jnmlnetpyne.multi.out.omt @@ -0,0 +1,20 @@ +# Script for running automated tests on OSB, see https://github.com/OpenSourceBrain/osb-model-validation + +target: LEMS_pyrfull_out.xml +engine: jNeuroML_NetPyNE +mep: .test.multi.mep +experiments: + Current clamp pyramidal: + observables: + spike times: + file: + path: pyramidals_0.0.dat + columns: [0,1] + scaling: [1000, 1000] + spike detection: + method: threshold + threshold: 0 + tolerance: 0 + + + diff --git a/LEMSexamples/morphologies/.test.jnmlnetpyne.omt b/LEMSexamples/morphologies/.test.jnmlnetpyne.omt new file mode 100644 index 0000000..f43719a --- /dev/null +++ b/LEMSexamples/morphologies/.test.jnmlnetpyne.omt @@ -0,0 +1,20 @@ +# Script for running automated tests on OSB, see https://github.com/OpenSourceBrain/osb-model-validation + +target: LEMS_m_in_b_in.xml +engine: jNeuroML_NetPyNE +mep: .test.mep +experiments: + Current clamp pyramidal: + observables: + spike times: + file: + path: pyramidal_soma_0.dat + columns: [0,1] + scaling: [1000, 1000] + spike detection: + method: threshold + threshold: 0 + tolerance: 0 + + + diff --git a/LEMSexamples/morphologies/.test.jnmlnetpyne.out.omt b/LEMSexamples/morphologies/.test.jnmlnetpyne.out.omt new file mode 100644 index 0000000..4f3a609 --- /dev/null +++ b/LEMSexamples/morphologies/.test.jnmlnetpyne.out.omt @@ -0,0 +1,20 @@ +# Script for running automated tests on OSB, see https://github.com/OpenSourceBrain/osb-model-validation + +target: LEMS_m_out_b_out.xml +engine: jNeuroML_NetPyNE +mep: .test.mep +experiments: + Current clamp pyramidal: + observables: + spike times: + file: + path: pyramidal_soma_0.dat + columns: [0,1] + scaling: [1000, 1000] + spike detection: + method: threshold + threshold: 0 + tolerance: 0 + + + diff --git a/LEMSexamples/morphologies/.test.jnmlnrn.multi.omt b/LEMSexamples/morphologies/.test.jnmlnrn.multi.omt new file mode 100644 index 0000000..6df86c8 --- /dev/null +++ b/LEMSexamples/morphologies/.test.jnmlnrn.multi.omt @@ -0,0 +1,20 @@ +# Script for running automated tests on OSB, see https://github.com/OpenSourceBrain/osb-model-validation + +target: LEMS_pyrfull_in.xml +engine: jNeuroML_NEURON +mep: .test.multi.mep +experiments: + Current clamp pyramidal: + observables: + spike times: + file: + path: pyramidals_0.0.dat + columns: [0,1] + scaling: [1000, 1000] + spike detection: + method: threshold + threshold: 0 + tolerance: 0 + + + diff --git a/LEMSexamples/morphologies/.test.jnmlnrn.multi.out.omt b/LEMSexamples/morphologies/.test.jnmlnrn.multi.out.omt new file mode 100644 index 0000000..356c609 --- /dev/null +++ b/LEMSexamples/morphologies/.test.jnmlnrn.multi.out.omt @@ -0,0 +1,20 @@ +# Script for running automated tests on OSB, see https://github.com/OpenSourceBrain/osb-model-validation + +target: LEMS_pyrfull_out.xml +engine: jNeuroML_NEURON +mep: .test.multi.mep +experiments: + Current clamp pyramidal: + observables: + spike times: + file: + path: pyramidals_0.0.dat + columns: [0,1] + scaling: [1000, 1000] + spike detection: + method: threshold + threshold: 0 + tolerance: 0 + + + diff --git a/LEMSexamples/morphologies/.test.jnmlnrn.omt b/LEMSexamples/morphologies/.test.jnmlnrn.omt new file mode 100644 index 0000000..191f96e --- /dev/null +++ b/LEMSexamples/morphologies/.test.jnmlnrn.omt @@ -0,0 +1,20 @@ +# Script for running automated tests on OSB, see https://github.com/OpenSourceBrain/osb-model-validation + +target: LEMS_m_in_b_in.xml +engine: jNeuroML_NEURON +mep: .test.mep +experiments: + Current clamp pyramidal: + observables: + spike times: + file: + path: pyramidal_soma_0.dat + columns: [0,1] + scaling: [1000, 1000] + spike detection: + method: threshold + threshold: 0 + tolerance: 0 + + + diff --git a/LEMSexamples/morphologies/.test.jnmlnrn.out.omt b/LEMSexamples/morphologies/.test.jnmlnrn.out.omt new file mode 100644 index 0000000..4d47a59 --- /dev/null +++ b/LEMSexamples/morphologies/.test.jnmlnrn.out.omt @@ -0,0 +1,20 @@ +# Script for running automated tests on OSB, see https://github.com/OpenSourceBrain/osb-model-validation + +target: LEMS_m_out_b_out.xml +engine: jNeuroML_NEURON +mep: .test.mep +experiments: + Current clamp pyramidal: + observables: + spike times: + file: + path: pyramidal_soma_0.dat + columns: [0,1] + scaling: [1000, 1000] + spike detection: + method: threshold + threshold: 0 + tolerance: 0 + + + diff --git a/LEMSexamples/morphologies/.test.mep b/LEMSexamples/morphologies/.test.mep new file mode 100644 index 0000000..88d6fa5 --- /dev/null +++ b/LEMSexamples/morphologies/.test.mep @@ -0,0 +1,6 @@ +system: Testing a single compartment cell + +experiments: + Current clamp pyramidal: + expected: + spike times: [102.49, 120.78, 148.66, 256.3125, 330.84000000000003, 408.0575, 484.6375, 561.1650000000001] diff --git a/LEMSexamples/morphologies/.test.multi.mep b/LEMSexamples/morphologies/.test.multi.mep new file mode 100644 index 0000000..741189f --- /dev/null +++ b/LEMSexamples/morphologies/.test.multi.mep @@ -0,0 +1,6 @@ +system: Testing a cell + +experiments: + Current clamp pyramidal: + expected: + spike times: [134.24, 401.25] diff --git a/LEMSexamples/morphologies/.test.validate.omt b/LEMSexamples/morphologies/.test.validate.omt new file mode 100644 index 0000000..7402c51 --- /dev/null +++ b/LEMSexamples/morphologies/.test.validate.omt @@ -0,0 +1,5 @@ +# Script for running automated tests on OSB, see https://github.com/OpenSourceBrain/osb-model-validation + +# This test will validate all of the NeuroML 2 files in the current directory using: jnml -validate *.nml +target: "*cell.nml *channel.nml C*.nml" +engine: jNeuroML_validate diff --git a/LEMSexamples/morphologies/Ca_conc.nml b/LEMSexamples/morphologies/Ca_conc.nml new file mode 100644 index 0000000..985481f --- /dev/null +++ b/LEMSexamples/morphologies/Ca_conc.nml @@ -0,0 +1,8 @@ + + + + NeuroML file describing intracellular Calcium dynamics, from the Hippocampal CA3 neuron model presented in Traub et al., 1991. + + + + diff --git a/LEMSexamples/morphologies/Ca_pyr.channel.nml b/LEMSexamples/morphologies/Ca_pyr.channel.nml new file mode 100644 index 0000000..d878a9d --- /dev/null +++ b/LEMSexamples/morphologies/Ca_pyr.channel.nml @@ -0,0 +1,106 @@ + + + + NeuroML file containing a single Calcium Channel description, from the Hippocampal CA3 neuron model presented in Traub et al., 1991. + + + + NeuroML file containing a single Calcium Channel description, from the Hippocampal CA3 neuron model presented in Traub et al., 1991. + + + + + + + + + + + + + + Traub, R. D., Wong, R. K., Miles, R., and Michelson, H. (1991). A model of a CA3 hippocampal pyramidal neuron incorporating voltage-clamp data on intrinsic conductances. Journal of neurophysiology, 66(2), 635-50. + + + + + + + + + + + + + Ca channels + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LEMSexamples/morphologies/Kahp_pyr.channel.nml b/LEMSexamples/morphologies/Kahp_pyr.channel.nml new file mode 100644 index 0000000..b3cfbaa --- /dev/null +++ b/LEMSexamples/morphologies/Kahp_pyr.channel.nml @@ -0,0 +1,106 @@ + + + + NeuroML file containing a single Calcium-dependent Potassium Channel description, from the Hippocampal CA3 neuron model presented in Traub et al., 1991. + + + + NeuroML file containing a single Calcium-dependent Potassium Channel description, from the Hippocampal CA3 neuron model presented in Traub et al., 1991. + + + + + + + + + + + + + + Traub, R. D., Wong, R. K., Miles, R., and Michelson, H. (1991). A model of a CA3 hippocampal pyramidal neuron incorporating voltage-clamp data on intrinsic conductances. Journal of neurophysiology, 66(2), 635-50. + + + + + + + + + + + + + K channels + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LEMSexamples/morphologies/Kdr_pyr.channel.nml b/LEMSexamples/morphologies/Kdr_pyr.channel.nml new file mode 100644 index 0000000..20364ae --- /dev/null +++ b/LEMSexamples/morphologies/Kdr_pyr.channel.nml @@ -0,0 +1,60 @@ + + + + NeuroML file containing a single Potassium Channel description, from the Hippocampal CA3 neuron model presented in Traub et al., 1991. + + + + NeuroML file containing a single Potassium Channel description, from the Hippocampal CA3 neuron model presented in Traub et al., 1991. + + + + + + + + + + + + + + Traub, R. D., Wong, R. K., Miles, R., and Michelson, H. (1991). A model of a CA3 hippocampal pyramidal neuron incorporating voltage-clamp data on intrinsic conductances. Journal of neurophysiology, 66(2), 635-50. + + + + + + + + + + + + + K channels + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LEMSexamples/morphologies/LEMS_m_in_b_in.xml b/LEMSexamples/morphologies/LEMS_m_in_b_in.xml new file mode 100644 index 0000000..993aed2 --- /dev/null +++ b/LEMSexamples/morphologies/LEMS_m_in_b_in.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LEMSexamples/morphologies/LEMS_m_in_b_out.xml b/LEMSexamples/morphologies/LEMS_m_in_b_out.xml new file mode 100644 index 0000000..f1f325f --- /dev/null +++ b/LEMSexamples/morphologies/LEMS_m_in_b_out.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LEMSexamples/morphologies/LEMS_m_out_b_in.xml b/LEMSexamples/morphologies/LEMS_m_out_b_in.xml new file mode 100644 index 0000000..dfb2434 --- /dev/null +++ b/LEMSexamples/morphologies/LEMS_m_out_b_in.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LEMSexamples/morphologies/LEMS_m_out_b_out.xml b/LEMSexamples/morphologies/LEMS_m_out_b_out.xml new file mode 100644 index 0000000..8055450 --- /dev/null +++ b/LEMSexamples/morphologies/LEMS_m_out_b_out.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LEMSexamples/morphologies/LEMS_pyrfull_in.xml b/LEMSexamples/morphologies/LEMS_pyrfull_in.xml new file mode 100644 index 0000000..32a9647 --- /dev/null +++ b/LEMSexamples/morphologies/LEMS_pyrfull_in.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LEMSexamples/morphologies/LEMS_pyrfull_out.xml b/LEMSexamples/morphologies/LEMS_pyrfull_out.xml new file mode 100644 index 0000000..e91c7c7 --- /dev/null +++ b/LEMSexamples/morphologies/LEMS_pyrfull_out.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LEMSexamples/morphologies/LeakConductance_pyr.channel.nml b/LEMSexamples/morphologies/LeakConductance_pyr.channel.nml new file mode 100644 index 0000000..ecfb8b7 --- /dev/null +++ b/LEMSexamples/morphologies/LeakConductance_pyr.channel.nml @@ -0,0 +1,13 @@ + + + + NeuroML file containing a single Channel description + + + + Passive conductance for pyramidal cell + + + + + diff --git a/LEMSexamples/morphologies/Na_pyr.channel.nml b/LEMSexamples/morphologies/Na_pyr.channel.nml new file mode 100644 index 0000000..5d0ff83 --- /dev/null +++ b/LEMSexamples/morphologies/Na_pyr.channel.nml @@ -0,0 +1,68 @@ + + + + NeuroML file containing a single Sodium Channel description, from the Hippocampal CA3 neuron model presented in Traub et al., 1991. + + + + NeuroML file containing a single Sodium Channel description, from the Hippocampal CA3 neuron model presented in Traub et al., 1991. + + + + + + + + + + + + + + Traub, R. D., Wong, R. K., Miles, R., and Michelson, H. (1991). A model of a CA3 hippocampal pyramidal neuron incorporating voltage-clamp data on intrinsic conductances. Journal of neurophysiology, 66(2), 635-50. + + + + + + + + + + + + + Na channels + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LEMSexamples/morphologies/README.md b/LEMSexamples/morphologies/README.md new file mode 100644 index 0000000..5bd53d5 --- /dev/null +++ b/LEMSexamples/morphologies/README.md @@ -0,0 +1,47 @@ +## Examples with tests for various ways to include `` and `` in `` + + +See https://github.com/NeuroML/NeuroML2/issues/150 for background. + +Cells with morphologies and biophysical properties can be expressed as: + +```xml + +... + + + + ... + + + + + ... + + + +``` +or +```xml + + ... + + + + + + + + ... + + + + + ... + + +``` +See [pyr_soma_m_in_b_in.cell.nml](pyr_soma_m_in_b_in.cell.nml), [pyr_soma_m_out_b_in.cell.nml](pyr_soma_m_out_b_in.cell.nml), [pyr_soma_m_in_b_out.cell.nml](pyr_soma_m_in_b_out.cell.nml), [pyr_full_out.cell.nml](pyr_full_out.cell.nml) etc. + + + diff --git a/LEMSexamples/morphologies/network_m_out_b_out.net.nml b/LEMSexamples/morphologies/network_m_out_b_out.net.nml new file mode 100644 index 0000000..5b89a3d --- /dev/null +++ b/LEMSexamples/morphologies/network_m_out_b_out.net.nml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LEMSexamples/morphologies/pyr_4_sym.cell.nml b/LEMSexamples/morphologies/pyr_4_sym.cell.nml new file mode 100644 index 0000000..dda6278 --- /dev/null +++ b/LEMSexamples/morphologies/pyr_4_sym.cell.nml @@ -0,0 +1,246 @@ + + + + + + + + + + + + + + + + + + A simplified pyramidal cell model with 9 compartments + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LEMSexamples/morphologies/pyr_4_sym_soma_morph.nml b/LEMSexamples/morphologies/pyr_4_sym_soma_morph.nml new file mode 100644 index 0000000..9154b8a --- /dev/null +++ b/LEMSexamples/morphologies/pyr_4_sym_soma_morph.nml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LEMSexamples/morphologies/pyr_biophysics.nml b/LEMSexamples/morphologies/pyr_biophysics.nml new file mode 100644 index 0000000..b90938d --- /dev/null +++ b/LEMSexamples/morphologies/pyr_biophysics.nml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LEMSexamples/morphologies/pyr_full_morph_biophys.nml b/LEMSexamples/morphologies/pyr_full_morph_biophys.nml new file mode 100644 index 0000000..28a2561 --- /dev/null +++ b/LEMSexamples/morphologies/pyr_full_morph_biophys.nml @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LEMSexamples/morphologies/pyr_full_out.cell.nml b/LEMSexamples/morphologies/pyr_full_out.cell.nml new file mode 100644 index 0000000..9d335f5 --- /dev/null +++ b/LEMSexamples/morphologies/pyr_full_out.cell.nml @@ -0,0 +1,13 @@ + + + + + + + + + A simplified pyramidal cell model with 9 compartments + + + + diff --git a/LEMSexamples/morphologies/pyr_morphology.cell.nml b/LEMSexamples/morphologies/pyr_morphology.cell.nml new file mode 100644 index 0000000..9590c14 --- /dev/null +++ b/LEMSexamples/morphologies/pyr_morphology.cell.nml @@ -0,0 +1,201 @@ + + + + + + + + Just the morphology + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LEMSexamples/morphologies/pyr_soma_m_in_b_in.cell.nml b/LEMSexamples/morphologies/pyr_soma_m_in_b_in.cell.nml new file mode 100644 index 0000000..b0561c8 --- /dev/null +++ b/LEMSexamples/morphologies/pyr_soma_m_in_b_in.cell.nml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + A single segment/compartment cell + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LEMSexamples/morphologies/pyr_soma_m_in_b_out.cell.nml b/LEMSexamples/morphologies/pyr_soma_m_in_b_out.cell.nml new file mode 100644 index 0000000..7b11f33 --- /dev/null +++ b/LEMSexamples/morphologies/pyr_soma_m_in_b_out.cell.nml @@ -0,0 +1,39 @@ + + + + + + + + A single segment/compartment cell + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LEMSexamples/morphologies/pyr_soma_m_out_b_in.cell.nml b/LEMSexamples/morphologies/pyr_soma_m_out_b_in.cell.nml new file mode 100644 index 0000000..8aa95c4 --- /dev/null +++ b/LEMSexamples/morphologies/pyr_soma_m_out_b_in.cell.nml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + A single segment/compartment cell + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LEMSexamples/morphologies/pyr_soma_m_out_b_out.cell.nml b/LEMSexamples/morphologies/pyr_soma_m_out_b_out.cell.nml new file mode 100644 index 0000000..506ef23 --- /dev/null +++ b/LEMSexamples/morphologies/pyr_soma_m_out_b_out.cell.nml @@ -0,0 +1,13 @@ + + + + + + + + + A single segment/compartment cell + + + + \ No newline at end of file diff --git a/LEMSexamples/morphologies/pyrfull_in.net.nml b/LEMSexamples/morphologies/pyrfull_in.net.nml new file mode 100644 index 0000000..6abb92c --- /dev/null +++ b/LEMSexamples/morphologies/pyrfull_in.net.nml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LEMSexamples/morphologies/pyrfull_out.net.nml b/LEMSexamples/morphologies/pyrfull_out.net.nml new file mode 100644 index 0000000..d994109 --- /dev/null +++ b/LEMSexamples/morphologies/pyrfull_out.net.nml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LEMSexamples/morphologies/test_all.sh b/LEMSexamples/morphologies/test_all.sh new file mode 100755 index 0000000..c35aa7e --- /dev/null +++ b/LEMSexamples/morphologies/test_all.sh @@ -0,0 +1,29 @@ +#!/bin/bash +set -ex + +pynml -validate C*nml *cell.nml *channel.nml + +pynml-summary pyr_soma_m_in_b_in.cell.nml -v +pynml-summary pyr_soma_m_in_b_out.cell.nml -v +pynml-summary pyr_soma_m_out_b_in.cell.nml -v +pynml-summary pyr_soma_m_out_b_out.cell.nml -v + +pynml LEMS_m_in_b_in.xml -nogui + +pynml LEMS_m_in_b_in.xml -neuron -run -nogui +pynml LEMS_m_in_b_out.xml -neuron -run -nogui +pynml LEMS_m_out_b_in.xml -neuron -run -nogui +pynml LEMS_m_out_b_out.xml -neuron -run -nogui + +pynml LEMS_m_in_b_in.xml -netpyne -run +pynml LEMS_m_in_b_out.xml -netpyne -run +pynml LEMS_m_out_b_in.xml -netpyne -run +pynml LEMS_m_out_b_out.xml -netpyne -run + +pynml LEMS_pyrfull_in.xml -neuron -run -nogui +pynml LEMS_pyrfull_in.xml -netpyne -run + +pynml LEMS_pyrfull_out.xml -neuron -run -nogui +pynml LEMS_pyrfull_out.xml -netpyne -run + +echo "All tests completed!" diff --git a/LEMSexamples/test/.test.ex0.jnmleden.omt b/LEMSexamples/test/.test.ex0.jnmleden.omt index 51a8777..707d1e9 100644 --- a/LEMSexamples/test/.test.ex0.jnmleden.omt +++ b/LEMSexamples/test/.test.ex0.jnmleden.omt @@ -25,7 +25,7 @@ experiments: spike detection: method: threshold threshold: -55.1 - tolerance: 0.00010867391304343428 + tolerance: 0.00010869565217381418 iafPop0: observables: spike times: @@ -36,7 +36,7 @@ experiments: spike detection: method: threshold threshold: -55.1 - tolerance: 0.00014932775619959672 + tolerance: 0.00014938751120392748 iafRefPop0: observables: spike times: @@ -47,4 +47,4 @@ experiments: spike detection: method: threshold threshold: -55.1 - tolerance: 0.0002189781021897893 + tolerance: 0.0002189781021897893 \ No newline at end of file diff --git a/NeuroML2CoreTypes/NeuroMLCoreCompTypes.xml b/NeuroML2CoreTypes/NeuroMLCoreCompTypes.xml index 5bac908..3255598 100644 --- a/NeuroML2CoreTypes/NeuroMLCoreCompTypes.xml +++ b/NeuroML2CoreTypes/NeuroMLCoreCompTypes.xml @@ -36,12 +36,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -58,65 +83,157 @@ + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + - - + - + - + - + - + - + - + - + - + - - - + - + - + - + - - + + + + + + + + + + + + + + + + + + + + - + + + + - - - + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - diff --git a/Schemas/NeuroML2/NeuroML_v2.3.1.xsd b/Schemas/NeuroML2/NeuroML_v2.3.1.xsd new file mode 100644 index 0000000..741f1e8 --- /dev/null +++ b/Schemas/NeuroML2/NeuroML_v2.3.1.xsd @@ -0,0 +1,3963 @@ + + + + + + + + An id attribute for elements which need to be identified uniquely (normally just within their parent element). + + + + + + + + A value for a physical quantity in NeuroML 2, e.g. 20, -60.0mV or 5nA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An id string for pointing to an entry in an annotation element related to a MIRIAM resource. Based on metaid of SBML + + + + + + + + An id string for pointing to an entry in the NeuroLex ontology. Use of this attribute is a shorthand for a full + RDF based reference to the MIRIAM Resource urn:miriam:neurolex, with an bqbiol:is qualifier + + + + + + + + + A path referring to another component. + + + + + + + + + An attribute useful as id of segments, connections, etc: integer >=0 only! + + + + + + + + + + + Integer >=1 only! + + + + + + + + + + + Double >0 only + + + + + + + + Value which is either 0 or 1 + + + + + + + + + + + + + Textual human readable notes related to the element in question. It's useful to put these into + the NeuroML files instead of XML comments, as the notes can be extracted and repeated in the files to which the NeuroML is mapped. + + + + + + + A property ( a **tag** and **value** pair ), which can be on any **baseStandalone** either as a direct child, or within an **Annotation** . Generally something which helps the visual display or facilitates simulation of a Component, but is not a core physiological property. Common examples include: **numberInternalDivisions,** equivalent of nseg in NEURON; **radius,** for a radius to use in graphical displays for abstract cells ( i. e. without defined morphologies ); **color,** the color to use for a **Population** or **populationList** of cells; **recommended_dt_ms,** the recommended timestep to use for simulating a **Network** , **recommended_duration_ms** the recommended duration to use when running a **Network** + + + + + + + + + + + + A structured annotation containing metadata, specifically RDF or **property** elements + + + + + + + + + + + + + + Contains an extension to NeuroML by creating custom LEMS ComponentType. + + + + + + + + + + + + + + + + + + LEMS ComponentType for Constant. + + + + + + + + + + + + + LEMS Exposure (ComponentType property) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LEMS DerivedParamter element + + + + + + + + + + + + + + + + + + + + + + + + + + + + LEMS ComponentType for Dynamics + + + + + + + + + + + + + + + LEMS ComponentType for DerivedVariable + + + + + + + + + + + + + + + + + + + LEMS ComponentType for ConditionalDerivedVariable + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Float value restricted to between 1 and 0 + + + + + + + + + + + + The root NeuroML element. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Various types of cells which are defined in NeuroML 2. This list will be expanded... + + + + + + + + + + + + + + + + + + + + + Various types of cells which are defined in NeuroML 2 based on PyNN standard cell models. + + + + + + + + + + + + + + Various types of synapse which are defined in NeuroML 2. This list will be expanded... + + + + + + + + + + + + + + + + + + Various types of synapse which are defined in NeuroML 2 based on PyNN standard cell/synapse models. + + + + + + + + + + + Various types of inputs which are defined in NeuroML2. This list will be expanded... + + + + + + + + + + + + + + + + + + + + + + + + + Various types of input which are defined in NeuroML 2 based on PyNN standard cell/synapse models. + + + + + + + + Various types of concentration model which are defined in NeuroML 2. This list will be expanded... + + + + + + + + + + + + + + + + + + + + + + A kinetic scheme based ion channel with multiple **gateKS** s, each of which consists of multiple **KSState** s and **KSTransition** s giving the rates of transition between them +\n +:param conductance: +:type conductance: conductance + + + + + + + + + + + + + + + + + Note **ionChannel** and **ionChannelHH** are currently functionally identical. This is needed since many existing examples use ionChannel, some use ionChannelHH. NeuroML v2beta4 should remove one of these, probably ionChannelHH. +\n +:param conductance: +:type conductance: conductance + + + + + + + + + + + + + + + + + + + + + + + + Note **ionChannel** and **ionChannelHH** are currently functionally identical. This is needed since many existing examples use ionChannel, some use ionChannelHH. NeuroML v2beta4 should remove one of these, probably ionChannelHH. +\n +:param conductance: +:type conductance: conductance + + + + + + + + + + Same as **ionChannel** , but with a **vShift** parameter to change voltage activation of gates. The exact usage of **vShift** in expressions for rates is determined by the individual gates. +\n +:param vShift: +:type vShift: voltage +:param conductance: +:type conductance: conductance + + + + + + + + + + + + + + + + + + + A value for the conductance scaling which varies as a standard function of the difference between the current temperature, **temperature,** and the temperature at which the conductance was originally determined, **experimentalTemp** +\n +:param q10Factor: +:type q10Factor: none +:param experimentalTemp: +:type experimentalTemp: temperature + + + + + + + + + + + + + + + + + + + + + + + + + A **KSState** with **relativeConductance** of 0 +\n +:param relativeConductance: +:type relativeConductance: none + + + + + + + + + + + + A **KSState** with **relativeConductance** of 1 +\n +:param relativeConductance: +:type relativeConductance: none + + + + + + + + + + + + A forward only **KSTransition** for a **gateKS** which specifies a **rate** ( type **baseHHRate** ) which follows one of the standard Hodgkin Huxley forms ( e. g. **HHExpRate** , **HHSigmoidRate** , **HHExpLinearRate** + + + + + + + + + + + + + + + + A reverse only **KSTransition** for a **gateKS** which specifies a **rate** ( type **baseHHRate** ) which follows one of the standard Hodgkin Huxley forms ( e. g. **HHExpRate** , **HHSigmoidRate** , **HHExpLinearRate** + + + + + + + + + + + + + + + + + + + + + + KS Transition specified in terms of time constant **tau** and steady state **inf** + + + + + + + + + + + + + + + + A gate which consists of multiple **KSState** s and **KSTransition** s giving the rates of transition between them +\n +:param instances: +:type instances: none + + + + + + + + + + + + + + + + + + + + + + Note all sub elements for gateHHrates, gateHHratesTau, gateFractional etc. allowed here. Which are valid should be constrained by what type is set + + + + + + + + + + + + + + + + + + + + + Gate which follows the general Hodgkin Huxley formalism +\n +:param instances: +:type instances: none + + + + + + + + + + + + + + + + + + + Gate which follows the general Hodgkin Huxley formalism +\n +:param instances: +:type instances: none + + + + + + + + + + + + + + + + + + + Gate which follows the general Hodgkin Huxley formalism +\n +:param instances: +:type instances: none + + + + + + + + + + + + + + + + + + + + + Gate which follows the general Hodgkin Huxley formalism +\n +:param instances: +:type instances: none + + + + + + + + + + + + + + + + + + + + Gate which follows the general Hodgkin Huxley formalism +\n +:param instances: +:type instances: none + + + + + + + + + + + + + + + + + + + + Gate which follows the general Hodgkin Huxley formalism but is instantaneous, so tau = 0 and gate follows exactly inf value +\n +:param instances: +:type instances: none + + + + + + + + + + + + + + + + + Gate composed of subgates contributing with fractional conductance +\n +:param instances: +:type instances: none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Model of an intracellular buffering mechanism for **ion** ( currently hard Coded to be calcium, due to requirement for **iCa** ) which has a baseline level **restingConc** and tends to this value with time course **decayConstant.** The ion is assumed to occupy a shell inside the membrane of thickness **shellThickness.** +\n +:param restingConc: +:type restingConc: concentration +:param decayConstant: +:type decayConstant: time +:param shellThickness: +:type shellThickness: length + + + + + + + + + + + + + + + + + + Model of buffering of concentration of an ion ( currently hard coded to be calcium, due to requirement for **iCa** ) which has a baseline level **restingConc** and tends to this value with time course **decayConstant.** A fixed factor **rho** is used to scale the incoming current *independently of the size of the compartment* to produce a concentration change. +\n +:param restingConc: +:type restingConc: concentration +:param decayConstant: +:type decayConstant: time +:param rho: +:type rho: rho_factor + + + + + + + + + + + + + + + + + + + + + Base type for all synapses, i. e. ComponentTypes which produce a current ( dimension current ) and change Dynamics in response to an incoming event. cno_0000009 + + + + + + + + + + + Base type for synapses with a dependence on membrane potential + + + + + + + + + + + Synapse model which produces a synaptic current. + + + + + + + + + + + Synapse model which exposes a conductance **g** in addition to producing a current. Not necessarily ohmic!! cno_0000027 +\n +:param gbase: Baseline conductance, generally the maximum conductance following a single spike +:type gbase: conductance +:param erev: Reversal potential of the synapse +:type erev: voltage + + + + + + + + + + + + + Synapse model suited for a sum of two expTwoSynapses which exposes a conductance **g** in addition to producing a current. Not necessarily ohmic!! cno_0000027 +\n +:param gbase1: Baseline conductance 1 +:type gbase1: conductance +:param gbase2: Baseline conductance 2 +:type gbase2: conductance +:param erev: Reversal potential of the synapse +:type erev: voltage + + + + + + + + + + + + + + Gap junction/single electrical connection +\n +:param conductance: +:type conductance: conductance + + + + + + + + + + + + Dummy synapse which emits no current. Used as presynaptic endpoint for analog synaptic connection. + + + + + + + + + + + Behaves just like a one way gap junction. +\n +:param conductance: +:type conductance: conductance + + + + + + + + + + + + Graded/analog synapse. Based on synapse in Methods of http://www. nature.com/neuro/journal/v7/n12/abs/nn1352.html +\n +:param conductance: +:type conductance: conductance +:param delta: Slope of the activation curve +:type delta: voltage +:param k: Rate constant for transmitter-receptor dissociation rate +:type k: per_time +:param Vth: The half-activation voltage of the synapse +:type Vth: voltage +:param erev: The reversal potential of the synapse +:type erev: voltage + + + + + + + + + + + + + + + + Alpha current synapse: rise time and decay time are both **tau.** +\n +:param tau: Time course for rise and decay +:type tau: time +:param ibase: Baseline current increase after receiving a spike +:type ibase: current + + + + + + + + + + + + + Ohmic synapse model where rise time and decay time are both **tau.** Max conductance reached during this time ( assuming zero conductance before ) is **gbase** * **weight.** +\n +:param tau: Time course of rise/decay +:type tau: time +:param gbase: Baseline conductance, generally the maximum conductance following a single spike +:type gbase: conductance +:param erev: Reversal potential of the synapse +:type erev: voltage + + + + + + + + + + + + Ohmic synapse model whose conductance rises instantaneously by ( **gbase** * **weight** ) on receiving an event, and which decays exponentially to zero with time course **tauDecay** +\n +:param tauDecay: Time course of decay +:type tauDecay: time +:param gbase: Baseline conductance, generally the maximum conductance following a single spike +:type gbase: conductance +:param erev: Reversal potential of the synapse +:type erev: voltage + + + + + + + + + + + + Ohmic synapse model whose conductance waveform on receiving an event has a rise time of **tauRise** and a decay time of **tauDecay.** Max conductance reached during this time ( assuming zero conductance before ) is **gbase** * **weight.** +\n +:param tauRise: +:type tauRise: time +:param tauDecay: +:type tauDecay: time +:param gbase: Baseline conductance, generally the maximum conductance following a single spike +:type gbase: conductance +:param erev: Reversal potential of the synapse +:type erev: voltage + + + + + + + + + + + + + Ohmic synapse similar to expTwoSynapse but consisting of two components that can differ in decay times and max conductances but share the same rise time. +\n +:param tauRise: +:type tauRise: time +:param tauDecay1: +:type tauDecay1: time +:param tauDecay2: +:type tauDecay2: time +:param gbase1: Baseline conductance 1 +:type gbase1: conductance +:param gbase2: Baseline conductance 2 +:type gbase2: conductance +:param erev: Reversal potential of the synapse +:type erev: voltage + + + + + + + + + + + + + + Synapse consisting of two independent synaptic mechanisms ( e. g. AMPA-R and NMDA-R ), which can be easily colocated in connections + + + + + + + + + + + + + + Biexponential synapse that allows for optional block and plasticity mechanisms, which can be expressed as child elements. +\n +:param tauRise: +:type tauRise: time +:param tauDecay: +:type tauDecay: time +:param gbase: Baseline conductance, generally the maximum conductance following a single spike +:type gbase: conductance +:param erev: Reversal potential of the synapse +:type erev: voltage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Base type of any cell ( e. g. point neuron like **izhikevich2007Cell** , or a morphologically detailed **Cell** with **segment** s ) which can be used in a **population** + + + + + + + + + + + Integrate and fire cell which returns to its leak reversal potential of **leakReversal** with a time constant **tau** +\n +:param leakReversal: +:type leakReversal: voltage +:param tau: +:type tau: time +:param thresh: The membrane potential at which to emit a spiking event and reset voltage +:type thresh: voltage +:param reset: The value the membrane potential is reset to on spiking +:type reset: voltage + + + + + + + + + + + + + + + Integrate and fire cell which returns to its leak reversal potential of **leakReversal** with a time course **tau.** It has a refractory period of **refract** after spiking +\n +:param refract: +:type refract: time +:param leakReversal: +:type leakReversal: voltage +:param tau: +:type tau: time +:param thresh: The membrane potential at which to emit a spiking event and reset voltage +:type thresh: voltage +:param reset: The value the membrane potential is reset to on spiking +:type reset: voltage + + + + + + + + + + + + Integrate and fire cell with capacitance **C,** **leakConductance** and **leakReversal** +\n +:param leakConductance: +:type leakConductance: conductance +:param leakReversal: +:type leakReversal: voltage +:param thresh: +:type thresh: voltage +:param reset: +:type reset: voltage +:param C: Total capacitance of the cell membrane +:type C: capacitance + + + + + + + + + + + + + + + + Integrate and fire cell with capacitance **C,** **leakConductance,** **leakReversal** and refractory period **refract** +\n +:param refract: +:type refract: time +:param leakConductance: +:type leakConductance: conductance +:param leakReversal: +:type leakReversal: voltage +:param thresh: +:type thresh: voltage +:param reset: +:type reset: voltage +:param C: Total capacitance of the cell membrane +:type C: capacitance + + + + + + + + + + + + Cell based on the 2003 model of Izhikevich, see http://izhikevich.org/publications/spikes.htm +\n +:param v0: Initial membrane potential +:type v0: voltage +:param a: Time scale of the recovery variable U +:type a: none +:param b: Sensitivity of U to the subthreshold fluctuations of the membrane potential V +:type b: none +:param c: After-spike reset value of V +:type c: none +:param d: After-spike increase to U +:type d: none +:param thresh: Spike threshold +:type thresh: voltage + + + + + + + + + + + + + + + + + Any cell with a membrane potential **v** with voltage units and a membrane capacitance **C.** Also defines exposed value **iSyn** for current due to external synapses and **iMemb** for total transmembrane current ( usually channel currents plus **iSyn** ) +\n +:param C: Total capacitance of the cell membrane +:type C: capacitance + + + + + + + + + + + + + + + + + + Cell based on the modified Izhikevich model in Izhikevich 2007, Dynamical systems in neuroscience, MIT Press +\n +:param v0: Initial membrane potential +:type v0: voltage +:param k: +:type k: conductance_per_voltage +:param vr: Resting membrane potential +:type vr: voltage +:param vt: Spike threshold +:type vt: voltage +:param vpeak: Peak action potential value +:type vpeak: voltage +:param a: Time scale of recovery variable u +:type a: per_time +:param b: Sensitivity of recovery variable u to subthreshold fluctuations of membrane potential v +:type b: conductance +:param c: After-spike reset value of v +:type c: voltage +:param d: After-spike increase to u +:type d: current +:param C: Total capacitance of the cell membrane +:type C: capacitance + + + + + + + + + + + + + + + + + + + + Model based on Brette R and Gerstner W ( 2005 ) Adaptive Exponential Integrate-and-Fire Model as an Effective Description of Neuronal Activity. J Neurophysiol 94:3637-3642 +\n +:param gL: Leak conductance +:type gL: conductance +:param EL: Leak reversal potential +:type EL: voltage +:param VT: Spike threshold +:type VT: voltage +:param thresh: Spike detection threshold +:type thresh: voltage +:param reset: Reset potential +:type reset: voltage +:param delT: Slope factor +:type delT: voltage +:param tauw: Adaptation time constant +:type tauw: time +:param refract: Refractory period +:type refract: time +:param a: Sub-threshold adaptation variable +:type a: conductance +:param b: Spike-triggered adaptation variable +:type b: current +:param C: Total capacitance of the cell membrane +:type C: capacitance + + + + + + + + + + + + + + + + + + + + + Simple dimensionless model of spiking cell from FitzHugh and Nagumo. Superseded by **fitzHughNagumo1969Cell** ( See https://github.com/NeuroML/NeuroML2/issues/42 ) +\n +:param I: +:type I: none + + + + + + + + + + + + The Fitzhugh Nagumo model is a two-dimensional simplification of the Hodgkin-Huxley model of spike generation in squid giant axons. This system was suggested by FitzHugh ( FitzHugh R. [1961]: Impulses and physiological states in theoretical models of nerve membrane. Biophysical J. 1:445-466 ), who called it " Bonhoeffer-van der Pol model ", and the equivalent circuit by Nagumo et al. ( Nagumo J. , Arimoto S. , and Yoshizawa S. [1962] An active pulse transmission line simulating nerve axon. Proc IRE. 50:2061-2070. 1962 ). This version corresponds to the one described in FitzHugh R. [1969]: Mathematical models of excitation and propagation in nerve. Chapter 1 ( pp. 1-85 in H. P. Schwan, ed. Biological Engineering, McGraw-Hill Book Co. , N. Y. ) +\n +:param a: +:type a: none +:param b: +:type b: none +:param I: plays the role of an external injected current +:type I: none +:param phi: +:type phi: none +:param V0: +:type V0: none +:param W0: +:type W0: none + + + + + + + + + + + + + + + + + Reduced CA3 cell model from Pinsky, P. F. , Rinzel, J. Intrinsic and network rhythmogenesis in a reduced traub model for CA3 neurons. J Comput Neurosci 1, 39-60 ( 1994 ). See https://github.com/OpenSourceBrain/PinskyRinzelModel +\n +:param iSoma: +:type iSoma: currentDensity +:param iDend: +:type iDend: currentDensity +:param gLs: +:type gLs: conductanceDensity +:param gLd: +:type gLd: conductanceDensity +:param gNa: +:type gNa: conductanceDensity +:param gKdr: +:type gKdr: conductanceDensity +:param gCa: +:type gCa: conductanceDensity +:param gKahp: +:type gKahp: conductanceDensity +:param gKC: +:type gKC: conductanceDensity +:param gc: +:type gc: conductanceDensity +:param eNa: +:type eNa: voltage +:param eCa: +:type eCa: voltage +:param eK: +:type eK: voltage +:param eL: +:type eL: voltage +:param pp: +:type pp: none +:param cm: +:type cm: specificCapacitance +:param alphac: +:type alphac: none +:param betac: +:type betac: none +:param gNmda: +:type gNmda: conductanceDensity +:param gAmpa: +:type gAmpa: conductanceDensity +:param qd0: +:type qd0: none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The Hindmarsh Rose model is a simplified point cell model which captures complex firing patterns of single neurons, such as periodic and chaotic bursting. It has a fast spiking subsystem, which is a generalization of the FitzHugh-Nagumo system, coupled to a slower subsystem which allows the model to fire bursts. The dynamical variables x, y, z correspond to the membrane potential, a recovery variable, and a slower adaptation current, respectively. See Hindmarsh J. L. , and Rose R. M. ( 1984 ) A model of neuronal bursting using three coupled first order differential equations. Proc. R. Soc. London, Ser. B 221:87–102. +\n +:param a: cubic term in x nullcline +:type a: none +:param b: quadratic term in x nullcline +:type b: none +:param c: constant term in y nullcline +:type c: none +:param d: quadratic term in y nullcline +:type d: none +:param r: timescale separation between slow and fast subsystem ( r greater than 0; r much less than 1 ) +:type r: none +:param s: related to adaptation +:type s: none +:param x1: related to the system's resting potential +:type x1: none +:param v_scaling: scaling of x for physiological membrane potential +:type v_scaling: voltage +:param x0: +:type x0: none +:param y0: +:type y0: none +:param z0: +:type z0: none +:param C: Total capacitance of the cell membrane +:type C: capacitance + + + + + + + + + + + + + + + + + + + + + + Cell with **segment** s specified in a **morphology** element along with details on its **biophysicalProperties** . NOTE: this can only be correctly simulated using jLEMS when there is a single segment in the cell, and **v** of this cell represents the membrane potential in that isopotential segment. + + + + + + + + + + + + + + + + + + + + + + Variant of cell with two independent Ca2+ pools. Cell with **segment** s specified in a **morphology** element along with details on its **biophysicalProperties** . NOTE: this can only be correctly simulated using jLEMS when there is a single segment in the cell, and **v** of this cell represents the membrane potential in that isopotential segment. + + + + + + + + + + + + + The collection of **segment** s which specify the 3D structure of the cell, along with a number of **segmentGroup** s + + + + + + + + + + + + + + A segment defines the smallest unit within a possibly branching structure ( **morphology** ), such as a dendrite or axon. Its **id** should be a nonnegative integer ( usually soma/root = 0 ). Its end points are given by the **proximal** and **distal** points. The **proximal** point can be omitted, usually because it is the same as a point on the **parent** segment, see **proximal** for details. **parent** specifies the parent segment. The first segment of a **cell** ( with no **parent** ) usually represents the soma. The shape is normally a cylinder ( radii of the **proximal** and **distal** equal, but positions different ) or a conical frustum ( radii and positions different ). If the x, y, x positions of the **proximal** and **distal** are equal, the segment can be interpreted as a sphere, and in this case the radii of these points must be equal. NOTE: LEMS does not yet support multicompartmental modelling, so the Dynamics here is only appropriate for single compartment modelling. + + + + + + + + + + + + + + + + + + + + + + + + + + Base type for ComponentTypes which specify an ( **x,** **y,** **z** ) coordinate along with a **diameter.** Note: no dimension used in the attributes for these coordinates! These are assumed to have dimension micrometer ( 10^-6 m ). This is due to micrometers being the default option for the majority of neuronal morphology formats, and dimensions are omitted here to facilitate reading and writing of morphologies in NeuroML. +\n +:param x: x coordinate of the point. Note: no dimension used, see description of **point3DWithDiam** for details. +:type x: none +:param y: y coordinate of the ppoint. Note: no dimension used, see description of **point3DWithDiam** for details. +:type y: none +:param z: z coordinate of the ppoint. Note: no dimension used, see description of **point3DWithDiam** for details. +:type z: none +:param diameter: Diameter of the ppoint. Note: no dimension used, see description of **point3DWithDiam** for details. +:type diameter: none + + + + + + + + + + + + + + + A method to describe a group of **segment** s in a **morphology** , e. g. soma_group, dendrite_group, axon_group. While a name is useful to describe the group, the **neuroLexId** attribute can be used to explicitly specify the meaning of the group, e. g. sao1044911821 for 'Neuronal Cell Body', sao1211023249 for 'Dendrite'. The **segment** s in this group can be specified as: a list of individual **member** segments; a **path** , all of the segments along which should be included; a **subTree** of the **cell** to include; other segmentGroups to **include** ( so all segments from those get included here ). An **inhomogeneousParameter** can be defined on the region of the cell specified by this group ( see **variableParameter** for usage ). + + + + + + + + + + + + + + + + + + + + + An inhomogeneous parameter specified across the **segmentGroup** ( see **variableParameter** for usage ). + + + + + + + + + + + + + + + + Allowed metrics for InhomogeneousParam + + + + + + + + What to do at the proximal point when creating an inhomogeneous parameter + + + + + + + + + + + What to do at the distal point when creating an inhomogeneous parameter + + + + + + + + + + + A single identified **segment** which is part of the **segmentGroup** + + + + + + + + + + + Include all members of another **segmentGroup** in this group + + + + + + + + + + + Include all the **segment** s between those specified by **from** and **to** , inclusive + + + + + + + + + + + + + + Include all the **segment** s distal to that specified by **from** in the **segmentGroup** + + + + + + + + + + + + + + + + + + + + + + + + The biophysical properties of the **cell** , including the **membraneProperties** and the **intracellularProperties** + + + + + + + + + + + + + + + The biophysical properties of the **cell** , including the **membraneProperties2CaPools** and the **intracellularProperties2CaPools** for a cell with two Ca pools + + + + + + + + + + + + + + + Properties specific to the membrane, such as the **populations** of channels, **channelDensities,** **specificCapacitance,** etc. + + + + + + + + + + + + + + + + + + + + + + + + + Variant of membraneProperties with 2 independent Ca pools + + + + + + + + + + + + + + Membrane potential at which to emit a spiking event. Note, usually the spiking event will not be emitted again until the membrane potential has fallen below this value and rises again to cross it in a positive direction +\n +:param value: +:type value: voltage + + + + + + + + + + + + + Capacitance per unit area +\n +:param value: +:type value: specificCapacitance + + + + + + + + + + + + + Explicitly set initial membrane potential for the cell +\n +:param value: +:type value: voltage + + + + + + + + + + + + + The resistivity, or specific axial resistance, of the cytoplasm +\n +:param value: +:type value: resistivity + + + + + + + + + + + + + Population of a **number** of ohmic ion channels. These each produce a conductance **channelg** across a reversal potential **erev,** giving a total current **i.** Note that active membrane currents are more frequently specified as a density over an area of the **cell** using **channelDensity** +\n +:param number: The number of channels present. This will be multiplied by the time varying conductance of the individual ion channel ( which extends **baseIonChannel** ) to produce the total conductance +:type number: none +:param erev: The reversal potential of the current produced +:type erev: voltage + + + + + + + + + + + + + + + + + + + + + + + + Specifies a time varying ohmic conductance density, which is distributed on a region of the **cell.** The conductance density of the channel is not uniform, but is set using the **variableParameter** . Note, there is no dynamical description of this in LEMS yet, as this type only makes sense for multicompartmental cells. A ComponentType for this needs to be present to enable export of NeuroML 2 multicompartmental cells via LEMS/jNeuroML to NEURON +\n +:param erev: The reversal potential of the current produced +:type erev: voltage + + + + + + + + + + + + + + + + + + + + Specifies a time varying conductance density, which is distributed on a region of the **cell,** and whose reversal potential is calculated from the Nernst equation. Hard coded for Ca only!. The conductance density of the channel is not uniform, but is set using the **variableParameter** . Note, there is no dynamical description of this in LEMS yet, as this type only makes sense for multicompartmental cells. A ComponentType for this needs to be present to enable export of NeuroML 2 multicompartmental cells via LEMS/jNeuroML to NEURON + + + + + + + + + + + + + + + + + + Specifies a time varying conductance density, which is distributed on a region of the **cell,** and whose current is calculated from the Goldman-Hodgkin-Katz equation. Hard coded for Ca only!. The conductance density of the channel is not uniform, but is set using the **variableParameter** . Note, there is no dynamical description of this in LEMS yet, as this type only makes sense for multicompartmental cells. A ComponentType for this needs to be present to enable export of NeuroML 2 multicompartmental cells via LEMS/jNeuroML to NEURON + + + + + + + + + + + + + + + + + + Specifies a time varying ohmic conductance density, **gDensity,** which is distributed on an area of the **cell** ( specified in **membraneProperties** ) with fixed reversal potential **erev** producing a current density **iDensity** +\n +:param erev: The reversal potential of the current produced +:type erev: voltage +:param condDensity: +:type condDensity: conductanceDensity + + + + + + + + + + + + + + + + + + + + + + + + Same as **channelDensity** , but with a **vShift** parameter to change voltage activation of gates. The exact usage of **vShift** in expressions for rates is determined by the individual gates. +\n +:param vShift: +:type vShift: voltage +:param erev: The reversal potential of the current produced +:type erev: voltage +:param condDensity: +:type condDensity: conductanceDensity + + + + + + + + + + + + Specifies a time varying conductance density, **gDensity,** which is distributed on an area of the **cell,** producing a current density **iDensity** and whose reversal potential is calculated from the Nernst equation. Hard coded for Ca only! See https://github.com/OpenSourceBrain/ghk-nernst. +\n +:param condDensity: +:type condDensity: conductanceDensity + + + + + + + + + + + + + + + + + + + + + + + This component is similar to the original component type **channelDensityNernst** but it is changed in order to have a reversal potential that depends on a second independent Ca++ pool ( ca2 ). See https://github.com/OpenSourceBrain/ghk-nernst. +\n +:param condDensity: +:type condDensity: conductanceDensity + + + + + + + + + + + + Specifies a time varying conductance density, **gDensity,** which is distributed on an area of the cell, producing a current density **iDensity** and whose reversal potential is calculated from the Goldman Hodgkin Katz equation. Hard coded for Ca only! See https://github.com/OpenSourceBrain/ghk-nernst. +\n +:param permeability: +:type permeability: permeability + + + + + + + + + + + + + + + + + + + + Time varying conductance density, **gDensity,** which is distributed on an area of the cell, producing a current density **iDensity.** Modified version of Jaffe et al. 1994 ( used also in Lawrence et al. 2006 ). See https://github.com/OpenSourceBrain/ghk-nernst. +\n +:param condDensity: +:type condDensity: conductanceDensity + + + + + + + + + + + + + + + + + + + + + Specifies a **parameter** ( e. g. condDensity ) which can vary its value across a **segmentGroup.** The value is calculated from **value** attribute of the **inhomogeneousValue** subelement. This element is normally a child of **channelDensityNonUniform** , **channelDensityNonUniformNernst** or **channelDensityNonUniformGHK** and is used to calculate the value of the conductance, etc. which will vary on different parts of the cell. The **segmentGroup** specified here needs to define an **inhomogeneousParameter** ( referenced from **inhomogeneousParameter** in the **inhomogeneousValue** ), which calculates a **variable** ( e. g. p ) varying across the cell ( e. g. based on the path length from soma ), which is then used in the **value** attribute of the **inhomogeneousValue** ( so for example condDensity = f( p ) ) + + + + + + + + + + + Specifies the **value** of an **inhomogeneousParameter.** For usage see **variableParameter** + + + + + + + + + + + + + Description of a chemical species identified by **ion,** which has internal, **concentration,** and external, **extConcentration** values for its concentration +\n +:param initialConcentration: +:type initialConcentration: concentration +:param initialExtConcentration: +:type initialExtConcentration: concentration + + + + + + + + + + + + + + + + + + + + + + + + + + + Biophysical properties related to the intracellular space within the **cell** , such as the **resistivity** and the list of ionic **species** present. **caConc** and **caConcExt** are explicitly exposed here to facilitate accessing these values from other Components, even though **caConcExt** is clearly not an intracellular property + + + + + + + + + + + + + + Variant of intracellularProperties with 2 independent Ca pools + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Generates a constant current pulse of a certain **amplitude** for a specified **duration** after a **delay.** Scaled by **weight,** if set +\n +:param delay: Delay before change in current. Current is zero prior to this. +:type delay: time +:param duration: Duration for holding current at amplitude. Current is zero after delay + duration. +:type duration: time +:param amplitude: Amplitude of current pulse +:type amplitude: current + + + + + + + + + + + + + + Dimensionless equivalent of **pulseGenerator** . Generates a constant current pulse of a certain **amplitude** for a specified **duration** after a **delay.** Scaled by **weight,** if set +\n +:param delay: Delay before change in current. Current is zero prior to this. +:type delay: time +:param duration: Duration for holding current at amplitude. Current is zero after delay + duration. +:type duration: time +:param amplitude: Amplitude of current pulse +:type amplitude: none + + + + + + + + + + + + + + Generates a sinusoidally varying current after a time **delay,** for a fixed **duration.** The **period** and maximum **amplitude** of the current can be set as well as the **phase** at which to start. Scaled by **weight,** if set +\n +:param phase: Phase ( between 0 and 2*pi ) at which to start the varying current ( i. e. at time given by delay ) +:type phase: none +:param delay: Delay before change in current. Current is zero prior to this. +:type delay: time +:param duration: Duration for holding current at amplitude. Current is zero after delay + duration. +:type duration: time +:param amplitude: Maximum amplitude of current +:type amplitude: current +:param period: Time period of oscillation +:type period: time + + + + + + + + + + + + + + + + Dimensionless equivalent of **sineGenerator** . Generates a sinusoidally varying current after a time **delay,** for a fixed **duration.** The **period** and maximum **amplitude** of the current can be set as well as the **phase** at which to start. Scaled by **weight,** if set +\n +:param phase: Phase ( between 0 and 2*pi ) at which to start the varying current ( i. e. at time given by delay ) +:type phase: none +:param delay: Delay before change in current. Current is zero prior to this. +:type delay: time +:param duration: Duration for holding current at amplitude. Current is zero after delay + duration. +:type duration: time +:param amplitude: Maximum amplitude of current +:type amplitude: none +:param period: Time period of oscillation +:type period: time + + + + + + + + + + + + + + + + Generates a ramping current after a time **delay,** for a fixed **duration.** During this time the current steadily changes from **startAmplitude** to **finishAmplitude.** Scaled by **weight,** if set +\n +:param delay: Delay before change in current. Current is baselineAmplitude prior to this. +:type delay: time +:param duration: Duration for holding current at amplitude. Current is baselineAmplitude after delay + duration. +:type duration: time +:param startAmplitude: Amplitude of linearly varying current at time delay +:type startAmplitude: current +:param finishAmplitude: Amplitude of linearly varying current at time delay + duration +:type finishAmplitude: current +:param baselineAmplitude: Amplitude of current before time delay, and after time delay + duration +:type baselineAmplitude: current + + + + + + + + + + + + + + + + Dimensionless equivalent of **rampGenerator** . Generates a ramping current after a time **delay,** for a fixed **duration.** During this time the dimensionless current steadily changes from **startAmplitude** to **finishAmplitude.** Scaled by **weight,** if set +\n +:param delay: Delay before change in current. Current is baselineAmplitude prior to this. +:type delay: time +:param duration: Duration for holding current at amplitude. Current is baselineAmplitude after delay + duration. +:type duration: time +:param startAmplitude: Amplitude of linearly varying current at time delay +:type startAmplitude: none +:param finishAmplitude: Amplitude of linearly varying current at time delay + duration +:type finishAmplitude: none +:param baselineAmplitude: Amplitude of current before time delay, and after time delay + duration +:type baselineAmplitude: none + + + + + + + + + + + + + + + + Generates a current which is the sum of all its child **basePointCurrent** element, e. g. can be a combination of **pulseGenerator** , **sineGenerator** elements producing a single **i.** Scaled by **weight,** if set + + + + + + + + + + + + + + + Generates a current which is the sum of all its child **basePointCurrentDL** elements, e. g. can be a combination of **pulseGeneratorDL** , **sineGeneratorDL** elements producing a single **i.** Scaled by **weight,** if set + + + + + + + + + + + + + + + Voltage clamp. Applies a variable current **i** to try to keep parent at **targetVoltage.** Not yet fully tested!!! Consider using voltageClampTriple!! +\n +:param delay: Delay before change in current. Current is zero prior to this. +:type delay: time +:param duration: Duration for attempting to keep parent at targetVoltage. Current is zero after delay + duration. +:type duration: time +:param targetVoltage: Current will be applied to try to get parent to this target voltage +:type targetVoltage: voltage +:param simpleSeriesResistance: Current will be calculated by the difference in voltage between the target and parent, divided by this value +:type simpleSeriesResistance: resistance + + + + + + + + + + + + + + + Voltage clamp with 3 clamp levels. Applies a variable current **i** ( through **simpleSeriesResistance** ) to try to keep parent cell at **conditioningVoltage** until time **delay,** **testingVoltage** until **delay** + **duration,** and **returnVoltage** afterwards. Only enabled if **active** = 1. +\n +:param active: Whether the voltage clamp is active ( 1 ) or inactive ( 0 ). +:type active: none +:param delay: Delay before switching from conditioningVoltage to testingVoltage. +:type delay: time +:param duration: Duration to hold at testingVoltage. +:type duration: time +:param conditioningVoltage: Target voltage before time delay +:type conditioningVoltage: voltage +:param testingVoltage: Target voltage between times delay and delay + duration +:type testingVoltage: voltage +:param returnVoltage: Target voltage after time duration +:type returnVoltage: voltage +:param simpleSeriesResistance: Current will be calculated by the difference in voltage between the target and parent, divided by this value +:type simpleSeriesResistance: resistance + + + + + + + + + + + + + + + + + + Emits a single spike at the specified **time** +\n +:param time: Time at which to emit one spike event +:type time: time + + + + + + + + + + + + Set of spike ComponentTypes, each emitting one spike at a certain time. Can be used to feed a predetermined spike train into a cell + + + + + + + + + + + + + Spike array connected to a single **synapse,** producing a current triggered by each **spike** in the array. + + + + + + + + + + + + + + + Simple generator of spikes at a regular interval set by **period** +\n +:param period: Time between spikes. The first spike will be emitted after this time. +:type period: time + + + + + + + + + + + + Generator of spikes with a random interspike interval of at least **minISI** and at most **maxISI** +\n +:param maxISI: Maximum interspike interval +:type maxISI: time +:param minISI: Minimum interspike interval +:type minISI: time + + + + + + + + + + + + + Generator of spikes whose ISI is distributed according to an exponential PDF with scale: 1 / **averageRate** +\n +:param averageRate: The average rate at which spikes are emitted +:type averageRate: per_time + + + + + + + + + + + + Generator of spikes whose ISI distribution is the maximum entropy distribution over [ **minimumISI,** +infinity ) with mean: 1 / **averageRate** +\n +:param minimumISI: The minimum interspike interval +:type minimumISI: time +:param averageRate: The average rate at which spikes are emitted +:type averageRate: per_time + + + + + + + + + + + + Poisson spike generator firing at **averageRate,** which is connected to single **synapse** that is triggered every time a spike is generated, producing an input current. See also **transientPoissonFiringSynapse** . +\n +:param averageRate: The average rate at which spikes are emitted +:type averageRate: per_time + + + + + + + + + + + + + + Poisson spike generator firing at **averageRate** after a **delay** and for a **duration,** connected to single **synapse** that is triggered every time a spike is generated, providing an input current. Similar to ComponentType **poissonFiringSynapse** . +\n +:param averageRate: +:type averageRate: per_time +:param delay: +:type delay: time +:param duration: +:type duration: time + + + + + + + + + + + + + + + + + + + Network containing: **population** s ( potentially of type **populationList** , and so specifying a list of cell **location** s ); **projection** s ( with lists of **connection** s ) and/or **explicitConnection** s; and **inputList** s ( with lists of **input** s ) and/or **explicitInput** s. Note: often in NeuroML this will be of type **networkWithTemperature** if there are temperature dependent elements ( e. g. ion channels ). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Initial attempt to specify 3D region for placing cells. Work in progress. . . + + + + + + + + + + + + + + + A population of components, with just one parameter for the **size,** i. e. number of components to create. Note: quite often this is used with type= **populationList** which means the size is determined by the number of **instance** s ( with **location** s ) in the list. The **size** attribute is still set, and there will be a validation error if this does not match the number in the list. +\n +:param size: Number of instances of this Component to create when the population is instantiated +:type size: none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies a single instance of a component in a **population** ( placed at **location** ). + + + + + + + + + + + + + + + + + + + + Specifies the ( x, y, z ) location of a single **instance** of a component in a **population** +\n +:param x: +:type x: none +:param y: +:type y: none +:param z: +:type z: none + + + + + + + + + + + + + + + + + + + + + + + + + Explicit event connection between named components, which gets processed via a new instance of a **synapse** component which is created on the target component + + + + + + + + + + + + + + + Base for projection (set of synaptic connections) between two populations + + + + + + + + + + + Projection from one population, **presynapticPopulation** to another, **postsynapticPopulation,** through **synapse.** Contains lists of **connection** or **connectionWD** elements. + + + + + + + + + + + + + + + Base of all synaptic connections (chemical/electrical/analog, etc.) inside projections + + + + + + + + + + + Base of all synaptic connections with preCellId, postSegmentId, etc. + Note: this is not the best name for these attributes, since Id is superfluous, hence BaseConnectionNewFormat + + + + + + + + + + + + + + + Base of all synaptic connections with preCell, postSegment, etc. + See BaseConnectionOldFormat + + + + + + + + + + + + + + + Event connection directly between named components, which gets processed via a new instance of a **synapse** component which is created on the target component. Normally contained inside a **projection** element. + + + + + + + + + + Event connection between named components, which gets processed via a new instance of a synapse component which is created on the target component, includes setting of **weight** and **delay** for the synaptic connection +\n +:param weight: +:type weight: none +:param delay: +:type delay: time + + + + + + + + + + + + + A projection between **presynapticPopulation** to another **postsynapticPopulation** through gap junctions. + + + + + + + + + + + + + + + To enable connections between populations through gap junctions. + + + + + + + + + + + To enable connections between populations through gap junctions. Populations need to be of type **populationList** and contain **instance** and **location** elements. + + + + + + + + + To enable connections between populations through gap junctions. Populations need to be of type **populationList** and contain **instance** and **location** elements. Includes setting of **weight** for the connection +\n +:param weight: +:type weight: none + + + + + + + + + + + + A projection between **presynapticPopulation** and **postsynapticPopulation** through components **preComponent** at the start and **postComponent** at the end of a **continuousConnection** or **continuousConnectionInstance** . Can be used for analog synapses. + + + + + + + + + + + + + + + An instance of a connection in a **continuousProjection** between **presynapticPopulation** to another **postsynapticPopulation** through a **preComponent** at the start and **postComponent** at the end. Can be used for analog synapses. + + + + + + + + + + + + An instance of a connection in a **continuousProjection** between **presynapticPopulation** to another **postsynapticPopulation** through a **preComponent** at the start and **postComponent** at the end. Populations need to be of type **populationList** and contain **instance** and **location** elements. Can be used for analog synapses. + + + + + + + + + An instance of a connection in a **continuousProjection** between **presynapticPopulation** to another **postsynapticPopulation** through a **preComponent** at the start and **postComponent** at the end. Populations need to be of type **populationList** and contain **instance** and **location** elements. Can be used for analog synapses. Includes setting of **weight** for the connection +\n +:param weight: +:type weight: none + + + + + + + + + + + + An explicit input ( anything which extends **basePointCurrent** ) to a target cell in a population + + + + + + + + + + + + + An explicit list of **input** s to a **population.** + + + + + + + + + + + + + + + + Specifies a single input to a **target,** optionally giving the **segmentId** ( default 0 ) and **fractionAlong** the segment ( default 0. 5 ). + + + + + + + + + + + + + + Specifies input lists. Can set **weight** to scale individual inputs. +\n +:param weight: +:type weight: none + + + + + + + + + + + + + + + Base type of any PyNN standard cell model. Note: membrane potential **v** has dimensions voltage, but all other parameters are dimensionless. This is to facilitate translation to and from PyNN scripts in Python, where these parameters have implicit units, see http://neuralensemble.org/trac/PyNN/wiki/StandardModels +\n +:param cm: +:type cm: none +:param i_offset: +:type i_offset: none +:param tau_syn_E: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type tau_syn_E: none +:param tau_syn_I: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type tau_syn_I: none +:param v_init: +:type v_init: none + + + + + + + + + + + + + + + + Base type of any PyNN standard integrate and fire model +\n +:param tau_refrac: +:type tau_refrac: none +:param v_thresh: +:type v_thresh: none +:param tau_m: +:type tau_m: none +:param v_rest: +:type v_rest: none +:param v_reset: +:type v_reset: none +:param cm: +:type cm: none +:param i_offset: +:type i_offset: none +:param tau_syn_E: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type tau_syn_E: none +:param tau_syn_I: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type tau_syn_I: none +:param v_init: +:type v_init: none + + + + + + + + + + + + + + + + Base type of conductance based PyNN IaF cell models +\n +:param e_rev_E: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type e_rev_E: none +:param e_rev_I: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type e_rev_I: none +:param tau_refrac: +:type tau_refrac: none +:param v_thresh: +:type v_thresh: none +:param tau_m: +:type tau_m: none +:param v_rest: +:type v_rest: none +:param v_reset: +:type v_reset: none +:param cm: +:type cm: none +:param i_offset: +:type i_offset: none +:param tau_syn_E: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type tau_syn_E: none +:param tau_syn_I: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type tau_syn_I: none +:param v_init: +:type v_init: none + + + + + + + + + + + + + Leaky integrate and fire model with fixed threshold and alpha-function-shaped post-synaptic current +\n +:param tau_refrac: +:type tau_refrac: none +:param v_thresh: +:type v_thresh: none +:param tau_m: +:type tau_m: none +:param v_rest: +:type v_rest: none +:param v_reset: +:type v_reset: none +:param cm: +:type cm: none +:param i_offset: +:type i_offset: none +:param tau_syn_E: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type tau_syn_E: none +:param tau_syn_I: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type tau_syn_I: none +:param v_init: +:type v_init: none + + + + + + + + + + + Leaky integrate and fire model with fixed threshold and decaying-exponential post-synaptic current +\n +:param tau_refrac: +:type tau_refrac: none +:param v_thresh: +:type v_thresh: none +:param tau_m: +:type tau_m: none +:param v_rest: +:type v_rest: none +:param v_reset: +:type v_reset: none +:param cm: +:type cm: none +:param i_offset: +:type i_offset: none +:param tau_syn_E: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type tau_syn_E: none +:param tau_syn_I: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type tau_syn_I: none +:param v_init: +:type v_init: none + + + + + + + + + + + Leaky integrate and fire model with fixed threshold and alpha-function-shaped post-synaptic conductance +\n +:param e_rev_E: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type e_rev_E: none +:param e_rev_I: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type e_rev_I: none +:param tau_refrac: +:type tau_refrac: none +:param v_thresh: +:type v_thresh: none +:param tau_m: +:type tau_m: none +:param v_rest: +:type v_rest: none +:param v_reset: +:type v_reset: none +:param cm: +:type cm: none +:param i_offset: +:type i_offset: none +:param tau_syn_E: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type tau_syn_E: none +:param tau_syn_I: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type tau_syn_I: none +:param v_init: +:type v_init: none + + + + + + + + + + + Leaky integrate and fire model with fixed threshold and exponentially-decaying post-synaptic conductance +\n +:param e_rev_E: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type e_rev_E: none +:param e_rev_I: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type e_rev_I: none +:param tau_refrac: +:type tau_refrac: none +:param v_thresh: +:type v_thresh: none +:param tau_m: +:type tau_m: none +:param v_rest: +:type v_rest: none +:param v_reset: +:type v_reset: none +:param cm: +:type cm: none +:param i_offset: +:type i_offset: none +:param tau_syn_E: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type tau_syn_E: none +:param tau_syn_I: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type tau_syn_I: none +:param v_init: +:type v_init: none + + + + + + + + + + + Adaptive exponential integrate and fire neuron according to Brette R and Gerstner W ( 2005 ) with exponentially-decaying post-synaptic conductance +\n +:param v_spike: +:type v_spike: none +:param delta_T: +:type delta_T: none +:param tau_w: +:type tau_w: none +:param a: +:type a: none +:param b: +:type b: none +:param e_rev_E: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type e_rev_E: none +:param e_rev_I: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type e_rev_I: none +:param tau_refrac: +:type tau_refrac: none +:param v_thresh: +:type v_thresh: none +:param tau_m: +:type tau_m: none +:param v_rest: +:type v_rest: none +:param v_reset: +:type v_reset: none +:param cm: +:type cm: none +:param i_offset: +:type i_offset: none +:param tau_syn_E: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type tau_syn_E: none +:param tau_syn_I: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type tau_syn_I: none +:param v_init: +:type v_init: none + + + + + + + + + + + + + + + + Adaptive exponential integrate and fire neuron according to Brette R and Gerstner W ( 2005 ) with alpha-function-shaped post-synaptic conductance +\n +:param v_spike: +:type v_spike: none +:param delta_T: +:type delta_T: none +:param tau_w: +:type tau_w: none +:param a: +:type a: none +:param b: +:type b: none +:param e_rev_E: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type e_rev_E: none +:param e_rev_I: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type e_rev_I: none +:param tau_refrac: +:type tau_refrac: none +:param v_thresh: +:type v_thresh: none +:param tau_m: +:type tau_m: none +:param v_rest: +:type v_rest: none +:param v_reset: +:type v_reset: none +:param cm: +:type cm: none +:param i_offset: +:type i_offset: none +:param tau_syn_E: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type tau_syn_E: none +:param tau_syn_I: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type tau_syn_I: none +:param v_init: +:type v_init: none + + + + + + + + + + + Single-compartment Hodgkin-Huxley-type neuron with transient sodium and delayed-rectifier potassium currents using the ion channel models from Traub. +\n +:param gbar_K: +:type gbar_K: none +:param gbar_Na: +:type gbar_Na: none +:param g_leak: +:type g_leak: none +:param e_rev_K: +:type e_rev_K: none +:param e_rev_Na: +:type e_rev_Na: none +:param e_rev_leak: +:type e_rev_leak: none +:param v_offset: +:type v_offset: none +:param e_rev_E: +:type e_rev_E: none +:param e_rev_I: +:type e_rev_I: none +:param cm: +:type cm: none +:param i_offset: +:type i_offset: none +:param tau_syn_E: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type tau_syn_E: none +:param tau_syn_I: This parameter is never used in the NeuroML2 description of this cell! Any synapse producing a current can be placed on this cell +:type tau_syn_I: none +:param v_init: +:type v_init: none + + + + + + + + + + + + + + + + + + + + Base type for all PyNN synapses. Note, the current **I** produced is dimensionless, but it requires a membrane potential **v** with dimension voltage +\n +:param tau_syn: +:type tau_syn: none + + + + + + + + + + + + Conductance based synapse with instantaneous rise and single exponential decay ( with time constant tau_syn ) +\n +:param e_rev: +:type e_rev: none +:param tau_syn: +:type tau_syn: none + + + + + + + + + + + + Alpha synapse: rise time and decay time are both tau_syn. Conductance based synapse. +\n +:param e_rev: +:type e_rev: none +:param tau_syn: +:type tau_syn: none + + + + + + + + + + + + Current based synapse with instantaneous rise and single exponential decay ( with time constant tau_syn ) +\n +:param tau_syn: +:type tau_syn: none + + + + + + + + + + + + Alpha synapse: rise time and decay time are both tau_syn. Current based synapse. +\n +:param tau_syn: +:type tau_syn: none + + + + + + + + + + + + Spike source, generating spikes according to a Poisson process. +\n +:param start: +:type start: time +:param duration: +:type duration: time +:param rate: +:type rate: per_time + + + + + + + + + + + + + + + + + + Base element without ID specified *yet*, e.g. for an element with a particular requirement on its id which does not comply with NmlId (e.g. Segment needs nonNegativeInteger). + + + + + Anything which can have a unique (within its parent) id, which must be an integer zero or greater. + + + + + + + + + + Anything which can have a unique (within its parent) id of the form NmlId (spaceless combination of letters, numbers and underscore). + + + + + + + + + + Elements which can stand alone and be referenced by id, e.g. cell, morphology. + + + + + + + + + + + + + + + + diff --git a/docs/generate.py b/docs/generate.py index 3357040..787ee71 100644 --- a/docs/generate.py +++ b/docs/generate.py @@ -24,7 +24,7 @@ # https://docs.python.org/3/library/decimal.html#module-decimal getcontext().prec = 7 -nml2_version = "2.3" +nml2_version = "2.3.1" nml2_branch = "master" col_width_left = "70" diff --git a/examples/NML2_FullCell.nml b/examples/NML2_FullCell.nml index a80c073..51b0288 100644 --- a/examples/NML2_FullCell.nml +++ b/examples/NML2_FullCell.nml @@ -88,10 +88,14 @@ + + + + diff --git a/examples/NML2_FullNeuroML.nml b/examples/NML2_FullNeuroML.nml index a824e3e..32fb42c 100644 --- a/examples/NML2_FullNeuroML.nml +++ b/examples/NML2_FullNeuroML.nml @@ -9,9 +9,8 @@ - - + @@ -21,6 +20,10 @@ + + + + @@ -63,20 +66,16 @@ ion="na" erev="50mV"/> - + + + - - - diff --git a/examples/NML2_InhomogeneousParams.nml b/examples/NML2_InhomogeneousParams.nml index 3172cd6..5703d38 100644 --- a/examples/NML2_InhomogeneousParams.nml +++ b/examples/NML2_InhomogeneousParams.nml @@ -71,7 +71,11 @@ + + + + @@ -83,4 +87,4 @@ - \ No newline at end of file + diff --git a/pom.xml b/pom.xml index 4d45763..45e5415 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ neuroml2-base-definitions org.neuroml.core - 1.9.1 + 1.10.1 UTF-8 diff --git a/test.py b/test.py index fec28b8..5f0ee33 100644 --- a/test.py +++ b/test.py @@ -45,7 +45,7 @@ lems_master_ex_dir="../LEMS/examples" lems_master_ex_list=os.listdir(lems_master_ex_dir) -nml2_schema_name = "NeuroML_v2.3.xsd" +nml2_schema_name = "NeuroML_v2.3.1.xsd" nml2_schema = "Schemas/NeuroML2/%s"%nml2_schema_name nml2_schema_file = open(nml2_schema)