schema

datamodel.schema

Attributes

Name Description
ATOM
BIBO
BIOTOOLS
CHEBI
CL
DCTERMS
DEFAULT_
GO
LINKML
MESH
NIDM
OBOINOWL
PROV
QUDT
RDFS
SCHEMA
SIO
SKOS
ScalarValue
TVBO
TVBO_DBS
TVBO_STUDY
TVBO_SW
UBERON
UO
WD
metamodel_version
version

Classes

Name Description
Activity One thing that was done: a solve, a fit, an analysis, a render. The PROV complement of Provenance, which
ActivityName
Aggregation Specifies how to aggregate values across a dimension. Used for loss functions to define per-element loss with
AggregationType How to aggregate time series data
Algorithm A complete specification of an iterative parameter tuning algorithm. Combines update rules, objectives,
AlgorithmCompositionMode How an included algorithm is composed with the outer algorithm. Determines whether the inner algorithm’s update
AlgorithmInclude Reference to an included algorithm with optional argument overrides. Allows combining algorithms with different
AlgorithmName
AlgorithmStage One stage of a multi-stage tuning schedule. The algorithm body runs once per stage, in order, each stage
Analysis A quantity obtained by ANALYZING something — a model, its solve, a derived loss, simulated results, or empirical
Animation A figure rendered as a movie over one dimension of its data. The dimension is named, never positional, so the
Annotation A positioned text label on a panel, in axes-fraction coordinates. With a used: binding the number in it is READ
ArchiveConfig How a study packages its run into a COMBINE/OMEX archive: the output location and format, plus any extra files to
Argument A function argument with explicit value specification. A value is either value (a literal / array / local
ArgumentName
Assignment One step of a sequential recurrence: the expression assigned to a target name. Sequential rather than simultaneous
AxisReduction Marks an exploration/sweep axis to be collapsed by a statistic in the result container. When set on an
AxisReductionStatistic Statistic used to collapse an exploration/sweep axis into a single reduced value in the result container (see
AxisScale How an axis maps values to distance. Part of what a panel claims, not decoration: a straight line on a log axis is
AxisSide Which edge of the axes a label or tick row sits on.
BarOrientation Which way a colour bar runs.
BidsDatasetType BIDS DatasetType: how a dataset is to be interpreted. study has been in the released standard since BIDS
BidsDirectoryStatus A directory’s standing with the BIDS standard, which is what decides whether it needs a .bidsignore entry.
BidsEntities BIDS filename entities (BEP017-aligned) for provenance and data discovery. Reusable on Network, BrainAtlas,
Binding Per-backend construction binding for a GraphGenerator: how to build the graph in a specific target library. Keyed
BindingName
BoundaryCondition
BoundaryConditionType
BrainAtlas A schema for representing a version of a brain atlas.
BrainAtlasName
BrainRegionSeries A series whose values represent latitude
BranchSwitch Specification for switching from a detected bifurcation point to a new branch (periodic orbits from Hopf, fold
BranchSwitchName
CachedArray One numeric array inside a cached-result .h5 companion, described by name, shape and dtype so a reader can
CachedArrayName
Callable
CallableName
Camera Where a 3-D panel is looked at from. Only a line3d panel or a surface reads it; every other kind ignores it.
ClassReference Reference to a class that can be instantiated and called. Used for external library classes (e.g., tvboptim.Bold,
ClassReferenceName
ClinicalImprovement Relative improvement on a defined clinical score.
ClinicalScale A clinical assessment inventory or structured scale composed of multiple scores or items.
ClinicalScore Metadata about a clinical score or scale.
CodeSource Location of a recipe’s callable code so the specification is decoupled from where the code lives. Either a local
ColorScale How values become colours, and where the scale starts and stops. Shared by everything that paints a field rather
Colorbar The colour scale a panel prints beside its field. Declared as one object because nine loose colorbar_* options
Colormaps Continuous colour scales, by key: anything ordinal or continuous draws from one of these, anything categorical
CommonCoordinateSpace A schema for representing a version of a common coordinate space.
CommonCoordinateSpaceName
ComparisonOperator Comparison used by a stochastic_mask step. Named rather than written as an operator so the step stays metadata:
ConditionalBlock A single condition and its corresponding equation segment.
ConnectivityRule Rule for expanding a population-level Edge into individual cell-to-cell connections. Names a connectivity pattern
Contact Individual contact on a DBS electrode.
Continuation Complete specification of a numerical continuation / bifurcation analysis. All universal solver settings live
ContinuationAlgorithm Predictor-corrector algorithm for numerical continuation.
ContinuationName
Coordinate A 3D coordinate with X, Y, Z values.
Corner A named corner for placing a panel number inside its axes — the four corners bsplot’s add_panel_number anchors to.
Coupling
CouplingInput Specification of a coupling input channel for multi-coupling dynamics
CouplingInputName
CouplingName
CouplingStageEvaluation How the network coupling term is evaluated within one step of a multi-stage integrator (Heun, RK4, …). A
DBSDataset Collection of data related to a specific DBS study.
DBSDatasetDatasetId
DBSProtocol A protocol describing DBS therapy, potentially bilateral or multi-lead.
DBSProtocolName
DBSSubject Human or animal subject receiving DBS.
DBSSubjectSubjectId
DataRef A pointer to one labelled array in a result container, dataset, or curated entity — the single cross-container
DataSource Specification for loading external/empirical data.
DataSourceName
Dataset A collection of subjects for a multi-subject study. Provides the subject/session structure needed for workflow
DatasetDatasetId
DerivedParameter
DerivedParameterName
DerivedVariable
DerivedVariableName
DevelopmentStatus Development status of the software. Based on repostatus.org categories.
DifferentialOperator
Differentiation Backend-neutral configuration for how gradients are propagated through the temporal integration. Expressed in
Digest One checksum of an artifact, keyed by the function that produced it. Collected on Provenance.digest, whose
DigestAlgorithm
DimensionType Dimensions along which operations can be applied
Discretization Discretization method for boundary value problems in continuation (periodic orbits, connecting orbits,
DiscretizationMethod
Distribution A probability distribution for sampling parameters or initial conditions. Standard distributions (Uniform,
DistributionConfig Policy for mapping a parameter sweep’s exploration axes onto the two parallelism tiers when rendering a
DistributionName
DomainEnforcement Whether and how a state variable’s domain constrains the trajectory during integration. Default none means
Dynamics
DynamicsName
EField Simulated electric field from DBS modeling.
EcosystemEnum Package ecosystem or registry the software is distributed through.
Edge An edge in a network. Three modes: explicit (source+target set, scalar parameters in YAML), template (no
Electrode Implanted DBS electrode and contact geometry.
ElementType
Encoding Map visual channels to container dims/coords/vars, by NAME (keyed, never positional). Common case: {x: time, y:
EnvironmentType
EnvironmentVariable One environment variable assignment exported before executing the workflow task command. Use this for reproducible
EnvironmentVariableName
Equation
Event A discrete or continuous event that modifies the system during simulation. Generalizes Stimulus: can represent
EventName
EventType Type of event triggering mechanism.
ExecutionConfig Configuration for computational execution (parallelization, precision, hardware).
ExperimentResultSidecar Descriptor for a cached ExperimentResult: the .h5 companion holding the fitted parameter arrays, one
Exploration Parameter space exploration (grid search, sweep).
ExplorationAxis One axis of a parameter exploration grid. Points to an existing Parameter (by dotted reference, e.g.
ExplorationAxisParameter
ExplorationName
FieldStateVariable
FieldStateVariableName
Figure A publication figure, a mosaic of panels rendered from result containers. Reuses name (identifier) and description
FigureName
File
FileName
FrameRole What a layer does while a figure animates. Read only under Figure.animation; a still figure ignores it. Unset, a
FreeParameter One degree of freedom in an OptimizationStage. References an existing Parameter by dotted scope (e.g.
Function A function with explicit input -> transformation -> output flow. Can be equation-based (symbolic) or
FunctionCall Invocation of a function in a pipeline. Can reference a defined Function by name, OR inline a callable directly
FunctionName
Graph A node-link panel’s graph and how it is drawn: the connectome the model actually ran on, with a state living on
GraphGenerator Backend-agnostic graph generator specification. Captures the mathematical family and its parameter declarations so
GraphGeneratorName
GraphRepresentation How a Network’s connectivity is represented when evaluating coupling. This is a backend-independent performance
Grid How a grid panel tiles its cells, and what the strips around them are labelled with. Rows and columns are
Hemisphere
ImagingModality
Inference Bayesian inference of model parameters from an observation, via MCMC. A standalone, first-class concept (NOT an
InferenceName
InitialState How to obtain the starting equilibrium or periodic orbit for continuation. Most robust: time-integrate to steady
InitialStateMethod Strategy for obtaining the starting equilibrium or periodic orbit.
Inset A sub-axes that draws exactly as a panel does — same kinds, layers, opts, annotations — minus the things only a
Integrator Fixed-step or adaptive ODE integrator with TVB-specific extensions (noise, transient time, etc.). Inherits
Layer One mark bound to one data reference, with its encoding.
LayoutEngine Which matplotlib layout engine positions the mosaic’s axes. Unset lets the backend pick (bsplot asks for
LayoutTemplateVariant One variant’s seed for a file the record already accounts for.
LayoutTemplateVariantVariant
Legend A panel’s key: whether it is drawn, where it sits, and the three things a figure actually asks of one beyond that.
LegendLoc Where a panel’s key sits. best lets the backend find the emptiest corner, which is right while a figure is still
Likelihood Observation model for Bayesian inference: p(data | sim(theta)). Points at the observation holding the data and
LikelihoodName
LossFunction A loss function for optimization with optional aggregation. Extends Function with aggregation specification for
LossFunctionName
MarkType The cartesian primitive a grammar layer draws (heatmap is implied by a heatmap panel, not a mark).
Matrix Adjacency matrix of a network.
MeasureSpec Metadata for one phenotype measure. Optional per-measure entry on Phenotype.measure_specs.
Mesh Triangle (or higher-order) mesh geometry. May stand alone (via mesh_file pointing at an external GIFTI/VTK/MSH
ModelParadigm Computational paradigm or modeling approach supported by the tool.
ModelType Coarse classification of a Dynamics model by its mathematical/biological origin. Used for filtering and display in
NDArray
NamedArray A named numeric array. Used as a sidecar slot value where a schema-typed object (e.g.
Network Network specification with nodes, edges, and reusable coupling configurations. Supports both explicit node/edge
Node A node in a network with its own dynamics and properties
NodeReconciliation Strategy for aligning a sourced array’s nodes to the consuming model network before use. Keyed alignment guards
Noise
NoiseDraw How a stochastic run’s noise realization is generated.
NoiseType
NumericalDiscretizationMethod Numerical discretization method for boundary value problems (periodic orbits, connecting orbits, quasi-periodic
Observation Unified class for all observation/measurement specifications. Covers monitors (BOLD, EEG), tuning observables, and
ObservationName
ObservationReductionMode How an observation is evaluated over the trajectory (see Observation.reduce). Absent (the default) keeps the
OperatorType
Optimization Configuration for parameter optimization. Inherits single-stage fields from OptimizationStage. For multi-stage
OptimizationName
OptimizationStage A single stage in a multi-stage optimization workflow. Stages run sequentially, with each stage potentially using
OptimizationStageName
Option A toolkit-specific key-value option (string name + string value). Used for backend settings that are not universal
OptionName
PDE Partial differential equation problem definition.
PDESolver Numerical solver for a PDE: the time-integration algorithm, tolerances and step inherited from Solver, plus the
Palette A project’s colours, named by role. The colour half of a Theme, and a document in its own right for a consumer
Panel One cell of the figure. kind selects grammar (cartesian/heatmap) vs escape-hatch (image/custom); every kind shares
PanelKind What a panel draws. cartesian/heatmap are grammar-driven (mark + encoding); surface paints a layer on a mesh,
PanelPanelKey
ParallelMode How a trial / grid-point axis is realised at JAX codegen time. The choice trades peak memory against throughput:
Parameter
ParameterName
Parcellation
ParcellationEntity A schema for representing a parcellation entity, which is an anatomical location or study target.
ParcellationEntityName
ParcellationTerminology A schema for representing a parcellation terminology, which consists of parcellation entities.
Partition A grouped streaming reduction over a node partition (e.g. per-hemisphere cortical wave metrics): the per-timestep
Phenotype Per-subject phenotype table (BIDS phenotype/ directory convention). Carries cognitive scores, clinical scales,
Prior Prior belief over one inferred parameter. In Inference.priors the collection KEY is the parameter’s dotted name;
PriorName
Procedure Symbolic procedure: an ordered list of steps producing named outputs. Documents a derived generator’s algorithm
ProcedureStep A single named step (or output) in a Procedure: one typed operation producing one named intermediate.
ProcedureStepName
ProcedureStepType The operation a ProcedureStep performs. equation is the general case (author-written algebra over
ProgrammingLanguageEnum Programming languages relevant to computational neuroscience tools. Mapped to Wikidata identifiers.
Projection Which anatomical plane a network’s region centres flatten onto.
Provenance W3C PROV-O aligned provenance ABOUT the artifact that carries it — reusable on any entity (Network, TimeSeries,
RandomStream
Range Specifies a range for array generation, parameter bounds, or grid exploration.
Reducer A streaming reduction, authored as symbolic recurrences over its own state rather than as backend code. Folded
ReducerEmitKind How often a streaming reducer reads its value out (see Reducer.emit_kind).
ReducerName
ReductionType Operations for reducing/aggregating values across dimensions
Reference A small typed pointer to another TVBO entity (Network, Mesh, Observation, …). The iri identifies the target
ReferenceFingerprint Cache-invalidation fingerprint for one aux_data reference. Captures enough about the upstream artifact that a
Region A rectangle drawn over a panel to ring the window a paper calls out — the parameter band a regime lives in, the
RegionMapping Maps vertices to parent regions for hierarchical/aggregated coupling
RenderSpec A headless-browser capture recipe turning an image panel’s HTML/URL source into the static file placed at its
ReportPart Where a declared item appears in a generated report. A study with many near-identical experiments marks the
RequirementLevel BIDS requirement level: whether something MUST, SHOULD or MAY be present.
RequirementRole
ResultBinding One entry in a study’s results manifest: a manuscript key bound to the value it stands for. Exactly one of three
ResultBindingKey
ResultEntity One persisted result container, described. The prov:Entity of BEP028’s prov-<label>_ent record: what the
ResultEntityName
Rule A straight reference line drawn across a panel: the zero a signal is measured from, the threshold a value has to
RuleOrientation Which way a reference line runs.
Sample
SamplingAxis Dimension along which a distribution is sampled.
SchedulerDirective One engine-native scheduler directive passed through verbatim by the engine’s emitter (e.g. a Slurm #SBATCH | | [SchedulerDirectiveName](#tvbo.datamodel.schema.SchedulerDirectiveName) | | | [Session](#tvbo.datamodel.schema.Session) | A data collection session for a subject. Corresponds to a BIDS 'ses-' entity. Sessions capture longitudinal | | [SessionSessionId](#tvbo.datamodel.schema.SessionSessionId) | | | [SexEnum](#tvbo.datamodel.schema.SexEnum) | | | [SimulationExperiment](#tvbo.datamodel.schema.SimulationExperiment) | | | [SimulationExperimentId](#tvbo.datamodel.schema.SimulationExperimentId) | | | [SimulationScale](#tvbo.datamodel.schema.SimulationScale) | Spatial / organizational scale at which a tool operates. Multi-valued: a tool can span multiple scales. Mapped to | | [SimulationStudy](#tvbo.datamodel.schema.SimulationStudy) | | | [SimulationTool](#tvbo.datamodel.schema.SimulationTool) | A software tool for computational neuroscience simulation, analysis, or model specification. Extends | | [SimulationToolName](#tvbo.datamodel.schema.SimulationToolName) | | | [SoftwareEnvironment](#tvbo.datamodel.schema.SoftwareEnvironment) | A reproducible software environment aggregating one or more SoftwareRequirement entries. Used by | | [SoftwareEnvironmentName](#tvbo.datamodel.schema.SoftwareEnvironmentName) | | | [SoftwarePackage](#tvbo.datamodel.schema.SoftwarePackage) | Identity and metadata for a software package, aligned with schema.org/SoftwareApplication and CodeMeta v3. | | [SoftwarePackageName](#tvbo.datamodel.schema.SoftwarePackageName) | | | [SoftwareRequirement](#tvbo.datamodel.schema.SoftwareRequirement) | An individual software requirement binding a package to a version constraint and a role within an environment. | | [SoftwareRequirementName](#tvbo.datamodel.schema.SoftwareRequirementName) | | | [Solver](#tvbo.datamodel.schema.Solver) | Lightweight specification of a numerical ODE solver / integrator. Covers adaptive solvers (Vern9, Rodas5, Tsit5, | | [SparseFormat](#tvbo.datamodel.schema.SparseFormat) | | | [SpatialDomain](#tvbo.datamodel.schema.SpatialDomain) | | | [SpatialField](#tvbo.datamodel.schema.SpatialField) | | | [SpecimenEnum](#tvbo.datamodel.schema.SpecimenEnum) | A set of permissible types for specimens used in brain atlas creation. | | [StandardGraphType](#tvbo.datamodel.schema.StandardGraphType) | Well-known graph generator families with automatic backend mapping. The type field on GraphGenerator is a free | | [StateValue](#tvbo.datamodel.schema.StateValue) | A named state variable value for per-node initialization. | | [StateValueName](#tvbo.datamodel.schema.StateValueName) | | | [StateVariable](#tvbo.datamodel.schema.StateVariable) | | | [StateVariableName](#tvbo.datamodel.schema.StateVariableName) | | | [StimulationSetting](#tvbo.datamodel.schema.StimulationSetting) | DBS parameters for a specific session. | | [Stimulus](#tvbo.datamodel.schema.Stimulus) | | | [Study](#tvbo.datamodel.schema.Study) | Bibliographic anchor for a source publication, identified by its citation key (citekey). The full | | [StudyDirectory](#tvbo.datamodel.schema.StudyDirectory) | One directory in a study layout.roleis the stable key code resolves by: a resolver asks the layout where the | | [StudyDirectoryName](#tvbo.datamodel.schema.StudyDirectoryName) | | | [StudyDirectoryRole](#tvbo.datamodel.schema.StudyDirectoryRole) | What a directory is for, as a key code resolves paths by. Roles are properties of a study dataset in general, so a | | [StudyFile](#tvbo.datamodel.schema.StudyFile) | One file a study layout accounts for.namemay interpolate{study}`, the dataset's own name, which is how | | [StudyFileName](#tvbo.datamodel.schema.StudyFileName) | | | [StudyFileRole](#tvbo.datamodel.schema.StudyFileRole) | What a file at a known place in the layout is. | | [StudyLayout](#tvbo.datamodel.schema.StudyLayout) | Directory layout of a study dataset, and the single ground truth for it. Everything that creates, resolves, | | [StudyLayoutName](#tvbo.datamodel.schema.StudyLayoutName) | | | [StudyTemplate](#tvbo.datamodel.schema.StudyTemplate) | One kind of study the layout accounts for. A template is a *specialisation*: it names the entries a kind adds to | | [StudyTemplateName](#tvbo.datamodel.schema.StudyTemplateName) | | | [Style](#tvbo.datamodel.schema.Style) | Layer/panel styling, portable intent plus a namespaced backend passthrough. Reuses Argument for the passthrough | | [Subject](#tvbo.datamodel.schema.Subject) | A participant in a study. Each subject typically has their own brain network (connectome) and empirical | | [SubjectBatchMode](#tvbo.datamodel.schema.SubjectBatchMode) | How a multi-subject dataset's per-subject fits are executed. | | [SubjectSubjectId](#tvbo.datamodel.schema.SubjectSubjectId) | | | [Surface](#tvbo.datamodel.schema.Surface) | A cortical surface panel's geometry and how a field is painted on it. One object, so the three mutually exclusive | | [SurfaceView](#tvbo.datamodel.schema.SurfaceView) | Where the camera sits for a cortical surface. Distinct fromVolumeView: a mesh is viewed from a side of the | | [Surrogate](#tvbo.datamodel.schema.Surrogate) | A permutation-significance test: re-evaluate a named statistic under n_perm fixed permutations of a field and | | [SweepDirection](#tvbo.datamodel.schema.SweepDirection) | Order in which a branch-following sweep (SweepSeeding.from_previous) traverses its axis. Ignored for independent | | [SweepSeeding](#tvbo.datamodel.schema.SweepSeeding) | How each point of a parameter sweep (Exploration) obtains its initial state. Determines whether the sweep points | | [SystemType](#tvbo.datamodel.schema.SystemType) | | | [Theme](#tvbo.datamodel.schema.Theme) | A project's whole look in one declarable object: its colours (inherited fromPalette) and the geometry a style | | [TickDirection](#tvbo.datamodel.schema.TickDirection) | Which side of the axes a tick mark is drawn on. | | [TickFormat](#tvbo.datamodel.schema.TickFormat) | How a tick number is written. | | [TickPrune](#tvbo.datamodel.schema.TickPrune) | Which end ticks to drop where a corner tick would collide with its neighbour panel's. | | [TimeSeries](#tvbo.datamodel.schema.TimeSeries) | Time series data from simulations or measurements. Supports BIDS-compatible export for computational modeling | | [ToolRole](#tvbo.datamodel.schema.ToolRole) | Primary function of the tool in a simulation workflow. | | [ToolUnit](#tvbo.datamodel.schema.ToolUnit) | One TVBO unit as a single tool writes it. | | [ToolUnitUnit](#tvbo.datamodel.schema.ToolUnitUnit) | | | [TrackedContent](#tvbo.datamodel.schema.TrackedContent) | What version control keeps of a directory. | | [Tractogram](#tvbo.datamodel.schema.Tractogram) | Reference to tractography/diffusion MRI data used to derive structural connectivity | | [TractogramName](#tvbo.datamodel.schema.TractogramName) | | | [Triangle](#tvbo.datamodel.schema.Triangle) | Which half of a square matrix a layer fills, leaving the other half to a sibling layer, so two quantities read as | | [TuningObjective](#tvbo.datamodel.schema.TuningObjective) | Defines what the tuning algorithm optimizes for. Can be an activity target (FIC) or a connectivity target (EIB). | | [UnitEnum](#tvbo.datamodel.schema.UnitEnum) | Physical units of measurement for model parameters, state variables, and integration settings. Uses conventional | | [UpdateRule](#tvbo.datamodel.schema.UpdateRule) | Defines how a parameter is updated based on observables. Represents iterative learning rules like FIC or EIB | | [UpdateRuleName](#tvbo.datamodel.schema.UpdateRuleName) | | | [Volume](#tvbo.datamodel.schema.Volume) | A labelled-volume panel's geometry: the volumetric counterpart ofSurface`, same layer and same colour scale,
VolumeView Which anatomical plane a labelled volume is projected along.
WorkflowConfig Declarative orchestration for rendering a parameter sweep into a distributed, reproducible workflow (Slurm array,
WorkflowDistributeBy Default tier a sweep axis is placed on when it is not named explicitly in a DistributionConfig. Vectorized axes
WorkflowEngineConfig Execution directives for a workflow engine. Every field is optional and each engine’s emitter consumes the subset
slots

Activity

datamodel.schema.Activity(
    name=None,
    description=None,
    iri=None,
    command=None,
    associated_with=empty_list(),
    used=empty_list(),
    started_at=None,
    ended_at=None,
    type=empty_list(),
)

One thing that was done: a solve, a fit, an analysis, a render. The PROV complement of Provenance, which describes an artifact — an artifact is prov:wasGeneratedBy an Activity, and an Activity prov:used the artifacts and environment it consumed. Slot names follow BEP028’s activity record (Id, Label, Command, AssociatedWith, Used, StartedAtTime, EndedAtTime) so a record in that vocabulary serializes to it without a translation table.

ActivityName

datamodel.schema.ActivityName()

Aggregation

datamodel.schema.Aggregation(over=None, type='mean')

Specifies how to aggregate values across a dimension. Used for loss functions to define per-element loss with reduction.

AggregationType

datamodel.schema.AggregationType()

How to aggregate time series data

Algorithm

datamodel.schema.Algorithm(
    name=None,
    description=None,
    execution=None,
    type=None,
    includes=empty_list(),
    stages=empty_list(),
    objective=None,
    observations=empty_list(),
    update_rules=empty_dict(),
    hyperparameters=empty_dict(),
    learning_rate=None,
    learning_rate_warmup=False,
    n_iterations=None,
    learning_rate_schedule=None,
    simulation_period=None,
    apply_every=1,
    functions=empty_list(),
    depends_on=empty_list(),
    evaluate=True,
)

A complete specification of an iterative parameter tuning algorithm. Combines update rules, objectives, observations, and hyperparameters.

AlgorithmCompositionMode

datamodel.schema.AlgorithmCompositionMode()

How an included algorithm is composed with the outer algorithm. Determines whether the inner algorithm’s update rules are merged into the same loop (combined) or run as a converging inner loop on each outer iteration (nested).

AlgorithmInclude

datamodel.schema.AlgorithmInclude(
    algorithm=None,
    arguments=empty_dict(),
    mode='combined',
    inner_iterations=None,
)

Reference to an included algorithm with optional argument overrides. Allows combining algorithms with different hyperparameter values.

AlgorithmName

datamodel.schema.AlgorithmName()

AlgorithmStage

datamodel.schema.AlgorithmStage(
    n_iterations=None,
    label=None,
    description=None,
    reset_state=False,
    arguments=empty_dict(),
)

One stage of a multi-stage tuning schedule. The algorithm body runs once per stage, in order, each stage overriding n_iterations and selected hyperparameters — so a schedule can anneal a learning rate or widen an estimation window as tuning proceeds.

Analysis

datamodel.schema.Analysis(
    acronym=None,
    label=None,
    equation=None,
    description=None,
    iri=None,
    name=None,
    function=None,
    callable=None,
    class_call=None,
    input=None,
    output=None,
    apply_on_dimension=None,
    aggregate=None,
    arguments=empty_dict(),
    time_range=None,
    source_code=None,
    parameters=empty_dict(),
    execution=None,
    dims=empty_list(),
    type=None,
    target=None,
    wrt=empty_list(),
)

A quantity obtained by ANALYZING something — a model, its solve, a derived loss, simulated results, or empirical data — rather than by transforming a recorded trajectory. Nothing here requires a model: decomposing empirical maps into a basis, taking their spectrum, or running a permutation test over measured data are analyses in exactly this sense, and so are parameter sensitivities/gradients (autodiff or finite-difference), stability spectra (Lyapunov), bifurcation quantities, identifiability metrics, and reductions spanning several experiments. It is an invocation (is_a: FunctionCall) with two mutually exclusive ways of saying WHAT is analyzed, the same alternative-specification idiom Parameter uses for provenance: - the solvetype names the analysis (a free string, extensible; the vocabulary lives in the ontology as AnalysisObservable concepts rather than a closed enum), target and wrt bind it to what is analyzed and with respect to what, and parameters configures it. Evaluated as part of the integration, so it is emitted by the same codegen and limited to what that backend can trace. Declared on Observation.analysis.

  • saved datacallable (or class_call) invoked with arguments, each a literal value or a used: DataRef reading an experiment, another analysis, or a dataset. The data need not be simulated: this is equally the form for analysing empirical maps, an atlas, or a measured connectome. Because it consumes containers rather than a running solve, it is scheduled on its own — before or after the experiments, according to what it uses. Declared in SimulationStudy.analyses, where the result is persisted as its own container (derivatives/tvbo/ana-<name>_result.h5) — which is what lets a figure bind it with used: {analysis: <name>} exactly as it binds a run, and why a study needs no driver script for its non-simulation figures. name is then required and unique, since it keys that container. The invocation yields a mapping of name -> labelled array (or one array, keyed by the analysis name); each key becomes an observation__<key> data-variable keeping its dims and coordinates, so a figure encoding can name them.

Like a SimulationExperiment, an Analysis declares its own execution: which backend renders it, at what precision, on which accelerator. That states a requirement, not a mechanism — the same analysis is renderable by more than one backend, and one that cannot render it says so rather than silently substituting another.

Animation

datamodel.schema.Animation(
    over=None,
    frames=None,
    fps=None,
    format=None,
    still=None,
)

A figure rendered as a movie over one dimension of its data. The dimension is named, never positional, so the frames advance along the axis the spec means rather than along whatever happens to be axis 0; and because the frame is the same mosaic the still would draw, an animated figure and its still cannot disagree about what they show.

Annotation

datamodel.schema.Annotation(
    text=None,
    used=None,
    x=None,
    y=None,
    loc=None,
    arrow=empty_list(),
    tail_x=None,
    tail_used=None,
    rotation=None,
    ha=None,
    va=None,
    size=None,
    color=None,
)

A positioned text label on a panel, in axes-fraction coordinates. With a used: binding the number in it is READ from a result rather than typed, which is what keeps a panel’s printed statistic (an r, a p-value) from drifting away from the run that produced it.

ArchiveConfig

datamodel.schema.ArchiveConfig(path=None, format='omex', include=empty_list())

How a study packages its run into a COMBINE/OMEX archive: the output location and format, plus any extra files to include beyond the recipes, derived containers, figures and manifest added automatically.

Argument

datamodel.schema.Argument(
    name=None,
    description=None,
    value=None,
    used=None,
    unit=None,
)

A function argument with explicit value specification. A value is either value (a literal / array / local reference) or used (a labelled array sourced from another experiment or dataset); the two are mutually exclusive. Value can be: literal (number/string), reference to input (input.key), or cross-observation reference (observation_name.output_key). A bare scalar is the value, as it is for a Parameter: sel: {variable: phi} and opts: {xlabel: "time (s)"} mean {value: …}, which is how both are written throughout the docs.

ArgumentName

datamodel.schema.ArgumentName()

Assignment

datamodel.schema.Assignment(target=None, expression=None)

One step of a sequential recurrence: the expression assigned to a target name. Sequential rather than simultaneous — a later step’s expression sees the value the steps above it assigned — which is what lets a reducer’s update be authored as ordinary arithmetic instead of with new_* temporaries. Authored terse as a [target, expression] pair and lifted to this form on load.

AxisReduction

datamodel.schema.AxisReduction(statistic='mean')

Marks an exploration/sweep axis to be collapsed by a statistic in the result container. When set on an ExplorationAxis, that axis’s named grid dimension is reduced across every observation that carries it (e.g. an execution.random_seed trial ensemble becomes a first-class reduced observation). Backend-independent: states the reduction intent; the result layer applies it by dimension name.

AxisReductionStatistic

datamodel.schema.AxisReductionStatistic()

Statistic used to collapse an exploration/sweep axis into a single reduced value in the result container (see ExplorationAxis.reduce). Applied across the named grid dimension of every observation that carries it.

AxisScale

datamodel.schema.AxisScale()

How an axis maps values to distance. Part of what a panel claims, not decoration: a straight line on a log axis is a power law, and the same points on a linear axis are not.

AxisSide

datamodel.schema.AxisSide()

Which edge of the axes a label or tick row sits on.

BarOrientation

datamodel.schema.BarOrientation()

Which way a colour bar runs.

BidsDatasetType

datamodel.schema.BidsDatasetType()

BIDS DatasetType: how a dataset is to be interpreted. study has been in the released standard since BIDS 1.10.1 and is the type a simulation study takes.

BidsDirectoryStatus

datamodel.schema.BidsDirectoryStatus()

A directory’s standing with the BIDS standard, which is what decides whether it needs a .bidsignore entry.

BidsEntities

datamodel.schema.BidsEntities(
    template=None,
    cohort=None,
    reconstruction=None,
    segmentation=None,
    scale=None,
    atlas=None,
    acquisition=None,
    hemi=None,
    desc=None,
    suffix=None,
)

BIDS filename entities (BEP017-aligned) for provenance and data discovery. Reusable on Network, BrainAtlas, Tractogram, or any dataset with BIDS-conformant naming.

Binding

datamodel.schema.Binding(
    name=None,
    library=None,
    callable=None,
    args=empty_list(),
)

Per-backend construction binding for a GraphGenerator: how to build the graph in a specific target library. Keyed by backend id — the name is the backend (e.g. python, julia, networkx).

BindingName

datamodel.schema.BindingName()

BoundaryCondition

datamodel.schema.BoundaryCondition(
    label=None,
    description=None,
    bc_type=None,
    on_region=None,
    equation=None,
    time_dependent=False,
)

BoundaryConditionType

datamodel.schema.BoundaryConditionType()

BrainAtlas

datamodel.schema.BrainAtlas(
    name=None,
    coordinateSpace=None,
    abbreviation=None,
    author=empty_list(),
    isVersionOf=None,
    versionIdentifier=None,
    terminology=None,
)

A schema for representing a version of a brain atlas.

BrainAtlasName

datamodel.schema.BrainAtlasName()

BrainRegionSeries

datamodel.schema.BrainRegionSeries(values=empty_list())

A series whose values represent latitude

BranchSwitch

datamodel.schema.BranchSwitch(
    name=None,
    description=None,
    parameters=empty_dict(),
    source_point=None,
    delta_p=None,
    continuation=None,
    discretization=None,
    bothside=None,
    options=empty_dict(),
)

Specification for switching from a detected bifurcation point to a new branch (periodic orbits from Hopf, fold continuation, etc.). Each BranchSwitch says: “from which special point on the parent branch, continue what kind of object, with what settings.” Override parent solver settings via the inline continuation field — only explicitly set attributes take effect; everything else is inherited from the parent Continuation.

BranchSwitchName

datamodel.schema.BranchSwitchName()

CachedArray

datamodel.schema.CachedArray(name=None, shape=empty_list(), dtype=None)

One numeric array inside a cached-result .h5 companion, described by name, shape and dtype so a reader can check the layout it expects without opening the file.

CachedArrayName

datamodel.schema.CachedArrayName()

Callable

datamodel.schema.Callable(
    name=None,
    description=None,
    module=None,
    software=None,
    traceable=None,
)

CallableName

datamodel.schema.CallableName()

Camera

datamodel.schema.Camera(elevation=None, azimuth=None, zoom=None)

Where a 3-D panel is looked at from. Only a line3d panel or a surface reads it; every other kind ignores it. Stated as a class rather than three loose options because a viewpoint is one thing, and a figure that states two of its three numbers is under-specified in a way nothing else would catch.

ClassReference

datamodel.schema.ClassReference(
    name=None,
    description=None,
    module=None,
    software=None,
    traceable=None,
    constructor_args=empty_dict(),
    call_args=empty_dict(),
    warmup=None,
)

Reference to a class that can be instantiated and called. Used for external library classes (e.g., tvboptim.Bold, custom monitors). The class is instantiated with constructor_args, then called with call_args. Generalizable pattern: works for tvboptim, TVB, or any Python class.

ClassReferenceName

datamodel.schema.ClassReferenceName()

ClinicalImprovement

datamodel.schema.ClinicalImprovement(
    score=None,
    baseline_value=None,
    absolute_value=None,
    percent_change=None,
    time_post_surgery=None,
    evaluator=None,
    timepoint=None,
)

Relative improvement on a defined clinical score.

ClinicalScale

datamodel.schema.ClinicalScale(
    acronym=None,
    name=None,
    version=None,
    domain=None,
    reference=None,
)

A clinical assessment inventory or structured scale composed of multiple scores or items.

ClinicalScore

datamodel.schema.ClinicalScore(
    acronym=None,
    name=None,
    description=None,
    domain=None,
    reference=None,
    scale=None,
    parent_score=None,
)

Metadata about a clinical score or scale.

CodeSource

datamodel.schema.CodeSource(path=None, git=None, ref=None, subdir=None)

Location of a recipe’s callable code so the specification is decoupled from where the code lives. Either a local directory or a git repository; the resolved directory (optionally a subdir within it) is placed on the import path at load time so module: references resolve by bare name. path and git are mutually exclusive.

ColorScale

datamodel.schema.ColorScale(
    colormap=None,
    vmin=None,
    vmax=None,
    symmetric=None,
    percentile=None,
)

How values become colours, and where the scale starts and stops. Shared by everything that paints a field rather than drawing marks — a colour bar, a cortical surface, a labelled volume, a connectome — so the same question is answered with the same words wherever it is asked, and a limit means the same thing on all four. Every slot here reaches all four; a scale concern only one of them can answer is declared on that one, which is why center sits on Colorbar.

Colorbar

datamodel.schema.Colorbar(
    colormap=None,
    vmin=None,
    vmax=None,
    symmetric=None,
    percentile=None,
    show=None,
    label=None,
    ticks=empty_list(),
    ticklabels=empty_list(),
    decimals=None,
    fraction=None,
    pad=None,
    aspect=None,
    orientation=None,
    location=None,
    width=None,
    center=None,
)

The colour scale a panel prints beside its field. Declared as one object because nine loose colorbar_* options were nine chances to style a bar that is not drawn, and because a tick list written in an options bag is not a list of numbers to anything that reads it.

A heatmap carries one unasked, since it is unreadable without one; a scatter shaded by a third quantity asks with show: true, because a row of them conventionally shares ONE bar. kind: colorbar is the standalone form — a bar occupying its own cell of the mosaic, keying the panels around it, and the only case that states its own colormap and limits rather than taking them from the field it sits beside.

Colormaps

datamodel.schema.Colormaps(sequential=None, diverging=None)

Continuous colour scales, by key: anything ordinal or continuous draws from one of these, anything categorical draws from Palette.palette, and an ordinal scale drawn as discrete swatches samples one rather than picking hues that imply no order. A value is either a registered colormap name (viridis) or the list of colours to ramp between (['#000000', '#ffffff']). The namespace is open — a project adds its own keys for the scales it distinguishes (bold: viridis, meg: plasma, eeg: cividis) and names them anywhere a colormap is named. sequential and diverging are the two the renderer reaches for on its own, so they are typed here and always present: a project that declares neither still has both. An open namespace cannot catch a misspelt key — sequentiel is read as a project key, not as a typo — which is the price of letting a project name its own scales. A key that shadows a registered colormap name is refused, so a name cannot mean two things at once.

CommonCoordinateSpace

datamodel.schema.CommonCoordinateSpace(
    name=None,
    abbreviation=None,
    alternateName=empty_list(),
    description=None,
    unit=None,
    license=None,
    anatomicalAxesOrientation=None,
    axesOrigin=None,
    nativeUnit=None,
    defaultImage=empty_list(),
)

A schema for representing a version of a common coordinate space.

CommonCoordinateSpaceName

datamodel.schema.CommonCoordinateSpaceName()

ComparisonOperator

datamodel.schema.ComparisonOperator()

Comparison used by a stochastic_mask step. Named rather than written as an operator so the step stays metadata: != in particular cannot survive expression parsing (it evaluates to a plain boolean).

ConditionalBlock

datamodel.schema.ConditionalBlock(condition=None, expression=None)

A single condition and its corresponding equation segment.

ConnectivityRule

datamodel.schema.ConnectivityRule()

Rule for expanding a population-level Edge into individual cell-to-cell connections. Names a connectivity pattern between the source and target populations so a network of populations declares its projections once, without enumerating every connection; each backend expands the rule into its native connection set (e.g. the NeuroML exporter emits one with size_src x size_tgt elements). Backend-independent: it states the connectivity pattern, not how any simulator stores it.

Contact

datamodel.schema.Contact(contact_id=None, coordinate=None, label=None)

Individual contact on a DBS electrode.

Continuation

datamodel.schema.Continuation(
    name=None,
    label=None,
    description=None,
    dynamics=None,
    free_parameters=empty_dict(),
    ds=None,
    ds_min=None,
    ds_max=None,
    max_steps=None,
    newton_tol=None,
    newton_max_iterations=None,
    nev=None,
    tol_stability=None,
    detect_bifurcation=None,
    detect_fold=None,
    n_inversion=None,
    max_bisection_steps=None,
    algorithm='PALC',
    initial_state=None,
    branches=empty_dict(),
    bothside=None,
    execution=None,
    software=None,
    options=empty_dict(),
)

Complete specification of a numerical continuation / bifurcation analysis. All universal solver settings live directly here. Toolkit-specific string options go in the options slot. When used inside a BranchSwitch, only explicitly set attributes override the parent’s values.

ContinuationAlgorithm

datamodel.schema.ContinuationAlgorithm()

Predictor-corrector algorithm for numerical continuation.

ContinuationName

datamodel.schema.ContinuationName()

Coordinate

datamodel.schema.Coordinate(coordinateSpace=None, x=None, y=None, z=None)

A 3D coordinate with X, Y, Z values.

Corner

datamodel.schema.Corner()

A named corner for placing a panel number inside its axes — the four corners bsplot’s add_panel_number anchors to. An enum so a typo is a validation error, not a silent fallback to the default corner.

Coupling

datamodel.schema.Coupling(
    name='Linear',
    label=None,
    iri=None,
    parameters=empty_dict(),
    description=None,
    coupling_function=None,
    sparse=False,
    pre_expression=None,
    post_expression=None,
    incoming_states=empty_list(),
    local_states=empty_list(),
    delayed=True,
    interpolate_delays=False,
    vectorized=False,
    symmetry='directed',
    outsym=empty_list(),
    observed=empty_dict(),
    inner_coupling=None,
    region_mapping=None,
    regional_connectivity=None,
    aggregation=None,
    distribution=None,
)

CouplingInput

datamodel.schema.CouplingInput(
    name=None,
    description=None,
    symbol=None,
    source=None,
    dimension=1,
    keys=empty_list(),
    local=False,
)

Specification of a coupling input channel for multi-coupling dynamics

CouplingInputName

datamodel.schema.CouplingInputName()

CouplingName

datamodel.schema.CouplingName()

CouplingStageEvaluation

datamodel.schema.CouplingStageEvaluation()

How the network coupling term is evaluated within one step of a multi-stage integrator (Heun, RK4, …). A backend-neutral numerical contract: whether the coupling is part of the vector field, re-evaluated at each solver stage, or computed once per step and held constant across the stages. Matters because the two choices integrate a different effective system — for stiff / chaotic / multistable dynamics they can converge to different trajectories or attractors.

DBSDataset

datamodel.schema.DBSDataset(
    dataset_id=None,
    subjects=empty_dict(),
    label=None,
    description=None,
    bids_root=None,
    bundle=None,
    batch_mode='fan_out',
    batch_size=None,
    conditions=empty_list(),
    reference=None,
    clinical_scores=empty_list(),
    coordinate_space=None,
)

Collection of data related to a specific DBS study.

DBSDatasetDatasetId

datamodel.schema.DBSDatasetDatasetId()

DBSProtocol

datamodel.schema.DBSProtocol(
    name=None,
    electrodes=empty_list(),
    settings=empty_list(),
    timing_info=None,
    notes=None,
    clinical_improvement=empty_list(),
)

A protocol describing DBS therapy, potentially bilateral or multi-lead.

DBSProtocolName

datamodel.schema.DBSProtocolName()

DBSSubject

datamodel.schema.DBSSubject(
    subject_id=None,
    label=None,
    group=None,
    age=None,
    sex=None,
    sessions=empty_dict(),
    network=None,
    metadata=None,
    diagnosis=None,
    handedness=None,
    protocols=empty_list(),
    coordinate_space=None,
)

Human or animal subject receiving DBS.

DBSSubjectSubjectId

datamodel.schema.DBSSubjectSubjectId()

DataRef

datamodel.schema.DataRef(
    iri=None,
    experiment=None,
    analysis=None,
    output=None,
    sel=empty_dict(),
    transform=None,
    reconcile='none',
)

A pointer to one labelled array in a result container, dataset, or curated entity — the single cross-container reference primitive (a PROV entity a consumer prov:used). WHERE is experiment (an in-study experiment id, resolved like initial_state.source_experiment), analysis (an in-study analysis name), or the full iri (a curated / result / external pointer); at most one. WHICH is output (a recorded variable, observation__<name>, estimate__<param>, or external variable). SLICE is sel (label-keyed .sel, never positional). reconcile optionally aligns the sourced array to the consuming network’s node order by label. One model reused by figure layers (Layer.used), sourced arguments (Argument.used) and sourced parameters (Parameter.used), so data binding, cross-experiment sourcing and PROV provenance are the same edge. A sourced array is resolved lazily and never inlined into generated code.

DataSource

datamodel.schema.DataSource(
    name=None,
    label=None,
    description=None,
    path=None,
    loader=None,
    format=None,
    key=None,
    preprocessing=None,
)

Specification for loading external/empirical data.

DataSourceName

datamodel.schema.DataSourceName()

Dataset

datamodel.schema.Dataset(
    dataset_id=None,
    subjects=empty_dict(),
    label=None,
    description=None,
    bids_root=None,
    bundle=None,
    batch_mode='fan_out',
    batch_size=None,
    conditions=empty_list(),
    reference=None,
)

A collection of subjects for a multi-subject study. Provides the subject/session structure needed for workflow rendering. Optionally backed by a BIDS directory layout.

DatasetDatasetId

datamodel.schema.DatasetDatasetId()

DerivedParameter

datamodel.schema.DerivedParameter(
    name=None,
    label=None,
    symbol=None,
    definition=None,
    value=None,
    default=None,
    domain=None,
    reported_optimum=None,
    description=None,
    equation=None,
    unit=None,
    grounding=empty_list(),
    producer=None,
    comment=None,
    heterogeneous=None,
    distribution=None,
    source=None,
    measure=None,
    used=None,
    free=None,
    shape=None,
    explored_values=empty_list(),
    element_domains=empty_list(),
    datatype=None,
    required=None,
)

DerivedParameterName

datamodel.schema.DerivedParameterName()

DerivedVariable

datamodel.schema.DerivedVariable(
    name=None,
    label=None,
    symbol=None,
    description=None,
    equation=None,
    unit=None,
    record=False,
    grounding=empty_list(),
    surrogate=None,
)

DerivedVariableName

datamodel.schema.DerivedVariableName()

DevelopmentStatus

datamodel.schema.DevelopmentStatus()

Development status of the software. Based on repostatus.org categories.

DifferentialOperator

datamodel.schema.DifferentialOperator(
    label=None,
    definition=None,
    equation=None,
    operator_type=None,
    coefficient=None,
    tensor_coefficient=None,
    expression=None,
)

Differentiation

datamodel.schema.Differentiation(
    truncation_window=None,
    checkpoint_interval=None,
    mode='reverse',
)

Backend-neutral configuration for how gradients are propagated through the temporal integration. Expressed in physical/semantic terms; each backend maps it to its own mechanism (JAX solver grad_horizon / block_size, Julia adjoint sensitivity, …). Backends without autodiff (e.g. MATLAB) emit a comment noting differentiation is unsupported and proceed with the plain forward integration – they do not raise.

Digest

datamodel.schema.Digest(algorithm=None, value=None)

One checksum of an artifact, keyed by the function that produced it. Collected on Provenance.digest, whose collection KEY is the function name — BEP028 takes the names MD5, SHA1, SHA-256 and the rest of that list, and allows an arbitrary label otherwise. Keyed rather than a bare string so an artifact can carry several digests and a reader knows which function to check with.

DigestAlgorithm

datamodel.schema.DigestAlgorithm()

DimensionType

datamodel.schema.DimensionType()

Dimensions along which operations can be applied

Discretization

datamodel.schema.Discretization(
    parameters=empty_dict(),
    method='collocation',
    ode_solver=None,
    linear_solver=None,
    mesh_intervals=50,
    degree=4,
    n_sections=3,
    options=empty_dict(),
)

Discretization method for boundary value problems in continuation (periodic orbits, connecting orbits, quasi-periodic tori). Specifies the method; method-specific numerics go in parameters.

DiscretizationMethod

datamodel.schema.DiscretizationMethod()

Distribution

datamodel.schema.Distribution(
    name='Uniform',
    parameters=empty_dict(),
    domain=None,
    function=None,
    seed=None,
    axis='space',
    correlation=None,
)

A probability distribution for sampling parameters or initial conditions. Standard distributions (Uniform, Gaussian) are specified by name and domain/parameters. Custom distributions use a Function for the PDF/sampling rule. Default name is Uniform when only domain is given.

DistributionConfig

datamodel.schema.DistributionConfig(
    by=None,
    vectorize=empty_list(),
    workflow=empty_list(),
    chunk=None,
)

Policy for mapping a parameter sweep’s exploration axes onto the two parallelism tiers when rendering a distributed workflow. Vectorized axes are packed into a single batched backend call (e.g. vmap/pmap); workflow axes are fanned out into independent scheduler tasks, one per value combination. Backend-independent: the emitter validates that a requested vectorized axis is one the chosen backend can actually batch.

DistributionName

datamodel.schema.DistributionName()

DomainEnforcement

datamodel.schema.DomainEnforcement()

Whether and how a state variable’s domain constrains the trajectory during integration. Default none means the domain is descriptive metadata only (expected range, plot limits, initial- condition sampling support) and never alters the dynamics — so declaring a domain is side-effect free. clamp and wrap opt in to active enforcement using the domain’s lo/hi.

Dynamics

datamodel.schema.Dynamics(
    name='Dynamics',
    has_reference=None,
    label=None,
    iri=None,
    parameters=empty_dict(),
    description=None,
    source=None,
    references=empty_list(),
    dataLocation=None,
    derived_parameters=empty_dict(),
    derived_variables=empty_dict(),
    coupling_inputs=empty_dict(),
    state_variables=empty_dict(),
    modified=None,
    output=empty_list(),
    derived_from_model=None,
    number_of_modes=1,
    local_coupling_term=None,
    functions=empty_dict(),
    stimulus=None,
    modes=empty_dict(),
    model_type=None,
    system_type=None,
    autonomous=True,
    observed=empty_dict(),
    events=empty_dict(),
    cse=False,
    compile=False,
)

DynamicsName

datamodel.schema.DynamicsName()

EField

datamodel.schema.EField(
    volume_data=None,
    coordinate_space=None,
    threshold_applied=None,
)

Simulated electric field from DBS modeling.

EcosystemEnum

datamodel.schema.EcosystemEnum()

Package ecosystem or registry the software is distributed through.

Edge

datamodel.schema.Edge(
    label=None,
    description=None,
    parameters=empty_dict(),
    producer=None,
    source=None,
    target=None,
    weight=None,
    delay=None,
    distance=None,
    unit=None,
    format=None,
    dtype=None,
    weighted=True,
    valid_diagonal=False,
    non_negative=True,
    source_var=None,
    target_var=None,
    coupling=None,
    directed=False,
    connectivity=None,
    allow_self_connections=True,
    source_network=None,
    target_network=None,
    dimension_labels=empty_list(),
    dynamics=None,
    events=empty_dict(),
)

An edge in a network. Three modes: explicit (source+target set, scalar parameters in YAML), template (no source/target, N×N matrix measure in HDF5), or produced (a producer: computes the whole matrix from the spec’s own inputs, so no pre-built file is needed). All coexist in the same edges list.

Electrode

datamodel.schema.Electrode(
    electrode_id=None,
    manufacturer=None,
    model=None,
    hemisphere='left',
    contacts=empty_list(),
    head=None,
    tail=None,
    trajectory=empty_list(),
    target_structure=None,
    coordinate_space=None,
    recon_path=None,
)

Implanted DBS electrode and contact geometry.

ElementType

datamodel.schema.ElementType()

Encoding

datamodel.schema.Encoding(x=None, y=None, z=None, color=None, detail=None)

Map visual channels to container dims/coords/vars, by NAME (keyed, never positional). Common case: {x: time, y: rate}. A channel may later accept a scale object without breaking this string form.

EnvironmentType

datamodel.schema.EnvironmentType()

EnvironmentVariable

datamodel.schema.EnvironmentVariable(name=None, value=None)

One environment variable assignment exported before executing the workflow task command. Use this for reproducible runtime knobs such as XLA/OMP settings in emitted workflow artefacts.

EnvironmentVariableName

datamodel.schema.EnvironmentVariableName()

Equation

datamodel.schema.Equation(
    label=None,
    definition=None,
    parameters=empty_dict(),
    description=None,
    lhs=None,
    rhs=None,
    conditionals=empty_list(),
    engine=None,
    pycode=None,
    latex=False,
)

Event

datamodel.schema.Event(
    name=None,
    label=None,
    description=None,
    parameters=empty_dict(),
    event_type='stimulus',
    condition=None,
    condition_states=empty_list(),
    condition_parameters=empty_list(),
    affect=None,
    affect_states=empty_list(),
    affect_parameters=empty_list(),
    affect_negative=None,
    trigger_times=empty_list(),
    target_component=None,
    equation=None,
    nodes=empty_list(),
    weights=empty_list(),
    weight_distribution=None,
    weight_parameter=None,
    target_variable=None,
    target_regions=empty_list(),
    duration=None,
    dataLocation=None,
    sampling_rate=1.0,
    interpolation='linear',
)

A discrete or continuous event that modifies the system during simulation. Generalizes Stimulus: can represent external inputs (stimulus type), threshold-triggered state changes (continuous/discrete type), or time-scheduled interventions (preset_time type). Attaches to components (nodes/edges) or to the experiment level.

EventName

datamodel.schema.EventName()

EventType

datamodel.schema.EventType()

Type of event triggering mechanism.

ExecutionConfig

datamodel.schema.ExecutionConfig(
    n_workers=1,
    n_threads=-1,
    precision='float64',
    accelerator='auto',
    backend=None,
    batch_size=None,
    random_seed=0,
    find_fixpoint=False,
    system_size=None,
)

Configuration for computational execution (parallelization, precision, hardware).

ExperimentResultSidecar

datamodel.schema.ExperimentResultSidecar(
    data_file=None,
    parameters=empty_dict(),
    provenance=None,
    metadata=None,
)

Descriptor for a cached ExperimentResult: the .h5 companion holding the fitted parameter arrays, one CachedArray entry per array, and the provenance a downstream cache needs to decide whether the result is still valid. Written by tvbo.data.experiment_result_io.save_sidecar, so it is generated rather than authored — but it is self-describing (it carries a tvbo_class envelope naming this class), which is what lets tvbo validate schema check a generated sidecar instead of falling back to some unrelated class and failing on its required slots.

Exploration

datamodel.schema.Exploration(
    name=None,
    label=None,
    description=None,
    execution=None,
    space=empty_dict(),
    parameters=empty_dict(),
    algorithms=empty_list(),
    mode='product',
    strategy='grid',
    objectives=empty_list(),
    observable=None,
    record=empty_list(),
    n_parallel='auto',
    block_size=None,
    n_trials=1,
    average=None,
    parallel_mode=None,
    parallel_batch_size=None,
    sweep_seeding='independent',
    sweep_direction='up',
)

Parameter space exploration (grid search, sweep).

ExplorationAxis

datamodel.schema.ExplorationAxis(
    parameter=None,
    label=None,
    description=None,
    domain=None,
    transform='none',
    explored_values=empty_list(),
    element_domains=empty_list(),
    builder=None,
    unit=None,
    reduce=None,
)

One axis of a parameter exploration grid. Points to an existing Parameter (by dotted reference, e.g. “ReducedWongWang.w” or “FastLinearCoupling.G”) and supplies the sweep specification (domain, explored_values, or per-element overrides). No new Parameter is created.

ExplorationAxisParameter

datamodel.schema.ExplorationAxisParameter()

ExplorationName

datamodel.schema.ExplorationName()

FieldStateVariable

datamodel.schema.FieldStateVariable(
    name=None,
    symbol=None,
    label=None,
    definition=None,
    domain=None,
    description=None,
    equation=None,
    unit=None,
    record=True,
    grounding=empty_list(),
    variable_of_interest=True,
    coupling_variable=False,
    equation_type='differential',
    evict_equation=None,
    equation_order=1,
    noise=None,
    stimulation_variable=None,
    initial_value=None,
    derivative_initial_value=None,
    distribution=None,
    history=None,
    mesh=None,
    boundary_conditions=empty_list(),
)

FieldStateVariableName

datamodel.schema.FieldStateVariableName()

Figure

datamodel.schema.Figure(
    name=None,
    description=None,
    provenance=None,
    part='main',
    layout=None,
    theme=None,
    style=empty_list(),
    format=None,
    reference_image=None,
    label=None,
    width=None,
    height=None,
    dpi=None,
    trim_margins=None,
    pad=None,
    font_size=None,
    auto_format=None,
    panel_numbers=None,
    panel_number_format=None,
    panel_number_loc=None,
    panel_number_offset=empty_list(),
    panel_number_size=None,
    height_ratios=empty_list(),
    width_ratios=empty_list(),
    spines=None,
    layout_engine=None,
    spine_offset=None,
    workflow_overrides=None,
    code_modules=empty_list(),
    share_x=empty_list(),
    share_y=empty_list(),
    animation=None,
    panels=empty_dict(),
)

A publication figure, a mosaic of panels rendered from result containers. Reuses name (identifier) and description (caption).

FigureName

datamodel.schema.FigureName()

File

datamodel.schema.File(
    name=None,
    description=None,
    type=None,
    path=None,
    extension=None,
)

FileName

datamodel.schema.FileName()

FrameRole

datamodel.schema.FrameRole()

What a layer does while a figure animates. Read only under Figure.animation; a still figure ignores it. Unset, a layer whose data carries the animated dimension is sliced and one that does not is static, which is the reading that needs no annotation in the common case.

FreeParameter

datamodel.schema.FreeParameter(
    parameter=None,
    label=None,
    description=None,
    heterogeneous=False,
    shape=None,
    initial_value=None,
    domain=None,
)

One degree of freedom in an OptimizationStage. References an existing Parameter by dotted scope (e.g. “ReducedWongWang.w” or “FastLinearCoupling.G”) and supplies optimization-specific metadata (heterogeneous, shape, bounds, initial value). No new Parameter is created here.

Function

datamodel.schema.Function(
    name=None,
    acronym=None,
    label=None,
    iri=None,
    equation=None,
    definition=None,
    description=None,
    requirements=empty_list(),
    input=None,
    output=None,
    arguments=empty_dict(),
    output_equation=None,
    source_code=None,
    callable=None,
    apply_on_dimension=None,
    aggregate=None,
    time_range=None,
)

A function with explicit input -> transformation -> output flow. Can be equation-based (symbolic) or software-based (callable). In a pipeline, functions are chained: output of one becomes input of next.

FunctionCall

datamodel.schema.FunctionCall(
    acronym=None,
    label=None,
    equation=None,
    description=None,
    iri=None,
    name=None,
    function=None,
    callable=None,
    class_call=None,
    input=None,
    output=None,
    apply_on_dimension=None,
    aggregate=None,
    arguments=empty_dict(),
    time_range=None,
    source_code=None,
)

Invocation of a function in a pipeline. Can reference a defined Function by name, OR inline a callable directly for external library functions, OR inline an equation, OR use class_call for class instantiation, OR name a curated step with iri and state only what differs from it. Mirrors Function attributes so pipeline steps can be self-contained. The name is an optional step label (used in pipelines for keyed access to step outputs); it is NOT a global identifier (singleton uses like loss, observable may omit it).

FunctionName

datamodel.schema.FunctionName()

Graph

datamodel.schema.Graph(
    colormap=None,
    vmin=None,
    vmax=None,
    symmetric=None,
    percentile=None,
    connectome=None,
    projection=None,
    labels=None,
    color=None,
    node_size=None,
    node_edge_color=None,
    node_edge_width=None,
    edge_color=None,
    edge_alpha=None,
    edge_width=None,
    edge_percentile=None,
)

A node-link panel’s graph and how it is drawn: the connectome the model actually ran on, with a state living on it. The geometry is the network’s own — one marker per region at its anatomical centre — and a layer supplies one value per region, placed by label.

GraphGenerator

datamodel.schema.GraphGenerator(
    name=None,
    description=None,
    iri=None,
    type=None,
    seed=None,
    directed=False,
    parameters=empty_dict(),
    bindings=empty_dict(),
    procedure=None,
    builder=None,
)

Backend-agnostic graph generator specification. Captures the mathematical family and its parameter declarations so that each backend can emit the correct constructor call (Graphs.jl, NetworkX, etc.) via per-backend bindings; derived generators may also carry a symbolic procedure. The number of nodes is always taken from Network.number_of_nodes.

GraphGeneratorName

datamodel.schema.GraphGeneratorName()

GraphRepresentation

datamodel.schema.GraphRepresentation()

How a Network’s connectivity is represented when evaluating coupling. This is a backend-independent performance contract, not a numerical one: both representations compute the same coupling, but a sparse representation sums over the existing edges (cost scales with the number of edges) while a dense representation operates on the full adjacency (cost scales with nodes-squared). A backend maps the choice onto its own primitives (edge gather / segment-sum vs matrix product). Orthogonal to whether the coupling reads delayed states — that is decided per coupling by its conduction delay — so the two dimensions together yield the four backend graph kinds: dense/sparse × instantaneous/delayed.

Grid

datamodel.schema.Grid(
    ncols=None,
    nrows=None,
    left=None,
    right=None,
    top=None,
    bottom=None,
    wspace=None,
    hspace=None,
    col_labels=empty_list(),
    row_labels=empty_list(),
    col_label_size=None,
    col_label_pad=None,
    row_label_rotation=None,
    between=empty_list(),
    trailing=None,
)

How a grid panel tiles its cells, and what the strips around them are labelled with. Rows and columns are labelled ONCE, at the left and the top — the whole reason a paper’s composite panel is one lettered panel rather than n of them.

The reserved label strips are taken out of the drawable area, so declaring one shrinks the cells to make room instead of being drawn over them. The axis labels the cells SHARE are the panel’s own xlabel/ylabel, one word at two levels, not slots of this object.

A directive that varies down the rows or across the columns is still written as row.<name> / col.<name> in opts: it supplies one value per row or column of ANY directive, so it cannot be a fixed slot of anything.

Hemisphere

datamodel.schema.Hemisphere()

ImagingModality

datamodel.schema.ImagingModality()

Inference

datamodel.schema.Inference(
    name=None,
    likelihood=None,
    label=None,
    description=None,
    priors=empty_dict(),
    sampler='nuts',
    num_samples=1000,
    num_warmup=1000,
    num_chains=1,
    seed=0,
    execution=None,
    integration=None,
    depends_on=None,
)

Bayesian inference of model parameters from an observation, via MCMC. A standalone, first-class concept (NOT an Optimization): it produces a POSTERIOR, not a point estimate, using priors + a likelihood + a sampler instead of a loss + optimizer. It runs the SAME differentiable forward model, wrapped in a probabilistic model (sample priors -> forward -> likelihood).

InferenceName

datamodel.schema.InferenceName()

InitialState

datamodel.schema.InitialState(
    method='time_integration',
    duration=2000.0,
    abs_tol=1e-10,
    rel_tol=1e-10,
    solver=None,
    source_branch=None,
    source_point=None,
    source_experiment=None,
    ramp=None,
)

How to obtain the starting equilibrium or periodic orbit for continuation. Most robust: time-integrate to steady state.

InitialStateMethod

datamodel.schema.InitialStateMethod()

Strategy for obtaining the starting equilibrium or periodic orbit.

Inset

datamodel.schema.Inset(
    kind=None,
    label=None,
    cell=None,
    cells=empty_list(),
    bounds=empty_list(),
    layers=empty_list(),
    render=None,
    tick_size=None,
    tick_length=None,
    tick_prune=None,
    nbins=None,
    xticks=empty_list(),
    yticks=empty_list(),
    hide_xticklabels=None,
    hide_yticklabels=None,
    xtick_rotation=None,
    ytick_rotation=None,
    xtick_format=None,
    ytick_format=None,
    xtick_side=None,
    ytick_side=None,
    xlabel=None,
    ylabel=None,
    zlabel=None,
    title=None,
    xlabel_pad=None,
    ylabel_pad=None,
    zlabel_pad=None,
    xlabel_side=None,
    ylabel_side=None,
    xlim=empty_list(),
    ylim=empty_list(),
    zlim=empty_list(),
    xscale=None,
    yscale=None,
    aspect=None,
    box_aspect=None,
    invert_x=None,
    invert_y=None,
    invert_z=None,
    frame=None,
    legend=None,
    colorbar=None,
    surface=None,
    volume=None,
    network=None,
    grid=None,
    fill_cell=None,
    triangle_gap=None,
    rules=empty_list(),
    regions=empty_list(),
    camera=None,
    opts=empty_dict(),
    path=None,
    annotations=empty_list(),
)

A sub-axes that draws exactly as a panel does — same kinds, layers, opts, annotations — minus the things only a mosaic cell has (a panel letter, a placeholder, a position in the layout). One class for both an inset and a grid cell, so a cell cannot behave unlike the inset beside it; they differ only in who positions them.

Integrator

datamodel.schema.Integrator(
    method='euler',
    abs_tol=1e-10,
    rel_tol=1e-10,
    step_size=0.01220703125,
    time_unit=None,
    unit=None,
    parameters=empty_dict(),
    duration=1000,
    description=None,
    steps=None,
    noise=None,
    state_wise_sigma=empty_list(),
    transient_time=0,
    block_size=1000,
    noise_draw='fused',
    scipy_ode_base=False,
    number_of_stages=1,
    intermediate_expressions=empty_dict(),
    update_expression=None,
    delayed=True,
    differentiation=None,
    coupling_evaluation='per_step',
)

Fixed-step or adaptive ODE integrator with TVB-specific extensions (noise, transient time, etc.). Inherits abs_tol, rel_tol from Solver. Overrides method default to ‘euler’.

Layer

datamodel.schema.Layer(
    used=None,
    transform=None,
    mark=None,
    label=None,
    triangle=None,
    frame=None,
    encoding=None,
    style=None,
)

One mark bound to one data reference, with its encoding.

LayoutEngine

datamodel.schema.LayoutEngine()

Which matplotlib layout engine positions the mosaic’s axes. Unset lets the backend pick (bsplot asks for ‘compressed’ and falls back to ‘tight’), which is right for a plain grid of plots. A figure whose panels carry their own absolute geometry — a schematic stepped out in axes fractions, or a mosaic dense enough that the constrained solver reports cells collapsed to zero and silently falls back — has to say so, because an engine that gives up still leaves the figure laid out by a fallback nobody declared.

LayoutTemplateVariant

datamodel.schema.LayoutTemplateVariant(variant=None, template=None)

One variant’s seed for a file the record already accounts for.

LayoutTemplateVariantVariant

datamodel.schema.LayoutTemplateVariantVariant()

Legend

datamodel.schema.Legend(
    show=None,
    loc=None,
    frame=None,
    columns=None,
    title=None,
    labels=empty_list(),
    colors=empty_list(),
    linestyles=empty_list(),
    markers=empty_list(),
    handle_length=None,
)

A panel’s key: whether it is drawn, where it sits, and the three things a figure actually asks of one beyond that. An object rather than a bare position because frame had nowhere to live — the renderer drew every key frameless whatever the theme said, so a theme asking for a boxed legend never got one.

The shorthands are the same slot: legend: true is {show: true} and legend: upper right is {loc: upper right}, expanded on load, so a panel that starts with a corner and later needs two columns keeps the word it had.

Distinct from kind: legend, which is a standalone legend PANEL occupying a cell of the mosaic and sharing no axes with anything.

LegendLoc

datamodel.schema.LegendLoc()

Where a panel’s key sits. best lets the backend find the emptiest corner, which is right while a figure is still moving and wrong once it is printed — a key that relocates between two renders of the same figure is a difference the spec never stated.

Likelihood

datamodel.schema.Likelihood(
    source=None,
    name='Normal',
    description=None,
    predicted=empty_list(),
    sigma=None,
)

Observation model for Bayesian inference: p(data | sim(theta)). Points at the observation holding the data and specifies the noise family + scale. name is the noise family (default Normal); source uses the same referencing as Observation.source, so the observed data can come from this experiment’s integration, an empirical network measure, or a runtime-bound array — one flexible hook, no data-loading path of its own. predicted names the other side of the residual when it differs from the data’s own observable.

LikelihoodName

datamodel.schema.LikelihoodName()

LossFunction

datamodel.schema.LossFunction(
    name=None,
    acronym=None,
    label=None,
    iri=None,
    equation=None,
    definition=None,
    description=None,
    requirements=empty_list(),
    input=None,
    output=None,
    arguments=empty_dict(),
    output_equation=None,
    source_code=None,
    callable=None,
    apply_on_dimension=None,
    aggregate=None,
    time_range=None,
)

A loss function for optimization with optional aggregation. Extends Function with aggregation specification for per-element losses.

LossFunctionName

datamodel.schema.LossFunctionName()

MarkType

datamodel.schema.MarkType()

The cartesian primitive a grammar layer draws (heatmap is implied by a heatmap panel, not a mark).

Matrix

datamodel.schema.Matrix(
    label=None,
    description=None,
    dataLocation=None,
    x=None,
    y=None,
    values=empty_list(),
    format=None,
    shape=empty_list(),
    dtype=None,
)

Adjacency matrix of a network.

MeasureSpec

datamodel.schema.MeasureSpec(
    name=None,
    task_iri=None,
    concept_iri=None,
    unit=None,
    measure_type=None,
    description=None,
)

Metadata for one phenotype measure. Optional per-measure entry on Phenotype.measure_specs.

Mesh

datamodel.schema.Mesh(
    label=None,
    description=None,
    dataLocation=None,
    element_type=None,
    coordinates=empty_list(),
    elements=None,
    coordinate_space=None,
    mesh_file=None,
    mesh_format=None,
    number_of_vertices=None,
    number_of_elements=None,
    parcellation=None,
    normals=None,
    curvature=None,
    vertices_field=None,
    parcel_map_field=None,
)

Triangle (or higher-order) mesh geometry. May stand alone (via mesh_file pointing at an external GIFTI/VTK/MSH file) OR be inlined on a Network as Network.mesh. In the inlined-on-Network case, the vertices are the parent Network’s nodes/coordinates (so coordinates here may be left empty), the faces live in the same h5 companion under a path given by elements (default mesh/faces), and optional per-vertex normals / curvature live alongside. The optional parcel_map_field points at the parent Network’s per-vertex parcel-id array (default nodes/parent_index from the hierarchical-Network pattern, see Network.qmd §7.1).

ModelParadigm

datamodel.schema.ModelParadigm()

Computational paradigm or modeling approach supported by the tool.

ModelType

datamodel.schema.ModelType()

Coarse classification of a Dynamics model by its mathematical/biological origin. Used for filtering and display in list_db().

NDArray

datamodel.schema.NDArray(
    label=None,
    description=None,
    shape=empty_list(),
    dtype=None,
    dataLocation=None,
    unit=None,
)

NamedArray

datamodel.schema.NamedArray(
    name=None,
    shape=empty_list(),
    dtype=None,
    unit=None,
    description=None,
)

A named numeric array. Used as a sidecar slot value where a schema-typed object (e.g. ExperimentResult.parameters) holds multiple arrays addressable by name (w_LRE, w_FFI, J_i, …). The actual numeric data lives in the companion .h5 at parameters/<name>; the YAML carries only the descriptor.

Network

datamodel.schema.Network(
    label=None,
    description=None,
    parameters=empty_dict(),
    provenance=None,
    time_unit=None,
    integration=None,
    nodes=empty_list(),
    edges=empty_list(),
    primary_weight=None,
    coupling=empty_dict(),
    graph_representation='auto',
    dynamics=empty_dict(),
    node_template=None,
    edge_template=None,
    number_of_nodes=None,
    coordinate_space=None,
    parcellation=None,
    tractogram=None,
    mesh=None,
    transforms=empty_dict(),
    data_file=None,
    descriptor=None,
    bids_dir=None,
    bids=None,
    structural_measures=empty_list(),
    observational_measures=empty_list(),
    parent_network=None,
    node_mapping=None,
    distance_unit='mm',
    edge_matrix_files=empty_list(),
    graph_generator=None,
)

Network specification with nodes, edges, and reusable coupling configurations. Supports both explicit node/edge representation and matrix-based connectivity (Connectome compatibility).

Node

datamodel.schema.Node(
    id=None,
    label=None,
    alternateName=empty_list(),
    description=None,
    parameters=empty_dict(),
    record=True,
    size=1,
    dynamics=None,
    position=None,
    region=None,
    state=empty_dict(),
    events=empty_dict(),
    subnetwork=None,
)

A node in a network with its own dynamics and properties

NodeReconciliation

datamodel.schema.NodeReconciliation()

Strategy for aligning a sourced array’s nodes to the consuming model network before use. Keyed alignment guards against a differing node count or ordering (e.g. a 998-parcel empirical FC against a 1000-parcel model, or a hemisphere-swapped connectome) silently misaligning the data.

Noise

datamodel.schema.Noise(
    parameters=empty_dict(),
    equation=None,
    noise_type='gaussian',
    covariance=None,
    correlated_over=None,
    correlated=None,
    gaussian=False,
    additive=True,
    seed=42,
    settle_seed=None,
    random_state=None,
    distribution=None,
    function=None,
    pycode=None,
    targets=empty_dict(),
)

NoiseDraw

datamodel.schema.NoiseDraw()

How a stochastic run’s noise realization is generated.

NoiseType

datamodel.schema.NoiseType()

NumericalDiscretizationMethod

datamodel.schema.NumericalDiscretizationMethod()

Numerical discretization method for boundary value problems (periodic orbits, connecting orbits, quasi-periodic tori).

Observation

datamodel.schema.Observation(
    name=None,
    acronym=None,
    label=None,
    description=None,
    iri=None,
    equation=None,
    parameters=empty_dict(),
    environment=None,
    time_unit=None,
    record=None,
    unit=None,
    references=empty_list(),
    functions=empty_dict(),
    source=empty_list(),
    aux_data=empty_list(),
    dims=empty_list(),
    period=None,
    downsample_period=None,
    voi=None,
    imaging_modality=None,
    data_source=None,
    query=None,
    reconcile='by_label',
    min_coverage=None,
    tail_samples=None,
    tail_duration=None,
    aggregation=None,
    histogram=None,
    window_size=None,
    partition=None,
    pipeline=empty_list(),
    dynamics=None,
    reduce=None,
    class_reference=None,
    analysis=None,
)

Unified class for all observation/measurement specifications. Covers monitors (BOLD, EEG), tuning observables, and derived quantities. Pipeline is a sequence of Functions with input -> output flow.

ObservationName

datamodel.schema.ObservationName()

ObservationReductionMode

datamodel.schema.ObservationReductionMode()

How an observation is evaluated over the trajectory (see Observation.reduce). Absent (the default) keeps the post-scan pipeline: the observation is computed from a materialised trajectory. streaming opts the observation into an incremental reducer that is folded into the integrator carry via prepare(reduce=…), so the trajectory is never held — byte-identical to the post-scan value (to f64 rounding), but with O(block) instead of O(n_time) peak memory. Required for whole-brain fits whose per-stage simulation is long enough that the full trajectory would not fit in memory (e.g. the Schirner 2023 BOLD/FC group fit).

OperatorType

datamodel.schema.OperatorType()

Optimization

datamodel.schema.Optimization(
    name=None,
    label=None,
    description=None,
    free_parameters=empty_list(),
    algorithm='adam',
    learning_rate=0.001,
    max_iterations=100,
    hyperparameters=empty_dict(),
    freeze_parameters=empty_list(),
    warmup_from=None,
    execution=None,
    integration=None,
    loss=None,
    stages=empty_dict(),
    depends_on=None,
)

Configuration for parameter optimization. Inherits single-stage fields from OptimizationStage. For multi-stage workflows, use ‘stages’ (ignores inherited single-stage fields). Loss equation references observations directly by name.

OptimizationName

datamodel.schema.OptimizationName()

OptimizationStage

datamodel.schema.OptimizationStage(
    name=None,
    label=None,
    description=None,
    free_parameters=empty_list(),
    algorithm='adam',
    learning_rate=0.001,
    max_iterations=100,
    hyperparameters=empty_dict(),
    freeze_parameters=empty_list(),
    warmup_from=None,
)

A single stage in a multi-stage optimization workflow. Stages run sequentially, with each stage potentially using different parameters, shapes, learning rates, and algorithms.

OptimizationStageName

datamodel.schema.OptimizationStageName()

Option

datamodel.schema.Option(name=None, value=None)

A toolkit-specific key-value option (string name + string value). Used for backend settings that are not universal numeric parameters (e.g., solver name, tangent method, jacobian type).

OptionName

datamodel.schema.OptionName()

PDE

datamodel.schema.PDE(
    label=None,
    description=None,
    parameters=empty_dict(),
    domain=None,
    mesh=None,
    state_variables=empty_dict(),
    operators=empty_list(),
    sources=empty_list(),
    boundary_conditions=empty_list(),
    solver=None,
    derived_parameters=empty_list(),
    derived_variables=empty_list(),
    functions=empty_list(),
)

Partial differential equation problem definition.

PDESolver

datamodel.schema.PDESolver(
    method=None,
    abs_tol=1e-10,
    rel_tol=1e-10,
    step_size=None,
    label=None,
    description=None,
    requirements=empty_list(),
    environment=None,
    discretization=None,
    preconditioner=None,
)

Numerical solver for a PDE: the time-integration algorithm, tolerances and step inherited from Solver, plus the spatial discretization and preconditioner a PDE additionally needs.

Palette

datamodel.schema.Palette(
    ink=None,
    base=None,
    muted=None,
    highlight=None,
    background=None,
    palette=empty_list(),
    colormaps=None,
)

A project’s colours, named by role. The colour half of a Theme, and a document in its own right for a consumer that wants colours and nothing else (:mod:tvbo.plot.palette, the documentation site’s stylesheet). A style sheet carries only what matplotlib has an rcParam for, which stops short of the roles a figure reasons in: the one colour that means this is the point, the neutral everything unlabelled is drawn in, the hairline behind it. Naming them here is what makes recolouring a project one edit that every panel follows. The cycler is [base] + palette, so a plot that names no colour comes out neutral and only a panel meaning to separate conditions reaches into the hues; highlight sits outside the cycler, because a colour handed to the second line of every plot cannot also mean emphasis. TVB-O’s own is curated at tvbo:theme/default, and is the palette in force until a project names one of its own.

Panel

datamodel.schema.Panel(
    panel_key=None,
    kind=None,
    label=None,
    description=None,
    cell=None,
    cells=empty_list(),
    source=None,
    capture=None,
    number_loc=None,
    number=None,
    placeholder=None,
    layers=empty_list(),
    path=None,
    render=None,
    opts=empty_dict(),
    tick_size=None,
    tick_length=None,
    tick_prune=None,
    nbins=None,
    xticks=empty_list(),
    yticks=empty_list(),
    hide_xticklabels=None,
    hide_yticklabels=None,
    xtick_rotation=None,
    ytick_rotation=None,
    xtick_format=None,
    ytick_format=None,
    xtick_side=None,
    ytick_side=None,
    xlabel=None,
    ylabel=None,
    zlabel=None,
    title=None,
    xlabel_pad=None,
    ylabel_pad=None,
    zlabel_pad=None,
    xlabel_side=None,
    ylabel_side=None,
    xlim=empty_list(),
    ylim=empty_list(),
    zlim=empty_list(),
    xscale=None,
    yscale=None,
    aspect=None,
    box_aspect=None,
    invert_x=None,
    invert_y=None,
    invert_z=None,
    frame=None,
    legend=None,
    colorbar=None,
    surface=None,
    volume=None,
    network=None,
    grid=None,
    fill_cell=None,
    triangle_gap=None,
    rules=empty_list(),
    regions=empty_list(),
    camera=None,
    annotations=empty_list(),
    insets=empty_list(),
)

One cell of the figure. kind selects grammar (cartesian/heatmap) vs escape-hatch (image/custom); every kind shares the label, placeholder, legend and annotation machinery. Reuses label (human title).

PanelKind

datamodel.schema.PanelKind()

What a panel draws. cartesian/heatmap are grammar-driven (mark + encoding); surface paints a layer on a mesh, volume projects one through a labelled volume and network draws one on a node-link graph; grid tiles a composite of sub-panels; colorbar/legend are shared keys in their own slot; image (external file) and custom (registered callable) are peer escape-hatch kinds. A new kind is added when its bsplot leaf exists.

PanelPanelKey

datamodel.schema.PanelPanelKey()

ParallelMode

datamodel.schema.ParallelMode()

How a trial / grid-point axis is realised at JAX codegen time. The choice trades peak memory against throughput: vmap batches in parallel (fast, n_trials × working-set memory), lax_map runs sequentially via jax.lax.map (memory bounded by one trial), pmap shards across devices, auto picks vmap when the estimated batched memory fits and lax_map otherwise.

Parameter

datamodel.schema.Parameter(
    name=None,
    label=None,
    symbol=None,
    definition=None,
    value=None,
    default=None,
    domain=None,
    reported_optimum=None,
    description=None,
    equation=None,
    unit=None,
    grounding=empty_list(),
    producer=None,
    comment=None,
    heterogeneous=None,
    distribution=None,
    source=None,
    measure=None,
    used=None,
    free=None,
    shape=None,
    explored_values=empty_list(),
    element_domains=empty_list(),
    datatype=None,
    required=None,
)

ParameterName

datamodel.schema.ParameterName()

Parcellation

datamodel.schema.Parcellation(
    label=None,
    iri=None,
    data_source=None,
    atlas=None,
)

ParcellationEntity

datamodel.schema.ParcellationEntity(
    name=None,
    abbreviation=None,
    alternateName=empty_list(),
    lookupLabel=None,
    hasParent=empty_list(),
    ontologyIdentifier=empty_list(),
    versionIdentifier=None,
    relatedUBERONTerm=None,
    originalLookupLabel=None,
    hemisphere=None,
    center=None,
    color=None,
)

A schema for representing a parcellation entity, which is an anatomical location or study target.

ParcellationEntityName

datamodel.schema.ParcellationEntityName()

ParcellationTerminology

datamodel.schema.ParcellationTerminology(
    label=None,
    dataLocation=None,
    ontologyIdentifier=empty_list(),
    versionIdentifier=None,
    entities=empty_dict(),
)

A schema for representing a parcellation terminology, which consists of parcellation entities.

Partition

datamodel.schema.Partition(
    gather=None,
    waves=None,
    directed=None,
    correlation=None,
    over=empty_list(),
)

A grouped streaming reduction over a node partition (e.g. per-hemisphere cortical wave metrics): the per-timestep observer body is evaluated ONCE for a single group and vmapped over the partition axis, and the per-group outputs are folded to per-group scalar metrics. General in its group-vmap (gather + over); the metric roles (waves / directed / correlation) name the per-group derived variables the wave finalize reduces to proportion-of-waves, proportion-directed and the median flow–instrength correlation (rho).

Phenotype

datamodel.schema.Phenotype(
    dataset_id=None,
    subjects=None,
    data_file=None,
    label=None,
    description=None,
    provenance=None,
    measures=empty_list(),
    measure_specs=empty_list(),
    category='cognitive',
    cohort=None,
)

Per-subject phenotype table (BIDS phenotype/ directory convention). Carries cognitive scores, clinical scales, demographic variables, behavioral task outputs, physiological measures, or any other per-subject numeric measurement bundle for a cohort. Sidecar companion to per-subject Network sidecars in multi-subject studies that correlate simulated quantities with empirical scores (e.g. PMAT24_A, g-factor, CardSort, ProcSpeed for Schirner 2023). The yaml carries metadata + the measure list; the h5 carries measures/<name> 1-D float arrays of length len(subjects). Aligns with the BIDS phenotype standard (https://bids-specification.readthedocs.io/en/stable/modality-agnostic-files/phenotypic-and-assessment-data.html) and with NIDM’s nidm:Phenotype concept. Per-measure metadata can optionally carry Cognitive Atlas (https://www.cognitiveatlas.org/) cogat:Task and cogat:Concept IRIs via measure_specs.

Prior

datamodel.schema.Prior(name=None, distribution=None, description=None)

Prior belief over one inferred parameter. In Inference.priors the collection KEY is the parameter’s dotted name; the value wraps a Distribution as the belief (reusing the standard distribution vocabulary rather than inventing a new one). Distinct from Parameter.distribution, which specifies per-node SAMPLING, not a prior.

PriorName

datamodel.schema.PriorName()

Procedure

datamodel.schema.Procedure(steps=empty_dict(), output=empty_dict())

Symbolic procedure: an ordered list of steps producing named outputs. Documents a derived generator’s algorithm independently of any backend binding.

ProcedureStep

datamodel.schema.ProcedureStep(
    name=None,
    description=None,
    type='equation',
    equation=None,
    of=None,
    axis=None,
    diagonal=None,
    distribution=None,
    comparison='le',
    seed_offset=0,
    target_range=None,
)

A single named step (or output) in a Procedure: one typed operation producing one named intermediate. type selects the operation and therefore which of the fields below apply; it defaults to equation, the general case, so a Procedure written purely as equations needs no type annotations. The remaining fields carry each operation’s options as metadata rather than as call syntax, which is what lets a step lower directly to a backend-native primitive: expression parsing cannot represent keyword arguments at all, so any option written as one would be unresolvable.

ProcedureStepName

datamodel.schema.ProcedureStepName()

ProcedureStepType

datamodel.schema.ProcedureStepType()

The operation a ProcedureStep performs. equation is the general case (author-written algebra over previously-named intermediates); the others are named graph-construction operations whose options are fields rather than call syntax, so each lowers to a backend-native primitive without an expression string having to survive a parser.

ProgrammingLanguageEnum

datamodel.schema.ProgrammingLanguageEnum()

Programming languages relevant to computational neuroscience tools. Mapped to Wikidata identifiers.

Projection

datamodel.schema.Projection()

Which anatomical plane a network’s region centres flatten onto.

Provenance

datamodel.schema.Provenance(
    derived_from=None,
    references=empty_list(),
    environment=None,
    date_created=None,
    outputs=empty_list(),
    license=None,
    generated_by=None,
    experiment_yaml_hash=None,
    digest=empty_dict(),
    activities=empty_dict(),
    inputs=empty_list(),
)

W3C PROV-O aligned provenance ABOUT the artifact that carries it — reusable on any entity (Network, TimeSeries, Dynamics, …), which is why it holds no identity of its own: the parent supplies that. The identified prov:Entity a standalone provenance record names is ResultEntity, which carries one of these. Carried by the frozen spec beside a result container, this is the whole record of the run: activities says what was executed and when, environment says on what machine and against which package versions, and digest checksums what came out. None of that is derivable from a recipe, which is why it is recorded — and all of it travels with the artifact it describes rather than in a parallel directory that has to be kept in step.

RandomStream

datamodel.schema.RandomStream(label=None, description=None, dataLocation=None)

Range

datamodel.schema.Range(
    enforce='none',
    lo=None,
    hi=None,
    step=None,
    n=None,
    log_scale=False,
    explored_values=empty_list(),
    element=None,
)

Specifies a range for array generation, parameter bounds, or grid exploration.

Reducer

datamodel.schema.Reducer(
    name=None,
    state=None,
    emit=None,
    description=None,
    replaces=empty_list(),
    backends=empty_list(),
    emit_kind='window',
    add=empty_list(),
    evict=empty_list(),
    resync=empty_list(),
    resync_masked=empty_list(),
)

A streaming reduction, authored as symbolic recurrences over its own state rather than as backend code. Folded into the integrator carry so a windowed observable (a sliding-window FC, a running mean) is computed without ever materialising the trajectory. add folds an arriving sample in, evict takes a leaving one back out, resync rebuilds the state exactly from the window when incremental drift would accumulate, and emit reads the reduced value out. TVBO lowers all four through the sympy printers, so no backend ships a reducer and adding one is a YAML file rather than code.

ReducerEmitKind

datamodel.schema.ReducerEmitKind()

How often a streaming reducer reads its value out (see Reducer.emit_kind).

ReducerName

datamodel.schema.ReducerName()

ReductionType

datamodel.schema.ReductionType()

Operations for reducing/aggregating values across dimensions

Reference

datamodel.schema.Reference(iri=None, field=None)

A small typed pointer to another TVBO entity (Network, Mesh, Observation, …). The iri identifies the target via the registry; the optional field is a dotted-path subkey resolved by attribute walk on the loaded target (e.g. field: 'weight_alpha' picks the weight_alpha named edge matrix on a Network; field: 'mesh.faces' picks the mesh face array). Used uniformly anywhere a TVBO entity needs to point at a sub-array of another entity without inlining the data.

ReferenceFingerprint

datamodel.schema.ReferenceFingerprint(
    iri=None,
    field=None,
    mtime=None,
    size=None,
    hash=None,
)

Cache-invalidation fingerprint for one aux_data reference. Captures enough about the upstream artifact that a downstream cache can decide cheaply (via mtime + size) whether to trust the cached result, falling back to a hash recompute on mismatch.

Region

datamodel.schema.Region(bounds=None, color=None, fill=None, opacity=None)

A rectangle drawn over a panel to ring the window a paper calls out — the parameter band a regime lives in, the interval a statistic was taken over. Declared rather than drawn by a custom callable, so the window a figure highlights is part of the spec that can be read back.

RegionMapping

datamodel.schema.RegionMapping(
    label=None,
    description=None,
    dataLocation=None,
    vertex_to_region=empty_list(),
    n_vertices=None,
    n_regions=None,
)

Maps vertices to parent regions for hierarchical/aggregated coupling

RenderSpec

datamodel.schema.RenderSpec(
    width=None,
    height=None,
    device_scale_factor=None,
    wait_selector=None,
    warmup=None,
    clip=empty_list(),
    format=None,
)

A headless-browser capture recipe turning an image panel’s HTML/URL source into the static file placed at its path. Mirrors one shot of code/capture-screenshots.py so a screenshot of the live platform (or any HTML render) is reproducible from the spec, not hand-captured. Only the source needs committing alongside the rendered path.

ReportPart

datamodel.schema.ReportPart()

Where a declared item appears in a generated report. A study with many near-identical experiments marks the routine ones supplementary, so the Methods carries the experiments that make the argument and the rest stay a table row plus a paragraph in the SI.

RequirementLevel

datamodel.schema.RequirementLevel()

BIDS requirement level: whether something MUST, SHOULD or MAY be present.

RequirementRole

datamodel.schema.RequirementRole()

ResultBinding

datamodel.schema.ResultBinding(
    key=None,
    description=None,
    used=None,
    count=None,
    format=None,
    value=None,
    source=None,
)

One entry in a study’s results manifest: a manuscript key bound to the value it stands for. Exactly one of three forms: COMPUTED FROM A RUN — used: a DataRef reading a scalar out of a nested study’s or this study’s own analysis/experiment, formatted through format — COMPUTED FROM THE SPEC — count: a structural tally of a collection (e.g. the figures a nested study regenerates), needing no run — or AUTHORED — a literal value quoted from prior work and attributed by source. So a number printed in prose is computed or an authored constant marked as such, never transcribed by hand.

ResultBindingKey

datamodel.schema.ResultBindingKey()

ResultEntity

datamodel.schema.ResultEntity(
    name=None,
    container=None,
    description=None,
    iri=None,
    produced_by=None,
    outputs=empty_list(),
    provenance=None,
)

One persisted result container, described. The prov:Entity of BEP028’s prov-<label>_ent record: what the file is, what produced it, and what it holds. Every field is either a pointer or read off the artifact when it is written — nothing here restates a value the frozen spec beside the container already carries, which is what made the earlier curated JSON sidecar drift from the YAML next to it. Named for the entity rather than for the experiment because an analysis container (ana-<name>_result.h5) gets one too, and because the in-memory tvbo.data.types.ExperimentResult is a different thing: the arrays themselves, not the description of the file holding them.

ResultEntityName

datamodel.schema.ResultEntityName()

Rule

datamodel.schema.Rule(
    orientation=None,
    at=None,
    color=None,
    width=None,
    dash=None,
    label=None,
)

A straight reference line drawn across a panel: the zero a signal is measured from, the threshold a value has to clear, the agreement line of a target-versus-simulated plot. One object, so the line and the colour it is drawn in cannot be stated apart — as two loose panel options they could disagree, and a colour could be given to a rule that was never declared.

RuleOrientation

datamodel.schema.RuleOrientation()

Which way a reference line runs.

Sample

datamodel.schema.Sample(groups=empty_list(), size=None)

SamplingAxis

datamodel.schema.SamplingAxis()

Dimension along which a distribution is sampled.

SchedulerDirective

datamodel.schema.SchedulerDirective(name=None, value=None)

One engine-native scheduler directive passed through verbatim by the engine’s emitter (e.g. a Slurm #SBATCH --<name>=<value> line). The open extension point of WorkflowEngineConfig: it carries any directive the typed fields do not name, so a new scheduler flag needs no schema change.

SchedulerDirectiveName

datamodel.schema.SchedulerDirectiveName()

Session

datamodel.schema.Session(
    session_id=None,
    label=None,
    network=None,
    empirical_data=empty_list(),
    condition=None,
)

A data collection session for a subject. Corresponds to a BIDS ‘ses-’ entity. Sessions capture longitudinal timepoints (baseline, follow-up), different experimental conditions, or repeated measures.

SessionSessionId

datamodel.schema.SessionSessionId()

SexEnum

datamodel.schema.SexEnum()

SimulationExperiment

datamodel.schema.SimulationExperiment(
    id=None,
    provenance=None,
    model=None,
    references=empty_list(),
    part='main',
    description=None,
    additional_equations=empty_list(),
    label=None,
    dynamics=None,
    integration=None,
    initial_state=None,
    connectivity=None,
    network=None,
    observations=empty_dict(),
    functions=empty_dict(),
    stimulation=None,
    events=empty_dict(),
    field_dynamics=None,
    optimizations=empty_dict(),
    explorations=empty_dict(),
    inferences=empty_dict(),
    algorithms=empty_dict(),
    continuations=empty_dict(),
    environment=None,
    execution=None,
    software=None,
    dataset=None,
    workflow=None,
)

SimulationExperimentId

datamodel.schema.SimulationExperimentId()

SimulationScale

datamodel.schema.SimulationScale()

Spatial / organizational scale at which a tool operates. Multi-valued: a tool can span multiple scales. Mapped to SIO and Wikidata where possible.

SimulationStudy

datamodel.schema.SimulationStudy(
    description=None,
    citekey=None,
    type=None,
    title=None,
    authors=empty_list(),
    year=None,
    doi=None,
    label=None,
    derived_from=None,
    model=None,
    references=empty_list(),
    key=None,
    sample=None,
    workflow=None,
    experiments=empty_dict(),
    analyses=empty_list(),
    figures=empty_dict(),
    code_source=None,
    requires=empty_dict(),
    studies=empty_list(),
    results=empty_dict(),
    archive=None,
)

SimulationTool

datamodel.schema.SimulationTool(
    name=None,
    description=None,
    homepage=None,
    license=None,
    repository=None,
    doi=None,
    version=None,
    alternative_identifier=empty_list(),
    acted_on_behalf_of=empty_list(),
    ecosystem=empty_list(),
    application_category=None,
    scale=empty_list(),
    model_paradigm=empty_list(),
    tool_role=empty_list(),
    programming_language=empty_list(),
    runtime_platform=empty_list(),
    operating_system=empty_list(),
    interoperates_with=empty_list(),
    date_created=None,
    date_modified=None,
    development_status=None,
    author=empty_list(),
    maintainer=empty_list(),
    funder=empty_list(),
    reference_publication=None,
    citation=empty_list(),
    keywords=empty_list(),
    same_as=empty_list(),
    issue_tracker=None,
    is_accessible_for_free=True,
    codegen_format=None,
    units=empty_dict(),
)

A software tool for computational neuroscience simulation, analysis, or model specification. Extends SoftwarePackage with neuroscience-specific controlled vocabularies for scale, paradigm, role, and interoperability. Aligned with CodeMeta v3 and DOAP.

SimulationToolName

datamodel.schema.SimulationToolName()

SoftwareEnvironment

datamodel.schema.SoftwareEnvironment(
    name=None,
    label=None,
    description=None,
    dataLocation=None,
    version=None,
    platform=None,
    environment_type=None,
    container_image=None,
    build_hash=None,
    requirements=empty_dict(),
)

A reproducible software environment aggregating one or more SoftwareRequirement entries. Used by SimulationExperiment to specify the execution context.

SoftwareEnvironmentName

datamodel.schema.SoftwareEnvironmentName()

SoftwarePackage

datamodel.schema.SoftwarePackage(
    name=None,
    description=None,
    homepage=None,
    license=None,
    repository=None,
    doi=None,
    version=None,
    alternative_identifier=empty_list(),
    acted_on_behalf_of=empty_list(),
    ecosystem=empty_list(),
)

Identity and metadata for a software package, aligned with schema.org/SoftwareApplication and CodeMeta v3.

SoftwarePackageName

datamodel.schema.SoftwarePackageName()

SoftwareRequirement

datamodel.schema.SoftwareRequirement(
    name=None,
    description=None,
    dataLocation=None,
    package=None,
    version_spec=None,
    role='runtime',
    optional=False,
    hash=None,
    source_url=None,
    url=None,
    license=None,
    modules=empty_list(),
    version=None,
)

An individual software requirement binding a package to a version constraint and a role within an environment.

SoftwareRequirementName

datamodel.schema.SoftwareRequirementName()

Solver

datamodel.schema.Solver(
    method='Tsit5',
    abs_tol=1e-10,
    rel_tol=1e-10,
    step_size=None,
)

Lightweight specification of a numerical ODE solver / integrator. Covers adaptive solvers (Vern9, Rodas5, Tsit5, etc.) used in shooting methods, initial-state integration, and other contexts where only the algorithm and tolerances matter.

SparseFormat

datamodel.schema.SparseFormat()

SpatialDomain

datamodel.schema.SpatialDomain(
    label=None,
    description=None,
    coordinate_space=None,
    region=None,
    geometry=None,
)

SpatialField

datamodel.schema.SpatialField(
    label=None,
    description=None,
    quantity_kind=None,
    unit=None,
    mesh=None,
    values=None,
    time_dependent=False,
    initial_value=None,
    initial_expression=None,
)

SpecimenEnum

datamodel.schema.SpecimenEnum()

A set of permissible types for specimens used in brain atlas creation.

StandardGraphType

datamodel.schema.StandardGraphType()

Well-known graph generator families with automatic backend mapping. The type field on GraphGenerator is a free string; this enum lists common types that get automatic code generation for Julia (Graphs.jl) and Python (NetworkX).

StateValue

datamodel.schema.StateValue(name=None, value=None)

A named state variable value for per-node initialization.

StateValueName

datamodel.schema.StateValueName()

StateVariable

datamodel.schema.StateVariable(
    name=None,
    symbol=None,
    label=None,
    definition=None,
    domain=None,
    description=None,
    equation=None,
    unit=None,
    record=True,
    grounding=empty_list(),
    variable_of_interest=True,
    coupling_variable=False,
    equation_type='differential',
    evict_equation=None,
    equation_order=1,
    noise=None,
    stimulation_variable=None,
    initial_value=None,
    derivative_initial_value=None,
    distribution=None,
    history=None,
)

StateVariableName

datamodel.schema.StateVariableName()

StimulationSetting

datamodel.schema.StimulationSetting(
    electrode_reference=None,
    amplitude=None,
    frequency=None,
    pulse_width=None,
    mode=None,
    active_contacts=empty_list(),
    efield=None,
)

DBS parameters for a specific session.

Stimulus

datamodel.schema.Stimulus(
    equation=None,
    parameters=empty_dict(),
    description=None,
    dataLocation=None,
    duration=1000,
    label=None,
    regions=empty_list(),
    weighting=empty_list(),
    noise=None,
)

Study

datamodel.schema.Study(
    description=None,
    citekey=None,
    type=None,
    title=None,
    authors=empty_list(),
    year=None,
    doi=None,
)

Bibliographic anchor for a source publication, identified by its citation key (citekey). The full bibliographic record lives in the project BibTeX library (references.bib) and is resolved by citekey; this node carries only identity, display fields and the knowledge-graph hooks (the concepts that cite it). Specialised by SimulationStudy, which adds the experiments derived from the source.

StudyDirectory

datamodel.schema.StudyDirectory(
    name=None,
    description=None,
    role=None,
    level='optional',
    opaque=False,
    bids='sanctioned',
    tracked='all',
    expires_with=None,
    in_templates=empty_list(),
    not_in_templates=empty_list(),
    files=empty_dict(),
    subdirs=empty_dict(),
)

One directory in a study layout. role is the stable key code resolves by: a resolver asks the layout where the results go and never for a literal path, so moving a directory is a one-line edit to this record. bids states the directory’s standing with the standard, which is what decides whether it needs a .bidsignore entry, and tracked states what version control keeps.

StudyDirectoryName

datamodel.schema.StudyDirectoryName()

StudyDirectoryRole

datamodel.schema.StudyDirectoryRole()

What a directory is for, as a key code resolves paths by. Roles are properties of a study dataset in general, so a layout that renames or moves a directory keeps working without touching the code that reads it.

StudyFile

datamodel.schema.StudyFile(
    name=None,
    description=None,
    role=None,
    level='optional',
    bids='sanctioned',
    expires_with=None,
    tracked='all',
    template=None,
    generated=False,
    in_templates=empty_list(),
    not_in_templates=empty_list(),
    template_variants=empty_dict(),
)

One file a study layout accounts for. name may interpolate {study}, the dataset’s own name, which is how the entry recipe is named without the layout knowing any particular study.

StudyFileName

datamodel.schema.StudyFileName()

StudyFileRole

datamodel.schema.StudyFileRole()

What a file at a known place in the layout is.

StudyLayout

datamodel.schema.StudyLayout(
    name=None,
    description=None,
    dataset_type='study',
    bids_version=None,
    subdirs=empty_dict(),
    files=empty_dict(),
    templates=empty_dict(),
)

Directory layout of a study dataset, and the single ground truth for it. Everything that creates, resolves, ignores, validates or documents a study’s directories reads this record instead of restating the tree, so the layout cannot drift between the scaffolder, the path resolvers, the ignore files, the validator and the docs. The vocabulary deliberately mirrors the BIDS rules/directories.yaml (name, level, opaque, subdirs) so a layout can be diffed against the standard.

StudyLayoutName

datamodel.schema.StudyLayoutName()

StudyTemplate

datamodel.schema.StudyTemplate(name=None, description=None)

One kind of study the layout accounts for. A template is a specialisation: it names the entries a kind adds to the study every kind already shares, and nothing else. The general study is therefore not a template and names none — a kind earns an entry here only once some directory or file genuinely belongs to it and not to the rest.

StudyTemplateName

datamodel.schema.StudyTemplateName()

Style

datamodel.schema.Style(
    color=None,
    colormap=None,
    opacity=None,
    opts=empty_dict(),
)

Layer/panel styling, portable intent plus a namespaced backend passthrough. Reuses Argument for the passthrough (matplotlib implicit in the MVP).

Subject

datamodel.schema.Subject(
    subject_id=None,
    label=None,
    group=None,
    age=None,
    sex=None,
    sessions=empty_dict(),
    network=None,
    metadata=None,
)

A participant in a study. Each subject typically has their own brain network (connectome) and empirical recordings. Corresponds to a BIDS ‘sub-’ entity.

SubjectBatchMode

datamodel.schema.SubjectBatchMode()

How a multi-subject dataset’s per-subject fits are executed.

SubjectSubjectId

datamodel.schema.SubjectSubjectId()

Surface

datamodel.schema.Surface(
    colormap=None,
    vmin=None,
    vmax=None,
    symmetric=None,
    percentile=None,
    connectome=None,
    mesh=None,
    mesh_format=None,
    template=None,
    density=None,
    hemi=None,
    view=None,
    atlas=None,
    surface_atlas=None,
    mask=None,
    geometry=None,
    color=None,
    edge_color=None,
    edge_width=None,
)

A cortical surface panel’s geometry and how a field is painted on it. One object, so the three mutually exclusive places a mesh can come from — a tvbo Network carrying one, a mesh file, or a named template — sit together with the options that only apply to each, instead of being loose names that could be given in any combination.

SurfaceView

datamodel.schema.SurfaceView()

Where the camera sits for a cortical surface. Distinct from VolumeView: a mesh is viewed from a side of the brain, a volume is sliced along an anatomical axis, and the two vocabularies do not overlap.

Surrogate

datamodel.schema.Surrogate(
    statistic=None,
    permute=None,
    permutations=None,
    direction='greater_equal',
    family_wise=False,
)

A permutation-significance test: re-evaluate a named statistic under n_perm fixed permutations of a field and report the per-element exceedance p-value. General (any permutation null — spatial nulls, FC significance, wave detection, …). Codegen emits (vmap(lambda p: stat(field[p]))(perms) <cmp> stat(field)).mean(axis over perms); the wrapped statistic is an ordinary symbolic derived variable, so only the permutation fold is structural.

SweepDirection

datamodel.schema.SweepDirection()

Order in which a branch-following sweep (SweepSeeding.from_previous) traverses its axis. Ignored for independent seeding, where order is irrelevant.

SweepSeeding

datamodel.schema.SweepSeeding()

How each point of a parameter sweep (Exploration) obtains its initial state. Determines whether the sweep points are independent (and therefore parallelisable) or whether the trajectory follows a solution branch as the swept parameter is changed quasi-statically. The latter is forward-time-integration branch following — distinct from numerical continuation of equilibria (the Continuation class), which tracks branches with a Newton corrector rather than by simulation.

SystemType

datamodel.schema.SystemType()

Theme

datamodel.schema.Theme(
    ink=None,
    base=None,
    muted=None,
    highlight=None,
    background=None,
    palette=empty_list(),
    colormaps=None,
    iri=None,
    tick_length=None,
    tick_width=None,
    tick_direction=None,
    tick_pad=None,
    minor_ticks=None,
    minor_tick_length=None,
    minor_tick_width=None,
    axis_width=None,
    label_pad=None,
    title_pad=None,
    line_width=None,
    marker_size=None,
    legend_frame=None,
    legend_handle_length=None,
    legend_pad=None,
    grid_lines=None,
    font_family=empty_list(),
)

A project’s whole look in one declarable object: its colours (inherited from Palette) and the geometry a style sheet used to own — tick shape, axis weight, line weights, legend, grid, font. Declared on a figure, it beats every layer in Figure.style, so a look a spec states cannot be quietly overridden by a sheet underneath it. It is the reason a study need not ship a .mplstyle: a sheet is a backend’s vocabulary written outside the spec, where nothing validates it and no other backend can read it. TVB-O’s own is curated at tvbo:theme/default; a project names that in iri and states only what it changes, exactly as an Observation or a Coupling reuses a curated one. A slot left unset is not a value — the layer underneath keeps it, so a theme states the look it means to fix and nothing else.

TickDirection

datamodel.schema.TickDirection()

Which side of the axes a tick mark is drawn on.

TickFormat

datamodel.schema.TickFormat()

How a tick number is written.

TickPrune

datamodel.schema.TickPrune()

Which end ticks to drop where a corner tick would collide with its neighbour panel’s.

TimeSeries

datamodel.schema.TimeSeries(
    label=None,
    description=None,
    dataLocation=None,
    data=None,
    time=None,
    sampling_rate=None,
    sampling_period=None,
    sampling_period_unit='ms',
    unit=None,
    labels_ordering=empty_list(),
    labels_dimensions=None,
    source_experiment=None,
    generated_at=None,
    software_environment=None,
    task_name=None,
    subject_id=None,
    session_id=None,
    run_id=None,
    modality=None,
    model_equation_ref=None,
    model_param_ref=None,
    connectivity_ref=None,
)

Time series data from simulations or measurements. Supports BIDS-compatible export for computational modeling (BEP034).

ToolRole

datamodel.schema.ToolRole()

Primary function of the tool in a simulation workflow.

ToolUnit

datamodel.schema.ToolUnit(unit=None, dimension=None, symbol=None)

One TVBO unit as a single tool writes it. A tool’s unit vocabulary is a fact about that tool, not about the unit — LEMS calls Hz a per_time quantity and writes it per_s, and no other backend need agree. Keyed by the UnitEnum value so a record states only the units its tool knows.

ToolUnitUnit

datamodel.schema.ToolUnitUnit()

TrackedContent

datamodel.schema.TrackedContent()

What version control keeps of a directory.

Tractogram

datamodel.schema.Tractogram(
    name=None,
    label=None,
    iri=None,
    description=None,
    data_source=None,
    number_of_subjects=None,
    acquisition=None,
    processing_pipeline=None,
    reference=None,
)

Reference to tractography/diffusion MRI data used to derive structural connectivity

TractogramName

datamodel.schema.TractogramName()

Triangle

datamodel.schema.Triangle()

Which half of a square matrix a layer fills, leaving the other half to a sibling layer, so two quantities read as one image. The conventional way to show a model-vs-data (or data-vs-reconstruction) connectivity matrix. Named for the drawn halves: with the matrix convention (row 0 at top, set invert_y) ‘upper’ is the top-right triangle.

TuningObjective

datamodel.schema.TuningObjective(
    label=None,
    description=None,
    type=None,
    target_variable=None,
    target_value=None,
    target_data=None,
    metric=None,
)

Defines what the tuning algorithm optimizes for. Can be an activity target (FIC) or a connectivity target (EIB).

UnitEnum

datamodel.schema.UnitEnum()

Physical units of measurement for model parameters, state variables, and integration settings. Uses conventional abbreviations as values, mapped to the QUDT ontology (http://qudt.org/vocab/unit/) with UO cross-references where available.

UpdateRule

datamodel.schema.UpdateRule(
    name=None,
    target_parameter=None,
    equation=None,
    description=None,
    bounds=None,
    warmup=None,
    requires=empty_list(),
)

Defines how a parameter is updated based on observables. Represents iterative learning rules like FIC or EIB updates. Functions from experiment.functions are available in the equation.

UpdateRuleName

datamodel.schema.UpdateRuleName()

Volume

datamodel.schema.Volume(
    colormap=None,
    vmin=None,
    vmax=None,
    symmetric=None,
    percentile=None,
    atlas=None,
    image=None,
    view=None,
    intensity_projection=None,
)

A labelled-volume panel’s geometry: the volumetric counterpart of Surface, same layer and same colour scale, with the geometry coming from an atlas instead of a mesh. Values are placed BY LABEL through the atlas crosswalk, never by array position.

VolumeView

datamodel.schema.VolumeView()

Which anatomical plane a labelled volume is projected along.

WorkflowConfig

datamodel.schema.WorkflowConfig(
    out_dir=None,
    container=None,
    container_binds=empty_list(),
    container_args=None,
    retries=None,
    rng=None,
    chunk=None,
    distribute=None,
    requirements=empty_dict(),
    slurm=None,
    snakemake=None,
    nextflow=None,
)

Declarative orchestration for rendering a parameter sweep into a distributed, reproducible workflow (Slurm array, Snakemake, Nextflow). Backend- and engine-independent: it names what to distribute, where results go, and the per-engine resources, while each engine emitter renders the concrete artefact. Declared on a study as workflow and refined per experiment via workflow_overrides; unset fields fall back to the emitter’s defaults so an override sets only what it names.

WorkflowDistributeBy

datamodel.schema.WorkflowDistributeBy()

Default tier a sweep axis is placed on when it is not named explicitly in a DistributionConfig. Vectorized axes are packed into one batched backend call; workflow axes are fanned out into independent scheduler tasks.

WorkflowEngineConfig

datamodel.schema.WorkflowEngineConfig(
    cpus_per_task=None,
    mem=None,
    time=None,
    gres=None,
    partition=None,
    account=None,
    comment=None,
    cores=None,
    jobs=None,
    executor=None,
    queue=None,
    modules=empty_list(),
    venv=None,
    setup=empty_list(),
    mail_type=None,
    mail_user=None,
    array_chunk=None,
    options=empty_dict(),
    env=empty_dict(),
)

Execution directives for a workflow engine. Every field is optional and each engine’s emitter consumes the subset it supports, so one block may carry directives for more than one target. The generic resource fields (cpus_per_task, mem, time) map across engines; the remaining fields are named for the engine that reads them (Slurm: partition/account/gres/ mail_*/array_chunk; Snakemake: cores; Nextflow: executor/queue). Any directive not named here is passed through options verbatim, so the block stays extensible without a schema change.

slots

datamodel.schema.slots()