|
| 1 | +# Simulation Evaluation Tool |
| 2 | + |
| 3 | +## Purpose |
| 4 | +Containerized Python tool for evaluating hydrological simulation performance against observed data using standard metrics (NSE, KGE, R², MSE, RMSE). |
| 5 | + |
| 6 | +## Key Components |
| 7 | +- **Python Core** (`src/`): Data loading, metric calculation, output generation |
| 8 | +- **Svelte Report App** (`src/report/`): Interactive HTML reports with visualizations |
| 9 | +- **Docker Setup**: Containerized execution following tool-spec standard |
| 10 | +- **Input Data**: CAMELS-DE hydrological catchment data (CSV/Parquet) |
| 11 | + |
| 12 | +## Workflow |
| 13 | +1. Load simulation/observation data from `/in/` using wildcard patterns |
| 14 | +2. Calculate performance metrics for each catchment |
| 15 | +3. Generate CSV/JSON metrics summary |
| 16 | +4. Build interactive HTML report with time series plots |
| 17 | + |
| 18 | +## Technologies |
| 19 | +- **Backend**: Python (pandas, numpy, scipy, sklearn) |
| 20 | +- **Frontend**: SvelteKit, TypeScript, Plotly.js, Tailwind CSS |
| 21 | +- **Containerization**: Docker with tool-spec compliance |
| 22 | +- **Data Processing**: Supports CSV/Parquet, flexible column mapping |
| 23 | + |
| 24 | +## Key Files |
| 25 | +- `run.py`: Main entrypoint and orchestration |
| 26 | +- `evaluation.py`: Core metric calculations (NSE, KGE, etc.) |
| 27 | +- `outputs.py`: Report generation and data compression |
| 28 | +- `tool.yml`: Tool specification and parameter definitions |
| 29 | +- `src/report/`: Svelte application for interactive visualization |
| 30 | + |
| 31 | +## Development Notes |
| 32 | +- Uses json2args for parameter parsing from `/in/input.json` |
| 33 | +- Supports both separate and combined observation/simulation files |
| 34 | +- Generates compressed datasets for web visualization |
| 35 | +- Follows tool-spec container structure (`/in`, `/out`, `/src`) |
0 commit comments