Every canonical NeuroML2 example, expressed as one TVB-O specification and checked against jNeuroML
The full NeuroML2 example suite in TVB-O: what a LEMS experiment costs in XML, what it costs in YAML, and how closely the two traces agree.
Interoperability·NeuroML / LEMS
The NeuroML2 repository ships a canonical example suite: the tests the NeuroML community uses to decide whether a simulator implements the standard. TVB-O expresses every one of them as a single specification and checks the result against jNeuroML. This page is the scoreboard; each row links to the worked example behind it.
What a LEMS experiment costs in XML
NeuroML splits a model across two file kinds. A .nml file defines reusable biological components (ion channels, cells, synapses, morphologies, networks) in a domain-specific schema:
A LEMS .xml file is the simulation harness: it includes the component files, wires them into a network, sets duration and step, and names what to record.
A typical experiment therefore needs at least four files: three core includes that themselves import dozens more, the LEMS file, and one or more .nml models. The equations are nowhere in them; they live in type attributes pointing into the LEMS component-type hierarchy.
What it costs in TVB-O
One document, with the equations in it. The FitzHugh-Nagumo oscillator of Ex9:
name: FitzHughNagumostate_variables:V:{equation:{rhs:"V - V**3/3 - W + I"}}W:{equation:{rhs:"0.08 * (V + 0.7 - 0.8 * W)"}}parameters:I:{value:0.8}integrator:{scheme: euler,dt:0.01,duration:200}
From that one spec, exp.render("lems") emits LEMS XML that jNeuroML runs, exp.run() simulates directly, and exp.render("julia") or exp.render("pyrates") targets another ecosystem entirely. See LEMS export for the emitter and IRI versus YAML for how a component is referenced rather than copied.
The conformance table
Each example is defined as a TVB-O SimulationExperiment, rendered to LEMS, run through jNeuroML as the reference, run again through NeuroMLAdapter, and compared trace by trace. The table below is read from the run record, so it reports what the last suite execution actually measured.
27 of 27 examples reproduce the jNeuroML reference; 0 of 27 render XML that is byte-identical to the canonical file.
The verdict is correlation-based: an example passes when its trace tracks the reference in shape. Two consequences are visible in the table above and neither is hidden.
A scale error still passes.Ex22 (Pinsky-Rinzel) reaches \(r \approx 1\) with a worst NRMSE near 787. The waveform is right and the amplitude is not. Where the NRMSE column is not small, the example demonstrates structural agreement only.
The XML is equivalent, not identical. No example renders a byte-for-byte copy of the canonical file. TVB-O emits standard NeuroML2 component types that jNeuroML runs to the same result, which is the property that matters for interchange and the one the numerical columns measure.
Component examples
Alongside the LEMS simulation suite, the NeuroML2 repository ships component files that define models without running them. Each is expressed as a TVB-O object and re-emitted:
jNeuroML runs the reference side and ships with pyNeuroML, so a working Java is the only extra requirement. The script rewrites _run_all_examples_results.json, and the table above follows.