Репозиторий больше не обновляется и помещен в архив.
Проект состоит из трёх частей: integration, vizualization, analysis.
Integration отвечает за перевод данных обсерватории в международные форматы. Это позволит использовать готовые программные пакеты для анализа данных.
Vizualization - модуль для визуализации данных. Он содержит в себе сервер, ответственный за создание интерактивных графиков на сайте.
Analysis - модуль отвечает за преобразование данных в матрицу объекты-признаки и последующую классификацию этих объектов.
Для того, чтобы установить пакет локально, воспользуйтесь pip
pip install pyrao
Если нет возможности установить компилятор C и операционная система Windows, можно воспользоваться следующей командой:
pip install pyrao --install-option --no-cython-build
Для того чтобы прочитать и откалибровать файл, лежащий по адресу ./path/to/obs_N1.pnthr
с помощью калибровочного файла, лежащего по адресу ./path/to/obs_N1.txt
, нужно запустить следующий скрипт
from pyrao import BSAData
path1 = './path/to/obs_N1.pnthr'
path2 = './path/to/obs_N1.txt'
data = BSAData()
data.read(path1)
data.calibrate(path2)
data.data # Итоговый массив с откалиброванными данными
Базовый класс, представляющий полученные с телескопа сырые данные - BSAData.
from pyrao import BSAData
data = BSAData()
Для того, чтобы преобразовать данные в формат, распознаваемый сторонними программами необходимо вызвать метод convert. Он принимает на вход список, состоящий из путей к файлам данных наблюдений и калибровочных данных, а также пути к директории, куда требуется записать новый файл. Можно также указать параметры limits* и beams**, которые содержат соответственно диапазон времени наблюдений и лучи радиотелескопа, для которых необходимо выполнить конвертацию.
*Наблюдения отсчитываются от нуля. Каждое наблюдение представляет собой данные, полученные за единицу времени, равную разрешению радиотелескопа (12,5 миллисекунд для больших данных).
**Лучи отсчитываются от нуля вне зависимости от стойки, для которой выполняется конвертация.
path1 = './path/to/obs_N1.pnthr'
path2 = './path/to/obs_N1.txt'
path3 = './path/to/'
data.convert([path1, path2, path3]) # Read and write 48 .fil files from
data.convert([path1, path2, path3], limits=[10, 1000], beams=[4, 9]) # Read and write beams #5 and #10 with observations from 11-th to 1000-th
В будущем будет реализована возможность чтения напрямую из базы данных.
Можно проделать действия, которые автоматически выполняет метод convert, самостоятельно. Ниже описываются методы, которые позволят это сделать.
Чтобы начать работать с данными, их необходимо прочитать. На текущий момент поддерживается чтение из файлов .pnt, .pnthr.
Для того, чтобы прочитать только часть временного интервала файла, нужно использовать параметр limits метода read. По умолчанию этот параметр равен None (метод читает файл полностью).
data.read(path1, limits=[0, 1000])
data.data # numpy.ndarray с данными наблюдений
Во время чтения происходит автоматическая корректировка лучей, которые были перепутаны с 2014 по 2016 гг.
В будущем возможно будет реализовано чтение файлов напрямую из базы данных.
Сырые данные необходимо откалибровать.
data.calibrate(path2)
data.data # numpy.ndarray с откалиброванными данными наблюдений
В будущем будет реализовано чтение таблицы эквивалентов напрямую из базы данных.
Для использования данных в дальнейшем анализе с помощью пакета PRESTO, необходимо преобразовать их в формат .fil, который распознаётся большинством нужных нам сторонних пакетов для обработки данных.
Метод write принимает на вход параметр beams, с помощью которого можно указать номера лучей радиотелескопа, которые необходимо записать в файлы. Каждый луч будет записан в отдельном файле. По умолчанию параметр beams равен None (записать все лучи).
data.write(path3, beams=[3], output_type='fil') # Write .fil with beam #4
data.write(path3, beams=[0, 24], output_type='fil') # Write .fil with beams #1 and #25
data.write(path3, beams=None, output_type='fil') # Write 48 separate .fil files
В заголовок файла .fil записываются данные о прямом восхождении и склонении на момент начала наблюдений для центральной частоты (формат .fil не позволяет записать координаты для каждой частоты).
В будущем будет реализована запись в формат PSRFITS.
На текущий момент написаны альфа версии функций визуализации сырых данных. В дальнейшем будет реализована логика серверного приложения, в том числе интеграция с базой данных, а также расширен список поддерживаемых графиков и диаграмм.
Необходимо создать интерфейс, взаимодействующий с программами PRESTO и Pulsar Feature Lab. На вход подается .fil файл, на выход - матрица объекты-признаки.