Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .codespellrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[codespell]
# Ref: https://github.com/codespell-project/codespell#using-a-config-file
# Exclude autogenerated files in scripts/ directory and build outputs
skip = .git*,*.pdf,*.svg,*.css,.codespellrc,./scripts/*,_build/*,build/*
check-hidden = true
ignore-regex = ^\s*"image/\S+": ".*|\b[a-z]*[A-Z][a-zA-Z]*\b
# childrens, childs: intentional plural forms used in documentation
ignore-words-list = childrens,childs
25 changes: 25 additions & 0 deletions .github/workflows/codespell.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Codespell configuration is within .codespellrc
---
name: Codespell

on:
push:
branches: [main]
pull_request:
branches: [main]

permissions:
contents: read

jobs:
codespell:
name: Check for spelling errors
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4
- name: Annotate locations with typos
uses: codespell-project/codespell-problem-matcher@v1
- name: Codespell
uses: codespell-project/actions-codespell@v2
10 changes: 5 additions & 5 deletions source/Events/2012-Edinburgh.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ Chair: Andrew Davison
* - 11:30
- **Collaborative Modelling Repository update**

Padraig presented the initial work towards an open source, collaborative repository for NeuroML models, the Open Source Brain project. A preliminary version of this is avaliable here. It will be based on a version control repository (initially Mercurial) storing the model files. It will have automatic generation of online documentation of the models from ChannelML, MorphML, etc. Connectivity matrices for network connections, etc. can be generated for models which are stored in neuroConstruct format. NeuroLex IDs can be used to identify cells and channels to other resources. Feedback on the initial implementation was welcomed.
Padraig presented the initial work towards an open source, collaborative repository for NeuroML models, the Open Source Brain project. A preliminary version of this is available here. It will be based on a version control repository (initially Mercurial) storing the model files. It will have automatic generation of online documentation of the models from ChannelML, MorphML, etc. Connectivity matrices for network connections, etc. can be generated for models which are stored in neuroConstruct format. NeuroLex IDs can be used to identify cells and channels to other resources. Feedback on the initial implementation was welcomed.

- Padraig Gleeson

Expand Down Expand Up @@ -148,7 +148,7 @@ Chair: Sharon Crook
-

* - 17:30
- **Reconvene and presentated discussions**
- **Reconvene and presented discussions**
-

* - 18:00
Expand Down Expand Up @@ -207,7 +207,7 @@ Chair: Michael Hines
* - 11:00
- **The OpenWorm project: Using NeuroML in a highly detailed model of C. elegans ([PPT](https://docs.neuroml.org/_static/NeuroML2012/Open_Worm_03-13-12.ppt))**

Stephen presented the OpenWorm project. This ambitious project aims to build an in silico model of C. elegans. This well studied system with ~1000 cells and 302 identified neurons is an ideal system with which to attempt a full simulation of a living organism down to cellular scale. Many different approaches are being take in the project at the moment, including investigatin Smoothed Particle Hydrodynamics (SHP) to allow simulation of the interaction of the worm with its environment, and creating a new parallel (GPU based) simulator in Java which will support physical and electrical simulations. Full reconstructions of all of the cells are available in 3D and those of the neurons have been converted to NeuroML, which will form the basis of a simulation of the worm's nervous system.
Stephen presented the OpenWorm project. This ambitious project aims to build an in silico model of C. elegans. This well studied system with ~1000 cells and 302 identified neurons is an ideal system with which to attempt a full simulation of a living organism down to cellular scale. Many different approaches are being take in the project at the moment, including investigating Smoothed Particle Hydrodynamics (SHP) to allow simulation of the interaction of the worm with its environment, and creating a new parallel (GPU based) simulator in Java which will support physical and electrical simulations. Full reconstructions of all of the cells are available in 3D and those of the neurons have been converted to NeuroML, which will form the basis of a simulation of the worm's nervous system.

One of the concrete outcomes of code sprinting work on the fringes of the NeuroML/CodeJam meeting was the updated OpenWorm Browser, where the full cellular structure of the worm can be browsed in 3D.

Expand Down Expand Up @@ -263,7 +263,7 @@ Chair: Avrama Blackwell

Sarah gave a brief overview of libSBML and SBML Level 3. libSBML, which provides an API for creating, editing and saving SBML in many languages (e.g. C++, Python, Java, Ruby, Perl) has been instrumental in the growth of the number of applications supporting SBML.

SBML Level 3 has a modular architecture, featuring a core specification (roughly in line with previous SBML releases) and a number of specialist packages, which applications can choose to support or not. Examples of these packages incluse layout for storing the spatial topology of a model's network diagram, comp for defining how a model is composed from other models and spatial for describing models that involve a spatial component. libSBML already has a generic framework to support extensions for generic packages.
SBML Level 3 has a modular architecture, featuring a core specification (roughly in line with previous SBML releases) and a number of specialist packages, which applications can choose to support or not. Examples of these packages include layout for storing the spatial topology of a model's network diagram, comp for defining how a model is composed from other models and spatial for describing models that involve a spatial component. libSBML already has a generic framework to support extensions for generic packages.

- Sarah Keating

Expand All @@ -281,7 +281,7 @@ Chair: Avrama Blackwell
-

* - 17:30
- **Reconvene and presentated discussions**
- **Reconvene and presented discussions**
-

* - 18:00
Expand Down
2 changes: 1 addition & 1 deletion source/Reference/references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ @Article{Sinha2025
url = {https://doi.org/10.7554/eLife.95135},
volume = {13},
article_type = {journal},
keywords = {systems modeling, computational, software infrastucture, simulation},
keywords = {systems modeling, computational, software infrastructure, simulation},
pub_date = {2025-01-10},
publisher = {eLife Sciences Publications, Ltd},
}
Expand Down
4 changes: 2 additions & 2 deletions source/Userdocs/ConvertingModels.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ Create a script to load the output of mod analysis and nml analysis and compare
(userdocs:creating_models:converting_conductance:compare_single_comp)=
### 4c) Compare single compartment cell with channels

Ensure you have a passive soma example in NeuroML which reproduces the behaviour of an equivalent passibe version inthe original format (from steps 3a and 4a above).
Ensure you have a passive soma example in NeuroML which reproduces the behaviour of an equivalent passibe version in the original format (from steps 3a and 4a above).

Gradually test the cell with passive conductance and *each channel individually*. Plot v along with rate variables for each channel & compare how they look during current pulse ([example in NEURON](https://github.com/OpenSourceBrain/BlueBrainProjectShowcase/blob/master/NMC/NEURON/Test_Soma.hoc) vs [example in NeuroML](https://github.com/OpenSourceBrain/BlueBrainProjectShowcase/blob/master/NMC/NeuroML2/Soma_AllNML2.cell.nml) and [LEMS](https://github.com/OpenSourceBrain/BlueBrainProjectShowcase/blob/master/NMC/NeuroML2/LEMS_Soma_AllNML2.xml))

Expand All @@ -138,7 +138,7 @@ export_to_neuroml2("test.hoc", "test.morphonly.cell.nml", includeBiophysicalProp

Alternatively manually add the `<channelDensity>` elements to the cell file (as [here](https://github.com/OpenSourceBrain/SmithEtAl2013-L23DendriticSpikes/blob/master/NeuroML2/L23_NoHotSpot.cell.nml#L16711)).

You can use the tools for {ref}`visualising NeuroML Models <userdocs:visualising_models>` to compare how these versions look agains the originals.
You can use the tools for {ref}`visualising NeuroML Models <userdocs:visualising_models>` to compare how these versions look against the originals.

As with the single compartment example, it's best to **start off with the passive case**, i.e no active channels on the soma or dendrites, and compare that to the original code (for membrane potential at multiple locations!), and gradually add channels.

Expand Down
2 changes: 1 addition & 1 deletion source/Userdocs/ExtendingNeuroMLv2.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ They define the membership structure of the type, but they do not specify values
Once a ComponentType has been defined, an instance of it can be created by setting values for its members.
This object is referred to as a **Component** in LEMS.

Having definitions in LEMS allows their re-use, and all new ComponentTypes can be submitted for inclusion to the NeuroMLv2 specification to be made accessible to other users.
Having definitions in LEMS allows their reuse, and all new ComponentTypes can be submitted for inclusion to the NeuroMLv2 specification to be made accessible to other users.

- Like NeuroML, LEMS also has a [well defined schema](https://github.com/LEMS/LEMS/tree/master/Schemas/LEMS) (XSD) that is used to validate LEMS XML files.
- Also similar to NeuroML, you can use the {ref}`LEMS Python tools <pylems>` to work with LEMS and do not need to work directly with the XML files.
Expand Down
2 changes: 1 addition & 1 deletion source/Userdocs/ImportingMorphologyFiles.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ Usually, morphologies are embedded in NeuroML cell definition files, {ref}`for e

However, morphologies (and {ref}`biophysical properties <schema:biophysicalproperties>`) can also be stored as "standalone" entities outside the cell definition and referred to.
Further, they can also be stored in external files that may be "included" in the cell definition file (using the [IncludeType](https://libneuroml.readthedocs.io/en/latest/userdocs/coreclasses.html#includetype) model element).
This allows the re-use of morphology and biophysical properties in multiple cell models:
This allows the reuse of morphology and biophysical properties in multiple cell models:

```{code-block} xml
<cell id="pyr_soma_m_out_b_out" morphology="morph0" biophysicalProperties="biophys1">
Expand Down
2 changes: 1 addition & 1 deletion source/Userdocs/LEMSExample1.md
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,7 @@ Although the channel models have now been defined, they still need to be used in
For this we'll just define a basic channel population type.
There is one new construct here: the ComponentRef element which in this case says that a channel population needs a reference to a component of type HHChannel. This is much like a Child element, but instead of the component being defined then and there inside the channel population, there is just a reference to it.

The Dynamics block for a cannel population just computes the total conductance and then the current, in this case using Ohm's law.
The Dynamics block for a channel population just computes the total conductance and then the current, in this case using Ohm's law.

```{code-block} xml
<ComponentType name="ChannelPopulation">
Expand Down
2 changes: 1 addition & 1 deletion source/Userdocs/LEMSExample4.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ First then, the following definitions can be used to express ion channel models
This says that a gate can contain any number of states and transitions.
A state has an occupancy variable, and a transition has links to two states giving the source and target states for the transition.

The transition element here is an abstract element because it doesn't provide a Dynamics block but just specifies what quantities transitions should privide via the two exposures.
The transition element here is an abstract element because it doesn't provide a Dynamics block but just specifies what quantities transitions should provide via the two exposures.
One of the most useful forms of transition is a damped Boltzman equation which can be parameterizd as follows:

```{code-block} xml
Expand Down
2 changes: 1 addition & 1 deletion source/Userdocs/LEMSExample5.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ This introduces a new construct, the DerivedParameter specification that defines
```

The path here uses XPath like syntax operating on the component tree in the model.
In this case, it finds all the elements of thpe MembranePotential in the model.
In this case, it finds all the elements of type MembranePotential in the model.
The predicate selects the one for which the species is the same as the species referred to from the channel used for this population.
Finally, it takes the "reversal" parameter from the membrane potential component.
This is made locally available as the parameter "erev".
Expand Down
2 changes: 1 addition & 1 deletion source/Userdocs/LEMSExample6.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ The 'variable' attribute is for future use - at present, the independent variabl

A Run element can be added to the Dynamics block in any type definition to make it independently runnable.

Running a simulation without any output is rarely much use, so there are two futher elements that can be included in the Dynamics block: Show and Record.
Running a simulation without any output is rarely much use, so there are two further elements that can be included in the Dynamics block: Show and Record.
The 'src' attribute of the Show element points to the components that should be shown.
These in turn can contain other Show elements but eventually everything pointed to by a Show element should contain one or more Record elements.
These specify what will actually be sent as output.
Expand Down
10 changes: 5 additions & 5 deletions source/Userdocs/LEMS_elements/Definingcomponenttypes.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,13 @@ Please file any issues or questions at the [issue tracker here](https://github.c
**componentReferences**$ {ref}`lemsschema:componentreference_`
**componentTypeReferences**$ {ref}`lemsschema:componenttypereference_`
**locations**$ {ref}`lemsschema:location_`
**propertys**$ {ref}`lemsschema:property_`
**properties**$ {ref}`lemsschema:property_`
**dynamicses**$ {ref}`lemsschema:dynamics_`
**structures**$ {ref}`lemsschema:structure_`
**simulations**$ {ref}`lemsschema:simulation_`
**equilibriums**$ {ref}`lemsschema:equilibrium_`
**procedures**$ {ref}`lemsschema:procedure_`
**geometrys**$ {ref}`lemsschema:geometry_`
**geometries**$ {ref}`lemsschema:geometry_`
**fixeds**$ {ref}`lemsschema:fixed_`
**constants**$ {ref}`lemsschema:constant_`
**attachmentses**$ {ref}`lemsschema:attachments_`
Expand Down Expand Up @@ -195,7 +195,7 @@ Please file any issues or questions at the [issue tracker here](https://github.c
(lemsschema:pathparameter_)=
## PathParameter

<i>A parameter of which the value is a path expression. When a ComponentType declares a PathParameter, a corresponding Component definition should have an attibute with that name whose value is a path expression that evaluates within the instance tree of the built model. This is used, for example, in the definition of a group component class, where the coresponding component specifies a path over the instance tree which selectesthe items that should go in the group.</i>
<i>A parameter of which the value is a path expression. When a ComponentType declares a PathParameter, a corresponding Component definition should have an attribute with that name whose value is a path expression that evaluates within the instance tree of the built model. This is used, for example, in the definition of a group component class, where the corresponding component specifies a path over the instance tree which selectesthe items that should go in the group.</i>

`````{tab-set}
````{tab-item} Properties
Expand Down Expand Up @@ -697,7 +697,7 @@ Please file any issues or questions at the [issue tracker here](https://github.c
(lemsschema:collection_)=
## Collection

<i>Specifies that instances of components based on this class can containe a named collection of other instances. This provides for containers for oprating on groups of instances with path and filter expressions defined in components to operate over the instance tree.</i>
<i>Specifies that instances of components based on this class can contain a named collection of other instances. This provides for containers for operating on groups of instances with path and filter expressions defined in components to operate over the instance tree.</i>

`````{tab-set}
````{tab-item} Properties
Expand Down Expand Up @@ -873,7 +873,7 @@ Please file any issues or questions at the [issue tracker here](https://github.c
(lemsschema:attachments_)=
## Attachments

<i>Specifies that a component can accept attached components of a particular class. Attached components can be added at build time dependent on other events. For scoping and access purposes they are like child components. The cannonical use of attachments is in adding synapses to a cell when a network connection is made.</i>
<i>Specifies that a component can accept attached components of a particular class. Attached components can be added at build time dependent on other events. For scoping and access purposes they are like child components. The canonical use of attachments is in adding synapses to a cell when a network connection is made.</i>

`````{tab-set}
````{tab-item} Properties
Expand Down
6 changes: 3 additions & 3 deletions source/Userdocs/LEMS_elements/Dynamics.md
Original file line number Diff line number Diff line change
Expand Up @@ -267,8 +267,8 @@ Please file any issues or questions at the [issue tracker here](https://github.c
**select**$ String$ A path to the variable that supplies the value. Note that to select a variable from another component, the variable must be marked as an Exposure. Exactly one of 'select' and 'value' is required
**dimension**$ String$ The dimension, or 'none'. This should be the name of an already defined dimension element
**description**$ String$ An optional description of the derived variable
**reduce**$ String$ Either 'add' or 'multiply'. This applies if ther are multiple matches to the path or if 'required' is false. In the latter case, for multiply mode, multiplicative expressions in this variable behave as if the term was absent. Additive expressions generate an error. Conversely, if set to 'add' then additive expressions behave as if it was not there and multiplicative ones generateand error.
**exposure**$ String$
**reduce**$ String$ Either 'add' or 'multiply'. This applies if there are multiple matches to the path or if 'required' is false. In the latter case, for multiply mode, multiplicative expressions in this variable behave as if the term was absent. Additive expressions generate an error. Conversely, if set to 'add' then additive expressions behave as if it was not there and multiplicative ones generateand error.
**exposure**$ String$
**required**$ boolean$ Set to true if it OK for this variable to be absent. See 'reduce' for what happens in this case
**value**$ String$ A string defining the value of the element

Expand Down Expand Up @@ -553,7 +553,7 @@ Please file any issues or questions at the [issue tracker here](https://github.c
**edges**$ String$ The element that provides the transitions for the scheme
**stateVariable**$ String$ Name of state variable in state elements
**edgeSource**$ String$ The name of the attribute in the rate element that defines the source of the transition
**edgeTarget**$ String$ Attribute tha defines the target
**edgeTarget**$ String$ Attribute that defines the target
**forwardRate**$ String$ Name of forward rate exposure
**reverseRate**$ String$ Name of reverse rate exposure

Expand Down
Loading