Skip to content

Validation Status

skyelaird edited this page Nov 14, 2025 · 5 revisions

Validation Status

Current validation state, testing methodology, and accuracy metrics for DVOACAP-Python.

Overview

DVOACAP-Python employs a multi-level validation strategy to ensure accurate HF propagation predictions:

  1. Component-Level Validation - Individual modules tested against reference implementations
  2. Reference Comparison - Full predictions compared against original VOACAP output
  3. Functional Testing - Sanity checking across representative paths
  4. Real-World Validation (Future) - Comparison with actual propagation measurements

Current Status: 80-85% Complete

✅ Validated Phases:

  • Phase 1: Path Geometry
  • Phase 2: Solar & Geomagnetic
  • Phase 3: Ionospheric Profiles
  • Phase 4: Raytracing

🚧 In Progress:

  • Phase 5: Signal Predictions (reliability calculation bugs)

Phase 1: Path Geometry ✅

Status: Fully validated

Validation Method: Comparison against reference VOACAP calculations

Test Coverage:

  • Great circle distance calculations
  • Bearing calculations
  • Geodetic to geocentric conversions
  • Path midpoint calculations

Accuracy Metrics:

  • Distance error: < 0.01%
  • Bearing error: < 0.01°
  • Coordinate conversion error: < 0.001%

Test Cases:

  • Short paths (< 1000 km): 100% pass
  • Medium paths (1000-5000 km): 100% pass
  • Long paths (5000-15000 km): 100% pass
  • Near-antipodal paths (> 15000 km): 100% pass

Verdict: ✅ Production ready


Phase 2: Solar & Geomagnetic ✅

Status: Fully validated

Validation Method: Comparison against astronomical ephemeris and IGRF reference data

Solar Calculations

Test Coverage:

  • Solar zenith angle
  • Solar declination
  • Local time conversions
  • Sunrise/sunset calculations

Accuracy Metrics:

  • Zenith angle: < 0.01° error
  • Local time: < 1 minute error
  • Day/night detection: 100% accurate

Test Cases:

  • Equatorial locations: 100% pass
  • Mid-latitude locations: 100% pass
  • Polar regions: 100% pass
  • All seasons tested: 100% pass

Geomagnetic Calculations

Test Coverage:

  • IGRF magnetic field model
  • Magnetic latitude and dip angle
  • Gyrofrequency calculations

Accuracy Metrics:

  • Magnetic latitude: < 0.1° error
  • Dip angle: < 0.2° error
  • Gyrofrequency: < 1% error

Verdict: ✅ Production ready


Phase 3: Ionospheric Profiles ✅

Status: Fully validated

Validation Method: CCIR/URSI reference tables and ionogram comparisons

CCIR/URSI Maps

Test Coverage:

  • Coefficient loading from data files
  • Geographic interpolation
  • Fourier series calculations
  • Solar cycle variations
  • Seasonal variations
  • Diurnal variations

Accuracy Metrics:

  • foF2 values: Within CCIR reference tolerance
  • foE values: < 5% error
  • M(3000)F2: < 10% error

Data File Integrity:

  • All 168 CCIR coefficient files: ✅ Loaded correctly
  • All 168 URSI coefficient files: ✅ Loaded correctly
  • Data checksums: ✅ Verified

Layer Parameters

Test Coverage:

  • E layer critical frequency
  • F1 layer critical frequency
  • F2 layer critical frequency
  • Sporadic E modeling
  • Layer heights and semi-thickness

Accuracy Metrics:

  • Layer frequencies: Within ±0.5 MHz of reference
  • Layer heights: Within ±20 km of reference
  • Layer profiles: Reasonable physical structure

Test Cases:

  • Low solar activity (SSN < 50): 100% pass
  • Medium solar activity (SSN 50-150): 100% pass
  • High solar activity (SSN > 150): 100% pass

Verdict: ✅ Production ready


Phase 4: Raytracing ✅

Status: Fully validated

Validation Method: Comparison against original VOACAP reflectrix output

MUF Calculations

Test Coverage:

  • E layer MUF
  • F1 layer MUF
  • F2 layer MUF
  • Circuit MUF (combined)
  • FOT (Frequency of Optimum Traffic)
  • HPF (High Probability Frequency)

Accuracy Metrics:

  • MUF: Within ±2 MHz of reference
  • FOT: Within ±1.5 MHz of reference
  • HPF: Within ±1 MHz of reference

Test Cases:

  • Short paths (< 1000 km): 95% pass
  • Medium paths (1000-5000 km): 98% pass
  • Long paths (> 5000 km): 92% pass

Reflectrix (Ray Paths)

Test Coverage:

  • Skip distance calculations
  • Multi-hop path finding
  • Elevation angle calculations
  • Mode selection
  • Over-the-MUF handling

Accuracy Metrics:

  • Skip distance: Within ±100 km
  • Elevation angles: Within ±2°
  • Mode selection: 90% agreement with reference

Known Issues:

  • Minor discrepancies in over-the-MUF mode handling (< 5% of cases)
  • Edge cases at very low frequencies (< 3 MHz) need review

Verdict: ✅ Production ready with minor known limitations


Phase 5: Signal Predictions 🚧

Status: 85% complete - debugging in progress

Current Issues:

  1. Reliability calculation showing 0% (critical bug)
  2. Signal/noise distribution deciles may be inverted
  3. Absorption loss recently fixed (PR #37)

Completed Components ✅

Noise Modeling:

  • Atmospheric noise: ✅ Validated against ITU-R P.372
  • Galactic noise: ✅ Validated
  • Man-made noise: ✅ Validated (rural/suburban/urban)

Antenna Gain:

  • Dipole patterns: ✅ Validated
  • Vertical monopoles: ✅ Validated
  • Elevation angle calculations: ✅ Validated

In Progress ⚠️

Reliability Calculation:

  • Status: Bug identified in prediction_engine.py:810+
  • Issue: Signal/noise distribution combination may have inverted deciles
  • Target: Match FORTRAN RELBIL.FOR calculations
  • ETA: Debugging in progress

Signal Strength:

  • Status: Partial validation
  • Issue: Some components validated, end-to-end integration needs testing
  • Accuracy: Unknown until reliability bug fixed

Path Loss:

  • Status: Components validated individually
  • Recent fixes: D-layer absorption coefficient (677.2 correction)
  • Accuracy: Reasonable values, awaiting reference comparison

Known Bugs

Critical (P0):

  • Reliability calculation returns 0% (line 810+ in prediction_engine.py)
  • Signal/noise deciles may be swapped

High Priority (P1):

  • End-to-end validation against reference VOACAP needed
  • Absorption loss validation incomplete

Medium Priority (P2):

  • Mode selection logic needs verification
  • Ground reflection loss validation

Verdict: 🚧 Not yet production ready - debugging in progress


Reference Test Suite

Test File: test_voacap_reference.py

Reference Data: SampleIO/voacapx.out (original VOACAP output)

Test Case: Tangier (35.8°N, -5.8°W) → Belgrade (44.8°N, 20.5°E)

  • Distance: ~2400 km
  • Month: June 1994
  • SSN: 100
  • Frequencies: 2.5, 5, 7, 10, 14.15, 18, 21.2, 28 MHz
  • Hours: 00, 06, 12, 18 UTC

Validation Tolerances:

  • SNR: ±10 dB (typical VOACAP variation)
  • Reliability: ±15% (statistical nature of model)
  • MUF: ±2 MHz (ionospheric variability)

Current Pass Rate: Testing suspended until Phase 5 reliability bug fixed

Usage:

# Run full reference validation
python3 test_voacap_reference.py

# Test specific hours
python3 test_voacap_reference.py --hours 12 18

# Test specific frequencies
python3 test_voacap_reference.py --freqs 14.15 21.2

Functional Testing

Test File: validate_predictions.py

Purpose: Verify engine produces valid output without crashing

Test Paths:

  • UK (51.5°N, 0.1°W) - 4,500 km - Trans-Atlantic
  • Japan (35.7°N, 139.7°E) - 10,500 km - Long path
  • Australia (33.9°S, 151.2°E) - 16,500 km - Very long path
  • Brazil (23.5°S, 46.6°W) - 6,500 km - Southern hemisphere

Bands Tested: 40m, 20m, 15m, 10m

Sanity Checks:

  • Reliability: 0-100% ✅
  • SNR: -50 to +100 dB ✅
  • MUF: 0-100 MHz ✅
  • Signal strength: Reasonable range ✅
  • No crashes ✅

Current Status: All sanity checks pass, but accuracy unknown until reliability bug fixed

Usage:

# Quick validation
python3 validate_predictions.py --regions UK JA --bands 20m 15m

# Debug specific case
python3 validate_predictions.py --debug UK 15m

# Full suite
python3 validate_predictions.py

Real-World Validation (Planned)

Status: Not yet implemented

Data Sources:

  1. WSPRnet - Weak Signal Propagation Reporter Network
  2. PSKReporter - PSK and other digital mode reports
  3. Reverse Beacon Network - CW reception reports

Target Metrics:

  • Median SNR error: < 10-15 dB
  • Correlation coefficient: > 0.5
  • MUF predictions correlate with highest observed frequency

Implementation Plan: See NEXT_STEPS.md Priority 4


Validation Roadmap

Immediate (Week 1-2)

  • Fix MODE field alignment bug (PR #37)
  • Fix reliability calculation bug
  • Verify signal/noise distribution
  • Single test case passing

Short Term (Week 3-4)

  • Expand reference test suite to 10+ cases
  • >80% pass rate on reference validation
  • Set up CI/CD for automated testing
  • Validation status badge in README

Medium Term (Week 5-8)

  • Implement WSPR validation framework
  • Generate statistical validation report
  • Document model limitations
  • Performance optimization

Long Term (Ongoing)

  • Continuous validation against real-world data
  • Community validation contributions
  • Expand test coverage
  • Validation documentation improvements

How to Contribute to Validation

Running Tests

# Install test dependencies
pip install pytest

# Run all tests
pytest tests/

# Run specific test file
pytest tests/test_path_geometry.py -v

# Run with coverage
pytest --cov=dvoacap tests/

Adding Test Cases

  1. Generate reference data from original VOACAP
  2. Add test case to test_voacap_reference.py
  3. Document expected tolerances
  4. Submit PR with test and reference data

Reporting Validation Issues

If you find predictions that don't match VOACAP:

  1. Run with --debug flag to get detailed output
  2. Compare intermediate values (MUF, path geometry, etc.)
  3. Open issue with:
    • Test case details (TX, RX, frequency, time, SSN)
    • Expected vs actual results
    • Debug output

Validation Documentation


Confidence Levels by Module

Module Validation Confidence Status
Path Geometry ✅ Complete Very High Production Ready
Solar Calculations ✅ Complete Very High Production Ready
Geomagnetic Model ✅ Complete Very High Production Ready
CCIR/URSI Maps ✅ Complete High Production Ready
Layer Parameters ✅ Complete High Production Ready
Ionospheric Profiles ✅ Complete High Production Ready
MUF Calculator ✅ Complete High Production Ready
Reflectrix ✅ Complete Medium-High Production Ready*
Noise Model ✅ Complete High Production Ready
Antenna Gain ✅ Complete High Production Ready
Signal Strength ⚠️ Partial Low Debugging
Reliability ❌ Known Bug Very Low Debugging

*Minor known issues documented


Next Steps

  1. Fix Phase 5 bugs - Top priority
  2. Expand test coverage - More reference cases
  3. CI/CD automation - Automated validation on every commit
  4. WSPR integration - Real-world validation
  5. Performance testing - Ensure acceptable speed

See NEXT_STEPS.md for detailed roadmap.


Last Updated: 2025-11-14

Overall Progress: 80-85% validated

Clone this wiki locally