SONATA Simulation Configuration file

A simulation configuration file is a json formatted text file used for storing simulation parameters such as stimulus to drive activity, reports to collect data during run, and overrides to adapt the behavior according to experimental conditions and properties.

The file is broken up into separate sections detailed below.

version

Optional.

Follows the same guidelines as in Circuit Config Version and shares the same version number. The current version is “2.4”.

manifest

Optional.

Variables defining paths and being used in the rest of the simulation configuration file. A variable can be defined as:

  • “.” which is the path to the directory containing the simulation configuration file

  • an absolute path

“.” is always resolved as the directory containing the simulation configuration file even in the absence of manifest.

The manifest is only valid in its local file, e.g., the circuit manifest variables are not visible here.

network

Optional.

A parameter specifying the path of the circuit configuration file for which the simulation should be performed. The default value is “circuit_config.json”.

example:

"network": "${BASE_DIR}/circuit_config.json"

target_simulator

Optional.

A parameter specifying which simulator to run. See Circuit Config target_simulator for valid values. If not specified, the value from the network’s circuit_config.json is used.

node_sets_file

Optional.

A file defining the list of nodesets applicable to the simulation. (see SONATA Node Sets) The circuit_config nodesets are considered the base set of nodesets; the values in this file are added to the possible nodesets, and overwrite any duplicates from the base set.

node_set

Optional.

A parameter specifying the cells from which node set should be instantiated for the simulation. The absence of that property means that all (non virtual) nodes of all populations are loaded.

compartment_sets_file

Optional

Path to a compartment_sets.json file defining precise compartment targets. See File: compartment_sets.json for the full specification.

example:

"compartment_sets_file": "${BASE_DIR}/compartment_sets.json"

run

Mandatory.

Parameters defining global simulation settings. As NEURON is the engine used for simulation at BBP, find additional details about Simulation Control at https://nrn.readthedocs.io/en/latest/python/simctrl/programmatic.html

Property

Type

Requirement

Description

tstop

float

Mandatory

Simulation runs until biological time (t) reaches tstop. Given in ms.

dt

float

Mandatory

Duration of a single integration timestep. Given in ms.

random_seed

integer

Mandatory

For random sequences, seed is a positive integer added in order to give the user the capacity to change the sequences.

spike_threshold

float

Optional

The spike detection threshold. A spike is detected whenever the voltage in the spike detection location goes over the spike threshold value. Default is -30.0 mV. NEURON specific details.

integration_method

text

Optional

Selects the NEURON/CoreNEURON integration method. This parameter sets the NEURON global variable h.secondorder. The allowed values are “euler” (default) for fully implicit backward euler, “crank_nicolson” for Crank-Nicolson and “crank_nicolson_ion” for Crank-Nicolson with fixed ion currents.

stimulus_seed

integer

Optional

A non-negative integer used for seeding noise stimuli and any other future stochastic stimuli, default is 0.

ionchannel_seed

integer

Optional

A non-negative integer used for seeding stochastic ion channels, default is 0.

minis_seed

integer

Optional

A non-negative integer used for seeding the Poisson processes that drive the minis, default is 0.

synapse_seed

integer

Optional

A non-negative integer used for seeding stochastic synapses, default is 0.

Note

The electrodes_file field has been moved from the run section to individual LFP report blocks (see SONATA reports). Specifying electrodes_file in the run section is no longer valid.

Migration example:

Before (deprecated):

"run": {
    "tstop": 100,
    "dt": 0.025,
    "random_seed": 12345,
    "electrodes_file": "/path/to/electrodes.h5"
},
"reports": {
    "lfp_report": {
        "type": "lfp",
        "cells": "Mosaic",
        "variable_name": "v",
        "dt": 0.1,
        "start_time": 0,
        "end_time": 100
    }
}

After:

"run": {
    "tstop": 100,
    "dt": 0.025,
    "random_seed": 12345
},
"reports": {
    "lfp_report": {
        "type": "lfp",
        "cells": "Mosaic",
        "dt": 0.1,
        "start_time": 0,
        "end_time": 100,
        "electrodes_file": "/path/to/electrodes.h5"
    }
}

example:

"run": {
     "tstop": 1000,
     "dt": 0.025,
     "random_seed": 201506,
     "integration_method" : 2
}

output

Optional.

Parameters to override simulation output.

Property

Type

Requirement

Description

output_dir

text

Optional

Location where output files should be written, namely spikes and reports. Relative paths are interpreted relative to location of simulation_config. Default is relative path ‘output’.

log_file

text

Optional

Specify the filename where console output is written. Default is STDOUT. (When using BBP machines, slurm will capture STDOUT file).

spikes_file

text

Optional

File name where will be listed Action Potentials generated during simulation. Default is out.h5.

spikes_sort_order

text

Optional

The sorting of the Action Potentials. Options include “none”, “by_id”, “by_time”. BBP currently only supports “none” and “by_time”. The default value is “by_time”.

example:

"output": {
     "output_dir": "output",
     "spikes_file": "out.h5"
}

conditions

Optional.

Parameters defining global experimental conditions.

Property

Type

Requirement

Description

celsius

float

Optional

Temperature of experiment. Default is 34.0.

v_init

float

Optional

Initial membrane voltage in mV. Default is -80.

spike_location

text

Optional

The spike detection location. Can be either ‘soma’ or ‘AIS’ for detecting spikes in either the soma or axon initial segment, respectively. Default is ‘soma’.

extracellular_calcium

float

Optional

Extracellular calcium concentration. When this parameter is provided, apply it to the synapse uHill parameter to scale the U parameter of synapses (py-neurodamus only feature). If not specified, U is set directly as read from edges file.

randomize_gaba_rise_time

boolean

Optional

When true, enable legacy behavior to randomize the GABA_A rise time in the helper functions. Default is false which will use a prescribed value for GABA_A rise time.

mechanisms

Optional

Properties to assign values to GLOBAL variables in synapse or mechanism MOD files. The format is a dictionary with keys being the SUFFIX names of MOD files (unique names of mechanisms) and values being dictionaries of variable names in the MOD files and their values. Read about NMODL2 SUFFIX description here.

modifications

Optional

List of dictionaries with each member describing a modification that mimics experimental manipulations to the circuit. They are executed in the order as being read from the file.

Parameters required for modifications

property

Type

Requirement

Description

name

text

Mandatory

Descriptive name for the modification.

node_set

text

Optional

Node set which receives the manipulation. Either compartment_set or node_set must be present in each of dictionaries in modifications list. Both can’t be missing.

type

text

Mandatory

Name of the manipulation. Supported values are section_list, section, compartment_set, ttx, and configure_all_sections.

ttx mimics the application of tetrodotoxin, which blocks sodium channels and precludes spiking.

configure_all_sections is a generic way to modify variables (properties, mechanisms, etc.) per morphology section.

section_list, section and compartment_set are specific manipulation types at different levels of the morphology. See below for more details.

section_configure

text

Mandatory*

For configure_all_sections manipulation, a snippet of python code to perform one or more assignments involving section attributes, for all sections that have all the referenced attributes.

The wildcard %s represents each section. Multiple statements are separated by semicolons. E.g., %s.attr = value; %s.attr2 \*= value2.

For section_list, section and compartment_set manipulations, a snippet of python code to perform one or more assignments involving attributes as follows:

section_list: entries should be of the form, e.g. "apical.gbar_NaTg = 0.0; apical.cm = 1". This will set the gbar_NaTg to 0 and cm to 1 for all sections in the apical dendrites. All statements must use the same section list name, such as apical in the above example.

section: entries should be of the form, e.g. "apic[10].gbar_KTst = 0; apic[10].gbar_NaTg = 0". This will set the gbar_KTst to 0 and gbar_NaTg to 0 for all segments of apic[10] section. All statements must reference the same specific section, such as apic[10] in the above example.

compartment_set: entries should be of the form, e.g. "gbar_KTst = 0; gbar_NaTg = 0". This will set the gbar_KTst to 0 and gbar_NaTg to 0 for all segments contained in the property compartment_set. Note, when the property type is set compartment_set, you should also specify the property compartment_set. In addition, the simulation must declare the compartment_sets_file at the top level. See compartment_sets_file. Sections and segments referenced in the compartment_sets_file need not be the same section or section list.

compartment_set

text

Optional

The compartment_set to use for manipulation from compartment_sets_file json file. The type must be compartment_set. In the example below, “dend_ca_hotspot_name” is the compartment_set name.

Note

For all modification types (section_list, section, compartment_set), the section_configure is applied only to sections/segments that possess all the referenced attributes. A warning is logged if the configuration applies to zero sections or segments. To reference variables in multiple section types or section indices, multiple modifications dictionaries must be added to the file. User should not combine in a single modifications dictionary. e.g. "type": "section_list", one dictionary for apical sections with "section_configure": "apical.gbar_NaTg = 0.0" and another dictionary for basal sections with "section_configure": "basal.gbar_NaTg = 0.0". Multiple modifications of the same type can be defined in section_configure e.g. "section_configure": "apical.gbar_NaTg = 0.0; apical.cm = 1". If compartment_set is defined, node_set must not be specified. The referenced compartment set must be valid, sorted, and free of duplicates (as in reports). The json file specified by compartment_sets_file is described here in File: compartment_sets.json under SONATA reports.

example:

"conditions": {
     "celsius": 34.0,
     "spike_location": "AIS",
     "mechanisms": {
         "ProbAMPANMDA_EMS": {
             "init_depleted": true,
             "minis_single_vesicle": false
         },
         "ProbGABAAB_EMS" : {
             "property_x": 1,
             "property_y": 0.25
         },
         "GluSynapse": {
             "property_z": "string"
         },
         "StochKv3": {
              "vmin": 0.0
          }
     },
     "modifications": [
         {
             "name": "applyTTX",
             "node_set": "single",
             "type": "ttx"
         },
         {
             "name": "no_SK_E2",
             "node_set": "single",
             "type": "configure_all_sections",
             "section_configure": "%s.gSK_E2bar_SK_E2 = 0"
         },
         {
             "name": "apical_block_NaTg",
             "node_set": "single",
             "type": "section_list",
             "section_configure": "apical.gbar_NaTg = 0"
         },
         {
             "name": "apical[10]_KTst_NaTg_block",
             "node_set": "single",
             "type": "section",
             "section_configure": "apic[10].gbar_KTst = 0; apic[10].gbar_NaTg = 0"
         },
         {
             "name": "Ca_hotspot_dend[10]_manipulation",
             "type": "compartment_set",
             "compartment_set": "dend_ca_hotspot_name",
             "section_configure": "gbar_Ca_HVA2 = 1.5; gbar_Ca_LVA = 2"
         }
     ]
}
"compartment_sets_file": "compartment_sets.json"

The compartment_sets.json should be of the form:

{
  "dend_ca_hotspot_name": {
    "population": "S1nonbarrel_neurons",
    "compartment_set": [
      [1, 35, 0.1],
      [1, 35, 0.3],
      [1, 35, 0.7]
    ]
  }
}

Here, each list in the compartment_set is of the form [node_id, section_id, compartment_id]. See File: compartment_sets.json under SONATA reports for more details. For "name": "Ca_hotspot_dend[10]_manipulation" with [1, 35, 0.1], if section_id 35 represents dend[10] of the neuron node_id 1 in population "S1nonbarrel_neurons", the compartment manipulation will set the gbar_Ca_HVA2 to 1.5 and gbar_Ca_LVA to 2 for the segments dend[10](0.1), dend[10](0.3), and dend[10](0.7).

inputs

Optional.

Dictionary of dictionaries with each member describing one pattern of stimulus to be injected.

Property

Type

Requirement

Description

module

text

Mandatory

The type of stimulus dictating additional parameters (see addtional tables below). Supported values: “linear”, “relative_linear”, “pulse”, “sinusoidal”, “subthreshold”, “hyperpolarizing”, “synapse_replay”, “seclamp”, “noise”, “shot_noise”, “relative_shot_noise”, “absolute_shot_noise”, “ornstein_uhlenbeck”, “relative_ornstein_uhlenbeck”, “spatially_uniform_e_field”.

input_type

text

Mandatory

The type of the input with the reserved values : “spikes”, “extracellular_stimulation”, “current_clamp”, “voltage_clamp”, “conductance”. Should correspond according to the module (see additional tables below). Currently, not validated by BBP simulation which will use the appropriate input_type regardless of the string passed.

delay

float

Mandatory

Time in ms when input is activated. Not applicable for the “seclamp” module because the SEClamp is always on at time=0, see NEURON SEClamp.

duration

float

Mandatory

Time duration in ms for how long input is activated.

node_set

text

Optional

Node set which is affected by input. Mutually exclusive with compartment_set.

compartment_set

string

Optional

Name of a compartment set from compartment_sets.json. Cannot be used with node_set. Stimulus will be applied only to the specified compartments.

Note

node_set and compartment_set are mutually exclusive parameters and exactly one of them is required. Providing both or neither is invalid. The simulation must declare the compartment_sets_file at the top level. The referenced compartment set must be valid, sorted, and free of duplicates (as in reports).

Below are additional parameters used depending on the module (input_type)

linear (current_clamp)

A continuous injection of current.

Property

Type

Requirement

Description

amp_start

float

Mandatory

The amount of current initially injected when the stimulus activates. Given in nA.

amp_end

float

Optional

If given, current is interpolated such that current reaches this value when the stimulus concludes. Otherwise, current stays at amp_start. Given in nA.

represents_physical_electrode

boolean

Optional

Default is False. If True, the signal will be implemented using a NEURON IClamp mechanism. The IClamp produce an electrode current which is not included in the calculation of extracellular signals, so this option should be used to represent a physical electrode. If the noise signal represents synaptic input, represents_physical_electrode should be set to False, in which case the signal will be implemented using a MembraneCurrentSource mechanism, which is identical to IClamp, but produce a membrane current, which is included in the calculation of the extracellular signal.

relative_linear (current_clamp)

A continues injection of current, regulated according to the current a cell requires to reach threshold.

Property

Type

Requirement

Description

percent_start

float

Mandatory

The percentage of a cell’s threshold current to inject when the stimulus activates.

percent_end

float

Optional

If given, The percentage of a cell’s threshold current is interpolated such that the percentage reaches this value when the stimulus concludes. Otherwise, stays at percent_start.

represents_physical_electrode

boolean

Optional

Default is False. If True, the signal will be implemented using a NEURON IClamp mechanism. The IClamp produce an electrode current which is not included in the calculation of extracellular signals, so this option should be used to represent a physical electrode. If the noise signal represents synaptic input, represents_physical_electrode should be set to False, in which case the signal will be implemented using a MembraneCurrentSource mechanism, which is identical to IClamp, but produce a membrane current, which is included in the calculation of the extracellular signal.

pulse (current_clamp)

Series of current pulse injections.

Property

Type

Requirement

Description

amp_start

float

Mandatory

The amount of current initially injected when each pulse activates. Given in nA.

width

float

Mandatory

The length of time each pulse lasts. Given in ms.

frequency

float

Mandatory

The frequency of pulse trains. Given in Hz.

represents_physical_electrode

boolean

Optional

Default is False. If True, the signal will be implemented using a NEURON IClamp mechanism. The IClamp produce an electrode current which is not included in the calculation of extracellular signals, so this option should be used to represent a physical electrode. If the noise signal represents synaptic input, represents_physical_electrode should be set to False, in which case the signal will be implemented using a MembraneCurrentSource mechanism, which is identical to IClamp, but produce a membrane current, which is included in the calculation of the extracellular signal.

sinusoidal (current_clamp)

Series of current pulse injections.

Property

Type

Requirement

Description

amp_start

float

Mandatory

The peak amplitude of the sinusoid. Given in nA.

frequency

float

Mandatory

The frequency of the waveform. Given in Hz.

dt

float

Optional

Timestep of generated signal in ms. Default is 0.025 ms.

represents_physical_electrode

boolean

Optional

Default is False. If True, the signal will be implemented using a NEURON IClamp mechanism. The IClamp produce an electrode current which is not included in the calculation of extracellular signals, so this option should be used to represent a physical electrode. If the noise signal represents synaptic input, represents_physical_electrode should be set to False, in which case the signal will be implemented using a MembraneCurrentSource mechanism, which is identical to IClamp, but produce a membrane current, which is included in the calculation of the extracellular signal.

subthreshold (current_clamp)

A continuous injections of current, adjusted from the current a cell requires to reach threshold.

Property

Type

Requirement

Description

percent_less

integer

Mandatory

A percentage adjusted from 100 of a cell’s threshold current. E.g. 20 will apply 80% of the threshold current. Using a negative value will give more than 100. E.g. -20 will inject 120% of the threshold current.

represents_physical_electrode

boolean

Optional

Default is False. If True, the signal will be implemented using a NEURON IClamp mechanism. The IClamp produce an electrode current which is not included in the calculation of extracellular signals, so this option should be used to represent a physical electrode. If the noise signal represents synaptic input, represents_physical_electrode should be set to False, in which case the signal will be implemented using a MembraneCurrentSource mechanism, which is identical to IClamp, but produce a membrane current, which is included in the calculation of the extracellular signal.

hyperpolarizing (current_clamp)

A hyperpolarizing current injection which brings a cell to base membrance voltage used in experiments. Note: No additional parameter are needed when using module “hyperpolarizing”. The holding current applied is defined in the cell model.

Property

Type

Requirement

Description

represents_physical_electrode

boolean

Optional

Default is False. If True, the signal will be implemented using a NEURON IClamp mechanism. The IClamp produce an electrode current which is not included in the calculation of extracellular signals, so this option should be used to represent a physical electrode. If the noise signal represents synaptic input, represents_physical_electrode should be set to False, in which case the signal will be implemented using a MembraneCurrentSource mechanism, which is identical to IClamp, but produce a membrane current, which is included in the calculation of the extracellular signal.

example:

{
  "inputs": {
    "hypamp_mosaic": {
      "module": "hyperpolarizing",
      "input_type": "current_clamp",
      "delay": 250.0,
      "duration": 1000.0,
      "compartment_set": "apical_dendrites"
    }
  }
}

synapse_replay (spikes)

Spike events are created from the cells indicated in a file and delivered to their post synaptic targets. The weights of the replay synapses are set at t=0 ms and are not altered by any delayed connection.

Property

Type

Requirement

Description

spike_file

text

Mandatory

Indicates the location of the file with the spike info for injection. Spikes files are the .h5 spikes files.

seclamp (voltage_clamp)

Cells are held at indicated membrane voltage by injecting adapting current.

Property

Type

Requirement

Description

voltage

float

Mandatory

Specifies the initial membrane voltage in mV at which the targeted cells should be held at time = 0. In the case of duration_levels and voltage_levels, this inital membrane voltage will be overridden by voltage_level[0].

duration_levels

list[float]

Optional

Specifies the durations of each step stimulus. The first step begins at time = 0, and each subsequent step begins at the cumulative sum of all previous durations.

The sum of duration_levels must not exceed the duration property.

If the sum of duration_levels is less than duration , the last value in voltage_levels will be maintained until the end.

It is recommended that durations be multiples of the simulation time step (dt) (i.e., duration = n·dt for some integer n) to ensure proper alignment with NEURON’s fixed-step method where Vector.play updates occur only at discrete time steps (fadvance()).

voltage_levels

list[float]

Optional

Specifies the membrane voltages the targeted cells should be held at in mV for each step stimulus. voltage_levels[0] overrides the voltage property.

series_resistance

float

Optional

Specifies the series resistance in M \(\Omega\). Default is 0.01 M \(\Omega\).

noise (current_clamp)

Continuous injection of current with randomized deflections. Note: one must chose either “mean” or “mean_percent”.

Property

Type

Requirement

Description

mean

float

Mandatory*

The mean value of current to inject. Given in nA.

mean_percent

float

Mandatory*

The mean value of current to inject as a percentage of a cell’s threshold current.

variance

float

Optional

The variance around the mean of current to inject using a normal distribution.

represents_physical_electrode

boolean

Optional

Default is False. If True, the signal will be implemented using a NEURON IClamp mechanism. The IClamp produce an electrode current which is not included in the calculation of extracellular signals, so this option should be used to represent a physical electrode. If the noise signal represents synaptic input, represents_physical_electrode should be set to False, in which case the signal will be implemented using a MembraneCurrentSource mechanism, which is identical to IClamp, but produce a membrane current, which is included in the calculation of the extracellular signal.

example:

"inputs": {
     "threshold_exc": {
          "module": "noise",
          "input_type": "current_clamp",
          "mean_percent": 78,
          "variance": 0.1,
          "delay": 500,
          "duration": 3000,
          "node_set": "L5TTPC"
     }
}

shot_noise, absolute_shot_noise and relative_shot_noise (current_clamp or conductance)

Generate a Poisson shot noise signal consisting of bi-exponential pulses with gamma distributed amplitudes occurring at exponentially distributed time intervals, resembling random synaptic input. In the Relative and Absolute versions the three parameters (rate, amp_mean, amp_var) are obtained from other three parameters: (amp_cv, mean_percent, sd_percent) for Relative and (amp_cv, mean, sigma) for Absolute, through and analytical result that connects them. In the Relative version the parameters (mean, sigma) are computed relative to a cell’s threshold current (current_clamp) or inverse input resistance (conductance), by scaling these with (mean_percent, sd_percent). The input resistance values must be provided as an additional dataset @dynamics/input_resistance in the nodes file. Note: fields marked Mandatory* depend on which shot_noise version is selected.

Property

Type

Requirement

Description

rise_time

float

Mandatory

The rise time of the bi-exponential shots in ms.

decay_time

float

Mandatory

The decay time of the bi-exponential shots in ms.

rate

float

Mandatory*

For shot_noise, rate of Poisson events in Hz.

amp_mean

float

Mandatory*

For shot_noise, mean of gamma-distributed amplitudes in nA (current_clamp) or uS (conductance).

amp_var

float

Mandatory*

For shot_noise, variance of gamma-distributed amplitudes in nA^2 (current_clamp) or uS^2 (conductance).

mean_percent

float

Mandatory*

For relative_shot_noise, signal mean as percentage of a cell’s threshold current (current_clamp) or inverse input resistance (conductance).

sd_percent

float

Mandatory*

For relative_shot_noise, signal std dev as percentage of a cell’s threshold current (current_clamp) or inverse input resistance (conductance).

mean

float

Mandatory*

For absolute_shot_noise, signal mean in nA (current_clamp) or uS (conductance).

sigma

float

Mandatory*

For absolute_shot_noise, signal std dev in nA (current_clamp) or uS (conductance).

relative_skew

float

Optional

For relative_shot_noise and absolute_shot_noise, signal skewness as a fraction in [0, 1]. This fraction represents a value between the minimum and maximum skewness values compatible with the given signal mean and std dev. Default is 0.5.

reversal

float

Optional

Reversal potential for conductance injection in mV. Default is 0.

dt

float

Optional

Timestep of generated signal in ms. Default is 0.25 ms.

random_seed

integer

Optional

Override the random seed (to introduce correlations between cells).

represents_physical_electrode

boolean

Optional

Default is False. If True, the signal will be implemented using a NEURON SEClamp mechanism, if a conductance source, or a NEURON IClamp mechanism, if a current source. The SEClamp and IClamp produce an electrode current which is not included in the calculation of extracellular signals, so this option should be used to represent a physical electrode. If the noise signal represents synaptic input, represents_physical_electrode should be set to False, in which case the signal will be implemented using a ConductanceSource mechanism or a MembraneCurrentSource mechanism, which are identical to SEClamp and IClamp, respectively, but produce a membrane current, which is included in the calculation of the extracellular signal.

ornstein_uhlenbeck and relative_ornstein_uhlenbeck (current_clamp or conductance)

Generate an Ornstein-Uhlenbeck process signal injected as a conductance or current. In the Relative version the parameters (mean, sigma) are computed relative to a cell’s inverse input resistance (conductance) or threshold current (current_clamp), by scaling these with (mean_percent, sd_percent). The input resistance values must be provided as an additional dataset @dynamics/input_resistance in the nodes file. Note: fields marked Mandatory* depend on which ornstein_uhlenbeck version is selected.

Property

Type

Requirement

Description

tau

float

Mandatory

Relaxation time constant in ms.

mean_percent

float

Mandatory*

For relative_ornstein_uhlenbeck, signal mean as percentage of a cell’s threshold current (current_clamp) or inverse input resistance (conductance).

sd_percent

float

Mandatory*

For relative_ornstein_uhlenbeck, signal std dev as percentage of a cell’s threshold current (current_clamp) or inverse input resistance (conductance).

mean

float

Mandatory*

For ornstein_uhlenbeck, signal mean in nA (current_clamp) or uS (conductance).

sigma

float

Mandatory*

For ornstein_uhlenbeck, signal std dev in nA (current_clamp) or uS (conductance).

reversal

float

Optional

Reversal potential for conductance injection in mV. Default is 0.

dt

float

Optional

Timestep of generated signal in ms. Default is 0.25 ms.

random_seed

integer

Optional

Override the random seed (to introduce correlations between cells).

represents_physical_electrode

boolean

Optional

Default is False. If True, the signal will be implemented using a NEURON SEClamp mechanism, if a conductance source, or a NEURON IClamp mechanism, if a current source. The SEClamp and IClamp produce an electrode current which is not included in the calculation of extracellular signals, so this option should be used to represent a physical electrode. If the noise signal represents synaptic input, represents_physical_electrode should be set to False, in which case the signal will be implemented using a ConductanceSource mechanism or a MembraneCurrentSource mechanism, which are identical to SEClamp and IClamp, respectively, but produce a membrane current, which is included in the calculation of the extracellular signal.

spatially_uniform_e_field (extracellular_stimulation)

Generates a temporally-oscillating extracellular potential field. The potential field is defined as the sum of an arbitrary number of potential fields which vary cosinusoidally in time, and whose gradient (i.e., E field) is constant.

Property

Type

Requirement

Description

fields

list

Mandatory

A list of dicts, where each dict defines one of the fields which are summed to produce the total stimulus. The format for each such dict is given in the table below.

ramp_up_time

float

Optional

Duration during which the amplitude of the signal ramps up linearly from 0, in ms. If not provided, assume no ramp-up time (note that the specified “duration” parameter is not inclusive of this ramp-up time)

ramp_down_time

float

Optional

Duration during which the amplitude of the signal ramps down linearly to 0, in ms. If not provided, assume no ramp-down time (note that the specified “duration” parameter is not inclusive of the ramp-down time)

Property

Type

Requirement

Description

Ex

float

Mandatory

Peak amplitude of the cosinusoid in the x-direction, in V/m. May be negative

Ey

float

Mandatory

Peak amplitude of the cosinusoid in the y-direction, in V/m. May be negative

Ez

float

Mandatory

Peak amplitude of the cosinusoid in the z-direction, in V/m. May be negative

frequency

float

Optional

Frequency of the cosinusoid, in Hz. Must be non-negative. If not provided, assumed to be 0. In this case, a time-invariant field with amplitude [Ex, Ey, Ez] is applied, unless ramp_up_time or ramp_down_time is specified, in which case the field will increase/decrease linearly with time during the ramp periods, and will be constant during the remaider of the stimulation period. Note that the signal will be generated with the same time step as the simulation itself. Note that frequency should therefore be less than the Nyquist frequency of the simulation (i.e., 1/(2*dt))

phase

float

Optional

Phase of the cosinusoid, in radians. If not provided, assumed to be 0.

reports

Optional.

Dictionary of dictionaries with each member describing one data collection during the simulation such as compartment voltage.

Property

Type

Requirement

Description

cells

text

Optional

Specify which node_set to report, default is the simulation “node_set”.

sections

text

Optional

Specify which section(s) to report, available labels are dependent on the model setup. To report on all sections, use the keyword “all”. Default is “soma”. At BBP, we currently support “soma”, “axon”, “dend”, “apic”, or “all”.

type

text

Mandatory

Indicates type of data collected. “compartment”, “summation”, “synapse”, or “lfp”. Compartment means that each compartment outputs separately in the report file. Summation will sum up the values from compartments to write a single value to the report (section soma) or sum up the values and leave them in each compartment (other section types). More on summation after the table. Synapse indicates that each synapse afferent to the reported cells will have a separate entry in the report. LFP will report the contribution to the lfp (or eeg) signal from each cell, using the electrodes_file specified in this report block. See more after the table.

scaling

text

Optional

For summation type reporting, specify the handling of density values: “none” disables all scaling, “area” (default) converts density to area values. This makes them compatible with values from point processes such as synapses.

compartments

text

Optional

For compartment type reporting, override which compartments of a section are selected to report. Options are “center” or “all”. When using “sections”:”soma”, default is “center”, for other section options, default is “all”.

variable_name

text

Mandatory*

The Simulation variable to access. The variables available are model dependent. For summation type, can sum multiple variables by indicating as a comma separated strings. e.g. “ina, ik”. Mandatory for all report types except "lfp", where it is not allowed (see LFP report for details on LFP computation).

unit

text

Optional

String to output as descriptive test for unit recorded. Not validated for correctness.

dt

float

Mandatory

Interval between reporting steps in milliseconds. If assigned value smaller than simulation dt, will be set equal to simulation dt.

start_time

float

Mandatory

Time to start reporting in milliseconds.

end_time

float

Mandatory

Time to stop reporting in milliseconds.

file_name

text

Optional

Specify report file name to be written in the output_dir. The ‘.h5’ extension will be added if not provided. The default file name is <report_name>.h5 where ‘report_name’ is the key name of the current dictionary.

enabled

boolean

Optional

Allows for supressing a report so that it is not created. Useful for reducing output temporarily. Possible values are true/false. Default is true.

compartment_set

text

Optional

Name of a compartment set from compartment_sets.json. Required if type is “compartment_set”.

electrodes_file

text

Mandatory*

Path to the HDF5 weights file containing electrode scaling factors for LFP computation. Format described in SONATA Technical description. Mandatory when type is "lfp". Path resolution follows the same rules as other file paths in the Simulation_Config.

Note

cells in reports is similar to the node_set in inputs.

In compartment reports, cells and compartment_set are mutually exclusive parameters, and exactly one of them is required. Providing both or neither is invalid.

Examples:

"reports": {
     "soma": {
          "cells": "Mosaic",
          "sections": "soma",
          "type": "compartment",
          "variable_name": "v",
          "unit": "mV",
          "dt": 0.1,
          "start_time" : 0,
          "end_time" : 500,
          "file_name": "soma"
          "enabled" : true
     },
     "compartment": {
          "cells": "Mosaic",
          "sections": "all",
          "type": "compartment",
          "variable_name": "v",
          "unit": "mV",
          "dt": 0.1,
          "start_time" : 0,
          "end_time" : 500,
          "file_name": "voltage"
          "enabled" : true
     },
     "compartment_set": {
          "compartment_set": "Mosaic_A",
          "type": "compartment_set",
          "variable_name": "v",
          "dt": 0.1,
          "start_time": 1000.0,
          "end_time": 1275.0,
          "unit": "mV"
       },
     "axonal_comp_centers": {
          "cells": "Mosaic",
          "sections": "axon",
          "type": "compartment",
          "variable_name": "v",
          "unit": "mV",
          "compartments": "center",
          "dt": 0.1,
          "start_time" : 0,
          "end_time" : 500,
          "file_name": "axon_centers"
          "enabled" : true
     },
     "cell_imembrane": {
         "cells": "Column",
         "sections": "soma",
         "type": "summation",
         "variable_name": "i_membrane, IClamp",
         "unit": "nA",
         "start_time": 0,
         "end_time": 500,
         "enabled": true
     },
     "dend_report_v": {
      "type": "compartment_set",
      "compartment_set": "example_compartment_set",
      "variable_name": "v",
      "unit": "mV",
      "dt": 0.1,
      "start_time": 0.0,
      "end_time": 100.0
     }
},
"compartment_sets_file": "circuit/compartment_sets.json"

See Fine-grained Compartment report for more details on compartment sets.

connection_overrides

Optional.

List of dictionaries to adjust the synaptic strength or other properties of edges between two sets of nodes. These are executed in the order they are read from the file. If a set of synapses are affected by multiple connection_overrides because of source and target used, the latter will overwrite any repeated fields set by a former. This is useful when making more general adjustments and then more specific adjustments. Any edges unaffected by any connection_overrides are instantiated as prescribed in the model.

Property

Type

Requirement

Description

name

text

Mandatory

Descriptive name for the override.

source

text

Mandatory

node_set specifying presynaptic nodes.

target

text

Mandatory

node_set specifying postsynaptic nodes.

weight

float

Optional

Multiplier of conductance used to adjust synaptic strength. The final NetCon weight in NEURON is computed as weight * conductance, where conductance is obtained from the edges.h5 file.

spont_minis

float

Optional

Synapses affected by this connection_override section will spontaneously trigger with the given rate.

synapse_configure

text

Optional

Provide a HOC snippet for synapse objects in connection_override, using %s for the synapse reference (e.g. %s.NMDA_ratio = 1 %s.Fac = 2). Global variables can also be overridden without %s (e.g., tau_d_NMDA_ProbAMPANMDA_EMS = 3). but these changes do not account for delays, synapse type, or file order (which may depend on the edge file order). Use with caution, as unintended interactions may occur. In fact, it is strongly suggested to use the method described in conditions to modify global synapse variables. However, this method takes priority. A safe approach is to modify global variables, if needed, only once in the entire file. Their values remain constant throughout the simulation, as all changes are applied at the start.

modoverride

text

Optional

Changes the synapse helper files used to instantiate the synapses in this connection. A synapse helper initializes the synapse object and the parameters of the synapse model. By default, AMPANMDAHelper.hoc / GABAABHelper.hoc are used for excitatory / inhibitory synapses. The value of this field determines the prefix of the helper file to use e.g. “GluSynapse” would lead to GluSynapseHelper.hoc being used. That helper will use the additional parameters of the plastic synapse model read from the SONATA edges file using Neurodamus. This is required when using the GluSynapse.mod model and will fail for other models, or if the parameters are not present in the edges file.

synapse_delay_override

float

Optional

Value to override the synaptic delay time originally set in the edge file, and to be given to netcon object. Given in ms.

delay

float

Optional

Adjustments from weight of this connection_override are applied after specified delay has elapsed in ms. Note that only weight modifications are applied so all other fields (spont_minis, synapse_configure, modoverride, synapse_delay_override) are ignored.

neuromodulation_dtc

float

Optional

Only applicable to NeuroModulation projections. It overrides the neuromod_dtc values between the selected source and target neurons, representing the decay time constant of the neuromodulator concentration at the target synapse. Given in ms.

neuromodulation_strength

float

Optional

Only applicable to NeuroModulation projections. It overrides the neuromod_strength values between the selected source and target neurons, representing the amount of increase of the neuromodulator concentration at the synapse when an incoming neuromodulatory event (i.e., a spike in the virtual pre-synaptic neuron) is transmitted to the target synapse. Given in \(\mu M\).

example:

"connection_overrides": [
     {
          "name": "weaken_excitation"
          "source": "Excitatory",
          "target": "Mosaic,
          "weight": 0.75,
          "spont_minis": 0.04
     },
     {
          "name": "deactivate_short_term_plasticity",
          "source": "Mosaic",
          "target": "Mosaic",
          "synapse_configure": "%s.Fac = 0 %s.Dep = 0"
     }
]

metadata

A set of variables storing remarks on the simulation, but are not used for running the simulation.

example:

"metadata": {
     "note": "the first attempt at reproducing xxx experiment",
     "version": "v1",
     "v_int": 10,
     "v_float": 0.5,
     "v_bool": false
}

beta_features

This section is reserved for variables that are used for developing a new feature of the simulation. Once the feature goes in production, the variables should be moved to a proper section in the simulation configuration file.

example:

"beta_features": {
     "v_str": "abcd",
     "v_float": 0.5,
     "v_int": 10,
     "v_bool": false
}