Sindbad Module
SindbadTop-level orchestration package for Strategies to INtegrate Data and BiogeochemicAl moDels. Sindbad reexports the complete SindbadTEM modeling stack and combines the user-facing modules under src/ to offer a single public entry point for data ingest, configuration, simulation, optimization, machine learning, and visualization workflows.
Purpose:
Provide a cohesive API that ties together process-level models from
SindbadTEMwith higher-level experiment tooling.Ensure every stage of a SINDBAD pipeline—data handling, setup, model execution, calibration, post-processing, and plotting—is available through one package.
Dependencies:
Related (SINDBAD ecosystem)
ErrorMetrics: Model–observation metrics used across cost/diagnostics.TimeSamplers: Temporal sampling/aggregation helpers.OmniTools: Shared utilities used across modules.
External (third-party)
CSV: Input/output of tabular forcing and calibration datasets.ConstructionBase: Shared constructors needed by downstream modules.JSON: Experiment metadata serialization (parsefile,json,print).JLD2: Persisting SINDBAD state, diagnostics, and trained artifacts.YAXArrays+YAXArrays.Datasets: Labeled n-dimensional arrays and dataset writers for model output.
Internal (within Sindbad)
Sindbad.DataLoadersSindbad.ExperimentSindbad.MachineLearningSindbad.ParameterOptimizationSindbad.SetupSindbad.SimulationSindbad.TypesSindbad.VisualizationSindbadTEM
Included Modules:
DataLoaders (
src/DataLoaders/):- Handles file IO, preprocessing, and conversion into SINDBAD-native data structures; exposes reusable loaders and utility helpers.
Setup (
src/Setup/):- Builds experiment
infoobjects, validates model selections, and wires pools, spinup settings, and derived configuration metadata.
- Builds experiment
Simulation (
src/Simulation/):- Orchestrates terrestrial ecosystem simulations, including spinup, forward runs, diagnostics, and interaction with
SindbadTEM.
- Orchestrates terrestrial ecosystem simulations, including spinup, forward runs, diagnostics, and interaction with
ParameterOptimization (
src/ParameterOptimization/):Provides parameter-calibration utilities and objective hooks.
Some optimizer backends are enabled via optional extensions (see Notes).
MachineLearning (
src/MachineLearning/):- Adds ML-assisted surrogates, emulators, and training pipelines that integrate with Sindbad outputs and optimization targets.
Visualization (
src/Visualization/):- Supplies plotting and reporting helpers for experiment evaluation (time series, spatial maps, diagnostic overlays, etc.).
Experiment (
src/Experiment/):- High-level experiment runner and output persistence helpers that tie together setup, loaders, simulation, optimization, ML, and visualization.
Notes:
Each submodule is included and reexported so end users can call
using Sindbadand immediately accessSindbad.DataLoaders,Sindbad.Simulation, and the rest without extra imports.Shared dependencies are loaded here to guarantee consistent versions across all components.
Some functionality is enabled via Julia extensions (
Project.toml[weakdeps]+[extensions]andext/):NLsolve→SindbadNLsolveExtOptimization→SindbadOptimizationExtCMAEvolutionStrategy→SindbadCMAEvolutionStrategyExt
Examples:
julia> using Sindbad
julia> # Prepare an experiment from a configuration file
julia> # info, forcing = prepExperiment("path/to/experiment_config.json")
julia> # Run a forward simulation
julia> # out = runExperimentForward("path/to/experiment_config.json")Functions
addExtensionToSindbad
Sindbad.addExtensionToSindbad Function
addExtensionToSindbad(function_to_extend::Function, external_package::String) -> String
Convenience wrapper for this repo: asserts the function belongs to Sindbad and always uses folder layout.
Code
function addExtensionToSindbad(function_to_extend::Function, external_package::String)
root_pkg = Base.moduleroot(parentmodule(function_to_extend))
nameof(root_pkg) == :Sindbad || error("Expected a Sindbad function; got root package $(root_pkg).")
return add_extension_to_function(function_to_extend, external_package; extension_location=:Folder)
end