-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Проблема
Есть научный интерес получения расстояний до объектов. Сейчас это можно получить двумя способами:
- Сделать каталог оригинальных данных о расстояниях, полученных разными путями - стандартные свечи и линейки, например
- Из каталога красных смещений/гелиоцентрических скоростей по закону Хаббла получить расстояния до объектов.
Среди наблюдательных данных гелиоцентрических скоростей значительно больше - их легче получить. В связи с этим хочется получать расстояния из этих данных, но есть проблема - простые красные смещения (и вычисленные из них гелиоцентрические скорости) не будут учитывать пекулярные скорости галактик.
Чтобы их учесть, есть калькулятор пекулярных скоростей - https://edd.ifa.hawaii.edu/ (https://ui.adsabs.harvard.edu/abs/2020AJ....159...67K). На основе данных о расстояниях до галактик было посчитано и апроксимировано поле пекулярных скоростей.
В интерфейсе можно запрашивать результаты напрямую, но нам скорее интересно API - https://github.com/ekourkchi/Cosmicflows_API/blob/main/Cosmicflows_API.ipynb. На вход даётся список расстояний и координат, на выход - три компоненты пекулярной скорости. Проекцию этих компонент на лучевую скорость далее надо вычесть из агрегированных данных каталога красных смещений.
Основная проблема здесь заключается в возможности обрабатывать большие объёмы данных - из мелкого тестирования ответ API на 500 галактик (лимит интерфейса) составляет примерно 7 секунд, что на 5 млн галактик займёт около 20 часов. Из возможных решений я тут вижу только:
- Попытаться запрашивать это параллельнными потоками. В лучше случае (если обработка на стороне сервера будет делаться в несколько потоков) это сократит время в несколько раз, в худшем - не изменит (если обработка идёт в один поток).
- Запросить у команды доступ до оригинального кода обработки, упаковать его в docker-контейнер и запускать локально. Во-первых, это уберёт затраты на сетевые походы, что слегка уменьшит время ответа, во-вторых - позволит запустить это во столько потоков, во сколько хватит ядер на компьютере.
В обоих случаях есть смысл связаться с командой, чтобы либо предупредить их о том что мы можем начать читать большой нагрузкой, либо попросить у них само приложение.