HDF5 support#
The XML serializations of large NeuroML models can be prohibitive to store. For such cases, NeuroML also includes support for saving models in the binary HDF5 format via the NeuroMLHdf5Writer in libNeuroML. The same format can be exported also from the Java API (example).
The format of the export is documented below:
Network is exported as a
network
HDF5 group withid
,notes
, and thetemperature
(optional) stored as attributes.Population is exported as a group with id
population_<id of the population>
withid
,component
,size
,type
, andproperty
tags stored as attributes.If the population is a population list that includes instances of cells, the locations of cells (x, y, z), these are stored in a 3 column table (“chunked array”) with a row per instance.
Projection is exported as a group with id
project_<id of the projection>
withid
,type
,presynapticPopulation
,postSynapticPopulation
,synapse
as attributes.Connection and ConnectionWD elements in projections are stored as rows in a table with the first two columns as the
pre_cell_id
andpost_cell_id
respectively, and the successive columns for the necessary attributes.
ElectricalProjection is exported similar to Projection with the ElectricalConnection, ElectricalConnectionInstance, and ElectricalConnectionInstanceW entries stored in tables.
ContinuousProjection is exported similar to Projection with the ContinuousConnection, ContinuousConnectionInstance, and ContinuousConnectionInstanceW entries stored in tables.
InputList is exported similar to Projection with the Input, and InputW entries stored in tables.
For more details, the source code of these export functions can be seen here in the libNeuroML repository and here in org.neuroml.model.
HDF5 NeuroML files can be read and processed by jnml
and pynml
in the same way as XML files (see here for LEMS Simulation file examples which reference HDF5 NeuroML models).