waterfall-viewer v0.1.10
Крупная функциональная волна поверх v0.1.9: поддержка нового формата прошивки ASWF v5 (температура детектора), отдельная вкладка анализа неспектральных данных «Прибор», диалог отчёта о целостности при открытии файла, отключаемый оверлей температуры на 2D-спектрограмме, аудит-фиксы загрузчика по спецификации формата и приведение поля отчёта к тёмной теме.
Что нового
Чтение ASWF v5 — температура детектора (#DATA-2)
Прошивка firmware-v1.0.11 (#FW-41) пишет формат ASWF v5: перед полем crc32 в каждой строке добавлено temperature (float32, °C детектора), crc32 сдвинут на offset 16406 (covers=16406), row_stride=16410. Загрузчик читал stride и смещения полей из заголовка (row_fields), поэтому файл открывался и раньше, но температура терялась. Теперь она извлекается (обе ветки — без сжатия и RLE), хранится в модели (Spectrogram.temperature_c, NaN = прибор ещё не отдал значение) и доступна анализу.
Вкладка «Прибор» — анализ неспектральных данных (#DATA-3)
Новая вкладка сводит воедино всё, что прибор пишет помимо спектра:
- график мощности дозы (мкЗв/ч) по времени;
- график температуры детектора (°C) по времени;
- GPS-трек — точки маршрута, окрашенные по скорости счёта (cps);
- экспорт в CSV — единая таблица
index, t_offset_s, duration_s, cps, dose_rate_usv_h, temperature_c, latitude, longitude(отсутствующие ряды — пустые ячейки).
Отчёт о целостности данных при открытии файла (#UI-236)
При открытии .aswf показывается немодальный отчёт: путь, число срезов и каналов, суммарные отсчёты, время начала записи, длительность, проверка per-row CRC32 (для v4/v5 — OK / номера повреждённых строк / пропуск для сжатых файлов), версия формата, наличие данных дозы/температуры/GPS/baseline. Отчёт сохраняется в .txt кнопкой «Сохранить отчёт…»; также доступен из меню «Файл → Отчёт целостности…».
Ось времени и единицы на вкладке «Прибор» (#UI-237, #UI-238)
- #UI-237 — графики дозы и температуры фиксируются по оси времени от нуля до конца записи (раньше пустой график давал бессмысленный автодиапазон 0.1…0.9).
- #UI-238 — переключение единиц оси времени с / мин / ч, синхронно с общей кнопкой «Время:» на панели инструментов.
Оверлей температуры на 2D-спектрограмме (#UI-239)
Отключаемый флажок «Темп. (2D)» на панели инструментов рисует поверх 2D-карты кривую температуры вдоль оси времени: белая линия с чёрной обводкой (читаема на любой палитре), значения нормируются в полосу 5…95 % ширины карты, разрывы данных не соединяются, сверху появляется отдельная шкала °C. Включается только при наличии температуры в файле.
Исправления и надёжность
Аудит загрузчика против спецификации формата (#DATA-4)
Построчная сверка загрузчика с ASWF_FORMAT.md. Исправлены три граничных случая:
- t0 при не синхронизированных часах —
started_at == 0(по спеке «NTP не синхронизирован») давал фиктивную дату1970-01-01…; теперь время начала помечается как неизвестное, ось времени относительна. - baseline без размера — секция
baselineбез ключейchannels/countподставляла число каналов и читала 32 КБ мусора со сдвигом полезных данных; по спекеB = (channels ?? count ?? 0) × 4→ секции нет. - валидация заголовка — при
dtype/byte_order, отличных отuint16/little, разбор молча давал бы кашу; теперь честная ошибка загрузки.
Тёмная тема поля отчёта (#UI-240)
Поле отчёта целостности рисовалось системным белым фоном и выбивалось из тёмной темы приложения (в таблице стилей не было правила для многострочных полей). Приведено к теме: тёмный фон, светлый текст, зелёное выделение.
Установка
Распаковать waterfall-viewer-0.1.10-windows-x64.zip, запустить waterfall-viewer/waterfall-viewer.exe. Windows x64, отдельно ставить зависимости не нужно.
Технические данные
- Полный прогон тестов — 797 passed (headless-Qt, со scipy и sample-файлом).
- Сборка: PyInstaller onedir, Python 3.14, PySide6 6.11.1, pyqtgraph 0.14.0.
- Совместимость чтения: ASWF v1–v5, RadiaCode
.rcspg, ANSI N42.42.n42.