# frankivanovic/jason3_nearshore_echo_analysis architecture

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

- Interactive diagram: https://gitdiagram.com/frankivanovic/jason3_nearshore_echo_analysis
- Repository: https://github.com/frankivanovic/jason3_nearshore_echo_analysis

## Overview

This is a research workflow for studying Jason-3 nearshore radar-altimeter waveforms and ocean-parameter retrieval errors. The principal path is to inspect real SGDR-T passes, simulate open-ocean and mixed coastal echoes, then compare retrievals against simulated and measured waveforms. The graph also preserves the repository’s documented track/visualization, OIFD, and rough-surface simulation capabilities. Runner-to-module links reflect sampled calls or README descriptions; some unsampled subsystem wiring is necessarily documented rather than source-verified.

Main entry points: [`Retracking/run_error_analysis.py`](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Retracking/run_error_analysis.py) (Error analysis runner), [`Echo_Simulation/run_ocean_echo_sim.py`](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Echo_Simulation/run_ocean_echo_sim.py) (Open-ocean runner), [`Echo_Simulation/run_coastal_echo_sim.py`](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Echo_Simulation/run_coastal_echo_sim.py) (Coastal runner), [`Data_Reading/jason3_reader.py`](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Data_Reading/jason3_reader.py) (Jason-3 reader)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_observations["Data inspection"]
  node_jreader["Jason-3 reader<br/>[jason3_reader.py]"]
  node_waveforms["Waveform views<br/>[plot_waveform.py]"]
  node_track["Track mapping<br/>[plot_track.py]"]
  node_nearshore["Nearshore scan<br/>[scan_nearshore.py]"]
  node_presentation["Nearshore presentation"]
  node_oifd["OIFD reader<br/>[oifd_reader.py]"]
end

subgraph group_simulation["Echo simulation"]
  node_oceanrun["Open-ocean runner"]
  node_coastrun["Coastal runner"]
  node_pmsurface["PM surface model<br/>[pm_surface.py]"]
  node_kernel["Echo kernel<br/>[echo_kernel.py]"]
  node_brown["Brown model<br/>[brown_model.py]"]
  node_coastalmodel["Coastal scattering<br/>[coastal.py]"]
  node_simresults["Echo result sets"]
end

subgraph group_retrieval["Retracking analysis"]
  node_analysis["Error analysis runner"]
  node_threshold["Threshold retrieval"]
  node_brownfit["Brown-fit retrieval"]
  node_hayne["Hayne model<br/>[hayne_model.py]"]
  node_retrievalresults["Retracking results"]
end

subgraph group_surface["Surface research"]
  node_gaussian["Gaussian rough surfaces<br/>[Gauss_Simulation.m]"]
end

node_researcher(("Researcher"))
node_jasondata[("Jason-3 SGDR-T")]
node_oifddata[("OIFD monthly SWH")]
node_maptiles(("Map tile services"))

node_researcher -->|"requests views"| node_waveforms
node_researcher -->|"requests map"| node_track
node_researcher -->|"runs scan"| node_nearshore
node_jasondata -->|"reads passes"| node_jreader
node_jreader -->|"provides waveforms"| node_waveforms
node_jreader -->|"provides positions"| node_track
node_nearshore -->|"scans passes"| node_jreader
node_presentation -->|"reads pass data"| node_jreader
node_presentation -->|"generates track view"| node_track
node_presentation -->|"generates waveform view"| node_waveforms
node_track -.->|"fetches tiles"| node_maptiles
node_oifddata -->|"reads monthly fields"| node_oifd
node_researcher -->|"queries SWH"| node_oifd
node_researcher -->|"runs simulation"| node_oceanrun
node_oceanrun -->|"generates surfaces"| node_pmsurface
node_oceanrun -->|"simulates echoes"| node_kernel
node_oceanrun -->|"computes comparison"| node_brown
node_oceanrun -->|"writes results"| node_simresults
node_researcher -->|"runs scenarios"| node_coastrun
node_coastrun -->|"generates surfaces"| node_pmsurface
node_coastrun -->|"configures land"| node_coastalmodel
node_coastrun -->|"simulates echoes"| node_kernel
node_coastrun -->|"writes results"| node_simresults
node_simresults -->|"supplies waveforms"| node_analysis
node_jasondata -->|"measured comparison"| node_analysis
node_researcher -->|"runs analysis"| node_analysis
node_analysis -->|"evaluates retrieval"| node_threshold
node_analysis -->|"fits waveforms"| node_brownfit
node_analysis -->|"compares model"| node_hayne
node_analysis -->|"writes analysis"| node_retrievalresults

click node_jreader "https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Data_Reading/jason3_reader.py"
click node_waveforms "https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Data_Reading/plot_waveform.py"
click node_track "https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Data_Reading/plot_track.py"
click node_nearshore "https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Data_Reading/scan_nearshore.py"
click node_presentation "https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Data_Reading/present_nearshore.py"
click node_oifd "https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Data_Reading/oifd_reader.py"
click node_oceanrun "https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Echo_Simulation/run_ocean_echo_sim.py"
click node_coastrun "https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Echo_Simulation/run_coastal_echo_sim.py"
click node_pmsurface "https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Echo_Simulation/pm_surface.py"
click node_kernel "https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Echo_Simulation/echo_kernel.py"
click node_brown "https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Echo_Simulation/brown_model.py"
click node_coastalmodel "https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Echo_Simulation/coastal.py"
click node_simresults "https://github.com/frankivanovic/jason3_nearshore_echo_analysis/tree/main/Echo_Simulation/output"
click node_analysis "https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Retracking/run_error_analysis.py"
click node_threshold "https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Retracking/brown_fit_retracker.py"
click node_brownfit "https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Retracking/brown_fit_retracker.py"
click node_hayne "https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Retracking/hayne_model.py"
click node_retrievalresults "https://github.com/frankivanovic/jason3_nearshore_echo_analysis/tree/main/Retracking/output"
click node_gaussian "https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Sea_Surface_Simulation/Gauss_Simulation.m"

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_jreader,node_waveforms,node_track,node_nearshore,node_presentation,node_oifd toneBlue
class node_oceanrun,node_coastrun,node_pmsurface,node_kernel,node_brown,node_coastalmodel,node_simresults,node_jasondata,node_oifddata toneAmber
class node_analysis,node_threshold,node_brownfit,node_hayne,node_retrievalresults toneMint
class node_gaussian toneRose
class node_researcher,node_maptiles toneIndigo
```

## Components

### Data inspection

- [Jason-3 reader](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Data_Reading/jason3_reader.py): `Data_Reading/jason3_reader.py`
- [Waveform views](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Data_Reading/plot_waveform.py): `Data_Reading/plot_waveform.py`
- [Track mapping](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Data_Reading/plot_track.py): `Data_Reading/plot_track.py`
- [Nearshore scan](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Data_Reading/scan_nearshore.py): `Data_Reading/scan_nearshore.py`
- [Nearshore presentation](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Data_Reading/present_nearshore.py): `Data_Reading/present_nearshore.py`
- [OIFD reader](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Data_Reading/oifd_reader.py): `Data_Reading/oifd_reader.py`

### Echo simulation

- [Open-ocean runner](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Echo_Simulation/run_ocean_echo_sim.py): `Echo_Simulation/run_ocean_echo_sim.py`
- [Coastal runner](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Echo_Simulation/run_coastal_echo_sim.py): `Echo_Simulation/run_coastal_echo_sim.py`
- [PM surface model](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Echo_Simulation/pm_surface.py): `Echo_Simulation/pm_surface.py`
- [Echo kernel](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Echo_Simulation/echo_kernel.py): `Echo_Simulation/echo_kernel.py`
- [Brown model](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Echo_Simulation/brown_model.py): `Echo_Simulation/brown_model.py`
- [Coastal scattering](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Echo_Simulation/coastal.py): `Echo_Simulation/coastal.py`
- [Echo result sets](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/tree/main/Echo_Simulation/output): `Echo_Simulation/output`

### Retracking analysis

- [Error analysis runner](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Retracking/run_error_analysis.py): `Retracking/run_error_analysis.py`
- [Threshold retrieval](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Retracking/brown_fit_retracker.py): `Retracking/brown_fit_retracker.py`
- [Brown-fit retrieval](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Retracking/brown_fit_retracker.py): `Retracking/brown_fit_retracker.py`
- [Hayne model](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Retracking/hayne_model.py): `Retracking/hayne_model.py`
- [Retracking results](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/tree/main/Retracking/output): `Retracking/output`

### Surface research

- [Gaussian rough surfaces](https://github.com/frankivanovic/jason3_nearshore_echo_analysis/blob/main/Sea_Surface_Simulation/Gauss_Simulation.m): `Sea_Surface_Simulation/Gauss_Simulation.m`

### Other components

- **Researcher**
- **Jason-3 SGDR-T**
- **OIFD monthly SWH**
- **Map tile services**

## Connections

- Researcher → Waveform views: requests views
- Researcher → Track mapping: requests map
- Researcher → Nearshore scan: runs scan
- Jason-3 SGDR-T → Jason-3 reader: reads passes
- Jason-3 reader → Waveform views: provides waveforms
- Jason-3 reader → Track mapping: provides positions
- Nearshore scan → Jason-3 reader: scans passes
- Nearshore presentation → Jason-3 reader: reads pass data
- Nearshore presentation → Track mapping: generates track view
- Nearshore presentation → Waveform views: generates waveform view
- Track mapping → Map tile services: fetches tiles
- OIFD monthly SWH → OIFD reader: reads monthly fields
- Researcher → OIFD reader: queries SWH
- Researcher → Open-ocean runner: runs simulation
- Open-ocean runner → PM surface model: generates surfaces
- Open-ocean runner → Echo kernel: simulates echoes
- Open-ocean runner → Brown model: computes comparison
- Open-ocean runner → Echo result sets: writes results
- Researcher → Coastal runner: runs scenarios
- Coastal runner → PM surface model: generates surfaces
- Coastal runner → Coastal scattering: configures land
- Coastal runner → Echo kernel: simulates echoes
- Coastal runner → Echo result sets: writes results
- Echo result sets → Error analysis runner: supplies waveforms
- Jason-3 SGDR-T → Error analysis runner: measured comparison
- Researcher → Error analysis runner: runs analysis
- Error analysis runner → Threshold retrieval: evaluates retrieval
- Error analysis runner → Brown-fit retrieval: fits waveforms
- Error analysis runner → Hayne model: compares model
- Error analysis runner → Retracking results: writes analysis
