Немного академической науки вам, друзья.

# Полный научный аудит репозитория `FelixRLEPERS/crosscorr` (v1.5.0) **Объект:** Репозиторий `FelixRLEPERS/crosscorr` (релиз v1.5.0, 27 октября 2026 г.). Семейный научный проект (Алексей и Макарий Петровы). **Предмет:** Влияние геомагнитных бурь на распространение КВ-радиоволн (сеть WSPR).

1. Инженерный аудит

Версия 1.5.0 демонстрирует уровень зрелости кода, редкий для академических и citizen-science проектов: * **Тесты и CI:** Добавлено 102 новых теста (включая 43 для `safe_exec.py` и 24 для `power_curve.py`); всего 369 тестов, покрытие выросло до **85%**. Внедрен жесткий порог CI (`--cov-fail-under=70`). * **Исправления:** Устранены критические баги в `benchmark_utils.py` (передача флага `--null` в суррогатные тесты) и `mantel.py` (заполнение диагонали матрицы расстояний нулями). * **Безопасность:** Образовательный модуль для детей изолирован через `safe_exec.py` с AST-блокировкой опасных вызовов (`open`, `exec`, `import os`) и таймаутом 5 сек. * **Гигиена:** Удален мертвый экспериментальный код, применен форматтер `ruff`, настроены pre-commit хуки.

2. Методология

* **Данные:** 18 месяцев (апр. 2024 – сент. 2025), 39 456 часов, 198 штормовых часов (WSPR, $Kp$, $Dst$, $F10.7$). Отложенная выборка (held-out): янв–март 2026. * **Статистический фреймворк:** 1. **Residuals:** Вычитание сезонного среднего (`месяц × время_суток × день_недели`). Внедрение `day_of_week` снизило дисперсию на 12–16%. 2. **Block Permutation Test:** Блочная перестановка (блок = 24 ч, 10 000 итераций) для предотвращения leakage суточных циклов. 3. **FDR Control:** Коррекции Бенджамини-Хохберга (BH) и Бенджамини-Екутиели (BY) для 6 параллельных тестов. 4. **ESS:** Поправка на AR(1) автокорреляцию (фактический $N=482$ снижается до эффективного $ESS \approx 82$).

3. Научные результаты

1. **Подавление сигнала ($Kp \ge 5$, $p < 0.0001$):** 20м: $-27.7\%$; 40м: $-27.2\%$; 15м: $-38.7\%$. 2. **Scale-dependence:** Нелинейный рост эффекта: при $Kp \in [5, 6]$ падение ~18%, при $Kp \ge 7$ потери достигают 52–59%. 3. **Физика (Frequency Dependence):** Конкуренция двух механизмов — снижение MUF (доминирует на 20м/40м) и поглощение в D-слое (резко усиливается на 15м). 4. **Baseline Invariance:** Абсолютная потеря спотов на 40м остается неизменной при глобальном росте сети WSPR, указывая на фиксированную популяцию "уязвимых" трасс.

4. Критический аудит (Reviewer 2 Perspective)

**✅ Сильные стороны:** * Отрицательные контроли: $\le 1$ ложноположительного срабатывания на 45 шумовых парах ($\alpha=0.05$). * Успешная независимая репликация на held-out данных. * Детерминированные сиды (`np.random.default_rng(42)`) и открытый ETL-пайплайн. **⚠️ Риски и ограничения:** * **Data Availability:** `unified.parquet` исключен из Git. Рецензенты не смогут воспроизвести результаты без запуска ETL. *Требуется загрузка в Zenodo с DOI.* * **Малый held-out:** В отложенном периоде всего 23 штормовых часа (против 198 в обучении). Мощность недостаточна для точной оценки величины эффекта. * **Пространственная агрегация:** Глобальное усреднение маскирует региональные эффекты (PCA против среднеширотного MUF drop).

5. Итоговый вердикт

**Оценка: 8.0/10 (Accept with Minor Revisions)** Проект методологически выверен, а инженерная часть находится на уровне Enterprise-кода. Научная новизна (частотная/масштабная зависимость, инвариантность базовой линии) имеет высокую ценность для физики ионосферы. **Финальные шаги для публикации в *Space Weather*:** 1. Опубликовать `unified.parquet` в Zenodo, указать DOI в *Data Availability*. 2. Явно проговорить ограничения по объему held-out выборки (2026 г.) и эффекту глобального усреднения в разделе *Limitations*. 3. Усилить дискуссию о механизме "потолка MUF" (MUF ceiling dilution) для объяснения инвариантности на 15м диапазоне.