# wateraccounting/wapormooc architecture

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

- Interactive diagram: https://gitdiagram.com/wateraccounting/wapormooc
- Repository: https://github.com/wateraccounting/wapormooc

## Overview

WaPORMOOC is a set of self-paced course materials, not a single application: learners use notebooks to learn Python and apply geospatial methods to WaPOR data. Its principal practical workflow is obtaining WaPOR data, then learning spatial-data handling and analysis, including temporal aggregation, farm-level seasonal AETI and water productivity, and zonal-statistics plotting. The package also implements a downloader and preprocessing functions. Notebook internals were not sampled, so links between course lessons are not inferred; documented capabilities are represented at their course-directory paths.

Main entry points: [`1_WaPOR_download_colab`](https://github.com/wateraccounting/wapormooc/tree/main/1_WaPOR_download_colab) (Download lessons), [`package/download_WaPOR_v3_data.py`](https://github.com/wateraccounting/wapormooc/blob/main/package/download_WaPOR_v3_data.py) (Data downloader), [`2_Introduction_python`](https://github.com/wateraccounting/wapormooc/tree/main/2_Introduction_python) (Python introduction), [`3_Python_for_WaPOR/N01_Intro_Pandas_and_Geopandas.ipynb`](https://github.com/wateraccounting/wapormooc/blob/main/3_Python_for_WaPOR/N01_Intro_Pandas_and_Geopandas.ipynb) (Spatial data basics)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_download["WaPOR downloads"]
  node_download_course["Download lessons"]
  node_downloader["Data downloader"]
end

subgraph group_python["Python foundations"]
  node_python_intro["Python introduction"]
end

subgraph group_analysis["Geospatial analysis"]
  node_spatial_intro["Spatial data basics"]
  node_temporal["Temporal aggregation"]
  node_farm_aeti["Farm seasonal AETI"]
  node_seasonal_wp["Seasonal WP"]
  node_zonal_plot["Zonal-stat plots"]
end

node_learner(("Learner"))
node_wapor_api["WaPOR service"]

node_learner -->|"studies"| node_download_course
node_learner -->|"studies"| node_python_intro
node_learner -->|"studies"| node_spatial_intro
node_learner -->|"studies"| node_temporal
node_learner -->|"studies"| node_farm_aeti
node_learner -->|"studies"| node_seasonal_wp
node_learner -->|"studies"| node_zonal_plot
node_download_course -->|"uses"| node_downloader
node_downloader -->|"requests data"| node_wapor_api

click node_download_course "https://github.com/wateraccounting/wapormooc/tree/main/1_WaPOR_download_colab"
click node_downloader "https://github.com/wateraccounting/wapormooc/blob/main/package/download_WaPOR_v3_data.py"
click node_python_intro "https://github.com/wateraccounting/wapormooc/tree/main/2_Introduction_python"
click node_spatial_intro "https://github.com/wateraccounting/wapormooc/blob/main/3_Python_for_WaPOR/N01_Intro_Pandas_and_Geopandas.ipynb"
click node_temporal "https://github.com/wateraccounting/wapormooc/blob/main/3_Python_for_WaPOR/N02_Temporal_Aggregation.ipynb"
click node_farm_aeti "https://github.com/wateraccounting/wapormooc/blob/main/3_Python_for_WaPOR/N03_Average_Seasonal_AETI_per_farm.ipynb"
click node_seasonal_wp "https://github.com/wateraccounting/wapormooc/blob/main/3_Python_for_WaPOR/N04_Seasonal_Aggregation_and_WP.ipynb"
click node_zonal_plot "https://github.com/wateraccounting/wapormooc/blob/main/3_Python_for_WaPOR/N05_Plotting_Zonal_Statistics.ipynb"

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_download_course,node_downloader toneBlue
class node_python_intro toneAmber
class node_spatial_intro,node_temporal,node_farm_aeti,node_seasonal_wp,node_zonal_plot toneMint
class node_learner,node_wapor_api toneIndigo
```

## Components

### WaPOR downloads

- [Download lessons](https://github.com/wateraccounting/wapormooc/tree/main/1_WaPOR_download_colab): `1_WaPOR_download_colab`
- [Data downloader](https://github.com/wateraccounting/wapormooc/blob/main/package/download_WaPOR_v3_data.py): `package/download_WaPOR_v3_data.py`

### Python foundations

- [Python introduction](https://github.com/wateraccounting/wapormooc/tree/main/2_Introduction_python): `2_Introduction_python`

### Geospatial analysis

- [Spatial data basics](https://github.com/wateraccounting/wapormooc/blob/main/3_Python_for_WaPOR/N01_Intro_Pandas_and_Geopandas.ipynb): `3_Python_for_WaPOR/N01_Intro_Pandas_and_Geopandas.ipynb`
- [Temporal aggregation](https://github.com/wateraccounting/wapormooc/blob/main/3_Python_for_WaPOR/N02_Temporal_Aggregation.ipynb): `3_Python_for_WaPOR/N02_Temporal_Aggregation.ipynb`
- [Farm seasonal AETI](https://github.com/wateraccounting/wapormooc/blob/main/3_Python_for_WaPOR/N03_Average_Seasonal_AETI_per_farm.ipynb): `3_Python_for_WaPOR/N03_Average_Seasonal_AETI_per_farm.ipynb`
- [Seasonal WP](https://github.com/wateraccounting/wapormooc/blob/main/3_Python_for_WaPOR/N04_Seasonal_Aggregation_and_WP.ipynb): `3_Python_for_WaPOR/N04_Seasonal_Aggregation_and_WP.ipynb`
- [Zonal-stat plots](https://github.com/wateraccounting/wapormooc/blob/main/3_Python_for_WaPOR/N05_Plotting_Zonal_Statistics.ipynb): `3_Python_for_WaPOR/N05_Plotting_Zonal_Statistics.ipynb`

### Other components

- **Learner**
- **WaPOR service**

## Connections

- Learner → Download lessons: studies (evidence: `README.md`)
- Learner → Python introduction: studies (evidence: `README.md`)
- Learner → Spatial data basics: studies (evidence: `README.md`)
- Learner → Temporal aggregation: studies (evidence: `README.md`)
- Learner → Farm seasonal AETI: studies (evidence: `README.md`)
- Learner → Seasonal WP: studies (evidence: `README.md`)
- Learner → Zonal-stat plots: studies (evidence: `README.md`)
- Download lessons → Data downloader: uses (evidence: `README.md`)
- Data downloader → WaPOR service: requests data (evidence: `package/download_WaPOR_v3_data.py`)
