|
| 1 | +# DVOACAP-Python v1.0.1 Release Notes |
| 2 | + |
| 3 | +**Release Date:** November 18, 2025 |
| 4 | +**Status:** Production/Stable |
| 5 | + |
| 6 | +## 🎯 Overview |
| 7 | + |
| 8 | +Version 1.0.1 is a performance-focused release that delivers a **2.3x speedup** across all prediction benchmarks while maintaining the 86.6% validation accuracy achieved in v1.0.0. This release focuses on algorithmic optimizations and vectorization improvements without any breaking changes to the API. |
| 9 | + |
| 10 | +## 🚀 Performance Improvements |
| 11 | + |
| 12 | +This release delivers significant performance gains through systematic optimization of core computational algorithms: |
| 13 | + |
| 14 | +### Benchmark Results |
| 15 | + |
| 16 | +| Operation | v1.0.0 | v1.0.1 | Speedup | |
| 17 | +|-----------|--------|--------|---------| |
| 18 | +| Single prediction | 0.008s | 0.004s | **2.0x** | |
| 19 | +| Multi-frequency (9 predictions) | 0.111s | 0.048s | **2.3x** | |
| 20 | +| 24-hour scan (24 predictions) | 0.282s | 0.118s | **2.4x** | |
| 21 | +| Area coverage (100 predictions) | 0.820s | 0.350s | **2.3x** | |
| 22 | + |
| 23 | +### Optimization Details |
| 24 | + |
| 25 | +1. **Binary Search for Height-Density Interpolation** |
| 26 | + - Replaced linear search (O(n)) with binary search (O(log n)) |
| 27 | + - Affects ionospheric profile calculations |
| 28 | + - Reduces function call overhead by 68-71% |
| 29 | + |
| 30 | +2. **Vectorized Gaussian Integration** |
| 31 | + - Replaced 40-iteration explicit loop with NumPy vectorized operations |
| 32 | + - Applied to virtual height calculations (`get_virtual_height_gauss`) |
| 33 | + - Leverages NumPy's optimized C implementations |
| 34 | + |
| 35 | +3. **Vectorized Oblique Frequency Computation** |
| 36 | + - Eliminated 1,200 nested loop iterations |
| 37 | + - Uses NumPy broadcasting for batch operations |
| 38 | + - Significant impact on multi-frequency predictions |
| 39 | + |
| 40 | +4. **Optimized Fourier Series Calculations** |
| 41 | + - Replaced nested loops with NumPy dot products |
| 42 | + - Applied to `compute_fixed_map` function |
| 43 | + - Improves CCIR/URSI coefficient map computations |
| 44 | + |
| 45 | +## 📦 What's Changed |
| 46 | + |
| 47 | +### Changed |
| 48 | +- Optimized ionospheric profile calculations with binary search |
| 49 | +- Vectorized Gaussian integration in virtual height computations |
| 50 | +- Vectorized oblique frequency calculations |
| 51 | +- Optimized Fourier series computations with NumPy operations |
| 52 | +- Updated performance documentation with new benchmarks |
| 53 | + |
| 54 | +### Removed |
| 55 | +- Obsolete debug scripts (debug_*.py, analyze_*.py) |
| 56 | +- Obsolete test scripts (quick_*.py, simple_*.py) |
| 57 | +- Old generator archive (Dashboard/archive/old_generators/) |
| 58 | + |
| 59 | +### Fixed |
| 60 | +- Version number consistency across package files |
| 61 | + |
| 62 | +## 🔬 Validation Status |
| 63 | + |
| 64 | +- **86.6% validation accuracy** maintained (same as v1.0.0) |
| 65 | +- All 11 diverse test paths validated: |
| 66 | + - Short paths (150-500 km) |
| 67 | + - Medium paths (1,000-5,000 km) |
| 68 | + - Long paths (10,000+ km) |
| 69 | + - Polar propagation |
| 70 | + - Equatorial propagation |
| 71 | + - Solar minimum conditions |
| 72 | + - Solar maximum conditions |
| 73 | + |
| 74 | +## 📥 Installation |
| 75 | + |
| 76 | +### From PyPI (Recommended) |
| 77 | + |
| 78 | +```bash |
| 79 | +# Core library only |
| 80 | +pip install dvoacap |
| 81 | + |
| 82 | +# With dashboard |
| 83 | +pip install dvoacap[dashboard] |
| 84 | + |
| 85 | +# Full development installation |
| 86 | +pip install dvoacap[all] |
| 87 | +``` |
| 88 | + |
| 89 | +### From Source |
| 90 | + |
| 91 | +```bash |
| 92 | +git clone https://github.com/skyelaird/dvoacap-python.git |
| 93 | +cd dvoacap-python |
| 94 | +pip install -e . |
| 95 | +``` |
| 96 | + |
| 97 | +## 🚀 Quick Start |
| 98 | + |
| 99 | +```python |
| 100 | +from dvoacap import FourierMaps, ControlPoint, IonoPoint, compute_iono_params |
| 101 | +import math |
| 102 | + |
| 103 | +# Load ionospheric maps |
| 104 | +maps = FourierMaps() |
| 105 | +maps.set_conditions(month=6, ssn=100, utc_fraction=0.5) |
| 106 | + |
| 107 | +# Create control point |
| 108 | +pnt = ControlPoint( |
| 109 | + location=IonoPoint.from_degrees(40.0, -75.0), |
| 110 | + east_lon=-75.0 * math.pi/180, |
| 111 | + distance_rad=0.0, |
| 112 | + local_time=0.5, |
| 113 | + zen_angle=0.3, |
| 114 | + zen_max=1.5, |
| 115 | + mag_lat=50.0 * math.pi/180, |
| 116 | + mag_dip=60.0 * math.pi/180, |
| 117 | + gyro_freq=1.2 |
| 118 | +) |
| 119 | + |
| 120 | +# Compute ionospheric parameters |
| 121 | +compute_iono_params(pnt, maps) |
| 122 | + |
| 123 | +print(f"E layer: foE = {pnt.e.fo:.2f} MHz at {pnt.e.hm:.0f} km") |
| 124 | +print(f"F1 layer: foF1 = {pnt.f1.fo:.2f} MHz at {pnt.f1.hm:.0f} km") |
| 125 | +print(f"F2 layer: foF2 = {pnt.f2.fo:.2f} MHz at {pnt.f2.hm:.0f} km") |
| 126 | +``` |
| 127 | + |
| 128 | +## 📊 Features |
| 129 | + |
| 130 | +- **HF Propagation Prediction:** Maximum Usable Frequency (MUF), signal strength, reliability |
| 131 | +- **Ionospheric Modeling:** E, F1, F2, and Es layer calculations with CCIR/URSI coefficients |
| 132 | +- **Ray Tracing:** Multi-hop propagation path calculation |
| 133 | +- **Solar & Geomagnetic:** Real-time space weather integration |
| 134 | +- **Interactive Dashboard:** Web-based visualization with DXCC tracking |
| 135 | +- **Validation:** 86.6% accuracy against reference VOACAP output |
| 136 | + |
| 137 | +## 🔗 Links |
| 138 | + |
| 139 | +- **Documentation:** https://skyelaird.github.io/dvoacap-python/ |
| 140 | +- **Repository:** https://github.com/skyelaird/dvoacap-python |
| 141 | +- **Bug Tracker:** https://github.com/skyelaird/dvoacap-python/issues |
| 142 | +- **PyPI Package:** https://pypi.org/project/dvoacap/ |
| 143 | +- **Original DVOACAP:** https://github.com/VE3NEA/DVOACAP |
| 144 | + |
| 145 | +## 🙏 Acknowledgments |
| 146 | + |
| 147 | +- **Alex Shovkoplyas (VE3NEA)** - Original DVOACAP implementation |
| 148 | +- **Voice of America / ITS** - Original VOACAP development |
| 149 | +- Amateur radio and propagation modeling community |
| 150 | + |
| 151 | +## 📄 License |
| 152 | + |
| 153 | +MIT License - See [LICENSE](LICENSE) for details |
| 154 | + |
| 155 | +**Original DVOACAP:** Relicensed from Mozilla Public License v1.1 to MIT in May 2025 |
| 156 | + |
| 157 | +## 🎯 Coming Next |
| 158 | + |
| 159 | +- Comprehensive type hints throughout codebase |
| 160 | +- Enhanced Sphinx API documentation |
| 161 | +- Community engagement and integration examples |
| 162 | +- Performance profiling tools for user applications |
| 163 | + |
| 164 | +--- |
| 165 | + |
| 166 | +**For Amateur Radio Operators:** This tool helps predict HF propagation for better DX contacts! 73! 📻 |
0 commit comments