Skip to content

Implement VOACAP binary parser#1

Merged
skyelaird merged 1 commit intomainfrom
claude/implement-voacap-parser-011CV6BPdBq9ptyvchQhMx5o
Nov 13, 2025
Merged

Implement VOACAP binary parser#1
skyelaird merged 1 commit intomainfrom
claude/implement-voacap-parser-011CV6BPdBq9ptyvchQhMx5o

Conversation

@skyelaird
Copy link
Copy Markdown
Owner

Implement a comprehensive binary file parser for VOACAP coefficient data files. This parser reads the monthly ionospheric coefficient data (Coeff##.dat) and F2 critical frequency data (FOF2CCIR##.dat) files.

Features:

  • Parse Coeff##.dat files (38,480 bytes) containing Fourier coefficients
  • Parse FOF2CCIR##.dat files (7,904 bytes) containing F2 frequency data
  • Support all 12 monthly data files
  • Provide convenient loading functions and data structures
  • Include comprehensive test suite (19 tests, all passing)
  • Add usage example demonstrating parser capabilities

Implementation details:

  • Uses numpy for efficient binary data handling
  • Maintains exact Pascal data structure layout for compatibility
  • Includes enums for map types (VarMapKind, FixedMapKind)
  • Validates file sizes and data integrity
  • Returns data in numpy arrays for easy numerical processing

Files added:

  • src/dvoacap/voacap_parser.py: Main parser module (550+ lines)
  • tests/test_voacap_parser.py: Comprehensive test suite (350+ lines)
  • examples/parser_example.py: Usage example and demonstration

All tests pass successfully, validating correct parsing of all monthly data files.

Implement a comprehensive binary file parser for VOACAP coefficient data files.
This parser reads the monthly ionospheric coefficient data (Coeff##.dat) and
F2 critical frequency data (FOF2CCIR##.dat) files.

Features:
- Parse Coeff##.dat files (38,480 bytes) containing Fourier coefficients
- Parse FOF2CCIR##.dat files (7,904 bytes) containing F2 frequency data
- Support all 12 monthly data files
- Provide convenient loading functions and data structures
- Include comprehensive test suite (19 tests, all passing)
- Add usage example demonstrating parser capabilities

Implementation details:
- Uses numpy for efficient binary data handling
- Maintains exact Pascal data structure layout for compatibility
- Includes enums for map types (VarMapKind, FixedMapKind)
- Validates file sizes and data integrity
- Returns data in numpy arrays for easy numerical processing

Files added:
- src/dvoacap/voacap_parser.py: Main parser module (550+ lines)
- tests/test_voacap_parser.py: Comprehensive test suite (350+ lines)
- examples/parser_example.py: Usage example and demonstration

All tests pass successfully, validating correct parsing of all monthly data files.
@skyelaird skyelaird merged commit 5bcd19c into main Nov 13, 2025
skyelaird pushed a commit that referenced this pull request Nov 17, 2025
Added comprehensive propagation mapping system with signal strength (SDBW)
and reliability (REL) visualization, addressing bandwidth parameter gap and
providing VOACAP-equivalent map displays.

Features Implemented:
1. Bandwidth parameter - Added to VoacapParams (fixes VOACAP_VALIDATION_FINDINGS)
   - bandwidth_hz field for receiver bandwidth specification
   - Default: 2700 Hz (SSB)
   - Affects noise floor calculations

2. Mode presets system - Automatic configuration for common modes
   - WSPR: 6 Hz, -28 dB SNR
   - FT8: 50 Hz, -21 dB SNR
   - CW: 500 Hz, +6 dB SNR
   - SSB: 2700 Hz, +10 dB SNR
   - Matches VOACAP bandwidth specifications (3/19/13/38 dB/Hz)

3. Propagation map generator - Grid-based prediction system
   - Maidenhead grid square alignment
   - Configurable resolution (coarse/medium/fine)
   - Generates REL and SDBW map data as JSON
   - Progress reporting for large grids (25k+ points)

4. Interactive map viewer - Space-efficient HTML5 interface
   - Fullscreen Leaflet map with dark theme
   - Band selection (40m-10m)
   - Mode selection (WSPR/FT8/CW/SSB)
   - Display toggle (Reliability vs Signal Strength)
   - Time selection (hourly UTC)
   - Color-coded grid squares with popup details
   - Floating legend with status bar

Files Added:
- Dashboard/mode_presets.py: Mode configuration presets
- Dashboard/generate_propagation_maps.py: Map data generator
- Dashboard/propagation_maps.html: Interactive map viewer
- Dashboard/PROPAGATION_MAPS_README.md: Complete documentation

Files Modified:
- src/dvoacap/prediction_engine.py: Added bandwidth_hz parameter

Map Generation Performance:
- Medium resolution (2° x 1° squares): ~25,000 grid points for ±60°
- Processing: ~0.1s per grid point
- Tested successfully with 20m SSB

Addresses Issues from VOACAP_VALIDATION_FINDINGS.md:
✅ Missing bandwidth parameter (was #1 critical issue)
✅ Mode preset system for easy configuration
✅ VOACAP-style REL/SDBW map visualization
✅ Maidenhead grid alignment for ham radio use

Next Steps:
- Generate map data for common bands/modes/times
- Integrate with main dashboard
- Add real-time solar data integration
- Optimize for faster map generation

Reference: VOACAP_VALIDATION_FINDINGS.md, test_corrected_params.py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants