skillby gpt-cmdr

executing-hms-runs

|

Installs: 0
Used in: 1 repos
Updated: 2d ago
$npx ai-builder add skill gpt-cmdr/executing-hms-runs

Installs to .claude/skills/executing-hms-runs/

# Executing HEC-HMS Runs

## Quick Start

```python
from hms_commander import init_hms_project, HmsCmdr

# Initialize project
init_hms_project(r"C:\Projects\watershed")

# Execute single run
HmsCmdr.compute_run("Run 1")

# Execute multiple runs in parallel
HmsCmdr.compute_parallel(["Run 1", "Run 2", "Run 3"], max_workers=2)
```

## Primary Sources

**Code (Authoritative API)**:
- `hms_commander/HmsCmdr.py` - Execution engine with complete docstrings
- `hms_commander/HmsJython.py` - Script generation and version detection

**Examples (Working Demonstrations)**:
- `examples/01_multi_version_execution.ipynb` - Complete workflow
- `examples/04_hms_workflow.ipynb` - End-to-end simulation

**Rules (Patterns & Decisions)**:
- `.claude/rules/hec-hms/execution.md` - Execution patterns
- `.claude/rules/hec-hms/version-support.md` - HMS 3.x vs 4.x differences

## When to Use This Skill

**Trigger Scenarios**:
- User says "run HMS simulation"
- User says "execute this model"
- User says "compute all runs in parallel"
- User mentions "Jython script"
- Working with HMS 3.x (requires Python 2 compatibility)
- Need to execute batch simulations
- Setting up automated workflows

## Core Capabilities

### 1. Single Run Execution

**Pattern**: Initialize → Compute → Verify

See `reference/compute_run.md` for complete API details.

**Key Decision**: When to use `compute_run()` vs `compute_test_mode()`
- Use `compute_run()` for actual simulation
- Use `compute_test_mode()` to validate setup without running

### 2. Parallel Execution

**Pattern**: Batch runs across multiple workers

See `reference/parallel.md` for parallel execution strategies.

**Key Decision**: How many workers?
- Default: 2 workers (safe for most systems)
- CPU-bound: Use `os.cpu_count() - 1`
- Memory-constrained: Use 1 worker (sequential)
- Large models: Consider memory per run × workers

### 3. Jython Script Generation

**Pattern**: Generate version-appropriate script → Execute via HMS

See `reference/jython.md` for script generation details.

**Critical Decision**: HMS 3.x vs 4.x
- HMS 3.x: MUST use `python2_compatible=True`
- HMS 4.x: Use default (Python 3 syntax)
- Auto-detection: Check install path contains "(x86)" = 3.x

## HMS Version Awareness

**This skill handles BOTH HMS 3.x and 4.x**:

| Aspect | HMS 3.x | HMS 4.x |
|--------|---------|---------|
| Architecture | 32-bit | 64-bit |
| Python Syntax | Python 2 (`print "x"`) | Python 3 (`print("x")`) |
| Script Flag | `python2_compatible=True` | Default |
| Max Memory | ~1.3 GB | 32+ GB |
| Install Path | `Program Files (x86)` | `Program Files` |

**See**: `.claude/rules/hec-hms/version-support.md` for complete differences

## Common Workflows

### Workflow 1: Basic Execution

```python
from hms_commander import init_hms_project, HmsCmdr

init_hms_project(r"C:\Projects\watershed")
HmsCmdr.compute_run("Run 1")
```

**See**: `examples/basic-run.md` for complete walkthrough

### Workflow 2: Batch Execution (Sequential)

```python
runs = ["Baseline", "Alternative_1", "Alternative_2"]
HmsCmdr.compute_batch(runs)
```

**See**: `examples/batch-runs.md` for batch strategies

### Workflow 3: Parallel Execution

```python
runs = ["Run_1", "Run_2", "Run_3", "Run_4"]
HmsCmdr.compute_parallel(runs, max_workers=2)
```

**See**: `reference/parallel.md` for worker allocation

### Workflow 4: Legacy HMS 3.x Project

```python
from hms_commander import HmsJython

# Generate Python 2 compatible script
script = HmsJython.generate_compute_script(
    project_path=r"C:\Projects\old_project",
    run_name="Run 1",
    python2_compatible=True  # CRITICAL for HMS 3.x!
)

# Execute with HMS 3.x
success, stdout, stderr = HmsJython.execute_script(
    script_content=script,
    hms_exe_path=r"C:\Program Files (x86)\HEC\HEC-HMS\3.5"
)
```

**See**: `.claude/rules/hec-hms/version-support.md` for legacy workflows

## Troubleshooting

**Common Issues**:

1. **HMS Not Found**: See `reference/jython.md#finding-hms`
2. **Memory Errors**: See `reference/jython.md#memory-allocation`
3. **Python 2 Syntax Errors**: See `.claude/rules/hec-hms/version-support.md`
4. **Parallel Execution Hangs**: See `reference/parallel.md#debugging`

## Integration Points

**Before Execution**:
- Use `HmsBasin` to modify parameters (see `parsing-basin-models` skill)
- Use `HmsMet` to update precipitation (see `updating-met-models` skill)
- Use `HmsControl` to set time window (see `.claude/rules/hec-hms/control-files.md`)

**After Execution**:
- Use `HmsDss` to extract results (see `extracting-dss-results` skill)
- Use `HmsResults` for analysis (see `.claude/rules/hec-hms/dss-operations.md`)

## Reference Files

**Detailed API Documentation** (load on-demand):
- `reference/compute_run.md` - HmsCmdr.compute_run() complete API
- `reference/parallel.md` - Parallel execution strategies
- `reference/jython.md` - Script generation and execution
- `reference/troubleshooting.md` - Common issues and solutions

**Complete Examples** (working code):
- `examples/basic-run.md` - Simple single run
- `examples/batch-runs.md` - Sequential batch execution
- `examples/parallel-runs.md` - Parallel execution with worker allocation
- `examples/legacy-3x.md` - HMS 3.x compatibility

## Testing This Skill

Use real HMS projects for testing:

```python
from hms_commander import HmsExamples

# Extract example project
HmsExamples.extract_project("tifton")

# Test execution
init_hms_project("tifton/tifton")
HmsCmdr.compute_run("1970_simulation")
```

**See**: `.claude/rules/testing/tdd-approach.md` for testing philosophy

## Key Patterns (Not in Primary Sources)

### Pattern 1: Destination Folder Management

HMS creates output in the project folder. For organized results:

```python
# Results go to project_folder/results/RUN_<run_name>.results
# DSS file location specified in .run file
```

**Decision**: HMS writes to project folder, not a separate destination folder like RAS.

### Pattern 2: Version Auto-Detection

```python
from pathlib import Path

hms_path = Path(r"C:\Program Files (x86)\HEC\HEC-HMS\3.5")
is_3x = "(x86)" in str(hms_path)  # 32-bit = HMS 3.x
python2_compatible = is_3x
```

**Decision**: Use install path pattern for version detection, not HMS version file.

### Pattern 3: Error Handling

```python
try:
    HmsCmdr.compute_run("Run 1")
except Exception as e:
    # Check HMS log file for details
    log_file = hms.project_folder / f"RUN_Run 1.log"
    if log_file.exists():
        print(log_file.read_text())
    raise
```

**Decision**: HMS errors appear in log files, check those for diagnostics.

## Related Skills

- **parsing-basin-models** - Modify parameters before execution
- **updating-met-models** - Update precipitation before execution
- **extracting-dss-results** - Process outputs after execution
- **cloning-hms-components** - Create QAQC comparison runs
- **managing-hms-versions** - Multi-version testing workflows

---

**Navigation**: This skill points to primary sources. For complete API details, read the code docstrings in `hms_commander/HmsCmdr.py` and `hms_commander/HmsJython.py`.

Quick Install

$npx ai-builder add skill gpt-cmdr/executing-hms-runs

Details

Type
skill
Author
gpt-cmdr
Slug
gpt-cmdr/executing-hms-runs
Created
5d ago