dartobsgen#

A pip-installable Python package that generates non-overlapping DART obs_seq files from pluggable observation data sources.

Specify what type of observations you want, for what time period, for what region on the Earth, and for a given assimilation frequency. Select a source for the observations, e.g. a database of real observations (CrocoLake), a cloud archive (NNJA-AI), or synthetic observations generated from a model state (model run + DART perfect_model_obs). Then generate the observation sequences.

One obs_seq file is written per assimilation cycle, named for its analysis time which contains observations within the DART assimilation window.

Quickstart

Generate your first set of obs_seq files.

Quickstart
User guide

Time windows, file naming, observation types, spatial masking, parallelism.

User guide
Data sources

CrocoLake, NNJA-AI, and synthetic obs via perfect_model_obs.

Data sources
API reference

Every public class and function.

API reference

Package structure#

dartobsgen/
├── pyproject.toml
├── README.md
└── src/
    └── dartobsgen/
        ├── __init__.py           # Public API
        ├── config.py             # ObsGenConfig dataclass
        ├── generate.py           # generate_obs_sequences(), _make_analysis_windows()
        ├── model_state.py        # ModelStateProvider ABC + MOM6StateProvider
        ├── spatial.py            # trim_obs_seq(), polygon helpers
        └── sources/
            ├── __init__.py
            ├── base.py           # DataSource ABC + ObsSeqSource stub
            ├── crocolake.py      # CrocLakeSource + DEFAULT_OBS_TYPE_MAP
            ├── nnja.py           # NNJASource
            └── perfect_model.py  # PerfectModelSource + ObsNetworkEntry