From 3c4a6be20faa589d9b7c2160cd539845b4ff5f7a Mon Sep 17 00:00:00 2001 From: "Ankur Sinha (Ankur Sinha Gmail)" Date: Mon, 17 Apr 2023 16:21:33 +0100 Subject: [PATCH 1/2] feat(api)!: update to 2.2 BREAKING CHANGE: updates API to schema version 2.2 --- CMakeLists.txt | 4 +- src/schema/NeuroML_v2.1.xsd | 3256 --------------- .../{NeuroML_v2.1.cxx => NeuroML_v2.2.cxx} | 1076 +++-- .../{NeuroML_v2.1.hxx => NeuroML_v2.2.hxx} | 2090 ++++++++-- src/schema/NeuroML_v2.2.xsd | 3666 +++++++++++++++++ 5 files changed, 6153 insertions(+), 3939 deletions(-) delete mode 100644 src/schema/NeuroML_v2.1.xsd rename src/schema/{NeuroML_v2.1.cxx => NeuroML_v2.2.cxx} (98%) rename src/schema/{NeuroML_v2.1.hxx => NeuroML_v2.2.hxx} (96%) create mode 100644 src/schema/NeuroML_v2.2.xsd diff --git a/CMakeLists.txt b/CMakeLists.txt index f75b7d7..3b83b59 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,7 @@ cmake_policy(SET CMP0048 NEW) # VERSION option to project() # Note: the version number uses Semantic Versioning http://semver.org/ project(NeuroML_API - VERSION 2.1.0 + VERSION 2.2.0 DESCRIPTION "C++ API for NeuroML 2" HOMEPAGE_URL "https://github.com/NeuroML/NeuroML_API" ) @@ -21,7 +21,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/cmake/modules) ############################ # Which schema to provide the API for -set(NeuroML_SCHEMA_PATH "${PROJECT_SOURCE_DIR}/src/schema/NeuroML_v2.1.xsd" +set(NeuroML_SCHEMA_PATH "${PROJECT_SOURCE_DIR}/src/schema/NeuroML_v2.2.xsd" CACHE PATH "Path to the schema file to base the API on.") diff --git a/src/schema/NeuroML_v2.1.xsd b/src/schema/NeuroML_v2.1.xsd deleted file mode 100644 index 32352f7..0000000 --- a/src/schema/NeuroML_v2.1.xsd +++ /dev/null @@ -1,3256 +0,0 @@ - - - - - - - - - - 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 - - - - - - - - - - - - - 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. - - - - - - - - - Generic property with a tag and value - - - - - - - - - Placeholder for MIRIAM related metadata, among others. - - - - - - - - - - Contains an extension to NeuroML by creating custom LEMS ComponentType. - - - - - - - - - - - - - - - - - - - - - LEMS ComponentType for Constant. - - - - - - - - - - - - - LEMS Exposure (ComponentType property) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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... - - - - - - - - - - - - - - - - - - - - - - - - - - - Kinetic scheme based ion channel. - - - - - - - - - - - - - - - - - - - - - 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. - - - - - - - - - - - - - - - - - - - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Note all sub elements for gateHHrates, gateHHratesTau, gateFractional etc. allowed here. Which are valid should be constrained by what type is set - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Should not be required, as it's present on the species element! - - - - - - - - - - - - - - - - - - Should not be required, as it's present on the species element! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Gap junction/single electrical connection - - - - - - - - - - - - - Dummy synapse which emits no current. Used as presynaptic endpoint for analog synaptic connection (continuousConnection). - - - - - - - - - - - - - Behaves just like a one way gap junction. - - - - - - - - - - - - - - - Based on synapse in Methods of http://www.nature.com/neuro/journal/v7/n12/abs/nn1352.html. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This is to prevent it conflicting with attribute c (lowercase) e.g. in izhikevichCell2007 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Should only be used if morphology element is outside the cell. - This points to the id of the morphology - - - - - - - Should only be used if biophysicalProperties element is outside the cell. - This points to the id of the biophysicalProperties - - - - - - - - - - - - - - - - - - - - - - - - - - Standalone element which is usually inside a single cell, but could be outside and - referenced by id. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A 3D point with diameter. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Allowed metrics for InhomogeneousParam - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Standalone element which is usually inside a single cell, but could be outside and - referenced by id. - - - - - - - - - - - - - - - - - - - Standalone element which is usually inside a single cell, but could be outside and - referenced by id. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Using a thin extension of ValueAcrossSegOrSegGroup to facilitate library generation (e.g. libNeuroML) - - - - - - - - - - Using a thin extension of ValueAcrossSegOrSegGroup to facilitate library generation (e.g. libNeuroML) - - - - - - - - - - Using a thin extension of ValueAcrossSegOrSegGroup to facilitate library generation (e.g. libNeuroML) - - - - - - - - - - Using a thin extension of ValueAcrossSegOrSegGroup to facilitate library generation (e.g. libNeuroML) - - - - - - - - - - - - - - - - - - - - - - - - - - - Specifying the ion here again is redundant, this will be set in ionChannel definition. It is added here - TEMPORARILY since selecting all ca or na conducting channel populations/densities in a cell would be difficult otherwise. - Also, it will make it easier to set the correct native simulator value for erev (e.g. ek for ion = k in NEURON). - Currently a required attribute. - It should be removed in the longer term, due to possible inconsistencies in this value and that in the ionChannel - element. TODO: remove. - - - - - - - - - - - - - - - - - - - - - - - - Specifying the ion here again is redundant, this will be set in ionChannel definition. It is added here - TEMPORARILY since selecting all ca or na conducting channel populations/densities in a cell would be difficult otherwise. - Also, it will make it easier to set the correct native simulator value for erev (e.g. ek for ion = k in NEURON). - Currently a required attribute. - It should be removed in the longer term, due to possible inconsistencies in this value and that in the ionChannel - element. TODO: remove. - - - - - - - - - - - - - - - - - - - - - - - Specifying the ion here again is redundant, this will be set in ionChannel definition. It is added here - TEMPORARILY since selecting all ca or na conducting channel populations/densities in a cell would be difficult otherwise. - Also, it will make it easier to set the correct native simulator value for erev (e.g. ek for ion = k in NEURON). - Currently a required attribute. - It should be removed in the longer term, due to possible inconsistencies in this value and that in the ionChannel - element. TODO: remove. - - - - - - - - - - - - - - - - - - - - - - - - Specifying the ion here again is redundant, this will be set in ionChannel definition. It is added here - TEMPORARILY since selecting all ca or na conducting channel populations/densities in a cell would be difficult otherwise. - Also, it will make it easier to set the correct native simulator value for erev (e.g. ek for ion = k in NEURON). - Currently a required attribute. - It should be removed in the longer term, due to possible inconsistencies in this value and that in the ionChannel - element. TODO: remove. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Specifying the ion here again is redundant, this will be set in ionChannel definition. It is added here - TEMPORARILY since selecting all ca or na conducting channel populations/densities in a cell would be difficult otherwise. - Also, it will make it easier to set the correct native simulator value for erev (e.g. ek for ion = k in NEURON). - Currently a required attribute. - It should be removed in the longer term, due to possible inconsistencies in this value and that in the ionChannel - element. TODO: remove. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Specifying the ion here again is redundant, this will be set in ionChannel definition. It is added here - TEMPORARILY since selecting all ca or na conducting channel populations/densities in a cell would be difficult otherwise. - Also, it will make it easier to set the correct native simulator value for erev (e.g. ek for ion = k in NEURON). - Currently a required attribute. - It should be removed in the longer term, due to possible inconsistencies in this value and that in the ionChannel - element. TODO: remove. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Specifying the ion here again is redundant, this will be set in ionChannel definition. It is added here - TEMPORARILY since selecting all ca or na conducting channel populations/densities in a cell would be difficult otherwise. - Also, it will make it easier to set the correct native simulator value for erev (e.g. ek for ion = k in NEURON). - Currently a required attribute. - It should be removed in the longer term, due to possible inconsistencies in this value and that in the ionChannel - element. TODO: remove. - - - - - - - - - - - - - - - - - - - - - - - - - - - Specifying the ion here again is redundant, this will be set in ionChannel definition. It is added here - TEMPORARILY since selecting all ca or na conducting channel populations/densities in a cell would be difficult otherwise. - Also, it will make it easier to set the correct native simulator value for erev (e.g. ek for ion = k in NEURON). - Currently a required attribute. - It should be removed in the longer term, due to possible inconsistencies in this value and that in the ionChannel - element. TODO: remove. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Specifying the ion here again is redundant, the ion name should be the same as id. Kept for now - until LEMS implementation can select by id. TODO: remove. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Generates a constant current pulse of a certain amplitude (with dimensions for current) for a specified duration after a delay. - - - - - - - - - - - - - Generates a constant current pulse of a certain amplitude (non dimensional) for a specified duration after a delay. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Single explicit connection. Introduced to test connections in LEMS. Will probably be removed in favour of - connections wrapped in projection element - - - - - - - - - - - Base for projection (set of synaptic connections) between two populations - - - - - - - - - - - - Projection (set of synaptic connections) between two populations. Chemical/event based synaptic transmission - - - - - - - - - - - - - - - - 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 - - - - - - - - - - - - - - - - - Individual chemical (event based) synaptic connection, weight==1 and no delay - - - - - - - - - - Individual synaptic connection with weight and delay - - - - - - - - - - - - - Projection between two populations consisting of electrical connections (gap junctions) - - - - - - - - - - - - - - - - Individual electrical synaptic connection - - - - - - - - - - - - Projection between two populations consisting of analog connections (e.g. graded synapses) - - - - - - - - - Projection between two populations consisting of analog connections (e.g. graded synapses). Includes setting of weight for the connection - - - - - - - - - - - - Projection between two populations consisting of analog connections (e.g. graded synapses) - - - - - - - - - - - - - - - - Individual continuous/analog synaptic connection - - - - - - - - - - - - - Individual continuous/analog synaptic connection - instance based - - - - - - - - - - Individual continuous/analog synaptic connection - instance based. Includes setting of _weight for the connection - - - - - - - - - - - - Single explicit input. Introduced to test inputs in LEMS. Will probably be removed in favour of - inputs wrapped in inputList element - - - - - - - - - - List of inputs to a population. Currents will be provided by the specified component. - - - - - - - - - - - - - - - - - Individual input to the cell specified by target - - - - - - - - - - - - Individual input to the cell specified by target. Includes setting of _weight for the connection - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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/src/schema/NeuroML_v2.1.cxx b/src/schema/NeuroML_v2.2.cxx similarity index 98% rename from src/schema/NeuroML_v2.1.cxx rename to src/schema/NeuroML_v2.2.cxx index d956c91..28de1c3 100644 --- a/src/schema/NeuroML_v2.1.cxx +++ b/src/schema/NeuroML_v2.2.cxx @@ -39,7 +39,7 @@ #include -#include "NeuroML_v2.1.hxx" +#include "NeuroML_v2.2.hxx" namespace neuroml2 { @@ -67,6 +67,10 @@ namespace neuroml2 // + // Nml2Quantity_resistivity + // + + // Nml2Quantity_conductance // @@ -9683,115 +9687,237 @@ namespace neuroml2 } - // ValueAcrossSegOrSegGroup + // SpikeThresh // - const ValueAcrossSegOrSegGroup::value_optional& ValueAcrossSegOrSegGroup:: + const SpikeThresh::value_type& SpikeThresh:: value () const { - return this->value_; + return this->value_.get (); } - ValueAcrossSegOrSegGroup::value_optional& ValueAcrossSegOrSegGroup:: + SpikeThresh::value_type& SpikeThresh:: value () { - return this->value_; + return this->value_.get (); } - void ValueAcrossSegOrSegGroup:: + void SpikeThresh:: value (const value_type& x) { this->value_.set (x); } - void ValueAcrossSegOrSegGroup:: - value (const value_optional& x) - { - this->value_ = x; - } - - void ValueAcrossSegOrSegGroup:: + void SpikeThresh:: value (::std::unique_ptr< value_type > x) { this->value_.set (std::move (x)); } - const ValueAcrossSegOrSegGroup::segmentGroup_type& ValueAcrossSegOrSegGroup:: + const SpikeThresh::segmentGroup_type& SpikeThresh:: segmentGroup () const { return this->segmentGroup_.get (); } - ValueAcrossSegOrSegGroup::segmentGroup_type& ValueAcrossSegOrSegGroup:: + SpikeThresh::segmentGroup_type& SpikeThresh:: segmentGroup () { return this->segmentGroup_.get (); } - void ValueAcrossSegOrSegGroup:: + void SpikeThresh:: segmentGroup (const segmentGroup_type& x) { this->segmentGroup_.set (x); } - void ValueAcrossSegOrSegGroup:: + void SpikeThresh:: segmentGroup (::std::unique_ptr< segmentGroup_type > x) { this->segmentGroup_.set (std::move (x)); } - const ValueAcrossSegOrSegGroup::segmentGroup_type& ValueAcrossSegOrSegGroup:: + const SpikeThresh::segmentGroup_type& SpikeThresh:: segmentGroup_default_value () { return segmentGroup_default_value_; } - const ValueAcrossSegOrSegGroup::segment_optional& ValueAcrossSegOrSegGroup:: - segment () const + + // SpecificCapacitance + // + + const SpecificCapacitance::value_type& SpecificCapacitance:: + value () const { - return this->segment_; + return this->value_.get (); } - ValueAcrossSegOrSegGroup::segment_optional& ValueAcrossSegOrSegGroup:: - segment () + SpecificCapacitance::value_type& SpecificCapacitance:: + value () { - return this->segment_; + return this->value_.get (); } - void ValueAcrossSegOrSegGroup:: - segment (const segment_type& x) + void SpecificCapacitance:: + value (const value_type& x) { - this->segment_.set (x); + this->value_.set (x); } - void ValueAcrossSegOrSegGroup:: - segment (const segment_optional& x) + void SpecificCapacitance:: + value (::std::unique_ptr< value_type > x) { - this->segment_ = x; + this->value_.set (std::move (x)); } - void ValueAcrossSegOrSegGroup:: - segment (::std::unique_ptr< segment_type > x) + const SpecificCapacitance::segmentGroup_type& SpecificCapacitance:: + segmentGroup () const { - this->segment_.set (std::move (x)); + return this->segmentGroup_.get (); } + SpecificCapacitance::segmentGroup_type& SpecificCapacitance:: + segmentGroup () + { + return this->segmentGroup_.get (); + } - // SpikeThresh - // + void SpecificCapacitance:: + segmentGroup (const segmentGroup_type& x) + { + this->segmentGroup_.set (x); + } + void SpecificCapacitance:: + segmentGroup (::std::unique_ptr< segmentGroup_type > x) + { + this->segmentGroup_.set (std::move (x)); + } - // SpecificCapacitance - // + const SpecificCapacitance::segmentGroup_type& SpecificCapacitance:: + segmentGroup_default_value () + { + return segmentGroup_default_value_; + } // InitMembPotential // + const InitMembPotential::value_type& InitMembPotential:: + value () const + { + return this->value_.get (); + } + + InitMembPotential::value_type& InitMembPotential:: + value () + { + return this->value_.get (); + } + + void InitMembPotential:: + value (const value_type& x) + { + this->value_.set (x); + } + + void InitMembPotential:: + value (::std::unique_ptr< value_type > x) + { + this->value_.set (std::move (x)); + } + + const InitMembPotential::segmentGroup_type& InitMembPotential:: + segmentGroup () const + { + return this->segmentGroup_.get (); + } + + InitMembPotential::segmentGroup_type& InitMembPotential:: + segmentGroup () + { + return this->segmentGroup_.get (); + } + + void InitMembPotential:: + segmentGroup (const segmentGroup_type& x) + { + this->segmentGroup_.set (x); + } + + void InitMembPotential:: + segmentGroup (::std::unique_ptr< segmentGroup_type > x) + { + this->segmentGroup_.set (std::move (x)); + } + + const InitMembPotential::segmentGroup_type& InitMembPotential:: + segmentGroup_default_value () + { + return segmentGroup_default_value_; + } + // Resistivity // + const Resistivity::value_type& Resistivity:: + value () const + { + return this->value_.get (); + } + + Resistivity::value_type& Resistivity:: + value () + { + return this->value_.get (); + } + + void Resistivity:: + value (const value_type& x) + { + this->value_.set (x); + } + + void Resistivity:: + value (::std::unique_ptr< value_type > x) + { + this->value_.set (std::move (x)); + } + + const Resistivity::segmentGroup_type& Resistivity:: + segmentGroup () const + { + return this->segmentGroup_.get (); + } + + Resistivity::segmentGroup_type& Resistivity:: + segmentGroup () + { + return this->segmentGroup_.get (); + } + + void Resistivity:: + segmentGroup (const segmentGroup_type& x) + { + this->segmentGroup_.set (x); + } + + void Resistivity:: + segmentGroup (::std::unique_ptr< segmentGroup_type > x) + { + this->segmentGroup_.set (std::move (x)); + } + + const Resistivity::segmentGroup_type& Resistivity:: + segmentGroup_default_value () + { + return segmentGroup_default_value_; + } + // ChannelPopulation // @@ -11122,6 +11248,36 @@ namespace neuroml2 this->initialExtConcentration_.set (std::move (x)); } + const Species::segmentGroup_type& Species:: + segmentGroup () const + { + return this->segmentGroup_.get (); + } + + Species::segmentGroup_type& Species:: + segmentGroup () + { + return this->segmentGroup_.get (); + } + + void Species:: + segmentGroup (const segmentGroup_type& x) + { + this->segmentGroup_.set (x); + } + + void Species:: + segmentGroup (::std::unique_ptr< segmentGroup_type > x) + { + this->segmentGroup_.set (std::move (x)); + } + + const Species::segmentGroup_type& Species:: + segmentGroup_default_value () + { + return segmentGroup_default_value_; + } + // ConcentrationModel_D // @@ -16366,6 +16522,78 @@ namespace neuroml2 { } + // Nml2Quantity_resistivity + // + + Nml2Quantity_resistivity:: + Nml2Quantity_resistivity () + : ::xml_schema::string () + { + } + + Nml2Quantity_resistivity:: + Nml2Quantity_resistivity (const char* _xsd_string_base) + : ::xml_schema::string (_xsd_string_base) + { + } + + Nml2Quantity_resistivity:: + Nml2Quantity_resistivity (const ::std::string& _xsd_string_base) + : ::xml_schema::string (_xsd_string_base) + { + } + + Nml2Quantity_resistivity:: + Nml2Quantity_resistivity (const ::xml_schema::string& _xsd_string_base) + : ::xml_schema::string (_xsd_string_base) + { + } + + Nml2Quantity_resistivity:: + Nml2Quantity_resistivity (const Nml2Quantity_resistivity& x, + ::xml_schema::flags f, + ::xml_schema::container* c) + : ::xml_schema::string (x, f, c) + { + } + + Nml2Quantity_resistivity:: + Nml2Quantity_resistivity (const ::xercesc::DOMElement& e, + ::xml_schema::flags f, + ::xml_schema::container* c) + : ::xml_schema::string (e, f, c) + { + } + + Nml2Quantity_resistivity:: + Nml2Quantity_resistivity (const ::xercesc::DOMAttr& a, + ::xml_schema::flags f, + ::xml_schema::container* c) + : ::xml_schema::string (a, f, c) + { + } + + Nml2Quantity_resistivity:: + Nml2Quantity_resistivity (const ::std::string& s, + const ::xercesc::DOMElement* e, + ::xml_schema::flags f, + ::xml_schema::container* c) + : ::xml_schema::string (s, e, f, c) + { + } + + Nml2Quantity_resistivity* Nml2Quantity_resistivity:: + _clone (::xml_schema::flags f, + ::xml_schema::container* c) const + { + return new class Nml2Quantity_resistivity (*this, f, c); + } + + Nml2Quantity_resistivity:: + ~Nml2Quantity_resistivity () + { + } + // Nml2Quantity_conductance // @@ -33696,40 +33924,391 @@ namespace neuroml2 return !(x == y); } - // ValueAcrossSegOrSegGroup + // SpikeThresh // - const ValueAcrossSegOrSegGroup::segmentGroup_type ValueAcrossSegOrSegGroup::segmentGroup_default_value_ ( + const SpikeThresh::segmentGroup_type SpikeThresh::segmentGroup_default_value_ ( "all"); - ValueAcrossSegOrSegGroup:: - ValueAcrossSegOrSegGroup () + SpikeThresh:: + SpikeThresh (const value_type& value) : ::xml_schema::type (), + value_ (value, this), + segmentGroup_ (segmentGroup_default_value (), this) + { + } + + SpikeThresh:: + SpikeThresh (const SpikeThresh& x, + ::xml_schema::flags f, + ::xml_schema::container* c) + : ::xml_schema::type (x, f, c), + value_ (x.value_, f, this), + segmentGroup_ (x.segmentGroup_, f, this) + { + } + + SpikeThresh:: + SpikeThresh (const ::xercesc::DOMElement& e, + ::xml_schema::flags f, + ::xml_schema::container* c) + : ::xml_schema::type (e, f | ::xml_schema::flags::base, c), value_ (this), - segmentGroup_ (segmentGroup_default_value (), this), - segment_ (this) + segmentGroup_ (this) { + if ((f & ::xml_schema::flags::base) == 0) + { + ::xsd::cxx::xml::dom::parser< char > p (e, false, false, true); + this->parse (p, f); + } } - ValueAcrossSegOrSegGroup:: - ValueAcrossSegOrSegGroup (const ValueAcrossSegOrSegGroup& x, - ::xml_schema::flags f, - ::xml_schema::container* c) + void SpikeThresh:: + parse (::xsd::cxx::xml::dom::parser< char >& p, + ::xml_schema::flags f) + { + while (p.more_attributes ()) + { + const ::xercesc::DOMAttr& i (p.next_attribute ()); + const ::xsd::cxx::xml::qualified_name< char > n ( + ::xsd::cxx::xml::dom::name< char > (i)); + + if (n.name () == "value" && n.namespace_ ().empty ()) + { + this->value_.set (value_traits::create (i, f, this)); + continue; + } + + if (n.name () == "segmentGroup" && n.namespace_ ().empty ()) + { + this->segmentGroup_.set (segmentGroup_traits::create (i, f, this)); + continue; + } + } + + if (!value_.present ()) + { + throw ::xsd::cxx::tree::expected_attribute< char > ( + "value", + ""); + } + + if (!segmentGroup_.present ()) + { + this->segmentGroup_.set (segmentGroup_default_value ()); + } + } + + SpikeThresh* SpikeThresh:: + _clone (::xml_schema::flags f, + ::xml_schema::container* c) const + { + return new class SpikeThresh (*this, f, c); + } + + SpikeThresh& SpikeThresh:: + operator= (const SpikeThresh& x) + { + if (this != &x) + { + static_cast< ::xml_schema::type& > (*this) = x; + this->value_ = x.value_; + this->segmentGroup_ = x.segmentGroup_; + } + + return *this; + } + + SpikeThresh:: + ~SpikeThresh () + { + } + + bool + operator== (const SpikeThresh& x, const SpikeThresh& y) + { + if (!(x.value () == y.value ())) + return false; + + if (!(x.segmentGroup () == y.segmentGroup ())) + return false; + + return true; + } + + bool + operator!= (const SpikeThresh& x, const SpikeThresh& y) + { + return !(x == y); + } + + // SpecificCapacitance + // + + const SpecificCapacitance::segmentGroup_type SpecificCapacitance::segmentGroup_default_value_ ( + "all"); + + SpecificCapacitance:: + SpecificCapacitance (const value_type& value) + : ::xml_schema::type (), + value_ (value, this), + segmentGroup_ (segmentGroup_default_value (), this) + { + } + + SpecificCapacitance:: + SpecificCapacitance (const SpecificCapacitance& x, + ::xml_schema::flags f, + ::xml_schema::container* c) : ::xml_schema::type (x, f, c), value_ (x.value_, f, this), - segmentGroup_ (x.segmentGroup_, f, this), - segment_ (x.segment_, f, this) + segmentGroup_ (x.segmentGroup_, f, this) { } - ValueAcrossSegOrSegGroup:: - ValueAcrossSegOrSegGroup (const ::xercesc::DOMElement& e, - ::xml_schema::flags f, - ::xml_schema::container* c) + SpecificCapacitance:: + SpecificCapacitance (const ::xercesc::DOMElement& e, + ::xml_schema::flags f, + ::xml_schema::container* c) : ::xml_schema::type (e, f | ::xml_schema::flags::base, c), value_ (this), - segmentGroup_ (this), - segment_ (this) + segmentGroup_ (this) + { + if ((f & ::xml_schema::flags::base) == 0) + { + ::xsd::cxx::xml::dom::parser< char > p (e, false, false, true); + this->parse (p, f); + } + } + + void SpecificCapacitance:: + parse (::xsd::cxx::xml::dom::parser< char >& p, + ::xml_schema::flags f) + { + while (p.more_attributes ()) + { + const ::xercesc::DOMAttr& i (p.next_attribute ()); + const ::xsd::cxx::xml::qualified_name< char > n ( + ::xsd::cxx::xml::dom::name< char > (i)); + + if (n.name () == "value" && n.namespace_ ().empty ()) + { + this->value_.set (value_traits::create (i, f, this)); + continue; + } + + if (n.name () == "segmentGroup" && n.namespace_ ().empty ()) + { + this->segmentGroup_.set (segmentGroup_traits::create (i, f, this)); + continue; + } + } + + if (!value_.present ()) + { + throw ::xsd::cxx::tree::expected_attribute< char > ( + "value", + ""); + } + + if (!segmentGroup_.present ()) + { + this->segmentGroup_.set (segmentGroup_default_value ()); + } + } + + SpecificCapacitance* SpecificCapacitance:: + _clone (::xml_schema::flags f, + ::xml_schema::container* c) const + { + return new class SpecificCapacitance (*this, f, c); + } + + SpecificCapacitance& SpecificCapacitance:: + operator= (const SpecificCapacitance& x) + { + if (this != &x) + { + static_cast< ::xml_schema::type& > (*this) = x; + this->value_ = x.value_; + this->segmentGroup_ = x.segmentGroup_; + } + + return *this; + } + + SpecificCapacitance:: + ~SpecificCapacitance () + { + } + + bool + operator== (const SpecificCapacitance& x, const SpecificCapacitance& y) + { + if (!(x.value () == y.value ())) + return false; + + if (!(x.segmentGroup () == y.segmentGroup ())) + return false; + + return true; + } + + bool + operator!= (const SpecificCapacitance& x, const SpecificCapacitance& y) + { + return !(x == y); + } + + // InitMembPotential + // + + const InitMembPotential::segmentGroup_type InitMembPotential::segmentGroup_default_value_ ( + "all"); + + InitMembPotential:: + InitMembPotential (const value_type& value) + : ::xml_schema::type (), + value_ (value, this), + segmentGroup_ (segmentGroup_default_value (), this) + { + } + + InitMembPotential:: + InitMembPotential (const InitMembPotential& x, + ::xml_schema::flags f, + ::xml_schema::container* c) + : ::xml_schema::type (x, f, c), + value_ (x.value_, f, this), + segmentGroup_ (x.segmentGroup_, f, this) + { + } + + InitMembPotential:: + InitMembPotential (const ::xercesc::DOMElement& e, + ::xml_schema::flags f, + ::xml_schema::container* c) + : ::xml_schema::type (e, f | ::xml_schema::flags::base, c), + value_ (this), + segmentGroup_ (this) + { + if ((f & ::xml_schema::flags::base) == 0) + { + ::xsd::cxx::xml::dom::parser< char > p (e, false, false, true); + this->parse (p, f); + } + } + + void InitMembPotential:: + parse (::xsd::cxx::xml::dom::parser< char >& p, + ::xml_schema::flags f) + { + while (p.more_attributes ()) + { + const ::xercesc::DOMAttr& i (p.next_attribute ()); + const ::xsd::cxx::xml::qualified_name< char > n ( + ::xsd::cxx::xml::dom::name< char > (i)); + + if (n.name () == "value" && n.namespace_ ().empty ()) + { + this->value_.set (value_traits::create (i, f, this)); + continue; + } + + if (n.name () == "segmentGroup" && n.namespace_ ().empty ()) + { + this->segmentGroup_.set (segmentGroup_traits::create (i, f, this)); + continue; + } + } + + if (!value_.present ()) + { + throw ::xsd::cxx::tree::expected_attribute< char > ( + "value", + ""); + } + + if (!segmentGroup_.present ()) + { + this->segmentGroup_.set (segmentGroup_default_value ()); + } + } + + InitMembPotential* InitMembPotential:: + _clone (::xml_schema::flags f, + ::xml_schema::container* c) const + { + return new class InitMembPotential (*this, f, c); + } + + InitMembPotential& InitMembPotential:: + operator= (const InitMembPotential& x) + { + if (this != &x) + { + static_cast< ::xml_schema::type& > (*this) = x; + this->value_ = x.value_; + this->segmentGroup_ = x.segmentGroup_; + } + + return *this; + } + + InitMembPotential:: + ~InitMembPotential () + { + } + + bool + operator== (const InitMembPotential& x, const InitMembPotential& y) + { + if (!(x.value () == y.value ())) + return false; + + if (!(x.segmentGroup () == y.segmentGroup ())) + return false; + + return true; + } + + bool + operator!= (const InitMembPotential& x, const InitMembPotential& y) + { + return !(x == y); + } + + // Resistivity + // + + const Resistivity::segmentGroup_type Resistivity::segmentGroup_default_value_ ( + "all"); + + Resistivity:: + Resistivity (const value_type& value) + : ::xml_schema::type (), + value_ (value, this), + segmentGroup_ (segmentGroup_default_value (), this) + { + } + + Resistivity:: + Resistivity (const Resistivity& x, + ::xml_schema::flags f, + ::xml_schema::container* c) + : ::xml_schema::type (x, f, c), + value_ (x.value_, f, this), + segmentGroup_ (x.segmentGroup_, f, this) + { + } + + Resistivity:: + Resistivity (const ::xercesc::DOMElement& e, + ::xml_schema::flags f, + ::xml_schema::container* c) + : ::xml_schema::type (e, f | ::xml_schema::flags::base, c), + value_ (this), + segmentGroup_ (this) { if ((f & ::xml_schema::flags::base) == 0) { @@ -33738,7 +34317,7 @@ namespace neuroml2 } } - void ValueAcrossSegOrSegGroup:: + void Resistivity:: parse (::xsd::cxx::xml::dom::parser< char >& p, ::xml_schema::flags f) { @@ -33759,12 +34338,13 @@ namespace neuroml2 this->segmentGroup_.set (segmentGroup_traits::create (i, f, this)); continue; } + } - if (n.name () == "segment" && n.namespace_ ().empty ()) - { - this->segment_.set (segment_traits::create (i, f, this)); - continue; - } + if (!value_.present ()) + { + throw ::xsd::cxx::tree::expected_attribute< char > ( + "value", + ""); } if (!segmentGroup_.present ()) @@ -33773,34 +34353,33 @@ namespace neuroml2 } } - ValueAcrossSegOrSegGroup* ValueAcrossSegOrSegGroup:: + Resistivity* Resistivity:: _clone (::xml_schema::flags f, ::xml_schema::container* c) const { - return new class ValueAcrossSegOrSegGroup (*this, f, c); + return new class Resistivity (*this, f, c); } - ValueAcrossSegOrSegGroup& ValueAcrossSegOrSegGroup:: - operator= (const ValueAcrossSegOrSegGroup& x) + Resistivity& Resistivity:: + operator= (const Resistivity& x) { if (this != &x) { static_cast< ::xml_schema::type& > (*this) = x; this->value_ = x.value_; this->segmentGroup_ = x.segmentGroup_; - this->segment_ = x.segment_; } return *this; } - ValueAcrossSegOrSegGroup:: - ~ValueAcrossSegOrSegGroup () + Resistivity:: + ~Resistivity () { } bool - operator== (const ValueAcrossSegOrSegGroup& x, const ValueAcrossSegOrSegGroup& y) + operator== (const Resistivity& x, const Resistivity& y) { if (!(x.value () == y.value ())) return false; @@ -33808,166 +34387,15 @@ namespace neuroml2 if (!(x.segmentGroup () == y.segmentGroup ())) return false; - if (!(x.segment () == y.segment ())) - return false; - return true; } bool - operator!= (const ValueAcrossSegOrSegGroup& x, const ValueAcrossSegOrSegGroup& y) + operator!= (const Resistivity& x, const Resistivity& y) { return !(x == y); } - // SpikeThresh - // - - SpikeThresh:: - SpikeThresh () - : ::neuroml2::ValueAcrossSegOrSegGroup () - { - } - - SpikeThresh:: - SpikeThresh (const SpikeThresh& x, - ::xml_schema::flags f, - ::xml_schema::container* c) - : ::neuroml2::ValueAcrossSegOrSegGroup (x, f, c) - { - } - - SpikeThresh:: - SpikeThresh (const ::xercesc::DOMElement& e, - ::xml_schema::flags f, - ::xml_schema::container* c) - : ::neuroml2::ValueAcrossSegOrSegGroup (e, f, c) - { - } - - SpikeThresh* SpikeThresh:: - _clone (::xml_schema::flags f, - ::xml_schema::container* c) const - { - return new class SpikeThresh (*this, f, c); - } - - SpikeThresh:: - ~SpikeThresh () - { - } - - // SpecificCapacitance - // - - SpecificCapacitance:: - SpecificCapacitance () - : ::neuroml2::ValueAcrossSegOrSegGroup () - { - } - - SpecificCapacitance:: - SpecificCapacitance (const SpecificCapacitance& x, - ::xml_schema::flags f, - ::xml_schema::container* c) - : ::neuroml2::ValueAcrossSegOrSegGroup (x, f, c) - { - } - - SpecificCapacitance:: - SpecificCapacitance (const ::xercesc::DOMElement& e, - ::xml_schema::flags f, - ::xml_schema::container* c) - : ::neuroml2::ValueAcrossSegOrSegGroup (e, f, c) - { - } - - SpecificCapacitance* SpecificCapacitance:: - _clone (::xml_schema::flags f, - ::xml_schema::container* c) const - { - return new class SpecificCapacitance (*this, f, c); - } - - SpecificCapacitance:: - ~SpecificCapacitance () - { - } - - // InitMembPotential - // - - InitMembPotential:: - InitMembPotential () - : ::neuroml2::ValueAcrossSegOrSegGroup () - { - } - - InitMembPotential:: - InitMembPotential (const InitMembPotential& x, - ::xml_schema::flags f, - ::xml_schema::container* c) - : ::neuroml2::ValueAcrossSegOrSegGroup (x, f, c) - { - } - - InitMembPotential:: - InitMembPotential (const ::xercesc::DOMElement& e, - ::xml_schema::flags f, - ::xml_schema::container* c) - : ::neuroml2::ValueAcrossSegOrSegGroup (e, f, c) - { - } - - InitMembPotential* InitMembPotential:: - _clone (::xml_schema::flags f, - ::xml_schema::container* c) const - { - return new class InitMembPotential (*this, f, c); - } - - InitMembPotential:: - ~InitMembPotential () - { - } - - // Resistivity - // - - Resistivity:: - Resistivity () - : ::neuroml2::ValueAcrossSegOrSegGroup () - { - } - - Resistivity:: - Resistivity (const Resistivity& x, - ::xml_schema::flags f, - ::xml_schema::container* c) - : ::neuroml2::ValueAcrossSegOrSegGroup (x, f, c) - { - } - - Resistivity:: - Resistivity (const ::xercesc::DOMElement& e, - ::xml_schema::flags f, - ::xml_schema::container* c) - : ::neuroml2::ValueAcrossSegOrSegGroup (e, f, c) - { - } - - Resistivity* Resistivity:: - _clone (::xml_schema::flags f, - ::xml_schema::container* c) const - { - return new class Resistivity (*this, f, c); - } - - Resistivity:: - ~Resistivity () - { - } - // ChannelPopulation // @@ -35882,17 +36310,21 @@ namespace neuroml2 // Species // + const Species::segmentGroup_type Species::segmentGroup_default_value_ ( + "all"); + Species:: Species (const id_type& id, const concentrationModel_type& concentrationModel, const initialConcentration_type& initialConcentration, const initialExtConcentration_type& initialExtConcentration) - : ::neuroml2::ValueAcrossSegOrSegGroup (), + : ::xml_schema::type (), id_ (id, this), concentrationModel_ (concentrationModel, this), ion_ (this), initialConcentration_ (initialConcentration, this), - initialExtConcentration_ (initialExtConcentration, this) + initialExtConcentration_ (initialExtConcentration, this), + segmentGroup_ (segmentGroup_default_value (), this) { } @@ -35900,12 +36332,13 @@ namespace neuroml2 Species (const Species& x, ::xml_schema::flags f, ::xml_schema::container* c) - : ::neuroml2::ValueAcrossSegOrSegGroup (x, f, c), + : ::xml_schema::type (x, f, c), id_ (x.id_, f, this), concentrationModel_ (x.concentrationModel_, f, this), ion_ (x.ion_, f, this), initialConcentration_ (x.initialConcentration_, f, this), - initialExtConcentration_ (x.initialExtConcentration_, f, this) + initialExtConcentration_ (x.initialExtConcentration_, f, this), + segmentGroup_ (x.segmentGroup_, f, this) { } @@ -35913,12 +36346,13 @@ namespace neuroml2 Species (const ::xercesc::DOMElement& e, ::xml_schema::flags f, ::xml_schema::container* c) - : ::neuroml2::ValueAcrossSegOrSegGroup (e, f | ::xml_schema::flags::base, c), + : ::xml_schema::type (e, f | ::xml_schema::flags::base, c), id_ (this), concentrationModel_ (this), ion_ (this), initialConcentration_ (this), - initialExtConcentration_ (this) + initialExtConcentration_ (this), + segmentGroup_ (this) { if ((f & ::xml_schema::flags::base) == 0) { @@ -35931,10 +36365,6 @@ namespace neuroml2 parse (::xsd::cxx::xml::dom::parser< char >& p, ::xml_schema::flags f) { - this->::neuroml2::ValueAcrossSegOrSegGroup::parse (p, f); - - p.reset_attributes (); - while (p.more_attributes ()) { const ::xercesc::DOMAttr& i (p.next_attribute ()); @@ -35970,6 +36400,12 @@ namespace neuroml2 this->initialExtConcentration_.set (initialExtConcentration_traits::create (i, f, this)); continue; } + + if (n.name () == "segmentGroup" && n.namespace_ ().empty ()) + { + this->segmentGroup_.set (segmentGroup_traits::create (i, f, this)); + continue; + } } if (!id_.present ()) @@ -35999,6 +36435,11 @@ namespace neuroml2 "initialExtConcentration", ""); } + + if (!segmentGroup_.present ()) + { + this->segmentGroup_.set (segmentGroup_default_value ()); + } } Species* Species:: @@ -36013,12 +36454,13 @@ namespace neuroml2 { if (this != &x) { - static_cast< ::neuroml2::ValueAcrossSegOrSegGroup& > (*this) = x; + static_cast< ::xml_schema::type& > (*this) = x; this->id_ = x.id_; this->concentrationModel_ = x.concentrationModel_; this->ion_ = x.ion_; this->initialConcentration_ = x.initialConcentration_; this->initialExtConcentration_ = x.initialExtConcentration_; + this->segmentGroup_ = x.segmentGroup_; } return *this; @@ -36032,10 +36474,6 @@ namespace neuroml2 bool operator== (const Species& x, const Species& y) { - if (!(static_cast< const ::neuroml2::ValueAcrossSegOrSegGroup& > (x) == - static_cast< const ::neuroml2::ValueAcrossSegOrSegGroup& > (y))) - return false; - if (!(x.id () == y.id ())) return false; @@ -36051,6 +36489,9 @@ namespace neuroml2 if (!(x.initialExtConcentration () == y.initialExtConcentration ())) return false; + if (!(x.segmentGroup () == y.segmentGroup ())) + return false; + return true; } @@ -45984,6 +46425,14 @@ namespace neuroml2 return o; } + ::std::ostream& + operator<< (::std::ostream& o, const Nml2Quantity_resistivity& i) + { + o << static_cast< const ::xml_schema::string& > (i); + + return o; + } + ::std::ostream& operator<< (::std::ostream& o, const Nml2Quantity_conductance& i) { @@ -48348,52 +48797,35 @@ namespace neuroml2 return o; } - ::std::ostream& - operator<< (::std::ostream& o, const ValueAcrossSegOrSegGroup& i) - { - if (i.value ()) - { - o << ::std::endl << "value: " << *i.value (); - } - - o << ::std::endl << "segmentGroup: " << i.segmentGroup (); - if (i.segment ()) - { - o << ::std::endl << "segment: " << *i.segment (); - } - - return o; - } - ::std::ostream& operator<< (::std::ostream& o, const SpikeThresh& i) { - o << static_cast< const ::neuroml2::ValueAcrossSegOrSegGroup& > (i); - + o << ::std::endl << "value: " << i.value (); + o << ::std::endl << "segmentGroup: " << i.segmentGroup (); return o; } ::std::ostream& operator<< (::std::ostream& o, const SpecificCapacitance& i) { - o << static_cast< const ::neuroml2::ValueAcrossSegOrSegGroup& > (i); - + o << ::std::endl << "value: " << i.value (); + o << ::std::endl << "segmentGroup: " << i.segmentGroup (); return o; } ::std::ostream& operator<< (::std::ostream& o, const InitMembPotential& i) { - o << static_cast< const ::neuroml2::ValueAcrossSegOrSegGroup& > (i); - + o << ::std::endl << "value: " << i.value (); + o << ::std::endl << "segmentGroup: " << i.segmentGroup (); return o; } ::std::ostream& operator<< (::std::ostream& o, const Resistivity& i) { - o << static_cast< const ::neuroml2::ValueAcrossSegOrSegGroup& > (i); - + o << ::std::endl << "value: " << i.value (); + o << ::std::endl << "segmentGroup: " << i.segmentGroup (); return o; } @@ -48610,8 +49042,6 @@ namespace neuroml2 ::std::ostream& operator<< (::std::ostream& o, const Species& i) { - o << static_cast< const ::neuroml2::ValueAcrossSegOrSegGroup& > (i); - o << ::std::endl << "id: " << i.id (); o << ::std::endl << "concentrationModel: " << i.concentrationModel (); if (i.ion ()) @@ -48621,6 +49051,7 @@ namespace neuroml2 o << ::std::endl << "initialConcentration: " << i.initialConcentration (); o << ::std::endl << "initialExtConcentration: " << i.initialExtConcentration (); + o << ::std::endl << "segmentGroup: " << i.segmentGroup (); return o; } @@ -50132,6 +50563,25 @@ namespace neuroml2 l << static_cast< const ::xml_schema::string& > (i); } + void + operator<< (::xercesc::DOMElement& e, const Nml2Quantity_resistivity& i) + { + e << static_cast< const ::xml_schema::string& > (i); + } + + void + operator<< (::xercesc::DOMAttr& a, const Nml2Quantity_resistivity& i) + { + a << static_cast< const ::xml_schema::string& > (i); + } + + void + operator<< (::xml_schema::list_stream& l, + const Nml2Quantity_resistivity& i) + { + l << static_cast< const ::xml_schema::string& > (i); + } + void operator<< (::xercesc::DOMElement& e, const Nml2Quantity_conductance& i) { @@ -56188,20 +56638,19 @@ namespace neuroml2 } void - operator<< (::xercesc::DOMElement& e, const ValueAcrossSegOrSegGroup& i) + operator<< (::xercesc::DOMElement& e, const SpikeThresh& i) { e << static_cast< const ::xml_schema::type& > (i); // value // - if (i.value ()) { ::xercesc::DOMAttr& a ( ::xsd::cxx::xml::dom::create_attribute ( "value", e)); - a << *i.value (); + a << i.value (); } // segmentGroup @@ -56214,42 +56663,90 @@ namespace neuroml2 a << i.segmentGroup (); } + } - // segment + void + operator<< (::xercesc::DOMElement& e, const SpecificCapacitance& i) + { + e << static_cast< const ::xml_schema::type& > (i); + + // value // - if (i.segment ()) { ::xercesc::DOMAttr& a ( ::xsd::cxx::xml::dom::create_attribute ( - "segment", + "value", e)); - a << *i.segment (); + a << i.value (); } - } - void - operator<< (::xercesc::DOMElement& e, const SpikeThresh& i) - { - e << static_cast< const ::neuroml2::ValueAcrossSegOrSegGroup& > (i); - } + // segmentGroup + // + { + ::xercesc::DOMAttr& a ( + ::xsd::cxx::xml::dom::create_attribute ( + "segmentGroup", + e)); - void - operator<< (::xercesc::DOMElement& e, const SpecificCapacitance& i) - { - e << static_cast< const ::neuroml2::ValueAcrossSegOrSegGroup& > (i); + a << i.segmentGroup (); + } } void operator<< (::xercesc::DOMElement& e, const InitMembPotential& i) { - e << static_cast< const ::neuroml2::ValueAcrossSegOrSegGroup& > (i); + e << static_cast< const ::xml_schema::type& > (i); + + // value + // + { + ::xercesc::DOMAttr& a ( + ::xsd::cxx::xml::dom::create_attribute ( + "value", + e)); + + a << i.value (); + } + + // segmentGroup + // + { + ::xercesc::DOMAttr& a ( + ::xsd::cxx::xml::dom::create_attribute ( + "segmentGroup", + e)); + + a << i.segmentGroup (); + } } void operator<< (::xercesc::DOMElement& e, const Resistivity& i) { - e << static_cast< const ::neuroml2::ValueAcrossSegOrSegGroup& > (i); + e << static_cast< const ::xml_schema::type& > (i); + + // value + // + { + ::xercesc::DOMAttr& a ( + ::xsd::cxx::xml::dom::create_attribute ( + "value", + e)); + + a << i.value (); + } + + // segmentGroup + // + { + ::xercesc::DOMAttr& a ( + ::xsd::cxx::xml::dom::create_attribute ( + "segmentGroup", + e)); + + a << i.segmentGroup (); + } } void @@ -56867,7 +57364,7 @@ namespace neuroml2 void operator<< (::xercesc::DOMElement& e, const Species& i) { - e << static_cast< const ::neuroml2::ValueAcrossSegOrSegGroup& > (i); + e << static_cast< const ::xml_schema::type& > (i); // id // @@ -56924,6 +57421,17 @@ namespace neuroml2 a << i.initialExtConcentration (); } + + // segmentGroup + // + { + ::xercesc::DOMAttr& a ( + ::xsd::cxx::xml::dom::create_attribute ( + "segmentGroup", + e)); + + a << i.segmentGroup (); + } } void diff --git a/src/schema/NeuroML_v2.1.hxx b/src/schema/NeuroML_v2.2.hxx similarity index 96% rename from src/schema/NeuroML_v2.1.hxx rename to src/schema/NeuroML_v2.2.hxx index 1dd92bc..a8f19f2 100644 --- a/src/schema/NeuroML_v2.1.hxx +++ b/src/schema/NeuroML_v2.2.hxx @@ -33,11 +33,11 @@ /** * @file - * @brief Generated from NeuroML_v2.1.xsd. + * @brief Generated from NeuroML_v2.2.xsd. */ -#ifndef NEUROML_API_SCHEMA_NEURO_ML_V2_1_HXX -#define NEUROML_API_SCHEMA_NEURO_ML_V2_1_HXX +#ifndef NEUROML_API_SCHEMA_NEURO_ML_V2_2_HXX +#define NEUROML_API_SCHEMA_NEURO_ML_V2_2_HXX #ifndef XSD_CXX11 #define XSD_CXX11 @@ -119,7 +119,6 @@ namespace xml_schema * @brief C++ type corresponding to the anyType XML Schema * built-in type. */ - typedef ::xsd::cxx::tree::type type; /** * @brief C++ type corresponding to the anySimpleType XML Schema @@ -130,7 +129,6 @@ namespace xml_schema /** * @brief Alias for the anyType type. */ - typedef ::xsd::cxx::tree::type container; // 8-bit @@ -627,6 +625,7 @@ namespace neuroml2 class Nml2Quantity_voltage; class Nml2Quantity_length; class Nml2Quantity_resistance; + class Nml2Quantity_resistivity; class Nml2Quantity_conductance; class Nml2Quantity_conductanceDensity; class Nml2Quantity_permeability; @@ -755,7 +754,6 @@ namespace neuroml2 class BiophysicalProperties2CaPools; class MembraneProperties; class MembraneProperties2CaPools; - class ValueAcrossSegOrSegGroup; class SpikeThresh; class SpecificCapacitance; class InitMembPotential; @@ -1550,6 +1548,118 @@ namespace neuroml2 ~Nml2Quantity_resistance (); }; + /** + * @brief Class corresponding to the %Nml2Quantity_resistivity schema type. + * + * @nosubgrouping + */ + class Nml2Quantity_resistivity: public ::xml_schema::string + { + public: + /** + * @name Constructors + */ + //@{ + + /** + * @brief Create an instance from initializers for required + * elements and attributes. + */ + Nml2Quantity_resistivity (); + + /** + * @brief Create an instance from a C string and initializers + * for required elements and attributes. + */ + Nml2Quantity_resistivity (const char*); + + /** + * @brief Create an instance from a string andinitializers + * for required elements and attributes. + */ + Nml2Quantity_resistivity (const ::std::string&); + + /** + * @brief Create an instance from the ultimate base and + * initializers for required elements and attributes. + */ + Nml2Quantity_resistivity (const ::xml_schema::string&); + + /** + * @brief Create an instance from a DOM element. + * + * @param e A DOM element to extract the data from. + * @param f Flags to create the new instance with. + * @param c A pointer to the object that will contain the new + * instance. + */ + Nml2Quantity_resistivity (const ::xercesc::DOMElement& e, + ::xml_schema::flags f = 0, + ::xml_schema::container* c = 0); + + /** + * @brief Create an instance from a DOM attribute. + * + * @param a A DOM attribute to extract the data from. + * @param f Flags to create the new instance with. + * @param c A pointer to the object that will contain the new + * instance. + */ + Nml2Quantity_resistivity (const ::xercesc::DOMAttr& a, + ::xml_schema::flags f = 0, + ::xml_schema::container* c = 0); + + /** + * @brief Create an instance from a string fragment. + * + * @param s A string fragment to extract the data from. + * @param e A pointer to DOM element containing the string fragment. + * @param f Flags to create the new instance with. + * @param c A pointer to the object that will contain the new + * instance. + */ + Nml2Quantity_resistivity (const ::std::string& s, + const ::xercesc::DOMElement* e, + ::xml_schema::flags f = 0, + ::xml_schema::container* c = 0); + + /** + * @brief Copy constructor. + * + * @param x An instance to make a copy of. + * @param f Flags to create the copy with. + * @param c A pointer to the object that will contain the copy. + * + * For polymorphic object models use the @c _clone function instead. + */ + Nml2Quantity_resistivity (const Nml2Quantity_resistivity& x, + ::xml_schema::flags f = 0, + ::xml_schema::container* c = 0); + + /** + * @brief Copy the instance polymorphically. + * + * @param f Flags to create the copy with. + * @param c A pointer to the object that will contain the copy. + * @return A pointer to the dynamically allocated copy. + * + * This function ensures that the dynamic type of the instance is + * used for copying and should be used for polymorphic object + * models instead of the copy constructor. + */ + virtual Nml2Quantity_resistivity* + _clone (::xml_schema::flags f = 0, + ::xml_schema::container* c = 0) const; + + //@} + + /** + * @brief Destructor. + */ + virtual + ~Nml2Quantity_resistivity (); + }; + /** * @brief Class corresponding to the %Nml2Quantity_conductance schema type. * @@ -3730,11 +3840,21 @@ namespace neuroml2 /** * @brief Class corresponding to the %Property schema type. * - * Generic property with a tag and value + * 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** * * @nosubgrouping */ - class Property: public ::xml_schema::type { public: /** @@ -3951,11 +4071,11 @@ namespace neuroml2 /** * @brief Class corresponding to the %Annotation schema type. * - * Placeholder for MIRIAM related metadata, among others. + * A structured annotation containing metadata, specifically RDF or + * **property** elements * * @nosubgrouping */ - class Annotation: public ::xml_schema::type { public: /** @@ -4046,7 +4166,6 @@ namespace neuroml2 ComponentType. * * @nosubgrouping */ - class ComponentType: public ::xml_schema::type { public: /** @@ -4816,7 +4935,6 @@ namespace neuroml2 * * @nosubgrouping */ - class Constant: public ::xml_schema::type { public: /** @@ -5174,7 +5292,6 @@ namespace neuroml2 * * @nosubgrouping */ - class Exposure: public ::xml_schema::type { public: /** @@ -5470,7 +5587,6 @@ namespace neuroml2 * * @nosubgrouping */ - class NamedDimensionalType: public ::xml_schema::type { public: /** @@ -5766,7 +5882,6 @@ namespace neuroml2 * * @nosubgrouping */ - class NamedDimensionalVariable: public ::xml_schema::type { public: /** @@ -6444,7 +6559,6 @@ namespace neuroml2 * * @nosubgrouping */ - class InstanceRequirement: public ::xml_schema::type { public: /** @@ -6665,7 +6779,6 @@ namespace neuroml2 * * @nosubgrouping */ - class Dynamics: public ::xml_schema::type { public: /** @@ -7517,7 +7630,6 @@ namespace neuroml2 * * @nosubgrouping */ - class Case: public ::xml_schema::type { public: /** @@ -7753,7 +7865,6 @@ namespace neuroml2 * * @nosubgrouping */ - class TimeDerivative: public ::xml_schema::type { public: /** @@ -8072,7 +8183,6 @@ namespace neuroml2 * * @nosubgrouping */ - class BaseWithoutId: public ::xml_schema::type { public: /** @@ -13265,7 +13375,6 @@ namespace neuroml2 * * @nosubgrouping */ - class IncludeType: public ::xml_schema::type { public: /** @@ -13587,7 +13696,10 @@ namespace neuroml2 /** * @brief Class corresponding to the %IonChannelKS schema type. * - * Kinetic scheme based ion channel. + * 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 + * @param conductance * * @nosubgrouping */ @@ -13908,10 +14020,11 @@ namespace neuroml2 /** * @brief Class corresponding to the %IonChannel schema type. * - * 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. + * 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. + * @param conductance * * @nosubgrouping */ @@ -14764,10 +14877,11 @@ namespace neuroml2 /** * @brief Class corresponding to the %IonChannelHH schema type. * - * 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. + * 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. + * @param conductance * * @nosubgrouping */ @@ -14837,9 +14951,11 @@ namespace neuroml2 /** * @brief Class corresponding to the %IonChannelVShift schema type. * - * 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. + * 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. + * @param vShift + * @param conductance * * @nosubgrouping */ @@ -15146,9 +15262,15 @@ namespace neuroml2 /** * @brief Class corresponding to the %Q10ConductanceScaling schema type. * + * 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** + * @param q10Factor + * @param experimentalTemp + * * @nosubgrouping */ - class Q10ConductanceScaling: public ::xml_schema::type { public: /** @@ -15516,6 +15638,9 @@ namespace neuroml2 /** * @brief Class corresponding to the %ClosedState schema type. * + * A **KSState** with **relativeConductance** of 0 + * @param relativeConductance + * * @nosubgrouping */ class ClosedState: public ::neuroml2::Base @@ -15584,6 +15709,9 @@ namespace neuroml2 /** * @brief Class corresponding to the %OpenState schema type. * + * A **KSState** with **relativeConductance** of 1 + * @param relativeConductance + * * @nosubgrouping */ class OpenState: public ::neuroml2::Base @@ -15652,6 +15780,11 @@ namespace neuroml2 /** * @brief Class corresponding to the %ForwardTransition schema type. * + * 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** + * * @nosubgrouping */ class ForwardTransition: public ::neuroml2::Base @@ -15872,6 +16005,11 @@ namespace neuroml2 /** * @brief Class corresponding to the %ReverseTransition schema type. * + * 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** + * * @nosubgrouping */ class ReverseTransition: public ::neuroml2::Base @@ -16092,6 +16230,9 @@ namespace neuroml2 /** * @brief Class corresponding to the %TauInfTransition schema type. * + * KS Transition specified in terms of time constant **tau** and steady + * state **inf** + * * @nosubgrouping */ class TauInfTransition: public ::neuroml2::Base @@ -16446,6 +16587,10 @@ namespace neuroml2 /** * @brief Class corresponding to the %GateKS schema type. * + * A gate which consists of multiple **KSState** s and **KSTransition** + * s giving the rates of transition between them + * @param instances + * * @nosubgrouping */ class GateKS: public ::neuroml2::Base @@ -17836,6 +17981,9 @@ namespace neuroml2 /** * @brief Class corresponding to the %GateHHRates schema type. * + * Gate which follows the general Hodgkin Huxley formalism + * @param instances + * * @nosubgrouping */ class GateHHRates: public ::neuroml2::Base @@ -18283,6 +18431,9 @@ namespace neuroml2 /** * @brief Class corresponding to the %GateHHTauInf schema type. * + * Gate which follows the general Hodgkin Huxley formalism + * @param instances + * * @nosubgrouping */ class GateHHTauInf: public ::neuroml2::Base @@ -18730,6 +18881,9 @@ namespace neuroml2 /** * @brief Class corresponding to the %GateHHRatesTauInf schema type. * + * Gate which follows the general Hodgkin Huxley formalism + * @param instances + * * @nosubgrouping */ class GateHHRatesTauInf: public ::neuroml2::Base @@ -19299,6 +19453,9 @@ namespace neuroml2 /** * @brief Class corresponding to the %GateHHRatesTau schema type. * + * Gate which follows the general Hodgkin Huxley formalism + * @param instances + * * @nosubgrouping */ class GateHHRatesTau: public ::neuroml2::Base @@ -19807,6 +19964,9 @@ namespace neuroml2 /** * @brief Class corresponding to the %GateHHRatesInf schema type. * + * Gate which follows the general Hodgkin Huxley formalism + * @param instances + * * @nosubgrouping */ class GateHHRatesInf: public ::neuroml2::Base @@ -20315,6 +20475,10 @@ namespace neuroml2 /** * @brief Class corresponding to the %GateHHInstantaneous schema type. * + * Gate which follows the general Hodgkin Huxley formalism but is + * instantaneous, so tau = 0 and gate follows exactly inf value + * @param instances + * * @nosubgrouping */ class GateHHInstantaneous: public ::neuroml2::Base @@ -20624,6 +20788,9 @@ namespace neuroml2 /** * @brief Class corresponding to the %GateFractional schema type. * + * Gate composed of subgates contributing with fractional conductance + * @param instances + * * @nosubgrouping */ class GateFractional: public ::neuroml2::Base @@ -21452,7 +21619,6 @@ namespace neuroml2 * * @nosubgrouping */ - class Q10Settings: public ::xml_schema::type { public: /** @@ -21842,7 +22008,6 @@ namespace neuroml2 * * @nosubgrouping */ - class HHRate: public ::xml_schema::type { public: /** @@ -22232,7 +22397,6 @@ namespace neuroml2 * * @nosubgrouping */ - class HHVariable: public ::xml_schema::type { public: /** @@ -22611,7 +22775,6 @@ namespace neuroml2 * * @nosubgrouping */ - class HHTime: public ::xml_schema::type { public: /** @@ -23076,6 +23239,15 @@ namespace neuroml2 /** * @brief Class corresponding to the %DecayingPoolConcentrationModel schema type. * + * 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.** + * @param restingConc + * @param decayConstant + * @param shellThickness + * * @nosubgrouping */ class DecayingPoolConcentrationModel: public ::neuroml2::Standalone @@ -23086,8 +23258,6 @@ namespace neuroml2 * * @brief Accessor and modifier functions for the %ion * required attribute. - * - * Should not be required, as it's present on the species element! */ //@{ @@ -23418,6 +23588,16 @@ namespace neuroml2 /** * @brief Class corresponding to the %FixedFactorConcentrationModel schema type. * + * 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. + * @param restingConc + * @param decayConstant + * @param rho + * * @nosubgrouping */ class FixedFactorConcentrationModel: public ::neuroml2::Standalone @@ -23428,8 +23608,6 @@ namespace neuroml2 * * @brief Accessor and modifier functions for the %ion * required attribute. - * - * Should not be required, as it's present on the species element! */ //@{ @@ -23760,6 +23938,10 @@ namespace neuroml2 /** * @brief Class corresponding to the %BaseSynapse schema type. * + * 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 + * * @nosubgrouping */ class BaseSynapse: public ::neuroml2::Standalone @@ -23828,6 +24010,8 @@ namespace neuroml2 /** * @brief Class corresponding to the %BaseVoltageDepSynapse schema type. * + * Base type for synapses with a dependence on membrane potential + * * @nosubgrouping */ class BaseVoltageDepSynapse: public ::neuroml2::BaseSynapse @@ -23896,6 +24080,8 @@ namespace neuroml2 /** * @brief Class corresponding to the %BaseCurrentBasedSynapse schema type. * + * Synapse model which produces a synaptic current. + * * @nosubgrouping */ class BaseCurrentBasedSynapse: public ::neuroml2::BaseSynapse @@ -23964,6 +24150,12 @@ namespace neuroml2 /** * @brief Class corresponding to the %BaseConductanceBasedSynapse schema type. * + * Synapse model which exposes a conductance **g** in addition to + * producing a current. Not necessarily ohmic!! cno_0000027 + * @param gbase Baseline conductance, generally the maximum conductance + * following a single spike + * @param erev Reversal potential of the synapse + * * @nosubgrouping */ class BaseConductanceBasedSynapse: public ::neuroml2::BaseVoltageDepSynapse @@ -24184,6 +24376,13 @@ namespace neuroml2 /** * @brief Class corresponding to the %BaseConductanceBasedSynapseTwo schema type. * + * 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 + * @param gbase1 Baseline conductance 1 + * @param gbase2 Baseline conductance 2 + * @param erev Reversal potential of the synapse + * * @nosubgrouping */ class BaseConductanceBasedSynapseTwo: public ::neuroml2::BaseVoltageDepSynapse @@ -24464,6 +24663,9 @@ namespace neuroml2 /** * @brief Class corresponding to the %GapJunction schema type. * + * Gap junction/single electrical connection + * @param conductance + * * @nosubgrouping */ class GapJunction: public ::neuroml2::BaseSynapse @@ -24624,6 +24826,9 @@ namespace neuroml2 /** * @brief Class corresponding to the %SilentSynapse schema type. * + * Dummy synapse which emits no current. Used as presynaptic endpoint for + * analog synaptic connection. + * * @nosubgrouping */ class SilentSynapse: public ::neuroml2::BaseSynapse @@ -24692,6 +24897,9 @@ namespace neuroml2 /** * @brief Class corresponding to the %LinearGradedSynapse schema type. * + * Behaves just like a one way gap junction. + * @param conductance + * * @nosubgrouping */ class LinearGradedSynapse: public ::neuroml2::BaseSynapse @@ -24852,6 +25060,14 @@ namespace neuroml2 /** * @brief Class corresponding to the %GradedSynapse schema type. * + * Graded/analog synapse. Based on synapse in Methods of http://www. + * nature.com/neuro/journal/v7/n12/abs/nn1352.html + * @param conductance + * @param delta Slope of the activation curve + * @param k Rate constant for transmitter-receptor dissociation rate + * @param Vth The half-activation voltage of the synapse + * @param erev The reversal potential of the synapse + * * @nosubgrouping */ class GradedSynapse: public ::neuroml2::BaseSynapse @@ -25252,6 +25468,10 @@ namespace neuroml2 /** * @brief Class corresponding to the %AlphaCurrentSynapse schema type. * + * Alpha current synapse: rise time and decay time are both **tau.** + * @param tau Time course for rise and decay + * @param ibase Baseline current increase after receiving a spike + * * @nosubgrouping */ class AlphaCurrentSynapse: public ::neuroml2::BaseCurrentBasedSynapse @@ -25472,6 +25692,14 @@ namespace neuroml2 /** * @brief Class corresponding to the %AlphaSynapse schema type. * + * 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.** + * @param tau Time course of rise/decay + * @param gbase Baseline conductance, generally the maximum conductance + * following a single spike + * @param erev Reversal potential of the synapse + * * @nosubgrouping */ class AlphaSynapse: public ::neuroml2::BaseConductanceBasedSynapse @@ -25634,6 +25862,14 @@ namespace neuroml2 /** * @brief Class corresponding to the %ExpOneSynapse schema type. * + * Ohmic synapse model whose conductance rises instantaneously by ( + * **gbase** * **weight** ) on receiving an event, and which decays + * exponentially to zero with time course **tauDecay** + * @param tauDecay Time course of decay + * @param gbase Baseline conductance, generally the maximum conductance + * following a single spike + * @param erev Reversal potential of the synapse + * * @nosubgrouping */ class ExpOneSynapse: public ::neuroml2::BaseConductanceBasedSynapse @@ -25796,6 +26032,16 @@ namespace neuroml2 /** * @brief Class corresponding to the %ExpTwoSynapse schema type. * + * 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.** + * @param tauRise + * @param tauDecay + * @param gbase Baseline conductance, generally the maximum conductance + * following a single spike + * @param erev Reversal potential of the synapse + * * @nosubgrouping */ class ExpTwoSynapse: public ::neuroml2::BaseConductanceBasedSynapse @@ -26018,6 +26264,16 @@ namespace neuroml2 /** * @brief Class corresponding to the %ExpThreeSynapse schema type. * + * 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. + * @param tauRise + * @param tauDecay1 + * @param tauDecay2 + * @param gbase1 Baseline conductance 1 + * @param gbase2 Baseline conductance 2 + * @param erev Reversal potential of the synapse + * * @nosubgrouping */ class ExpThreeSynapse: public ::neuroml2::BaseConductanceBasedSynapseTwo @@ -26301,6 +26557,9 @@ namespace neuroml2 /** * @brief Class corresponding to the %DoubleSynapse schema type. * + * Synapse consisting of two independent synaptic mechanisms ( e. g. + * AMPA-R and NMDA-R ), which can be easily colocated in connections + * * @nosubgrouping */ class DoubleSynapse: public ::neuroml2::BaseVoltageDepSynapse @@ -26641,6 +26900,14 @@ namespace neuroml2 /** * @brief Class corresponding to the %BlockingPlasticSynapse schema type. * + * Biexponential synapse that allows for optional block and plasticity + * mechanisms, which can be expressed as child elements. + * @param tauRise + * @param tauDecay + * @param gbase Baseline conductance, generally the maximum conductance + * following a single spike + * @param erev Reversal potential of the synapse + * * @nosubgrouping */ class BlockingPlasticSynapse: public ::neuroml2::ExpTwoSynapse @@ -27045,7 +27312,6 @@ namespace neuroml2 * * @nosubgrouping */ - class BlockMechanism: public ::xml_schema::type { public: /** @@ -27589,7 +27855,6 @@ namespace neuroml2 * * @nosubgrouping */ - class PlasticityMechanism: public ::xml_schema::type { public: /** @@ -27943,6 +28208,10 @@ namespace neuroml2 /** * @brief Class corresponding to the %BaseCell schema type. * + * 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** + * * @nosubgrouping */ class BaseCell: public ::neuroml2::Standalone @@ -28011,6 +28280,14 @@ namespace neuroml2 /** * @brief Class corresponding to the %IafTauCell schema type. * + * Integrate and fire cell which returns to its leak reversal potential + * of **leakReversal** with a time constant **tau** + * @param leakReversal + * @param tau + * @param thresh The membrane potential at which to emit a spiking event + * and reset voltage + * @param reset The value the membrane potential is reset to on spiking + * * @nosubgrouping */ class IafTauCell: public ::neuroml2::BaseCell @@ -28351,6 +28628,16 @@ namespace neuroml2 /** * @brief Class corresponding to the %IafTauRefCell schema type. * + * 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 + * @param refract + * @param leakReversal + * @param tau + * @param thresh The membrane potential at which to emit a spiking event + * and reset voltage + * @param reset The value the membrane potential is reset to on spiking + * * @nosubgrouping */ class IafTauRefCell: public ::neuroml2::IafTauCell @@ -28515,6 +28802,14 @@ namespace neuroml2 /** * @brief Class corresponding to the %IafCell schema type. * + * Integrate and fire cell with capacitance **C,** **leakConductance** + * and **leakReversal** + * @param leakConductance + * @param leakReversal + * @param thresh + * @param reset + * @param C Total capacitance of the cell membrane + * * @nosubgrouping */ class IafCell: public ::neuroml2::BaseCell @@ -28915,6 +29210,15 @@ namespace neuroml2 /** * @brief Class corresponding to the %IafRefCell schema type. * + * Integrate and fire cell with capacitance **C,** **leakConductance,** + * **leakReversal** and refractory period **refract** + * @param refract + * @param leakConductance + * @param leakReversal + * @param thresh + * @param reset + * @param C Total capacitance of the cell membrane + * * @nosubgrouping */ class IafRefCell: public ::neuroml2::IafCell @@ -29080,6 +29384,16 @@ namespace neuroml2 /** * @brief Class corresponding to the %IzhikevichCell schema type. * + * Cell based on the 2003 model of Izhikevich, see + * http://izhikevich.org/publications/spikes.htm + * @param v0 Initial membrane potential + * @param a Time scale of the recovery variable U + * @param b Sensitivity of U to the subthreshold fluctuations of the + * membrane potential V + * @param c After-spike reset value of V + * @param d After-spike increase to U + * @param thresh Spike threshold + * * @nosubgrouping */ class IzhikevichCell: public ::neuroml2::BaseCell @@ -29540,6 +29854,12 @@ namespace neuroml2 /** * @brief Class corresponding to the %BaseCellMembPotCap schema type. * + * 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** ) + * @param C Total capacitance of the cell membrane + * * @nosubgrouping */ class BaseCellMembPotCap: public ::neuroml2::BaseCell @@ -29550,9 +29870,6 @@ namespace neuroml2 * * @brief Accessor and modifier functions for the %C * required attribute. - * - * This is to prevent it conflicting with attribute c (lowercase) e.g. in - * izhikevichCell2007 */ //@{ @@ -29703,6 +30020,19 @@ namespace neuroml2 /** * @brief Class corresponding to the %Izhikevich2007Cell schema type. * + * Cell based on the modified Izhikevich model in Izhikevich 2007, + * Dynamical systems in neuroscience, MIT Press + * @param v0 + * @param k + * @param vr + * @param vt + * @param vpeak + * @param a + * @param b + * @param c + * @param d + * @param C Total capacitance of the cell membrane + * * @nosubgrouping */ class Izhikevich2007Cell: public ::neuroml2::BaseCellMembPotCap @@ -30344,6 +30674,21 @@ namespace neuroml2 /** * @brief Class corresponding to the %AdExIaFCell schema type. * + * 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 + * @param gL + * @param EL + * @param VT + * @param thresh + * @param reset + * @param delT + * @param tauw + * @param refract + * @param a + * @param b + * @param C Total capacitance of the cell membrane + * * @nosubgrouping */ class AdExIaFCell: public ::neuroml2::BaseCellMembPotCap @@ -31045,6 +31390,11 @@ namespace neuroml2 /** * @brief Class corresponding to the %FitzHughNagumoCell schema type. * + * Simple dimensionless model of spiking cell from FitzHugh and Nagumo. + * Superseded by **fitzHughNagumo1969Cell** ( See + * https://github.com/NeuroML/NeuroML2/issues/42 ) + * @param I + * * @nosubgrouping */ class FitzHughNagumoCell: public ::neuroml2::BaseCell @@ -31205,6 +31555,25 @@ namespace neuroml2 /** * @brief Class corresponding to the %FitzHughNagumo1969Cell schema type. * + * 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. + * ) + * @param a + * @param b + * @param I plays the role of an external injected current + * @param phi + * @param V0 + * @param W0 + * * @nosubgrouping */ class FitzHughNagumo1969Cell: public ::neuroml2::BaseCell @@ -31665,6 +32034,30 @@ namespace neuroml2 /** * @brief Class corresponding to the %PinskyRinzelCA3Cell schema type. * + * Reduced CA3 cell model from Pinsky and Rinzel 1994. See + * https://github.com/OpenSourceBrain/PinskyRinzelModel + * @param iSoma + * @param iDend + * @param gLs + * @param gLd + * @param gNa + * @param gKdr + * @param gCa + * @param gKahp + * @param gKC + * @param gc + * @param eNa + * @param eCa + * @param eK + * @param eL + * @param pp + * @param cm + * @param alphac + * @param betac + * @param gNmda + * @param gAmpa + * @param qd0 + * * @nosubgrouping */ class PinskyRinzelCA3Cell: public ::neuroml2::BaseCell @@ -33025,6 +33418,12 @@ namespace neuroml2 /** * @brief Class corresponding to the %Cell schema type. * + * 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. + * * @nosubgrouping */ class Cell: public ::neuroml2::BaseCell @@ -33187,9 +33586,6 @@ namespace neuroml2 * * @brief Accessor and modifier functions for the %morphology * optional attribute. - * - * Should only be used if morphology element is outside the cell. - * This points to the id of the morphology */ //@{ @@ -33266,10 +33662,6 @@ namespace neuroml2 * * @brief Accessor and modifier functions for the %biophysicalProperties * optional attribute. - * - * Should only be used if biophysicalProperties element is outside the - * cell. - * This points to the id of the biophysicalProperties */ //@{ @@ -33440,6 +33832,13 @@ namespace neuroml2 /** * @brief Class corresponding to the %Cell2CaPools schema type. * + * 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. + * * @nosubgrouping */ class Cell2CaPools: public ::neuroml2::Cell @@ -33617,9 +34016,8 @@ namespace neuroml2 /** * @brief Class corresponding to the %Morphology schema type. * - * Standalone element which is usually inside a single cell, but could be - * outside and - * referenced by id. + * The collection of **segment** s which specify the 3D structure of the + * cell, along with a number of **segmentGroup** s * * @nosubgrouping */ @@ -34013,6 +34411,23 @@ namespace neuroml2 /** * @brief Class corresponding to the %Segment schema type. * + * 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. + * * @nosubgrouping */ class Segment_base: public ::neuroml2::BaseNonNegativeIntegerId @@ -34417,7 +34832,6 @@ namespace neuroml2 * * @nosubgrouping */ - class SegmentParent: public ::xml_schema::type { public: /** @@ -34641,11 +35055,24 @@ namespace neuroml2 /** * @brief Class corresponding to the %Point3DWithDiam schema type. * - * A 3D point with diameter. + * 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. + * @param x: x coordinate of the point. Note no dimension used, see + * description of **point3DWithDiam** for details. + * @param y: y coordinate of the ppoint. Note no dimension used, see + * description of **point3DWithDiam** for details. + * @param z: z coordinate of the ppoint. Note no dimension used, see + * description of **point3DWithDiam** for details. + * @param diameter: Diameter of the ppoint. Note no dimension used, see + * description of **point3DWithDiam** for details. * * @nosubgrouping */ - class Point3DWithDiam: public ::xml_schema::type { public: /** @@ -34949,6 +35376,19 @@ namespace neuroml2 /** * @brief Class corresponding to the %SegmentGroup schema type. * + * 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 ). + * * @nosubgrouping */ class SegmentGroup: public ::neuroml2::Base @@ -35593,6 +36033,9 @@ namespace neuroml2 /** * @brief Class corresponding to the %InhomogeneousParameter schema type. * + * An inhomogeneous parameter specified across the **segmentGroup** ( + * see **variableParameter** for usage ). + * * @nosubgrouping */ class InhomogeneousParameter: public ::neuroml2::Base @@ -36115,7 +36558,6 @@ namespace neuroml2 * * @nosubgrouping */ - class ProximalDetails: public ::xml_schema::type { public: /** @@ -36263,7 +36705,6 @@ namespace neuroml2 * * @nosubgrouping */ - class DistalDetails: public ::xml_schema::type { public: /** @@ -36409,9 +36850,10 @@ namespace neuroml2 /** * @brief Class corresponding to the %Member schema type. * + * A single identified **segment** which is part of the + **segmentGroup** * * @nosubgrouping */ - class Member: public ::xml_schema::type { public: /** @@ -36568,9 +37010,10 @@ namespace neuroml2 /** * @brief Class corresponding to the %Include schema type. * + * Include all members of another **segmentGroup** in this group + * * @nosubgrouping */ - class Include: public ::xml_schema::type { public: /** @@ -36727,9 +37170,11 @@ namespace neuroml2 /** * @brief Class corresponding to the %Path schema type. * + * Include all the **segment** s between those specified by **from** + * and **to** , inclusive + * * @nosubgrouping */ - class Path: public ::xml_schema::type { public: /** @@ -36981,9 +37426,11 @@ namespace neuroml2 /** * @brief Class corresponding to the %SubTree schema type. * + * Include all the **segment** s distal to that specified by **from** + * in the **segmentGroup** + * * @nosubgrouping */ - class SubTree: public ::xml_schema::type { public: /** @@ -37237,7 +37684,6 @@ namespace neuroml2 * * @nosubgrouping */ - class SegmentEndPoint: public ::xml_schema::type { public: /** @@ -37394,9 +37840,8 @@ namespace neuroml2 /** * @brief Class corresponding to the %BiophysicalProperties schema type. * - * Standalone element which is usually inside a single cell, but could be - * outside and - * referenced by id. + * The biophysical properties of the **cell** , including the + * **membraneProperties** and the **intracellularProperties** * * @nosubgrouping */ @@ -37723,9 +38168,9 @@ namespace neuroml2 /** * @brief Class corresponding to the %BiophysicalProperties2CaPools schema type. * - * Standalone element which is usually inside a single cell, but could be - * outside and - * referenced by id. + * The biophysical properties of the **cell** , including the + * **membraneProperties2CaPools** and the + * **intracellularProperties2CaPools** for a cell with two Ca pools * * @nosubgrouping */ @@ -38052,9 +38497,11 @@ namespace neuroml2 /** * @brief Class corresponding to the %MembraneProperties schema type. * + * Properties specific to the membrane, such as the **populations** of + * channels, **channelDensities,** **specificCapacitance,** etc. + * * @nosubgrouping */ - class MembraneProperties: public ::xml_schema::type { public: /** @@ -38932,6 +39379,8 @@ namespace neuroml2 /** * @brief Class corresponding to the %MembraneProperties2CaPools schema type. * + * Variant of membraneProperties with 2 independent Ca pools + * * @nosubgrouping */ class MembraneProperties2CaPools: public ::neuroml2::MembraneProperties @@ -39095,30 +39544,30 @@ namespace neuroml2 /** - * @brief Class corresponding to the %ValueAcrossSegOrSegGroup schema type. + * @brief Class corresponding to the %SpikeThresh schema type. + * + * 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 + * @param value * * @nosubgrouping */ - class ValueAcrossSegOrSegGroup: public ::xml_schema::type { public: /** * @name value * * @brief Accessor and modifier functions for the %value - * optional attribute. + * required attribute. */ //@{ /** * @brief Attribute type. */ - typedef ::neuroml2::Nml2Quantity value_type; - - /** - * @brief Attribute optional container type. - */ - typedef ::xsd::cxx::tree::optional< value_type > value_optional; + typedef ::neuroml2::Nml2Quantity_voltage value_type; /** * @brief Attribute traits type. @@ -39126,20 +39575,19 @@ namespace neuroml2 typedef ::xsd::cxx::tree::traits< value_type, char > value_traits; /** - * @brief Return a read-only (constant) reference to the attribute - * container. + * @brief Return a read-only (constant) reference to the attribute. * - * @return A constant reference to the optional container. + * @return A constant reference to the attribute. */ - const value_optional& + const value_type& value () const; /** - * @brief Return a read-write reference to the attribute container. + * @brief Return a read-write reference to the attribute. * - * @return A reference to the optional container. + * @return A reference to the attribute. */ - value_optional& + value_type& value (); /** @@ -39153,25 +39601,13 @@ namespace neuroml2 void value (const value_type& x); - /** - * @brief Set the attribute value. - * - * @param x An optional container with the new value to set. - * - * If the value is present in @a x then this function makes a copy - * of this value and sets it as the new value of the attribute. - * Otherwise the attribute container is set the 'not present' state. - */ - void - value (const value_optional& x); - /** * @brief Set the attribute value without copying. * * @param p A new value to use. * - * This function will try to use the passed value directly instead - * of making a copy. + * This function will try to use the passed value directly + * instead of making a copy. */ void value (::std::unique_ptr< value_type > p); @@ -39246,44 +39682,143 @@ namespace neuroml2 //@} /** - * @name segment - * - * @brief Accessor and modifier functions for the %segment - * optional attribute. + * @name Constructors */ //@{ /** - * @brief Attribute type. + * @brief Create an instance from the ultimate base and + * initializers for required elements and attributes. */ - typedef ::neuroml2::NmlId segment_type; + SpikeThresh (const value_type&); /** - * @brief Attribute optional container type. + * @brief Create an instance from a DOM element. + * + * @param e A DOM element to extract the data from. + * @param f Flags to create the new instance with. + * @param c A pointer to the object that will contain the new + * instance. */ - typedef ::xsd::cxx::tree::optional< segment_type > segment_optional; + SpikeThresh (const ::xercesc::DOMElement& e, + ::xml_schema::flags f = 0, + ::xml_schema::container* c = 0); + + /** + * @brief Copy constructor. + * + * @param x An instance to make a copy of. + * @param f Flags to create the copy with. + * @param c A pointer to the object that will contain the copy. + * + * For polymorphic object models use the @c _clone function instead. + */ + SpikeThresh (const SpikeThresh& x, + ::xml_schema::flags f = 0, + ::xml_schema::container* c = 0); + + /** + * @brief Copy the instance polymorphically. + * + * @param f Flags to create the copy with. + * @param c A pointer to the object that will contain the copy. + * @return A pointer to the dynamically allocated copy. + * + * This function ensures that the dynamic type of the instance is + * used for copying and should be used for polymorphic object + * models instead of the copy constructor. + */ + virtual SpikeThresh* + _clone (::xml_schema::flags f = 0, + ::xml_schema::container* c = 0) const; + + /** + * @brief Copy assignment operator. + * + * @param x An instance to make a copy of. + * @return A reference to itself. + * + * For polymorphic object models use the @c _clone function instead. + */ + SpikeThresh& + operator= (const SpikeThresh& x); + + //@} + + /** + * @brief Destructor. + */ + virtual + ~SpikeThresh (); + + // Implementation. + // + + //@cond + + protected: + void + parse (::xsd::cxx::xml::dom::parser< char >&, + ::xml_schema::flags); + + protected: + ::xsd::cxx::tree::one< value_type > value_; + ::xsd::cxx::tree::one< segmentGroup_type > segmentGroup_; + static const segmentGroup_type segmentGroup_default_value_; + + //@endcond + }; + + bool + operator== (const SpikeThresh&, const SpikeThresh&); + + bool + operator!= (const SpikeThresh&, const SpikeThresh&); + + + /** + * @brief Class corresponding to the %SpecificCapacitance schema type. + * + * Capacitance per unit area + * @param value + * + * @nosubgrouping + */ + { + public: + /** + * @name value + * + * @brief Accessor and modifier functions for the %value + * required attribute. + */ + //@{ + + /** + * @brief Attribute type. + */ + typedef ::neuroml2::Nml2Quantity_specificCapacitance value_type; /** * @brief Attribute traits type. */ - typedef ::xsd::cxx::tree::traits< segment_type, char > segment_traits; + typedef ::xsd::cxx::tree::traits< value_type, char > value_traits; /** - * @brief Return a read-only (constant) reference to the attribute - * container. + * @brief Return a read-only (constant) reference to the attribute. * - * @return A constant reference to the optional container. + * @return A constant reference to the attribute. */ - const segment_optional& - segment () const; + const value_type& + value () const; /** - * @brief Return a read-write reference to the attribute container. + * @brief Return a read-write reference to the attribute. * - * @return A reference to the optional container. + * @return A reference to the attribute. */ - segment_optional& - segment (); + value_type& + value (); /** * @brief Set the attribute value. @@ -39294,30 +39829,85 @@ namespace neuroml2 * the new value of the attribute. */ void - segment (const segment_type& x); + value (const value_type& x); + + /** + * @brief Set the attribute value without copying. + * + * @param p A new value to use. + * + * This function will try to use the passed value directly + * instead of making a copy. + */ + void + value (::std::unique_ptr< value_type > p); + + //@} + + /** + * @name segmentGroup + * + * @brief Accessor and modifier functions for the %segmentGroup + * optional attribute with a default value. + */ + //@{ + + /** + * @brief Attribute type. + */ + typedef ::neuroml2::NmlId segmentGroup_type; + + /** + * @brief Attribute traits type. + */ + typedef ::xsd::cxx::tree::traits< segmentGroup_type, char > segmentGroup_traits; + + /** + * @brief Return a read-only (constant) reference to the attribute. + * + * @return A constant reference to the attribute. + */ + const segmentGroup_type& + segmentGroup () const; + + /** + * @brief Return a read-write reference to the attribute. + * + * @return A reference to the attribute. + */ + segmentGroup_type& + segmentGroup (); /** * @brief Set the attribute value. * - * @param x An optional container with the new value to set. + * @param x A new value to set. * - * If the value is present in @a x then this function makes a copy - * of this value and sets it as the new value of the attribute. - * Otherwise the attribute container is set the 'not present' state. + * This function makes a copy of its argument and sets it as + * the new value of the attribute. */ void - segment (const segment_optional& x); + segmentGroup (const segmentGroup_type& x); /** * @brief Set the attribute value without copying. * * @param p A new value to use. * - * This function will try to use the passed value directly instead - * of making a copy. + * This function will try to use the passed value directly + * instead of making a copy. */ void - segment (::std::unique_ptr< segment_type > p); + segmentGroup (::std::unique_ptr< segmentGroup_type > p); + + /** + * @brief Return the default value for the attribute. + * + * @return A read-only (constant) reference to the attribute's + * default value. + */ + static const segmentGroup_type& + segmentGroup_default_value (); //@} @@ -39330,7 +39920,7 @@ namespace neuroml2 * @brief Create an instance from the ultimate base and * initializers for required elements and attributes. */ - ValueAcrossSegOrSegGroup (); + SpecificCapacitance (const value_type&); /** * @brief Create an instance from a DOM element. @@ -39340,9 +39930,9 @@ namespace neuroml2 * @param c A pointer to the object that will contain the new * instance. */ - ValueAcrossSegOrSegGroup (const ::xercesc::DOMElement& e, - ::xml_schema::flags f = 0, - ::xml_schema::container* c = 0); + SpecificCapacitance (const ::xercesc::DOMElement& e, + ::xml_schema::flags f = 0, + ::xml_schema::container* c = 0); /** * @brief Copy constructor. @@ -39353,9 +39943,9 @@ namespace neuroml2 * * For polymorphic object models use the @c _clone function instead. */ - ValueAcrossSegOrSegGroup (const ValueAcrossSegOrSegGroup& x, - ::xml_schema::flags f = 0, - ::xml_schema::container* c = 0); + SpecificCapacitance (const SpecificCapacitance& x, + ::xml_schema::flags f = 0, + ::xml_schema::container* c = 0); /** * @brief Copy the instance polymorphically. @@ -39368,7 +39958,7 @@ namespace neuroml2 * used for copying and should be used for polymorphic object * models instead of the copy constructor. */ - virtual ValueAcrossSegOrSegGroup* + virtual SpecificCapacitance* _clone (::xml_schema::flags f = 0, ::xml_schema::container* c = 0) const; @@ -39380,8 +39970,8 @@ namespace neuroml2 * * For polymorphic object models use the @c _clone function instead. */ - ValueAcrossSegOrSegGroup& - operator= (const ValueAcrossSegOrSegGroup& x); + SpecificCapacitance& + operator= (const SpecificCapacitance& x); //@} @@ -39389,7 +39979,7 @@ namespace neuroml2 * @brief Destructor. */ virtual - ~ValueAcrossSegOrSegGroup (); + ~SpecificCapacitance (); // Implementation. // @@ -39402,174 +39992,155 @@ namespace neuroml2 ::xml_schema::flags); protected: - value_optional value_; + ::xsd::cxx::tree::one< value_type > value_; ::xsd::cxx::tree::one< segmentGroup_type > segmentGroup_; static const segmentGroup_type segmentGroup_default_value_; - segment_optional segment_; //@endcond }; bool - operator== (const ValueAcrossSegOrSegGroup&, const ValueAcrossSegOrSegGroup&); + operator== (const SpecificCapacitance&, const SpecificCapacitance&); bool - operator!= (const ValueAcrossSegOrSegGroup&, const ValueAcrossSegOrSegGroup&); + operator!= (const SpecificCapacitance&, const SpecificCapacitance&); /** - * @brief Class corresponding to the %SpikeThresh schema type. + * @brief Class corresponding to the %InitMembPotential schema type. * - * Using a thin extension of ValueAcrossSegOrSegGroup to facilitate - * library generation (e.g. libNeuroML) + * Explicitly set initial membrane potential for the cell + * @param value * * @nosubgrouping */ - class SpikeThresh: public ::neuroml2::ValueAcrossSegOrSegGroup { public: /** - * @name Constructors + * @name value + * + * @brief Accessor and modifier functions for the %value + * required attribute. */ //@{ /** - * @brief Create an instance from the ultimate base and - * initializers for required elements and attributes. + * @brief Attribute type. */ - SpikeThresh (); + typedef ::neuroml2::Nml2Quantity_voltage value_type; /** - * @brief Create an instance from a DOM element. + * @brief Attribute traits type. + */ + typedef ::xsd::cxx::tree::traits< value_type, char > value_traits; + + /** + * @brief Return a read-only (constant) reference to the attribute. * - * @param e A DOM element to extract the data from. - * @param f Flags to create the new instance with. - * @param c A pointer to the object that will contain the new - * instance. + * @return A constant reference to the attribute. */ - SpikeThresh (const ::xercesc::DOMElement& e, - ::xml_schema::flags f = 0, - ::xml_schema::container* c = 0); + const value_type& + value () const; /** - * @brief Copy constructor. + * @brief Return a read-write reference to the attribute. * - * @param x An instance to make a copy of. - * @param f Flags to create the copy with. - * @param c A pointer to the object that will contain the copy. + * @return A reference to the attribute. + */ + value_type& + value (); + + /** + * @brief Set the attribute value. * - * For polymorphic object models use the @c _clone function instead. + * @param x A new value to set. + * + * This function makes a copy of its argument and sets it as + * the new value of the attribute. */ - SpikeThresh (const SpikeThresh& x, - ::xml_schema::flags f = 0, - ::xml_schema::container* c = 0); + void + value (const value_type& x); /** - * @brief Copy the instance polymorphically. + * @brief Set the attribute value without copying. * - * @param f Flags to create the copy with. - * @param c A pointer to the object that will contain the copy. - * @return A pointer to the dynamically allocated copy. + * @param p A new value to use. * - * This function ensures that the dynamic type of the instance is - * used for copying and should be used for polymorphic object - * models instead of the copy constructor. + * This function will try to use the passed value directly + * instead of making a copy. */ - virtual SpikeThresh* - _clone (::xml_schema::flags f = 0, - ::xml_schema::container* c = 0) const; + void + value (::std::unique_ptr< value_type > p); //@} /** - * @brief Destructor. + * @name segmentGroup + * + * @brief Accessor and modifier functions for the %segmentGroup + * optional attribute with a default value. */ - virtual - ~SpikeThresh (); - }; + //@{ - /** - * @brief Class corresponding to the %SpecificCapacitance schema type. - * - * Using a thin extension of ValueAcrossSegOrSegGroup to facilitate - * library generation (e.g. libNeuroML) - * - * @nosubgrouping - */ - class SpecificCapacitance: public ::neuroml2::ValueAcrossSegOrSegGroup - { - public: /** - * @name Constructors + * @brief Attribute type. */ - //@{ + typedef ::neuroml2::NmlId segmentGroup_type; /** - * @brief Create an instance from the ultimate base and - * initializers for required elements and attributes. + * @brief Attribute traits type. */ - SpecificCapacitance (); + typedef ::xsd::cxx::tree::traits< segmentGroup_type, char > segmentGroup_traits; /** - * @brief Create an instance from a DOM element. + * @brief Return a read-only (constant) reference to the attribute. * - * @param e A DOM element to extract the data from. - * @param f Flags to create the new instance with. - * @param c A pointer to the object that will contain the new - * instance. + * @return A constant reference to the attribute. */ - SpecificCapacitance (const ::xercesc::DOMElement& e, - ::xml_schema::flags f = 0, - ::xml_schema::container* c = 0); + const segmentGroup_type& + segmentGroup () const; /** - * @brief Copy constructor. - * - * @param x An instance to make a copy of. - * @param f Flags to create the copy with. - * @param c A pointer to the object that will contain the copy. + * @brief Return a read-write reference to the attribute. * - * For polymorphic object models use the @c _clone function instead. + * @return A reference to the attribute. */ - SpecificCapacitance (const SpecificCapacitance& x, - ::xml_schema::flags f = 0, - ::xml_schema::container* c = 0); + segmentGroup_type& + segmentGroup (); /** - * @brief Copy the instance polymorphically. + * @brief Set the attribute value. * - * @param f Flags to create the copy with. - * @param c A pointer to the object that will contain the copy. - * @return A pointer to the dynamically allocated copy. + * @param x A new value to set. * - * This function ensures that the dynamic type of the instance is - * used for copying and should be used for polymorphic object - * models instead of the copy constructor. + * This function makes a copy of its argument and sets it as + * the new value of the attribute. */ - virtual SpecificCapacitance* - _clone (::xml_schema::flags f = 0, - ::xml_schema::container* c = 0) const; + void + segmentGroup (const segmentGroup_type& x); - //@} + /** + * @brief Set the attribute value without copying. + * + * @param p A new value to use. + * + * This function will try to use the passed value directly + * instead of making a copy. + */ + void + segmentGroup (::std::unique_ptr< segmentGroup_type > p); /** - * @brief Destructor. + * @brief Return the default value for the attribute. + * + * @return A read-only (constant) reference to the attribute's + * default value. */ - virtual - ~SpecificCapacitance (); - }; + static const segmentGroup_type& + segmentGroup_default_value (); + + //@} - /** - * @brief Class corresponding to the %InitMembPotential schema type. - * - * Using a thin extension of ValueAcrossSegOrSegGroup to facilitate - * library generation (e.g. libNeuroML) - * - * @nosubgrouping - */ - class InitMembPotential: public ::neuroml2::ValueAcrossSegOrSegGroup - { - public: /** * @name Constructors */ @@ -39579,7 +40150,7 @@ namespace neuroml2 * @brief Create an instance from the ultimate base and * initializers for required elements and attributes. */ - InitMembPotential (); + InitMembPotential (const value_type&); /** * @brief Create an instance from a DOM element. @@ -39621,6 +40192,17 @@ namespace neuroml2 _clone (::xml_schema::flags f = 0, ::xml_schema::container* c = 0) const; + /** + * @brief Copy assignment operator. + * + * @param x An instance to make a copy of. + * @return A reference to itself. + * + * For polymorphic object models use the @c _clone function instead. + */ + InitMembPotential& + operator= (const InitMembPotential& x); + //@} /** @@ -39628,19 +40210,167 @@ namespace neuroml2 */ virtual ~InitMembPotential (); + + // Implementation. + // + + //@cond + + protected: + void + parse (::xsd::cxx::xml::dom::parser< char >&, + ::xml_schema::flags); + + protected: + ::xsd::cxx::tree::one< value_type > value_; + ::xsd::cxx::tree::one< segmentGroup_type > segmentGroup_; + static const segmentGroup_type segmentGroup_default_value_; + + //@endcond }; + bool + operator== (const InitMembPotential&, const InitMembPotential&); + + bool + operator!= (const InitMembPotential&, const InitMembPotential&); + + /** * @brief Class corresponding to the %Resistivity schema type. * - * Using a thin extension of ValueAcrossSegOrSegGroup to facilitate - * library generation (e.g. libNeuroML) + * The resistivity, or specific axial resistance, of the cytoplasm + * @param value * * @nosubgrouping */ - class Resistivity: public ::neuroml2::ValueAcrossSegOrSegGroup { public: + /** + * @name value + * + * @brief Accessor and modifier functions for the %value + * required attribute. + */ + //@{ + + /** + * @brief Attribute type. + */ + typedef ::neuroml2::Nml2Quantity_resistivity value_type; + + /** + * @brief Attribute traits type. + */ + typedef ::xsd::cxx::tree::traits< value_type, char > value_traits; + + /** + * @brief Return a read-only (constant) reference to the attribute. + * + * @return A constant reference to the attribute. + */ + const value_type& + value () const; + + /** + * @brief Return a read-write reference to the attribute. + * + * @return A reference to the attribute. + */ + value_type& + value (); + + /** + * @brief Set the attribute value. + * + * @param x A new value to set. + * + * This function makes a copy of its argument and sets it as + * the new value of the attribute. + */ + void + value (const value_type& x); + + /** + * @brief Set the attribute value without copying. + * + * @param p A new value to use. + * + * This function will try to use the passed value directly + * instead of making a copy. + */ + void + value (::std::unique_ptr< value_type > p); + + //@} + + /** + * @name segmentGroup + * + * @brief Accessor and modifier functions for the %segmentGroup + * optional attribute with a default value. + */ + //@{ + + /** + * @brief Attribute type. + */ + typedef ::neuroml2::NmlId segmentGroup_type; + + /** + * @brief Attribute traits type. + */ + typedef ::xsd::cxx::tree::traits< segmentGroup_type, char > segmentGroup_traits; + + /** + * @brief Return a read-only (constant) reference to the attribute. + * + * @return A constant reference to the attribute. + */ + const segmentGroup_type& + segmentGroup () const; + + /** + * @brief Return a read-write reference to the attribute. + * + * @return A reference to the attribute. + */ + segmentGroup_type& + segmentGroup (); + + /** + * @brief Set the attribute value. + * + * @param x A new value to set. + * + * This function makes a copy of its argument and sets it as + * the new value of the attribute. + */ + void + segmentGroup (const segmentGroup_type& x); + + /** + * @brief Set the attribute value without copying. + * + * @param p A new value to use. + * + * This function will try to use the passed value directly + * instead of making a copy. + */ + void + segmentGroup (::std::unique_ptr< segmentGroup_type > p); + + /** + * @brief Return the default value for the attribute. + * + * @return A read-only (constant) reference to the attribute's + * default value. + */ + static const segmentGroup_type& + segmentGroup_default_value (); + + //@} + /** * @name Constructors */ @@ -39650,7 +40380,7 @@ namespace neuroml2 * @brief Create an instance from the ultimate base and * initializers for required elements and attributes. */ - Resistivity (); + Resistivity (const value_type&); /** * @brief Create an instance from a DOM element. @@ -39692,6 +40422,17 @@ namespace neuroml2 _clone (::xml_schema::flags f = 0, ::xml_schema::container* c = 0) const; + /** + * @brief Copy assignment operator. + * + * @param x An instance to make a copy of. + * @return A reference to itself. + * + * For polymorphic object models use the @c _clone function instead. + */ + Resistivity& + operator= (const Resistivity& x); + //@} /** @@ -39699,11 +40440,45 @@ namespace neuroml2 */ virtual ~Resistivity (); + + // Implementation. + // + + //@cond + + protected: + void + parse (::xsd::cxx::xml::dom::parser< char >&, + ::xml_schema::flags); + + protected: + ::xsd::cxx::tree::one< value_type > value_; + ::xsd::cxx::tree::one< segmentGroup_type > segmentGroup_; + static const segmentGroup_type segmentGroup_default_value_; + + //@endcond }; + bool + operator== (const Resistivity&, const Resistivity&); + + bool + operator!= (const Resistivity&, const Resistivity&); + + /** * @brief Class corresponding to the %ChannelPopulation schema type. * + * 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** + * @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 + * @param erev The reversal potential of the current produced + * * @nosubgrouping */ class ChannelPopulation: public ::neuroml2::Base @@ -40095,17 +40870,6 @@ namespace neuroml2 * * @brief Accessor and modifier functions for the %ion * required attribute. - * - * Specifying the ion here again is redundant, this will be set in - * ionChannel definition. It is added here - * TEMPORARILY since selecting all ca or na conducting channel - * populations/densities in a cell would be difficult otherwise. - * Also, it will make it easier to set the correct native simulator value - * for erev (e.g. ek for ion = k in NEURON). - * Currently a required attribute. - * It should be removed in the longer term, due to possible - * inconsistencies in this value and that in the ionChannel - * element. TODO: remove. */ //@{ @@ -40266,6 +41030,15 @@ namespace neuroml2 /** * @brief Class corresponding to the %ChannelDensityNonUniform schema type. * + * 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 + * @param erev The reversal potential of the current produced + * * @nosubgrouping */ class ChannelDensityNonUniform: public ::neuroml2::Base @@ -40456,17 +41229,6 @@ namespace neuroml2 * * @brief Accessor and modifier functions for the %ion * required attribute. - * - * Specifying the ion here again is redundant, this will be set in - * ionChannel definition. It is added here - * TEMPORARILY since selecting all ca or na conducting channel - * populations/densities in a cell would be difficult otherwise. - * Also, it will make it easier to set the correct native simulator value - * for erev (e.g. ek for ion = k in NEURON). - * Currently a required attribute. - * It should be removed in the longer term, due to possible - * inconsistencies in this value and that in the ionChannel - * element. TODO: remove. */ //@{ @@ -40622,6 +41384,15 @@ namespace neuroml2 /** * @brief Class corresponding to the %ChannelDensityNonUniformNernst schema type. * + * 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 + * * @nosubgrouping */ class ChannelDensityNonUniformNernst: public ::neuroml2::Base @@ -40754,17 +41525,6 @@ namespace neuroml2 * * @brief Accessor and modifier functions for the %ion * required attribute. - * - * Specifying the ion here again is redundant, this will be set in - * ionChannel definition. It is added here - * TEMPORARILY since selecting all ca or na conducting channel - * populations/densities in a cell would be difficult otherwise. - * Also, it will make it easier to set the correct native simulator value - * for erev (e.g. ek for ion = k in NEURON). - * Currently a required attribute. - * It should be removed in the longer term, due to possible - * inconsistencies in this value and that in the ionChannel - * element. TODO: remove. */ //@{ @@ -40918,6 +41678,16 @@ namespace neuroml2 /** * @brief Class corresponding to the %ChannelDensityNonUniformGHK schema type. * + * 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 + * * @nosubgrouping */ class ChannelDensityNonUniformGHK: public ::neuroml2::Base @@ -41050,17 +41820,6 @@ namespace neuroml2 * * @brief Accessor and modifier functions for the %ion * required attribute. - * - * Specifying the ion here again is redundant, this will be set in - * ionChannel definition. It is added here - * TEMPORARILY since selecting all ca or na conducting channel - * populations/densities in a cell would be difficult otherwise. - * Also, it will make it easier to set the correct native simulator value - * for erev (e.g. ek for ion = k in NEURON). - * Currently a required attribute. - * It should be removed in the longer term, due to possible - * inconsistencies in this value and that in the ionChannel - * element. TODO: remove. */ //@{ @@ -41214,6 +41973,13 @@ namespace neuroml2 /** * @brief Class corresponding to the %ChannelDensity schema type. * + * 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** + * @param erev The reversal potential of the current produced + * @param condDensity + * * @nosubgrouping */ class ChannelDensity: public ::neuroml2::Base @@ -41623,17 +42389,6 @@ namespace neuroml2 * * @brief Accessor and modifier functions for the %ion * required attribute. - * - * Specifying the ion here again is redundant, this will be set in - * ionChannel definition. It is added here - * TEMPORARILY since selecting all ca or na conducting channel - * populations/densities in a cell would be difficult otherwise. - * Also, it will make it easier to set the correct native simulator value - * for erev (e.g. ek for ion = k in NEURON). - * Currently a required attribute. - * It should be removed in the longer term, due to possible - * inconsistencies in this value and that in the ionChannel - * element. TODO: remove. */ //@{ @@ -41793,6 +42548,13 @@ namespace neuroml2 /** * @brief Class corresponding to the %ChannelDensityVShift schema type. * + * 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. + * @param vShift + * @param erev The reversal potential of the current produced + * @param condDensity + * * @nosubgrouping */ class ChannelDensityVShift: public ::neuroml2::ChannelDensity @@ -41956,6 +42718,13 @@ namespace neuroml2 /** * @brief Class corresponding to the %ChannelDensityNernst schema type. * + * 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. + * @param condDensity + * * @nosubgrouping */ class ChannelDensityNernst: public ::neuroml2::Base @@ -42307,17 +43076,6 @@ namespace neuroml2 * * @brief Accessor and modifier functions for the %ion * required attribute. - * - * Specifying the ion here again is redundant, this will be set in - * ionChannel definition. It is added here - * TEMPORARILY since selecting all ca or na conducting channel - * populations/densities in a cell would be difficult otherwise. - * Also, it will make it easier to set the correct native simulator value - * for erev (e.g. ek for ion = k in NEURON). - * Currently a required attribute. - * It should be removed in the longer term, due to possible - * inconsistencies in this value and that in the ionChannel - * element. TODO: remove. */ //@{ @@ -42475,6 +43233,12 @@ namespace neuroml2 /** * @brief Class corresponding to the %ChannelDensityNernstCa2 schema type. * + * 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. + * @param condDensity + * * @nosubgrouping */ class ChannelDensityNernstCa2: public ::neuroml2::ChannelDensityNernst @@ -42545,6 +43309,13 @@ namespace neuroml2 /** * @brief Class corresponding to the %ChannelDensityGHK schema type. * + * 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. + * @param permeability + * * @nosubgrouping */ class ChannelDensityGHK: public ::neuroml2::Base @@ -42814,17 +43585,6 @@ namespace neuroml2 * * @brief Accessor and modifier functions for the %ion * required attribute. - * - * Specifying the ion here again is redundant, this will be set in - * ionChannel definition. It is added here - * TEMPORARILY since selecting all ca or na conducting channel - * populations/densities in a cell would be difficult otherwise. - * Also, it will make it easier to set the correct native simulator value - * for erev (e.g. ek for ion = k in NEURON). - * Currently a required attribute. - * It should be removed in the longer term, due to possible - * inconsistencies in this value and that in the ionChannel - * element. TODO: remove. */ //@{ @@ -42982,6 +43742,12 @@ namespace neuroml2 /** * @brief Class corresponding to the %ChannelDensityGHK2 schema type. * + * 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. + * @param condDensity + * * @nosubgrouping */ class ChannelDensityGHK2: public ::neuroml2::Base @@ -43269,17 +44035,6 @@ namespace neuroml2 * * @brief Accessor and modifier functions for the %ion * required attribute. - * - * Specifying the ion here again is redundant, this will be set in - * ionChannel definition. It is added here - * TEMPORARILY since selecting all ca or na conducting channel - * populations/densities in a cell would be difficult otherwise. - * Also, it will make it easier to set the correct native simulator value - * for erev (e.g. ek for ion = k in NEURON). - * Currently a required attribute. - * It should be removed in the longer term, due to possible - * inconsistencies in this value and that in the ionChannel - * element. TODO: remove. */ //@{ @@ -43436,9 +44191,23 @@ namespace neuroml2 /** * @brief Class corresponding to the %VariableParameter schema type. * + * 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 ) ) + * * @nosubgrouping */ - class VariableParameter: public ::xml_schema::type { public: /** @@ -43732,9 +44501,11 @@ namespace neuroml2 /** * @brief Class corresponding to the %InhomogeneousValue schema type. * + * Specifies the **value** of an **inhomogeneousParameter.** For usage + * see **variableParameter** + * * @nosubgrouping */ - class InhomogeneousValue: public ::xml_schema::type { public: /** @@ -43951,9 +44722,14 @@ namespace neuroml2 /** * @brief Class corresponding to the %Species schema type. * + * Description of a chemical species identified by **ion,** which has + * internal, **concentration,** and external, **extConcentration** + * values for its concentration + * @param initialConcentration + * @param initialExtConcentration + * * @nosubgrouping */ - class Species: public ::neuroml2::ValueAcrossSegOrSegGroup { public: /** @@ -44077,10 +44853,6 @@ namespace neuroml2 * * @brief Accessor and modifier functions for the %ion * optional attribute. - * - * Specifying the ion here again is redundant, the ion name should be the - * same as id. Kept for now - * until LEMS implementation can select by id. TODO: remove. */ //@{ @@ -44268,6 +45040,73 @@ namespace neuroml2 //@} + /** + * @name segmentGroup + * + * @brief Accessor and modifier functions for the %segmentGroup + * optional attribute with a default value. + */ + //@{ + + /** + * @brief Attribute type. + */ + typedef ::neuroml2::NmlId segmentGroup_type; + + /** + * @brief Attribute traits type. + */ + typedef ::xsd::cxx::tree::traits< segmentGroup_type, char > segmentGroup_traits; + + /** + * @brief Return a read-only (constant) reference to the attribute. + * + * @return A constant reference to the attribute. + */ + const segmentGroup_type& + segmentGroup () const; + + /** + * @brief Return a read-write reference to the attribute. + * + * @return A reference to the attribute. + */ + segmentGroup_type& + segmentGroup (); + + /** + * @brief Set the attribute value. + * + * @param x A new value to set. + * + * This function makes a copy of its argument and sets it as + * the new value of the attribute. + */ + void + segmentGroup (const segmentGroup_type& x); + + /** + * @brief Set the attribute value without copying. + * + * @param p A new value to use. + * + * This function will try to use the passed value directly + * instead of making a copy. + */ + void + segmentGroup (::std::unique_ptr< segmentGroup_type > p); + + /** + * @brief Return the default value for the attribute. + * + * @return A read-only (constant) reference to the attribute's + * default value. + */ + static const segmentGroup_type& + segmentGroup_default_value (); + + //@} + /** * @name Constructors */ @@ -44357,6 +45196,8 @@ namespace neuroml2 ion_optional ion_; ::xsd::cxx::tree::one< initialConcentration_type > initialConcentration_; ::xsd::cxx::tree::one< initialExtConcentration_type > initialExtConcentration_; + ::xsd::cxx::tree::one< segmentGroup_type > segmentGroup_; + static const segmentGroup_type segmentGroup_default_value_; //@endcond }; @@ -44514,9 +45355,15 @@ namespace neuroml2 /** * @brief Class corresponding to the %IntracellularProperties schema type. * + * 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 + * * @nosubgrouping */ - class IntracellularProperties: public ::xml_schema::type { public: /** @@ -44744,6 +45591,8 @@ namespace neuroml2 /** * @brief Class corresponding to the %IntracellularProperties2CaPools schema type. * + * Variant of intracellularProperties with 2 independent Ca pools + * * @nosubgrouping */ class IntracellularProperties2CaPools: public ::neuroml2::IntracellularProperties @@ -44979,7 +45828,6 @@ namespace neuroml2 * * @nosubgrouping */ - class ExtracellularPropertiesLocal: public ::xml_schema::type { public: /** @@ -45362,8 +46210,14 @@ namespace neuroml2 /** * @brief Class corresponding to the %PulseGenerator schema type. * - * Generates a constant current pulse of a certain amplitude (with - * dimensions for current) for a specified duration after a delay. + * Generates a constant current pulse of a certain **amplitude** for a + * specified **duration** after a **delay.** Scaled by **weight,** if + * set + * @param delay Delay before change in current. Current is zero prior to + * this. + * @param duration Duration for holding current at amplitude. Current is + * zero after delay + duration. + * @param amplitude Amplitude of current pulse * * @nosubgrouping */ @@ -45645,8 +46499,14 @@ namespace neuroml2 /** * @brief Class corresponding to the %PulseGeneratorDL schema type. * - * Generates a constant current pulse of a certain amplitude (non - * dimensional) for a specified duration after a delay. + * 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 + * @param delay Delay before change in current. Current is zero prior to + * this. + * @param duration Duration for holding current at amplitude. Current is + * zero after delay + duration. + * @param amplitude Amplitude of current pulse * * @nosubgrouping */ @@ -45928,6 +46788,19 @@ namespace neuroml2 /** * @brief Class corresponding to the %SineGenerator schema type. * + * 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 + * @param phase Phase ( between 0 and 2*pi ) at which to start the + * varying current ( i. e. at time given by delay ) + * @param delay Delay before change in current. Current is zero prior to + * this. + * @param duration Duration for holding current at amplitude. Current is + * zero after delay + duration. + * @param amplitude Maximum amplitude of current + * @param period Time period of oscillation + * * @nosubgrouping */ class SineGenerator: public ::neuroml2::Standalone @@ -46328,6 +47201,20 @@ namespace neuroml2 /** * @brief Class corresponding to the %SineGeneratorDL schema type. * + * 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 + * @param phase Phase ( between 0 and 2*pi ) at which to start the + * varying current ( i. e. at time given by delay ) + * @param delay Delay before change in current. Current is zero prior to + * this. + * @param duration Duration for holding current at amplitude. Current is + * zero after delay + duration. + * @param amplitude Maximum amplitude of current + * @param period Time period of oscillation + * * @nosubgrouping */ class SineGeneratorDL: public ::neuroml2::Standalone @@ -46728,6 +47615,21 @@ namespace neuroml2 /** * @brief Class corresponding to the %RampGenerator schema type. * + * 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 + * @param delay Delay before change in current. Current is + * baselineAmplitude prior to this. + * @param duration Duration for holding current at amplitude. Current is + * baselineAmplitude after delay + duration. + * @param startAmplitude Amplitude of linearly varying current at time + * delay + * @param finishAmplitude Amplitude of linearly varying current at time + * delay + duration + * @param baselineAmplitude Amplitude of current before time delay, and + * after time delay + duration + * * @nosubgrouping */ class RampGenerator: public ::neuroml2::Standalone @@ -47128,6 +48030,22 @@ namespace neuroml2 /** * @brief Class corresponding to the %RampGeneratorDL schema type. * + * 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 + * @param delay Delay before change in current. Current is + * baselineAmplitude prior to this. + * @param duration Duration for holding current at amplitude. Current is + * baselineAmplitude after delay + duration. + * @param startAmplitude Amplitude of linearly varying current at time + * delay + * @param finishAmplitude Amplitude of linearly varying current at time + * delay + duration + * @param baselineAmplitude Amplitude of current before time delay, and + * after time delay + duration + * * @nosubgrouping */ class RampGeneratorDL: public ::neuroml2::Standalone @@ -47528,6 +48446,11 @@ namespace neuroml2 /** * @brief Class corresponding to the %CompoundInput schema type. * + * 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 + * * @nosubgrouping */ class CompoundInput: public ::neuroml2::Standalone @@ -47823,6 +48746,11 @@ namespace neuroml2 /** * @brief Class corresponding to the %CompoundInputDL schema type. * + * 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 + * * @nosubgrouping */ class CompoundInputDL: public ::neuroml2::Standalone @@ -48118,6 +49046,19 @@ namespace neuroml2 /** * @brief Class corresponding to the %VoltageClamp schema type. * + * Voltage clamp. Applies a variable current **i** to try to keep parent + * at **targetVoltage.** Not yet fully tested!!! Consider using + * voltageClampTriple!! + * @param delay Delay before change in current. Current is zero prior to + * this. + * @param duration Duration for attempting to keep parent at + * targetVoltage. Current is zero after delay + duration. + * @param targetVoltage Current will be applied to try to get parent to + * this target voltage + * @param simpleSeriesResistance Current will be calculated by the + * difference in voltage between the target and parent, divided by this + * value + * * @nosubgrouping */ class VoltageClamp: public ::neuroml2::Standalone @@ -48458,6 +49399,24 @@ namespace neuroml2 /** * @brief Class corresponding to the %VoltageClampTriple schema type. * + * 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. + * @param active Whether the voltage clamp is active ( 1 ) or inactive ( + * 0 ). + * @param delay Delay before switching from conditioningVoltage to + * testingVoltage. + * @param duration Duration to hold at testingVoltage. + * @param conditioningVoltage Target voltage before time delay + * @param testingVoltage Target voltage between times delay and delay + + * duration + * @param returnVoltage Target voltage after time duration + * @param simpleSeriesResistance Current will be calculated by the + * difference in voltage between the target and parent, divided by this + * value + * * @nosubgrouping */ class VoltageClampTriple: public ::neuroml2::Standalone @@ -48978,6 +49937,9 @@ namespace neuroml2 /** * @brief Class corresponding to the %Spike schema type. * + * Emits a single spike at the specified **time** + * @param time Time at which to emit one spike event + * * @nosubgrouping */ class Spike: public ::neuroml2::BaseNonNegativeIntegerId @@ -49138,6 +50100,9 @@ namespace neuroml2 /** * @brief Class corresponding to the %SpikeArray schema type. * + * Set of spike ComponentTypes, each emitting one spike at a certain + * time. Can be used to feed a predetermined spike train into a cell + * * @nosubgrouping */ class SpikeArray: public ::neuroml2::Standalone @@ -49303,6 +50268,9 @@ namespace neuroml2 /** * @brief Class corresponding to the %TimedSynapticInput schema type. * + * Spike array connected to a single **synapse,** producing a current + * triggered by each **spike** in the array. + * * @nosubgrouping */ class TimedSynapticInput: public ::neuroml2::Standalone @@ -49588,6 +50556,10 @@ namespace neuroml2 /** * @brief Class corresponding to the %SpikeGenerator schema type. * + * Simple generator of spikes at a regular interval set by **period** + * @param period Time between spikes. The first spike will be emitted + * after this time. + * * @nosubgrouping */ class SpikeGenerator: public ::neuroml2::Standalone @@ -49748,6 +50720,11 @@ namespace neuroml2 /** * @brief Class corresponding to the %SpikeGeneratorRandom schema type. * + * Generator of spikes with a random interspike interval of at least + * **minISI** and at most **maxISI** + * @param maxISI Maximum interspike interval + * @param minISI Minimum interspike interval + * * @nosubgrouping */ class SpikeGeneratorRandom: public ::neuroml2::Standalone @@ -49968,6 +50945,10 @@ namespace neuroml2 /** * @brief Class corresponding to the %SpikeGeneratorPoisson schema type. * + * Generator of spikes whose ISI is distributed according to an + * exponential PDF with scale: 1 / **averageRate** + * @param averageRate The average rate at which spikes are emitted + * * @nosubgrouping */ class SpikeGeneratorPoisson: public ::neuroml2::Standalone @@ -50128,6 +51109,12 @@ namespace neuroml2 /** * @brief Class corresponding to the %SpikeGeneratorRefPoisson schema type. * + * Generator of spikes whose ISI distribution is the maximum entropy + * distribution over [ **minimumISI,** +infinity ) with mean: 1 / + * **averageRate** + * @param minimumISI The minimum interspike interval + * @param averageRate The average rate at which spikes are emitted + * * @nosubgrouping */ class SpikeGeneratorRefPoisson: public ::neuroml2::SpikeGeneratorPoisson @@ -50289,6 +51276,12 @@ namespace neuroml2 /** * @brief Class corresponding to the %PoissonFiringSynapse schema type. * + * 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** . + * @param averageRate The average rate at which spikes are emitted + * * @nosubgrouping */ class PoissonFiringSynapse: public ::neuroml2::Standalone @@ -50569,6 +51562,14 @@ namespace neuroml2 /** * @brief Class corresponding to the %TransientPoissonFiringSynapse schema type. * + * 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** . + * @param averageRate + * @param delay + * @param duration + * * @nosubgrouping */ class TransientPoissonFiringSynapse: public ::neuroml2::Standalone @@ -50969,6 +51970,14 @@ namespace neuroml2 /** * @brief Class corresponding to the %Network schema type. * + * 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 ). + * * @nosubgrouping */ class Network: public ::neuroml2::Standalone @@ -52339,7 +53348,6 @@ namespace neuroml2 * * @nosubgrouping */ - class SpaceStructure: public ::xml_schema::type { public: /** @@ -52952,6 +53960,9 @@ namespace neuroml2 /** * @brief Class corresponding to the %Region schema type. * + * Initial attempt to specify 3D region for placing cells. Work in + * progress. . . + * * @nosubgrouping */ class Region: public ::neuroml2::Base @@ -53129,6 +54140,15 @@ namespace neuroml2 /** * @brief Class corresponding to the %Population schema type. * + * 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. + * @param size Number of instances of this Component to create when the + * population is instantiated + * * @nosubgrouping */ class Population: public ::neuroml2::Standalone @@ -53809,7 +54829,6 @@ namespace neuroml2 * * @nosubgrouping */ - class Layout: public ::xml_schema::type { public: /** @@ -54217,7 +55236,6 @@ namespace neuroml2 * * @nosubgrouping */ - class UnstructuredLayout: public ::xml_schema::type { public: /** @@ -54383,7 +55401,6 @@ namespace neuroml2 * * @nosubgrouping */ - class RandomLayout: public ::xml_schema::type { public: /** @@ -54626,7 +55643,6 @@ namespace neuroml2 * * @nosubgrouping */ - class GridLayout: public ::xml_schema::type { public: /** @@ -54922,9 +55938,11 @@ namespace neuroml2 /** * @brief Class corresponding to the %Instance schema type. * + * Specifies a single instance of a component in a **population** ( + * placed at **location** ). + * * @nosubgrouping */ - class Instance: public ::xml_schema::type { public: /** @@ -55355,9 +56373,14 @@ namespace neuroml2 /** * @brief Class corresponding to the %Location schema type. * + * Specifies the ( x, y, z ) location of a single **instance** of a + * component in a **population** + * @param x + * @param y + * @param z + * * @nosubgrouping */ - class Location: public ::xml_schema::type { public: /** @@ -55761,13 +56784,12 @@ namespace neuroml2 /** * @brief Class corresponding to the %SynapticConnection schema type. * - * Single explicit connection. Introduced to test connections in LEMS. - * Will probably be removed in favour of - * connections wrapped in projection element + * Explicit event connection between named components, which gets + * processed via a new instance of a **synapse** component which is + * created on the target component * * @nosubgrouping */ - class SynapticConnection: public ::xml_schema::type { public: /** @@ -56344,8 +57366,9 @@ namespace neuroml2 /** * @brief Class corresponding to the %Projection schema type. * - * Projection (set of synaptic connections) between two populations. - * Chemical/event based synaptic transmission + * Projection from one population, **presynapticPopulation** to another, + * **postsynapticPopulation,** through **synapse.** Contains lists of + * **connection** or **connectionWD** elements. * * @nosubgrouping */ @@ -56710,7 +57733,7 @@ namespace neuroml2 /** * @brief Class corresponding to the %BaseConnectionOldFormat schema type. * - * Base of all synaptic connections with preCellId, postSegmentId, etc. + * 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 * @@ -57202,7 +58225,7 @@ namespace neuroml2 /** * @brief Class corresponding to the %BaseConnectionNewFormat schema type. * - * Base of all synaptic connections with preCell, postSegment, etc. + * Base of all synaptic connections with preCell, postSegment, etc. * See BaseConnectionOldFormat * * @nosubgrouping @@ -57693,8 +58716,10 @@ namespace neuroml2 /** * @brief Class corresponding to the %Connection schema type. * - * Individual chemical (event based) synaptic connection, weight==1 and - * no delay + * 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. * * @nosubgrouping */ @@ -57766,7 +58791,12 @@ namespace neuroml2 /** * @brief Class corresponding to the %ConnectionWD schema type. * - * Individual synaptic connection with weight and delay + * 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 + * @param weight + * @param delay * * @nosubgrouping */ @@ -57979,8 +59009,8 @@ namespace neuroml2 /** * @brief Class corresponding to the %ElectricalProjection schema type. * - * Projection between two populations consisting of electrical - * connections (gap junctions) + * A projection between **presynapticPopulation** to another + * **postsynapticPopulation** through gap junctions. * * @nosubgrouping */ @@ -58279,7 +59309,7 @@ namespace neuroml2 /** * @brief Class corresponding to the %ElectricalConnection schema type. * - * Individual electrical synaptic connection + * To enable connections between populations through gap junctions. * * @nosubgrouping */ @@ -58443,8 +59473,9 @@ namespace neuroml2 /** * @brief Class corresponding to the %ElectricalConnectionInstance schema type. * - * Projection between two populations consisting of analog connections - * (e.g. graded synapses) + * To enable connections between populations through gap junctions. + * Populations need to be of type **populationList** and contain + * **instance** and **location** elements. * * @nosubgrouping */ @@ -58517,8 +59548,11 @@ namespace neuroml2 /** * @brief Class corresponding to the %ElectricalConnectionInstanceW schema type. * - * Projection between two populations consisting of analog connections - * (e.g. graded synapses). Includes setting of weight for the connection + * 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 + * @param weight * * @nosubgrouping */ @@ -58672,8 +59706,11 @@ namespace neuroml2 /** * @brief Class corresponding to the %ContinuousProjection schema type. * - * Projection between two populations consisting of analog connections - * (e.g. graded synapses) + * 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. * * @nosubgrouping */ @@ -58972,7 +60009,10 @@ namespace neuroml2 /** * @brief Class corresponding to the %ContinuousConnection schema type. * - * Individual continuous/analog synaptic connection + * 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. * * @nosubgrouping */ @@ -59196,7 +60236,12 @@ namespace neuroml2 /** * @brief Class corresponding to the %ContinuousConnectionInstance schema type. * - * Individual continuous/analog synaptic connection - instance based + * 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. * * @nosubgrouping */ @@ -59270,8 +60315,13 @@ namespace neuroml2 /** * @brief Class corresponding to the %ContinuousConnectionInstanceW schema type. * - * Individual continuous/analog synaptic connection - instance based. - * Includes setting of _weight for the connection + * 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 + * @param weight * * @nosubgrouping */ @@ -59426,13 +60476,11 @@ namespace neuroml2 /** * @brief Class corresponding to the %ExplicitInput schema type. * - * Single explicit input. Introduced to test inputs in LEMS. Will - * probably be removed in favour of - * inputs wrapped in inputList element + * An explicit input ( anything which extends **basePointCurrent** ) to + * a target cell in a population * * @nosubgrouping */ - class ExplicitInput: public ::xml_schema::type { public: /** @@ -59726,8 +60774,7 @@ namespace neuroml2 /** * @brief Class corresponding to the %InputList schema type. * - * List of inputs to a population. Currents will be provided by the - * specified component. + * An explicit list of **input** s to a **population.** * * @nosubgrouping */ @@ -60079,11 +61126,12 @@ namespace neuroml2 /** * @brief Class corresponding to the %Input schema type. * - * Individual input to the cell specified by target + * Specifies a single input to a **target,** optionally giving the + * **segmentId** ( default 0 ) and **fractionAlong** the segment ( + * default 0. 5 ). * * @nosubgrouping */ - class Input: public ::xml_schema::type { public: /** @@ -60514,8 +61562,8 @@ namespace neuroml2 /** * @brief Class corresponding to the %InputW schema type. * - * Individual input to the cell specified by target. Includes setting of - * _weight for the connection + * Specifies input lists. Can set **weight** to scale individual inputs. + * @param weight * * @nosubgrouping */ @@ -60668,6 +61716,21 @@ namespace neuroml2 /** * @brief Class corresponding to the %basePyNNCell schema type. * + * 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 + * @param cm + * @param i_offset + * @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 + * @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 + * @param v_init + * * @nosubgrouping */ class basePyNNCell: public ::neuroml2::BaseCell @@ -61013,6 +62076,22 @@ namespace neuroml2 /** * @brief Class corresponding to the %basePyNNIaFCell schema type. * + * Base type of any PyNN standard integrate and fire model + * @param tau_refrac + * @param v_thresh + * @param tau_m + * @param v_rest + * @param v_reset + * @param cm + * @param i_offset + * @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 + * @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 + * @param v_init + * * @nosubgrouping */ class basePyNNIaFCell: public ::neuroml2::basePyNNCell @@ -61363,6 +62442,28 @@ namespace neuroml2 /** * @brief Class corresponding to the %basePyNNIaFCondCell schema type. * + * Base type of conductance based PyNN IaF cell models + * @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 + * @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 + * @param tau_refrac + * @param v_thresh + * @param tau_m + * @param v_rest + * @param v_reset + * @param cm + * @param i_offset + * @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 + * @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 + * @param v_init + * * @nosubgrouping */ class basePyNNIaFCondCell: public ::neuroml2::basePyNNIaFCell @@ -61571,6 +62672,23 @@ namespace neuroml2 /** * @brief Class corresponding to the %IF_curr_alpha schema type. * + * Leaky integrate and fire model with fixed threshold and + * alpha-function-shaped post-synaptic current + * @param tau_refrac + * @param v_thresh + * @param tau_m + * @param v_rest + * @param v_reset + * @param cm + * @param i_offset + * @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 + * @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 + * @param v_init + * * @nosubgrouping */ class IF_curr_alpha: public ::neuroml2::basePyNNIaFCell @@ -61649,6 +62767,23 @@ namespace neuroml2 /** * @brief Class corresponding to the %IF_curr_exp schema type. * + * Leaky integrate and fire model with fixed threshold and + * decaying-exponential post-synaptic current + * @param tau_refrac + * @param v_thresh + * @param tau_m + * @param v_rest + * @param v_reset + * @param cm + * @param i_offset + * @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 + * @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 + * @param v_init + * * @nosubgrouping */ class IF_curr_exp: public ::neuroml2::basePyNNIaFCell @@ -61727,6 +62862,29 @@ namespace neuroml2 /** * @brief Class corresponding to the %IF_cond_alpha schema type. * + * Leaky integrate and fire model with fixed threshold and + * alpha-function-shaped post-synaptic conductance + * @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 + * @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 + * @param tau_refrac + * @param v_thresh + * @param tau_m + * @param v_rest + * @param v_reset + * @param cm + * @param i_offset + * @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 + * @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 + * @param v_init + * * @nosubgrouping */ class IF_cond_alpha: public ::neuroml2::basePyNNIaFCondCell @@ -61807,6 +62965,29 @@ namespace neuroml2 /** * @brief Class corresponding to the %IF_cond_exp schema type. * + * Leaky integrate and fire model with fixed threshold and + * exponentially-decaying post-synaptic conductance + * @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 + * @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 + * @param tau_refrac + * @param v_thresh + * @param tau_m + * @param v_rest + * @param v_reset + * @param cm + * @param i_offset + * @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 + * @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 + * @param v_init + * * @nosubgrouping */ class IF_cond_exp: public ::neuroml2::basePyNNIaFCondCell @@ -61887,6 +63068,35 @@ namespace neuroml2 /** * @brief Class corresponding to the %EIF_cond_exp_isfa_ista schema type. * + * Adaptive exponential integrate and fire neuron according to Brette R + * and Gerstner W ( 2005 ) with exponentially-decaying post-synaptic + * conductance + * @param v_spike + * @param delta_T + * @param tau_w + * @param a + * @param b + * @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 + * @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 + * @param tau_refrac + * @param v_thresh + * @param tau_m + * @param v_rest + * @param v_reset + * @param cm + * @param i_offset + * @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 + * @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 + * @param v_init + * * @nosubgrouping */ class EIF_cond_exp_isfa_ista: public ::neuroml2::basePyNNIaFCondCell @@ -62244,6 +63454,35 @@ namespace neuroml2 /** * @brief Class corresponding to the %EIF_cond_alpha_isfa_ista schema type. * + * Adaptive exponential integrate and fire neuron according to Brette R + * and Gerstner W ( 2005 ) with alpha-function-shaped post-synaptic + * conductance + * @param v_spike + * @param delta_T + * @param tau_w + * @param a + * @param b + * @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 + * @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 + * @param tau_refrac + * @param v_thresh + * @param tau_m + * @param v_rest + * @param v_reset + * @param cm + * @param i_offset + * @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 + * @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 + * @param v_init + * * @nosubgrouping */ class EIF_cond_alpha_isfa_ista: public ::neuroml2::EIF_cond_exp_isfa_ista @@ -62329,6 +63568,28 @@ namespace neuroml2 /** * @brief Class corresponding to the %HH_cond_exp schema type. * + * Single-compartment Hodgkin-Huxley-type neuron with transient sodium + * and delayed-rectifier potassium currents using the ion channel models + * from Traub. + * @param gbar_K + * @param gbar_Na + * @param g_leak + * @param e_rev_K + * @param e_rev_Na + * @param e_rev_leak + * @param v_offset + * @param e_rev_E + * @param e_rev_I + * @param cm + * @param i_offset + * @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 + * @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 + * @param v_init + * * @nosubgrouping */ class HH_cond_exp: public ::neuroml2::basePyNNCell @@ -62875,6 +64136,11 @@ namespace neuroml2 /** * @brief Class corresponding to the %BasePynnSynapse schema type. * + * Base type for all PyNN synapses. Note, the current **I** produced is + * dimensionless, but it requires a membrane potential **v** with + * dimension voltage + * @param tau_syn + * * @nosubgrouping */ class BasePynnSynapse: public ::neuroml2::BaseSynapse @@ -63024,6 +64290,11 @@ namespace neuroml2 /** * @brief Class corresponding to the %ExpCondSynapse schema type. * + * Conductance based synapse with instantaneous rise and single + * exponential decay ( with time constant tau_syn ) + * @param e_rev + * @param tau_syn + * * @nosubgrouping */ class ExpCondSynapse: public ::neuroml2::BasePynnSynapse @@ -63174,6 +64445,11 @@ namespace neuroml2 /** * @brief Class corresponding to the %AlphaCondSynapse schema type. * + * Alpha synapse: rise time and decay time are both tau_syn. Conductance + * based synapse. + * @param e_rev + * @param tau_syn + * * @nosubgrouping */ class AlphaCondSynapse: public ::neuroml2::BasePynnSynapse @@ -63324,6 +64600,10 @@ namespace neuroml2 /** * @brief Class corresponding to the %ExpCurrSynapse schema type. * + * Current based synapse with instantaneous rise and single exponential + * decay ( with time constant tau_syn ) + * @param tau_syn + * * @nosubgrouping */ class ExpCurrSynapse: public ::neuroml2::BasePynnSynapse @@ -63393,6 +64673,10 @@ namespace neuroml2 /** * @brief Class corresponding to the %AlphaCurrSynapse schema type. * + * Alpha synapse: rise time and decay time are both tau_syn. Current + * based synapse. + * @param tau_syn + * * @nosubgrouping */ class AlphaCurrSynapse: public ::neuroml2::BasePynnSynapse @@ -63462,6 +64746,11 @@ namespace neuroml2 /** * @brief Class corresponding to the %SpikeSourcePoisson schema type. * + * Spike source, generating spikes according to a Poisson process. + * @param start + * @param duration + * @param rate + * * @nosubgrouping */ class SpikeSourcePoisson: public ::neuroml2::Standalone @@ -63761,6 +65050,9 @@ namespace neuroml2 ::std::ostream& operator<< (::std::ostream&, const Nml2Quantity_resistance&); + ::std::ostream& + operator<< (::std::ostream&, const Nml2Quantity_resistivity&); + ::std::ostream& operator<< (::std::ostream&, const Nml2Quantity_conductance&); @@ -64151,9 +65443,6 @@ namespace neuroml2 ::std::ostream& operator<< (::std::ostream&, const MembraneProperties2CaPools&); - ::std::ostream& - operator<< (::std::ostream&, const ValueAcrossSegOrSegGroup&); - ::std::ostream& operator<< (::std::ostream&, const SpikeThresh&); @@ -64777,6 +66066,16 @@ namespace neuroml2 operator<< (::xml_schema::list_stream&, const Nml2Quantity_resistance&); + void + operator<< (::xercesc::DOMElement&, const Nml2Quantity_resistivity&); + + void + operator<< (::xercesc::DOMAttr&, const Nml2Quantity_resistivity&); + + void + operator<< (::xml_schema::list_stream&, + const Nml2Quantity_resistivity&); + void operator<< (::xercesc::DOMElement&, const Nml2Quantity_conductance&); @@ -65495,9 +66794,6 @@ namespace neuroml2 void operator<< (::xercesc::DOMElement&, const MembraneProperties2CaPools&); - void - operator<< (::xercesc::DOMElement&, const ValueAcrossSegOrSegGroup&); - void operator<< (::xercesc::DOMElement&, const SpikeThresh&); @@ -65808,4 +67104,4 @@ namespace neuroml2 // // End epilogue. -#endif // NEUROML_API_SCHEMA_NEURO_ML_V2_1_HXX +#endif // NEUROML_API_SCHEMA_NEURO_ML_V2_2_HXX diff --git a/src/schema/NeuroML_v2.2.xsd b/src/schema/NeuroML_v2.2.xsd new file mode 100644 index 0000000..a5a5461 --- /dev/null +++ b/src/schema/NeuroML_v2.2.xsd @@ -0,0 +1,3666 @@ + + + + + + + + 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 + + + + + + + + + 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 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: +:type v0: voltage +:param k: +:type k: conductance_per_voltage +:param vr: +:type vr: voltage +:param vt: +:type vt: voltage +:param vpeak: +:type vpeak: voltage +:param a: +:type a: per_time +:param b: +:type b: conductance +:param c: +:type c: voltage +:param d: +: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: +:type gL: conductance +:param EL: +:type EL: voltage +:param VT: +:type VT: voltage +:param thresh: +:type thresh: voltage +:param reset: +:type reset: voltage +:param delT: +:type delT: voltage +:param tauw: +:type tauw: time +:param refract: +:type refract: time +:param a: +:type a: conductance +:param b: +: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 and Rinzel 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + + + From f653cec158640a9cbf5957d384959a1408e07e7e Mon Sep 17 00:00:00 2001 From: "Ankur Sinha (Ankur Sinha Gmail)" Date: Mon, 17 Apr 2023 16:22:50 +0100 Subject: [PATCH 2/2] chore: add script to regenerate API on schema version update Fixes #12 --- update.sh | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100755 update.sh diff --git a/update.sh b/update.sh new file mode 100755 index 0000000..9906fcb --- /dev/null +++ b/update.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Copyright 2023 NeuroML contributors +# Author: NeuroML contributors +# File : update.sh +# +# Script to regenerate and update the API for a new version of the NeuroML schema +# +NEUROML_VERSION="2.2" + +echo "Please ensure that you have ctest and xsd installed. See readme for details." + +rm -rf build && \ + mkdir build && \ + pushd build && \ + cmake -DREGENERATE_BINDINGS=ON ../ && \ + make && \ + pushd src && sed -i -e 's/:param \(.*\):/@param \1/' -e '/:type/ d' -e '/\\n/ d' NeuroML_v${NEUROML_VERSION}.hxx && popd && \ + make doc && make copy_wrappers && + make test && popd && \ + echo "All done"