Программа Spectral Density Analyzer представляет собой инструмент для построения и анализа спектральной плотности временных рядов. Принимая на вход один или несколько текстовых файлов с данными (должны содержать один столбец или два столбца, разделенных табуляцией), Spectral Density Analyzer строит файлы в формате .xlsx содержащие:
- график исходного сигнала;
- график спектральной плотности мощности сигнала (используя метод Уэлча);
- график спектральной плотности мощности сигнала в логарифмических шкалах с основанием 10 с линией степенного тренда и уравнением тренда.
Программа написана на Python 3.8 с использованием следующих внешних библиотек:
- pandas 1.4.2;
- scipy 1.8.1;
- prox_tv 3.3.0 (не поддерживается на Windows);
- xlsxwriter 3.0.3.
Взаимодействие пользователя с программой осуществляется посредством редактирования конфигурационного файла config.ini. Рассмотрим пример такого файла:
config.ini
[SECTION1]
PATH = data/Poland_interp_v.dat
FILTERING = 0
WINDOW = triang
[SECTION2]
PATH = data/S001R01_1_output.dat
FILTERING = 1
FILTERED_FREQUENCY = 500
WINDOW = hamming
Конфигурационный файл может содержать одну или несколько секций, в которых указываются параметры:
PATH – путь до файла с данными. Файл должен представлять собой один или два столбца разделенных табуляцией;
WINDOW – тип окна, который будет использоваться при построении спектральной плотности мощности сигнала. Может принимать значения: boxcar, triang, blackman, hamming, hann, bartlett, flattop, parzen, bohman, blackmanharris, nuttall, barthann;
FILTERING – включает или отключает режим фильтрации частот исходного сигнала. Может принимать значения 1 или 0;
FILTERED_FREQUENCY – значение в герцах, частоты ниже которого будут удалены из исходного сигнала.
Использование двух последних параметров требует наличия библиотеки prox_tv, которая недоступна для Windows. Тем не менее, программа будет работоспособна под Windows, если игнорировать эти параметры, установив значение FILTERING=0. Количество секций в конфигурационном файле не ограничено: секции будут выполнены параллельно, а результаты выполнения будут сохранены в директории output/.