Claude-skill-registry dss_read_boundary-data
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/dss-read-boundary-data-gpt-cmdr-ras-commander" ~/.claude/skills/majiayu000-claude-skill-registry-dss-read-boundary-data && rm -rf "$T"
skills/data/dss-read-boundary-data-gpt-cmdr-ras-commander/SKILL.mdReading DSS Boundary Data
Primary Source Navigator: This skill provides a concise entry point to DSS file operations. Complete documentation exists in authoritative sources.
Quick Reference
from ras_commander import init_ras_project, RasDss # Initialize project ras = init_ras_project("path/to/project", "6.6") # Read DSS catalog catalog = RasDss.get_catalog("file.dss") # Extract single time series df = RasDss.read_timeseries("file.dss", pathname) # Extract ALL boundary DSS data (recommended) enhanced = RasDss.extract_boundary_timeseries( ras.boundaries_df, ras_object=ras )
Primary Sources (Read These First)
1. Module Architecture & Developer Guidance
Location:
C:\GH\ras-commander\ras_commander\dss\AGENTS.md
Read this for:
- Lazy loading architecture (no overhead until first use)
- Three-level lazy loading (package → subpackage → method)
- Public API reference table
- DataFrame metadata structure (
)df.attrs - Dependencies (pyjnius, Java, HEC Monolith)
- Adding new DSS methods
- Testing DSS operations
- Common issues and troubleshooting
Why this is authoritative: Written by maintainers, updated with code changes, read by developers working on the module.
2. Complete Workflow Example
Location:
C:\GH\ras-commander\examples\310_dss_boundary_extraction.ipynb
Read this for:
- Step-by-step extraction workflow
- Real project (BaldEagleCrkMulti2D)
- Catalog reading examples
- Single time series extraction
- Batch extraction with
extract_boundary_timeseries() - Plotting DSS boundary data
- Exporting results to CSV
- Accessing extracted DataFrames
Why this is authoritative: Tested with real HEC-RAS projects, serves as functional test, maintained alongside library.
3. Source Code & Docstrings
Location:
C:\GH\ras-commander\ras_commander\dss\RasDss.py
Read this for:
- Complete method signatures
- Parameter types and defaults
- Return value structures
- Error handling patterns
- Implementation details
Why this is authoritative: Source code is always correct, docstrings updated with each release.
When to Use This Skill
Use when:
- Working with HEC-DSS files (V6 or V7)
- Extracting boundary conditions from DSS
- Reading HEC-HMS model output
- Integrating DSS workflows with HEC-RAS
- Need to catalog DSS file contents
- Converting DSS data to pandas DataFrames
Technology Overview
HEC-DSS Format
- DSS = Data Storage System (binary format)
- Used by HEC-HMS, HEC-ResSim, HEC-FIA
- Versions: V6 (older) and V7 (current)
- Data identified by pathname (7-part string)
DSS Pathname Format
/A/B/C/D/E/F/
- A: Project or basin name
- B: Location (e.g., gauge, river station)
- C: Parameter (FLOW, STAGE, PRECIP, etc.)
- D: Start date (e.g., 01JAN2000)
- E: Time interval (15MIN, 1HOUR, 1DAY, etc.)
- F: Version or scenario (RUN:SCENARIO, GAGE, OBS, etc.)
Example:
//BALD EAGLE 40/FLOW/01JAN1999/15MIN/RUN:PMF-EVENT/
Lazy Loading Architecture
No Overhead Until First Use
See
ras_commander/dss/AGENTS.md for complete details.
Three-level lazy loading:
-
Package Import: Lightweight, no Java loaded
from ras_commander import RasDss # Fast, no JVM -
First Method Call: Configures JVM, downloads Monolith (~20 MB, one-time)
catalog = RasDss.get_catalog("file.dss") # Triggers setup -
Subsequent Calls: Uses cached JVM and libraries
df = RasDss.read_timeseries(...) # Fast, reuses JVM
Dependencies
Required (must install manually):
pip install pyjnius
Required (system):
- Java JRE or JDK 8+ (set JAVA_HOME)
Auto-downloaded:
- HEC Monolith libraries (~20 MB) to
~/.ras-commander/dss/
Core Methods
See
ras_commander/dss/AGENTS.md for complete API reference table.
Essential Methods
-
- List all paths in DSS fileget_catalog(dss_file)- Returns:
of DSS pathnamesList[str] - Use: Explore DSS file contents
- Returns:
-
- Extract single time seriesread_timeseries(dss_file, pathname)- Returns:
with DatetimeIndex and 'value' columnDataFrame - Metadata in
(pathname, units, type, interval, dss_file)df.attrs - Use: Extract specific boundary data
- Returns:
-
- Extract ALL DSS boundariesextract_boundary_timeseries(boundaries_df, ras_object)- Returns: Enhanced DataFrame with 'dss_timeseries' column
- Automatically processes all DSS-defined boundaries
- Use: Recommended for complete boundary extraction
-
- Quick file summaryget_info(dss_file)- Returns:
with filename, size, total_paths, sample_pathsDict - Use: Validate DSS file before full extraction
- Returns:
-
- Batch extractread_multiple_timeseries(dss_file, pathnames)- Returns:
mapping pathname to dataDict[str, DataFrame] - Use: Extract specific set of paths efficiently
- Returns:
Common Workflows
Workflow 1: Read Catalog and Extract Single Path
# List available data catalog = RasDss.get_catalog("file.dss") flow_paths = [p for p in catalog if '/FLOW/' in p] # Extract specific path df = RasDss.read_timeseries("file.dss", flow_paths[0]) print(f"Units: {df.attrs['units']}") print(f"Points: {len(df)}")
Workflow 2: Extract ALL Boundary Data (Recommended)
from ras_commander import init_ras_project, RasDss # Initialize project ras = init_ras_project("project_path", "6.6") # Extract all DSS boundary data enhanced = RasDss.extract_boundary_timeseries( ras.boundaries_df, ras_object=ras ) # Access extracted data for idx, row in enhanced.iterrows(): if row['Use DSS'] and row['dss_timeseries'] is not None: df = row['dss_timeseries'] print(f"{row['bc_type']}: {len(df)} points")
Workflow 3: Plot DSS Boundary
import matplotlib.pyplot as plt # Get DSS boundary dss_boundaries = enhanced[enhanced['Use DSS'] == True] first_dss = dss_boundaries.iloc[0] # Plot df = first_dss['dss_timeseries'] df['value'].plot(figsize=(12, 4)) plt.title(f"{first_dss['bc_type']} - {first_dss['river_reach_name']}") plt.ylabel(f"Flow ({df.attrs['units']})") plt.grid(True) plt.show()
Error Handling
See
ras_commander/dss/AGENTS.md for complete troubleshooting guide.
Common Errors
1. pyjnius Not Installed
ImportError: pyjnius is required for DSS file operations.
Fix:
pip install pyjnius
2. Java Not Found
RuntimeError: JAVA_HOME not set and Java not found automatically.
Fix: Install Java JRE/JDK 8+ and set JAVA_HOME
3. JVM Already Started
RuntimeError: JVM configuration already done.
Fix: Restart Python process or notebook kernel
4. DSS File Not Found
FileNotFoundError: DSS file not found: ...
Fix: Use absolute paths or resolve relative to project directory
Robust Pattern
from pathlib import Path try: dss_file = Path("file.dss").resolve() if not dss_file.exists(): raise FileNotFoundError(f"DSS file not found: {dss_file}") catalog = RasDss.get_catalog(dss_file) print(f"Success: {len(catalog)} paths") except ImportError as e: print(f"Missing dependency: {e}") print("Install: pip install pyjnius") except RuntimeError as e: print(f"Java/JVM error: {e}") print("Check JAVA_HOME and Java installation")
Complete Documentation
DO NOT read the reference/ or examples/ folders in this skill directory - they contain outdated duplicated content.
Always prefer primary sources:
- Module architecture:
ras_commander/dss/AGENTS.md - Complete workflow:
examples/310_dss_boundary_extraction.ipynb - API details:
docstringsras_commander/dss/RasDss.py
Key Takeaways
- Lazy Loading: No overhead until first DSS method call
- Auto-Download: HEC Monolith installed automatically (~20 MB, one-time)
- Unified API: DSS and manual boundaries in same DataFrame
- One-Call Extraction:
handles all DSS dataextract_boundary_timeseries() - Metadata Preserved: Units, pathname, interval in
df.attrs - V6 and V7: Both DSS versions supported
- Primary Sources: Always read AGENTS.md and notebook 310 for authoritative guidance
Version History
- v1.0.0: Refactored to lightweight navigator (points to primary sources)
- v0.82.0: Initial RasDss implementation
- v0.86.0: Moved to
subpackage with lazy loadingdss/