Welcome to the repository for Strategies to INtegrate Data and BiogeochemicAl moDels (SINDBAD).
SINDBAD is a model data integration framework that encompasses the biogeochemical cycles of water and carbon, allowing for extensive and flexible integration of parsimonious models with a diverse set of observational data streams.
The framework provides a unified system for:
- Model Structure: Adaptable ecosystem process representations
- Input Data: Flexible data ingestion and processing
- Observation Data: Versatile observational constraint integration
- Integration Methods: Customizable optimization and assimilation approaches
This repository contains the Sindbad package sources. The Sindbad package depends on several other registered packages (some maintained in separate repositories), which are installed automatically by Julia’s package manager.
src/:Sindbaduser-facing modules:DataLoaders/: Data loading and preprocessingSetup/: Experiment configuration and setupSimulation/: Terrestrial ecosystem model executionParameterOptimization/: Parameter calibration and optimizationMachineLearning/: ML-assisted surrogates and emulatorsVisualization/: Plotting and visualization toolsExperiment/: High-level experiment orchestrationTypes/: Type definitions for SINDBAD structures
ext/: Extension packages for optional dependenciesexamples/: Example experiments and configurationsdocs/: Documentation source files
Internal packages (SINDBAD core):
SindbadTEM: Core terrestrial ecosystem models, types, and utilities
Related packages (SINDBAD ecosystem):
ErrorMetrics.jl: Model–observation metrics (maintained in a separate repository)TimeSamplers.jl: Time aggregation / sampling utilities (maintained in a separate repository)OmniTools.jl: Shared utility toolkit (maintained in a separate repository)
using Pkg
Pkg.add("Sindbad")If you are working from a checkout of this repository:
using Pkg
Pkg.activate("path/to/SINDBAD")
Pkg.instantiate()
using SindbadIf you are using SSH-based package sources for SINDBAD ecosystem packages, you may need to tell Julia to use the system git client:
export JULIA_PKG_USE_CLI_GIT=trueIf you want to develop Sindbad from a separate environment, you can also use:
using Pkg
Pkg.develop(path="path/to/SINDBAD")Some functionality is enabled via Julia package extensions (see Project.toml [weakdeps] + [extensions] and ext/):
NLsolve: enables parts of the spinup workflow (SindbadNLsolveExt)Optimization: enables SciML Optimization-based optimizers (SindbadOptimizationExt)CMAEvolutionStrategy: enables CMA-ES optimizer bridge (SindbadCMAEvolutionStrategyExt)
To enable an extension, add the corresponding package in the same environment where you use Sindbad:
using Pkg
Pkg.add("NLsolve") # or "Optimization", "CMAEvolutionStrategy"For development setup and usage instructions, see CONTRIBUTING.md.
using Sindbad
# Run a forward simulation for an experiment configuration
out = Sindbad.Experiment.runExperimentForward("experiment_config.json")
# `out` contains `out.info`, `out.forcing`, and `out.output`Comprehensive documentation is available at:
- Stable: landecosystems.github.io/Sindbad.jl/stable
- Development: landecosystems.github.io/Sindbad.jl/dev
SINDBAD is developed at the Department of Biogeochemical Integration of the Max Planck Institute for Biogeochemistry in Jena, Germany with active contributions from Sujan Koirala, Xu Shan, Jialiang Zhou, Lazaro Alonso, Fabian Gans, Felix Cremer, Nuno Carvalhais.
For a full list of current and previous contributors, see sindbad-mdi.org team page
We welcome contributions! Please see CONTRIBUTING.md for guidelines on:
- Development setup
- Code style and conventions
- Submitting pull requests
- Reporting issues
SINDBAD: Strategies to Integrate Data and Biogeochemical Models
Copyright © 2025
Max-Planck-Gesellschaft zur Förderung der Wissenschaften
For copyright details, see the NOTICE file.
SINDBAD is free and open-source software, licensed under the European Union Public License v1.2 (EUPL).
You are free to:
- Copy, modify, and redistribute the code
- Use the software as a package in your own projects, regardless of their license or copyright status
- Apply the software in both commercial and non-commercial contexts
If you modify the code — excluding changes made solely for interoperability — you must redistribute the modified version under the EUPL v1.2 or a compatible license. This ensures the long-term sustainability of the project and supports an open, inclusive, and collaborative community.
This software is provided in the hope that it will be useful, but without any warranty — including, without limitation, the implied warranties of merchantability or fitness for a particular purpose.
