Skip to content

Commit

Permalink
Add hindmarshRose1984Cell to core cells & schema
Browse files Browse the repository at this point in the history
  • Loading branch information
pgleeson committed Sep 20, 2023
1 parent 9d8ec40 commit 8832fef
Show file tree
Hide file tree
Showing 4 changed files with 114 additions and 2 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -67,3 +67,4 @@ examples/*.pov
/LEMSexamples/*.gen.so
/LEMSexamples/tmp
arm64
/examples/NML2_SingleCompHHCell.nml__flattened.xml
85 changes: 85 additions & 0 deletions NeuroML2CoreTypes/Cells.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1747,5 +1747,90 @@
</ComponentType>


<ComponentType name="hindmarshRose1984Cell"
extends="baseCellMembPotCap"
description="
The Hindmarsh Rose model is a simplified point cell model which
captures complex firing patterns of single neurons, such as
periodic and chaotic bursting. It has a fast spiking subsystem,
which is a generalization of the FitzHugh-Nagumo system, coupled
to a slower subsystem which allows the model to fire bursts. The
dynamical variables x,y,z correspond to the membrane potential, a
recovery variable, and a slower adaptation current, respectively.
See Hindmarsh J. L., and Rose R. M. (1984) A model of neuronal
bursting using three coupled first order differential equations.
Proc. R. Soc. London, Ser. B 221:87–102.
">

<Parameter name="a" dimension="none" description="cubic term in x nullcline"/>
<Parameter name="b" dimension="none" description="quadratic term in x nullcline"/>
<Parameter name="c" dimension="none" description="constant term in y nullcline"/>
<Parameter name="d" dimension="none" description="quadratic term in y nullcline"/>
<Parameter name="r" dimension="none" description="timescale separation between slow and fast subsystem (r greater than 0; r much less than 1)"/>
<Parameter name="s" dimension="none" description="related to adaptation"/>
<Parameter name="x1" dimension="none" description="related to the system's resting potential"/>

<Parameter name="v_scaling" dimension="voltage" description="scaling of x for physiological membrane potential"/>

<!-- Initial Conditions -->
<Parameter name="x0" dimension="none"/>
<Parameter name="y0" dimension="none"/>
<Parameter name="z0" dimension="none"/>

<Constant name="MSEC" dimension="time" value="1ms"/>

<Attachments name="synapses" type="basePointCurrent"/>

<Exposure name="x" dimension="none"/>
<Exposure name="y" dimension="none"/>
<Exposure name="z" dimension="none"/>
<Exposure name="phi" dimension="none"/>
<Exposure name="chi" dimension="none"/>
<Exposure name="rho" dimension="none"/>
<!-- <Exposure name="v" dimension="voltage"/> --> <!-- Already exposed from baseCellMembPot -->
<!--<Exposure name="iSyn" dimension="none"/>-->
<Exposure name="spiking" dimension="none"/>

<Dynamics>

<!--<StateVariable name="x" dimension="none" exposure="x"/>-->
<StateVariable name="v" dimension="voltage" exposure="v"/>
<StateVariable name="y" dimension="none" exposure="y"/>
<StateVariable name="z" dimension="none" exposure="z"/>
<StateVariable name="spiking" dimension="none" exposure="spiking"/>

<DerivedVariable name="iSyn" dimension="current" exposure="iSyn" select="synapses[*]/i" reduce="add" />

<DerivedVariable name="x" dimension="none" exposure="x" value="v / v_scaling"/>

<DerivedVariable name="phi" dimension="none" exposure="phi" value="y - a * x^3 + b * x^2"/>
<DerivedVariable name="chi" dimension="none" exposure="chi" value="c - d * x^2 - y"/>
<DerivedVariable name="rho" dimension="none" exposure="rho" value="s * ( x - x1 ) - z"/>

<DerivedVariable name="iMemb" dimension="current" exposure="iMemb" value="(C * (v_scaling * (phi - z) / MSEC)) + iSyn"/>

<TimeDerivative variable="v" value="iMemb/C"/>

<TimeDerivative variable="y" value="chi / MSEC"/>
<TimeDerivative variable="z" value="r * rho / MSEC"/>

<OnStart>
<StateAssignment variable="v" value="x0 * v_scaling"/>
<StateAssignment variable="y" value="y0"/>
<StateAssignment variable="z" value="z0"/>
</OnStart>

<OnCondition test="v .gt. 0 .and. spiking .lt. 0.5">
<StateAssignment variable="spiking" value="1"/>
<EventOut port="spike"/>
</OnCondition>

<OnCondition test="v .lt. 0">
<StateAssignment variable="spiking" value="0"/>
</OnCondition>

</Dynamics>

</ComponentType>

</Lems>
4 changes: 2 additions & 2 deletions NeuroML2CoreTypes/Synapses.xml
Original file line number Diff line number Diff line change
Expand Up @@ -536,10 +536,10 @@

<Property name="weight" dimension="none" defaultValue="1"/> <!-- Not used...-->

<Exposure name="i" dimension="current"/>

<Constant name="AMP" dimension="current" value="1A"/>

<Exposure name="i" dimension="current"/>

<Requirement name="v" dimension="voltage"/>

<InstanceRequirement name="peer" type="baseGradedSynapse"/>
Expand Down
26 changes: 26 additions & 0 deletions Schemas/NeuroML2/NeuroML_v2.3.xsd
Original file line number Diff line number Diff line change
Expand Up @@ -503,6 +503,7 @@
<xs:element name="fitzHughNagumoCell" type="FitzHughNagumoCell" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="fitzHughNagumo1969Cell" type="FitzHughNagumo1969Cell" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="pinskyRinzelCA3Cell" type="PinskyRinzelCA3Cell" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="hindmarshRose1984Cell" type="HindmarshRose1984Cell" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:group>
<xs:group name="PyNNCellTypes">
Expand Down Expand Up @@ -1796,6 +1797,31 @@
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="HindmarshRose1984Cell">
<xs:annotation>
<xs:documentation>....

</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="BaseCellMembPotCap">
<xs:attribute name="a" type="Nml2Quantity_none" use="required"/>
<xs:attribute name="b" type="Nml2Quantity_none" use="required"/>
<xs:attribute name="c" type="Nml2Quantity_none" use="required"/>
<xs:attribute name="d" type="Nml2Quantity_none" use="required"/>
<xs:attribute name="s" type="Nml2Quantity_none" use="required"/>
<xs:attribute name="x1" type="Nml2Quantity_none" use="required"/>
<xs:attribute name="r" type="Nml2Quantity_none" use="required"/>
<xs:attribute name="x0" type="Nml2Quantity_none" use="required"/>
<xs:attribute name="y0" type="Nml2Quantity_none" use="required"/>
<xs:attribute name="z0" type="Nml2Quantity_none" use="required"/>
<xs:attribute name="v_scaling" type="Nml2Quantity_voltage" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>


<xs:complexType name="Cell">
<xs:annotation>
<xs:documentation>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.
Expand Down

0 comments on commit 8832fef

Please sign in to comment.