Skip to main content

Универсальный пакет для синтеза изображений srhimages

Программа srhimages предоставляет функции для синтеза радиоизображений из данных Сибирского Радиогелиографа (SRH).

Установка

Замечание: код Сергея Анфиногентова работает на python 3.10 до 3.12, код Марии Глобы - только на 3.10! Поэтому желательно устанавливать именно 3.10. Для расчётах на удалённых машинах может быть допустимо установить любую версию питона. При расчётах через Dask желательно так же использовать 3.10.

conda env create -n srhsynth python=3.10
conda activate srhsynth

pip install -U "srhimages[all] @ git+https://git.iszf.irk.ru/fedenev/srhimages"
# или [globa], [anfinogentov] вместо [all] чтобы выбрать только конкретный расчётный код

Если производится свежая установка с использованием расчётного кода Марии Глобы, то требуется обновить данные CASA:

python3 -m casaconfig --update-all

Использование уже установленного окружения на сервере

conda activate /opt/miniconda3/envs/srhsynth/

Интерфейс командной строки

srhimages create_synth_tasks --help
srhimages run_computation --help

Использование в своих скриптах

import srhimages

help(srhimages.create_synth_tasks)
help(srhimages.run_computation)

Запуск интерфейса в браузере

srhimages-standalone

Описание команд

Функции:

  1. server_calibrate(task_list, algorithm, save_to=None, search_window="15min")

    • Назначение: Обрабатывает список некалиброванных задач, чтобы назначить им калибровки, предоставленные командой SRH.

    • Аргументы:

      • task_list: Список задач для вычисления или путь к файлу JSON с списком задач.
      • algorithm: "globa" или "anfinogentov".
      • save_to (необязательно): Путь к файлу JSON для сохранения списка задач.
      • search_window (необязательно): Временное окно (-search_window/2, +search_window/2), в котором калибровка считается допустимой. По умолчанию: "15min".
    • Возвращает:

      • calibrated_tasks: Список задач с доступным объектом ["gains"] в каждой из них, если соответствующие серверные калибровки были найдены, в противном случае – задачи, которые были переданы изначально.
  2. create_synth_tasks(time1, time2=None, cadence="15min", frequencies="all", save_to=None, average_width=20, average_unit="scans", average_position="after", average_mode = "visibilities", output_polarizations = "IV", naxis=512, cdelt=4.9, clean_disk=True, compressed=True)

    • Назначение: Создает задачи для кластерной работы по синтезу радиоизображений с телескопа.

    • Аргументы:

      • time1: Начало наблюдения в формате 'YYYY-MM-DD HH:MM:SS'.
      • time2 (необязательно): Конец наблюдения в том же формате.
      • cadence (необязательно): Интервал времени между каждым наблюдением в формате "NNmin" или "NNs". По умолчанию: "15min".
      • frequencies: Список частот для наблюдения в МГц или "all" в виде строки.
      • save_to (необязательно): Путь к файлу JSON для сохранения списка задач.
      • average_width (необязательно): Количество сканов или секунд для усреднения. По умолчанию: 20.
      • average_unit (необязательно): Могут быть "scans" или "seconds". По умолчанию: 'scans'.
      • average_position (необязательно): Временное окно для усреднения. Может быть 'after', 'before' или 'center'. По умолчанию: 'after'.
      • average_mode (необязательно): Режим усреднения. Может быть "visibilities", "gridding" или "images". По умолчанию: 'visibilities'.
      • output_polarizations (необязательно): Могут быть 'IV' или 'RL'.
      • naxis (необязательно): Количество пикселей вдоль каждой оси выходного изображения. По умолчанию: 512.
      • cdelt (необязательно): Размер каждого пикселя в угловых секундах. По умолчанию: 4.9 для SRH.
      • clean_disk (необязательно): Флаг для включения/отключения очистки необработанного изображения. По умолчанию: True.
      • compressed (необязательно): Флаг для включения/отключения сжатия FITS выходного изображения. По умолчанию: True.
    • Возвращает:

      • Список задач синтеза (каждая задача – Python dict) для отправки в кластерную работу.
  3. run_computation(task_list, algorithm, cache_dir="./images/raw/", out_dir="./images/out/", ftp_server="ftp.rao.istp.ac.ru", n_threads=5, calibrate="prefer_server", calibrated_save_to=None, calibrations_search_window="15min", skip_clean=False, input_dir = None, cluster_object="local")

    • Назначение: Выполняет локальные вычисления для заданного списка задач.

    • Аргументы:

      • task_list: Список задач для вычисления или путь к файлу JSON с списком задач.

      • algorithm: "globa" or "anfinogentov".

      • cache_dir (необязательно): Директория для хранения загруженных файлов SRH.

      • out_dir (необязательно): Директория для хранения синтезированных изображений.

      • ftp_server (необязательно): Адрес FTP сервера для загрузки файлов. По умолчанию без схемы, загрузка осуществляется HTTP.

      • n_threads (необязательно): Количество потоков для вычислений (по умолчанию: 5).

      • calibrate: "prefer_server" или "from_scratch".

      • calibrated_save_to (необязательно): Путь к файлу JSON для сохранения списка откалиброванных задач.

      • calibrations_search_window (необязательно): Временное окно (-search_window/2, +search_window/2), в котором серверная калибровка считается допустимой. По умолчанию: "15min".

      • skip_clean (необязательно): Только калибровать изображения и не выполнять этап CLEAN и синтеза изображений. По умолчанию: False.

      • input_dir (необязательно): Директория, содержащая входные файлы, в случае если NAS SRH смонтирован там. Обычно None.

      • cluster_object: Тип объекта кластера для вычислений, 'local' для локальных вычислений (по умолчанию: 'local'). Другие варианты включают передачу любого типа объекта, который принимает метод .map, например объект Dask SSHCluster, и т.д.

    • Возвращает:

      • results: Вычисленные результаты на основе списка задач.
    • Примечания:

      • Если task_list – строка или Path, он будет загружен в формате JSON.

      • Загружает исходные файлы с FTP сервера в кэш-директорию.

      • Калибрует задачи, используя серверные калибровки или локально.

      • Вычисляет задачи, используя локальный кластер или указанный объект кластера.

      • Если объект cluster_object не 'local', он использует указанный объект кластера для вычислений.

      • В случае ошибки во время вычислений выводится стек трассировки.