Skip to content

SONATA for Arbor

noraabiakar edited this page Feb 14, 2019 · 5 revisions

This page simplifies and summarizes the SONATA Developer guide. It lists the necessary elements to build a complete description of a simulation network.

Morphologies

Morphologies are described using SWC format using the following structure:

Column Interpretaion
1 ID (Sample Number)
2 Type
3 X Position (um)
4 Y Position (um)
5 Z Position (um)
6 Radius (um)
7 Parent ID (Parent Sample Number)

Types are mapped as follows: 1 - soma 2 - axon 3 - basal dendrite 4 - apical dendrite.
IDs must start at 1 and be contiguous
Other rules are listed in the Developer's Guide.

Ion channels and synapse models

For NEURON, nmod files are used. Potentially the same can be specified for Arbor.

Biophysical neuron channel distribution and composition

Represents the parameterization and distribution of ion channels and passive properties of neurons**.
Supported file formats:

  1. XML file using a NeuroML "biophysicalProperties" and “concentrationModel”. (example).
  2. JSON file using Allen Cell Types Data Base schema (example).
  3. HOC template (example).

**AFAICT, the main point of this file is to set the parameters specified in the nmod files.

Network

Networks are represented as nodes and edges.

Nodes

2 files are needed: A CSV file that describes node types and an HDF5 file that lists all nodes and their type and properties.

1. CSV file: node types

Has to contain at least the following columns:

  • node_type_id: unique node type id per node population (refer to developer guide for more info on node populations)
  • pop_name: to identify the node population

Other columns that must either be included in the CSV file, or per node in the HDF5 file

  • model_type: one of biophysical, virtual, single_compartment, and point_neuron
  • model_template: AFAICT refers to the Ion channels and synapse models files discussed above.
  • dynamics_params: AFAICT refers to the Biophysical neuron channel distribution and composition files discussed above.
  • morphology: refers to the morphology files discussed above.

Other reserved columns that don't need to be added can be found in the Developer Guide. Extra undefined columns can be added for convenience.

2. HDF5 file: full list of nodes

Structured as follows:

nodes  
|_______ population0
|                  |_________ node_group_id
|                  |_________ node_group_index  
|                  |_________ node_id
|                  |_________ node_type_id
|                  |_________ 0
|                  |          |_________ dynamics_params
|                  |          |_________ morphology
|                  |          |_________ etc
|                  |_________ 1
|                  |          |_________ model_template
|                  |_________ 2
|                  |          |_________ ...
|                  |_________ ...
|                  |_________ ...
|                  |_________ _last group id_
|                             |_________ ...
|______ population1  
|                  |_________ ...
|______ population2  
|                  |_________ ...
|______ etc.  
  • node_group_id : Assigns each node to a specific group of nodes
  • node_group_index : Indicates the index within a node_group that contains all the attributes for a particular node under consideration.
  • node_id : Assigns a key to uniquely identify and lookup a node within a population. It is primarily used to specify the source and target of an edge (connection)
  • node_type_id : refers to node_type_id from the CSV file previously discussed.

Edges:

2 files are needed: A CSV file that describes edge types and an HDF5 file that lists all edges and their type and properties.

1. CSV file: edge types

Has to contain at least the following columns:

  • edge_type_id: unique edge type id per edge population (refer to developer guide for more info on edge populations)
  • pop_name: to identify the edge population

Optional reserved columns:

  • model_template: AFAICT refers to the Ion channels and synapse models files discussed above. Can be NULL.
  • dynamics_params: AFAICT refers to the Biophysical neuron channel distribution and composition files discussed above.
  • delay: Axonal delay when the synaptic event begins relative to a spike from the presynaptic source. Units depend on the application (NEURON: ms).
  • syn_weight: Strength of the connection between the source and target nodes. The units depend on the requirements of the target mechanism.
  • source_pop_name: population name of the sender node id of a connection.
  • target_pop_name: population name of the receiver node id of a connection.

Other reserved columns that don't need to be added can be found in the Developer Guide. Extra undefined columns can be added for convenience.

2. HDF5 file: full list of edges

Structured as follows:

edges  
|_______ population0
|                  |_________ edge_group_id
|                  |_________ edge_group_index  
|                  |_________ edge_id
|                  |_________ edge_type_id
|                  |_________ source_node_id
|                  |_________ target_node_id
|                  |_________ 0
|                  |          |_________ dynamics_params
|                  |          |_________ delay
|                  |          |_________ etc
|                  |_________ 1
|                  |          |_________ model_template
|                  |_________ 2
|                  |          |_________ ...
|                  |_________ ...
|                  |_________ ...
|                  |_________ _last group id_
|                             |_________ ...
|______ population1  
|                  |_________ ...
|______ population2  
|                  |_________ ...
|______ etc.  
  • edge_group_id : Assigns each edge to a specific group of edges
  • edge_group_index : Indicates the index within a edge_group that contains all the attributes for a particular edge under consideration.
  • edge_id : Assigns a key to uniquely identify and lookup a edge within a population. It is primarily used to specify the source and target of an edge (connection)
  • edge_type_id : refers to edge_type_id from the CSV file previously discussed.
  • source_node_id : Specifies the sender node_id of the connection. The "source_pop_name" attribute of this dataset specifies the name of the source node population in which the node is valid. (AFAICT)
  • target_node_id : Specifies the receiver node id of the connection. The "target_pop_name" attribute of this dataset specifies the name of the target node population in which the node is valid. (AFAICT)

To Be continued:

  • Optional edge indexing
  • The network/circuit config file