# sequence-dev/sequence architecture

> Architecture diagram of the GitHub repository sequence-dev/sequence, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sequence-dev/sequence
- Repository: https://github.com/sequence-dev/sequence

## Overview

Sequence is a Python/Landlab 2D profile model for sequence-stratigraphic sediment transport. The main workflow is to configure a run through the CLI, build a model grid, advance the model’s enabled physical components over time, and write or plot the resulting stratigraphic layers. The graph preserves the documented sea-level, fluvial and marine transport, compaction, and isostatic/tectonic capabilities. Some component wiring is supported by the SOURCE INDEX rather than full excerpts; unsampled relationships are omitted where the evidence does not establish a call.

Main entry points: [`sequence/sequence_model.py`](https://github.com/sequence-dev/sequence/blob/develop/sequence/sequence_model.py) (Model runner), [`sequence/processes.py`](https://github.com/sequence-dev/sequence/blob/develop/sequence/processes.py) (Process registry), [`sequence/cli.py`](https://github.com/sequence-dev/sequence/blob/develop/sequence/cli.py) (Command line), [`sequence/plot.py`](https://github.com/sequence-dev/sequence/blob/develop/sequence/plot.py) (Layer plotting)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_run["Run setup"]
  node_cli["Command line<br/>[cli.py]"]
  node_config["Input configuration<br/>[input_reader.py]"]
  node_logging["Run logging<br/>[logging.py]"]
end

subgraph group_model["Model framework"]
  node_grid["Profile grid<br/>[grid.py]"]
  node_bathymetry["Initial bathymetry<br/>[bathymetry.py]"]
  node_model["Model runner<br/>[sequence_model.py]"]
  node_registry["Process registry<br/>[processes.py]"]
end

subgraph group_physics["Physical processes"]
  node_sea["Sea-level change<br/>[sea_level.py]"]
  node_fluvial["Fluvial transport<br/>[fluvial.py]"]
  node_marine["Marine diffusion<br/>[submarine.py]"]
  node_shore["Shoreline tracking<br/>[shoreline.py]"]
  node_subsidence["Tectonic subsidence<br/>[subsidence.py]"]
  node_flexure["Isostatic flexure"]
end

subgraph group_results["Results"]
  node_output["Output writer<br/>[output_writer.py]"]
  node_netcdf["NetCDF output<br/>[netcdf.py]"]
  node_plot["Layer plotting<br/>[plot.py]"]
end

node_user(("Modeler"))

node_user -->|"configures run"| node_cli
node_cli -->|"reads settings"| node_config
node_cli -->|"builds grid"| node_grid
node_cli -->|"creates model"| node_model
node_cli -->|"sets up logs"| node_logging
node_cli -->|"requests plots"| node_plot
node_model -->|"updates fields"| node_grid
node_model -->|"uses initial profile"| node_bathymetry
node_model -->|"loads processes"| node_registry
node_registry -->|"registers process"| node_fluvial
node_registry -->|"registers process"| node_sea
node_registry -->|"registers process"| node_flexure
node_registry -->|"registers process"| node_shore
node_registry -->|"registers process"| node_marine
node_registry -->|"registers process"| node_subsidence
node_model -->|"advances component"| node_fluvial
node_model -->|"advances component"| node_sea
node_model -->|"advances component"| node_flexure
node_model -->|"advances component"| node_shore
node_model -->|"advances component"| node_marine
node_model -->|"advances component"| node_subsidence
node_model -->|"writes results"| node_output
node_output -->|"writes NetCDF"| node_netcdf
node_plot -->|"reads plot file"| node_netcdf
node_plot -->|"plots layers"| node_grid

click node_cli "https://github.com/sequence-dev/sequence/blob/develop/sequence/cli.py"
click node_config "https://github.com/sequence-dev/sequence/blob/develop/sequence/input_reader.py"
click node_grid "https://github.com/sequence-dev/sequence/blob/develop/sequence/grid.py"
click node_bathymetry "https://github.com/sequence-dev/sequence/blob/develop/sequence/bathymetry.py"
click node_model "https://github.com/sequence-dev/sequence/blob/develop/sequence/sequence_model.py"
click node_registry "https://github.com/sequence-dev/sequence/blob/develop/sequence/processes.py"
click node_sea "https://github.com/sequence-dev/sequence/blob/develop/sequence/sea_level.py"
click node_fluvial "https://github.com/sequence-dev/sequence/blob/develop/sequence/fluvial.py"
click node_marine "https://github.com/sequence-dev/sequence/blob/develop/sequence/submarine.py"
click node_shore "https://github.com/sequence-dev/sequence/blob/develop/sequence/shoreline.py"
click node_subsidence "https://github.com/sequence-dev/sequence/blob/develop/sequence/subsidence.py"
click node_flexure "https://github.com/sequence-dev/sequence/blob/develop/sequence/sediment_flexure.py"
click node_output "https://github.com/sequence-dev/sequence/blob/develop/sequence/output_writer.py"
click node_netcdf "https://github.com/sequence-dev/sequence/blob/develop/sequence/netcdf.py"
click node_plot "https://github.com/sequence-dev/sequence/blob/develop/sequence/plot.py"
click node_logging "https://github.com/sequence-dev/sequence/blob/develop/sequence/logging.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_config,node_logging toneBlue
class node_grid,node_bathymetry,node_model,node_registry toneAmber
class node_sea,node_fluvial,node_marine,node_shore,node_subsidence,node_flexure toneMint
class node_output,node_netcdf,node_plot toneRose
class node_user toneIndigo
```

## Components

### Run setup

- [Command line](https://github.com/sequence-dev/sequence/blob/develop/sequence/cli.py): `sequence/cli.py`
- [Input configuration](https://github.com/sequence-dev/sequence/blob/develop/sequence/input_reader.py): `sequence/input_reader.py`
- [Run logging](https://github.com/sequence-dev/sequence/blob/develop/sequence/logging.py): `sequence/logging.py`

### Model framework

- [Profile grid](https://github.com/sequence-dev/sequence/blob/develop/sequence/grid.py): `sequence/grid.py`
- [Initial bathymetry](https://github.com/sequence-dev/sequence/blob/develop/sequence/bathymetry.py): `sequence/bathymetry.py`
- [Model runner](https://github.com/sequence-dev/sequence/blob/develop/sequence/sequence_model.py): `sequence/sequence_model.py`
- [Process registry](https://github.com/sequence-dev/sequence/blob/develop/sequence/processes.py): `sequence/processes.py`

### Physical processes

- [Sea-level change](https://github.com/sequence-dev/sequence/blob/develop/sequence/sea_level.py): `sequence/sea_level.py`
- [Fluvial transport](https://github.com/sequence-dev/sequence/blob/develop/sequence/fluvial.py): `sequence/fluvial.py`
- [Marine diffusion](https://github.com/sequence-dev/sequence/blob/develop/sequence/submarine.py): `sequence/submarine.py`
- [Shoreline tracking](https://github.com/sequence-dev/sequence/blob/develop/sequence/shoreline.py): `sequence/shoreline.py`
- [Tectonic subsidence](https://github.com/sequence-dev/sequence/blob/develop/sequence/subsidence.py): `sequence/subsidence.py`
- [Isostatic flexure](https://github.com/sequence-dev/sequence/blob/develop/sequence/sediment_flexure.py): `sequence/sediment_flexure.py`

### Results

- [Output writer](https://github.com/sequence-dev/sequence/blob/develop/sequence/output_writer.py): `sequence/output_writer.py`
- [NetCDF output](https://github.com/sequence-dev/sequence/blob/develop/sequence/netcdf.py): `sequence/netcdf.py`
- [Layer plotting](https://github.com/sequence-dev/sequence/blob/develop/sequence/plot.py): `sequence/plot.py`

### Other components

- **Modeler**

## Connections

- Modeler → Command line: configures run (evidence: `README.md`)
- Command line → Input configuration: reads settings (evidence: `sequence/cli.py`)
- Command line → Profile grid: builds grid (evidence: `sequence/cli.py`)
- Command line → Model runner: creates model (evidence: `sequence/cli.py`)
- Command line → Run logging: sets up logs (evidence: `sequence/cli.py`)
- Command line → Layer plotting: requests plots (evidence: `sequence/cli.py`)
- Model runner → Profile grid: updates fields (evidence: `sequence/sequence_model.py`)
- Model runner → Initial bathymetry: uses initial profile (evidence: `sequence/sequence_model.py`)
- Model runner → Process registry: loads processes (evidence: `sequence/sequence_model.py`)
- Process registry → Fluvial transport: registers process (evidence: `sequence/processes.py`)
- Process registry → Sea-level change: registers process (evidence: `sequence/processes.py`)
- Process registry → Isostatic flexure: registers process (evidence: `sequence/processes.py`)
- Process registry → Shoreline tracking: registers process (evidence: `sequence/processes.py`)
- Process registry → Marine diffusion: registers process (evidence: `sequence/processes.py`)
- Process registry → Tectonic subsidence: registers process (evidence: `sequence/processes.py`)
- Model runner → Fluvial transport: advances component (evidence: `sequence/sequence_model.py`)
- Model runner → Sea-level change: advances component (evidence: `sequence/sequence_model.py`)
- Model runner → Isostatic flexure: advances component (evidence: `sequence/sequence_model.py`)
- Model runner → Shoreline tracking: advances component (evidence: `sequence/sequence_model.py`)
- Model runner → Marine diffusion: advances component (evidence: `sequence/sequence_model.py`)
- Model runner → Tectonic subsidence: advances component (evidence: `sequence/sequence_model.py`)
- Model runner → Output writer: writes results (evidence: `sequence/sequence_model.py`)
- Output writer → NetCDF output: writes NetCDF (evidence: `sequence/output_writer.py`)
- Layer plotting → NetCDF output: reads plot file (evidence: `sequence/plot.py`)
- Layer plotting → Profile grid: plots layers (evidence: `sequence/plot.py`)
