Parsing Basin Models
Quick Start
from hms_commander import HmsBasin
# Read basin components
subbasins = HmsBasin.get_subbasins("project.basin")
junctions = HmsBasin.get_junctions("project.basin")
reaches = HmsBasin.get_reaches("project.basin")
# Get/set parameters
loss_params = HmsBasin.get_loss_parameters("project.basin", "Subbasin1")
HmsBasin.set_loss_parameters("project.basin", "Subbasin1", curve_number=85)
Primary Sources
Code: hms_commander/HmsBasin.py - Complete API with docstrings
Examples: examples/03_project_dataframes.ipynb - Basin operations
Rules: .claude/rules/hec-hms/basin-files.md - Basin file patterns
File Format: tests/projects/.../02_Basin_File.md - HMS file structure
When to Use This Skill
- Extracting basin components for analysis
- Modifying loss method parameters (CN, deficit, constant rate)
- Updating transform parameters (lag time, time of concentration)
- Analyzing basin connectivity (downstream relationships)
- Cloning basins for QAQC comparison
Core Capabilities
1. Component Extraction
Returns DataFrames with basin elements:
get_subbasins() - Area, downstream, loss/transform methods
get_junctions() - Connectivity nodes
get_reaches() - Channel routing elements
2. Parameter Operations
Get/set hydrologic parameters:
- Loss methods (Deficit & Constant, SCS CN, Green & Ampt, etc.)
- Transform methods (SCS UH, Clark UH, ModClark, etc.)
- Baseflow methods (Recession, Constant Monthly, etc.)
- Routing methods (Muskingum, Lag, ModPuls, etc.)
See: hms_commander/HmsBasin.py for complete method list
3. Clone Workflows
Non-destructive basin cloning:
- Preserves original basin
- Updates description with clone metadata
- Appears in HEC-HMS GUI
- Enables side-by-side QAQC comparison
See: .claude/rules/hec-hms/clone-workflows.md for CLB Engineering pattern
Common Workflows
Workflow 1: Extract All Components
subbasins = HmsBasin.get_subbasins("project.basin")
print(f"Found {len(subbasins)} subbasins")
print(f"Total area: {subbasins['Area'].sum()} sq mi")
Workflow 2: Bulk Parameter Update
# Update all curve numbers
subbasins = HmsBasin.get_subbasins("project.basin")
for name in subbasins.index:
HmsBasin.set_loss_parameters("project.basin", name, curve_number=85)
Workflow 3: Clone for QAQC
from hms_commander import init_hms_project, hms, HmsBasin
init_hms_project("project")
HmsBasin.clone_basin("Baseline", "Updated_Basin", hms_object=hms)
# Now modify Updated_Basin parameters for comparison
Reference Files
reference/get_subbasins.md - DataFrame structure and usage
reference/loss_methods.md - All loss method parameters
reference/transform_methods.md - All transform method parameters
examples/parameter_sweep.md - Bulk parameter updates
Related Skills
- cloning-hms-components - Complete clone workflow
- executing-hms-runs - Run after modifying parameters
1---2name: parsing-basin-models3description: Parses HEC-HMS basin model files (.basin) to extract and modify subbasins, junctions, reaches, loss parameters, transform parameters, baseflow, and routing. Use when reading basin files, modifying hydrologic parameters, analyzing basin structure, or updating curve numbers, lag times, and routing coefficients. Handles clone workflows for QAQC. Trigger keywords: basin file, subbasin, junction, reach, loss method, curve number, transform, lag time, baseflow, routing, Muskingum, parse basin, get parameters.4---5
6# Parsing Basin Models
7
8## Quick Start
9
10```python
11from hms_commander import HmsBasin
12
13# Read basin components
14subbasins = HmsBasin.get_subbasins("project.basin")
15junctions = HmsBasin.get_junctions("project.basin")
16reaches = HmsBasin.get_reaches("project.basin")
17
18# Get/set parameters
19loss_params = HmsBasin.get_loss_parameters("project.basin", "Subbasin1")
20HmsBasin.set_loss_parameters("project.basin", "Subbasin1", curve_number=85)
21```
22
23## Primary Sources
24
25**Code**: `hms_commander/HmsBasin.py` - Complete API with docstrings
26
27**Examples**: `examples/03_project_dataframes.ipynb` - Basin operations
28
29**Rules**: `.claude/rules/hec-hms/basin-files.md` - Basin file patterns
30
31**File Format**: `tests/projects/.../02_Basin_File.md` - HMS file structure
32
33## When to Use This Skill
34
35- Extracting basin components for analysis
36- Modifying loss method parameters (CN, deficit, constant rate)
37- Updating transform parameters (lag time, time of concentration)
38- Analyzing basin connectivity (downstream relationships)
39- Cloning basins for QAQC comparison
40
41## Core Capabilities
42
43### 1. Component Extraction
44
45Returns DataFrames with basin elements:
46- `get_subbasins()` - Area, downstream, loss/transform methods
47- `get_junctions()` - Connectivity nodes
48- `get_reaches()` - Channel routing elements
49
50### 2. Parameter Operations
51
52Get/set hydrologic parameters:
53- Loss methods (Deficit & Constant, SCS CN, Green & Ampt, etc.)
54- Transform methods (SCS UH, Clark UH, ModClark, etc.)
55- Baseflow methods (Recession, Constant Monthly, etc.)
56- Routing methods (Muskingum, Lag, ModPuls, etc.)
57
58**See**: `hms_commander/HmsBasin.py` for complete method list
59
60### 3. Clone Workflows
61
62Non-destructive basin cloning:
63- Preserves original basin
64- Updates description with clone metadata
65- Appears in HEC-HMS GUI
66- Enables side-by-side QAQC comparison
67
68**See**: `.claude/rules/hec-hms/clone-workflows.md` for CLB Engineering pattern
69
70## Common Workflows
71
72### Workflow 1: Extract All Components
73
74```python
75subbasins = HmsBasin.get_subbasins("project.basin")
76print(f"Found {len(subbasins)} subbasins")
77print(f"Total area: {subbasins['Area'].sum()} sq mi")
78```
79
80### Workflow 2: Bulk Parameter Update
81
82```python
83# Update all curve numbers
84subbasins = HmsBasin.get_subbasins("project.basin")
85for name in subbasins.index:
86 HmsBasin.set_loss_parameters("project.basin", name, curve_number=85)
87```
88
89### Workflow 3: Clone for QAQC
90
91```python
92from hms_commander import init_hms_project, hms, HmsBasin
93
94init_hms_project("project")
95HmsBasin.clone_basin("Baseline", "Updated_Basin", hms_object=hms)
96# Now modify Updated_Basin parameters for comparison
97```
98
99## Reference Files
100
101- `reference/get_subbasins.md` - DataFrame structure and usage
102- `reference/loss_methods.md` - All loss method parameters
103- `reference/transform_methods.md` - All transform method parameters
104- `examples/parameter_sweep.md` - Bulk parameter updates
105
106## Related Skills
107
108- **cloning-hms-components** - Complete clone workflow
109- **executing-hms-runs** - Run after modifying parameters