Skip to content

Загрузка новой таблицы из Vizier

В этой документации описана последовательность действий для загрузки новой таблицы из Vizier.

Установка окружения#

Если не сделано, установить базовое окружение можно при помощи этой инструкции.

Скачивание и загрузка таблицы из Vizier#

  1. Загрузить набор скриптов для leda:

    git clone https://github.com/HyperLEDA/scripts.git
    cd scripts
    

  2. Установить зависимости скриптов:

    uv sync
    

  3. Запустить загрузку:

    uv run hyperleda_scripts/cli.py vizier download -c <catalog_name> -t <table_name>
    

    catalog_name и table_name - имена каталога и таблицы из Vizier, которые хочется загрузить. Например, для каталога Siena Galaxy Atlas команда будет выглядеть вот так:

    uv run hyperleda_scripts/cli.py vizier download -c J/ApJS/269/3 -t J/ApJS/269/3/sga2020
    

    Во время загрузки будет выведена строка с table_name - сгенерированным названием загружаемой таблицы. Его стоит записать, так как оно понадобится для дальнейшей обработки.

  4. Ждать, пока загрузка кончится. Она состоит из двух шагов: скачивание таблицы из Vizier и загрузка этой таблицы в HyperLeda. Если на моменте загрузки в HyperLeda загрузка оборвётся, файл из Vizier останется и скачивать его заново не придётся.

    По итогам этого шага таблица будет загружена на уровень 0 БД.

Разметка столбцов таблицы#

Чтобы обработчик в дальнейшем понимал, какой столбец отвечает за какую физическую величину, нужно указать это. Обработчик пытается это сделать сам по информации о UCD или названиях столбцов, которые загружаются из Vizier. Тем не менее, это не всегда выходит сделать полностью корректно (например, в Vizier нет каких-то UCD). В этом случае можно помочь обработчику, а так же проверить, что он действительно смог обнаружить все нужные к загрузке столбцы.

Все операции тут будут происходить в веб-интерфейсе, открывающем доступ к методам API администраторского интерфейса базы данных напрямую. Найти этот интерфейс можно тут.

  1. Проверить валидацию таблицы поможет метод GET /admin/api/v1/table/validation. В него передаётся один аргумент - table_name, полученным из загрузки таблицы выше. В ответ будет выведен список ошибок, полученных в результате поиска колонок по каждой физической величине. Например:

    {
        "data": {
            "validations": [
                {
                    "validator": "ICRS",
                    "message": "Column RAJ2000 (for RAJ2000) does not have a valid angular unit"
                }
            ]
        }
    }
    

    Здесь "validator": "ICRS" значит, что ошибка получена при попытке получения колонки для каталога координат.

    Ошибка Column RAJ2000 (for RAJ2000) does not have a valid angular unit означает, что у колонки для прямого восхождения единицы измерения - не радианы, и не градусы. Такое может быть, если, например, в метаданных вообще не указаны единицы измерения.

    Если все колонки были успешно найдены, ответ метода будет иметь вид

    {
        "data": {
            "validations": []
        }
    }
    
  2. Для изменения метаданных таблицы есть метод PATCH /admin/api/v1/table. Один из принимаемых параметров - table_name - имя таблицы, указанное при загрузке. Метод позволяет сделать несколько действий:

    1. Поменять или проставить UCD у столбца таблицы.

      {
          "table_name": "my_table_name",
          "actions": [
              {
                  "type": "change_ucd",
                  "column": "column_name",
                  "ucd": "pos.eq.ra"
              }
          ]
      }
      

      Если проблема в разметке UCD, скорее всего, нужный UCD будет указан прямо в ошибке - обработчик лишь не понял, к какому столбцу он должен был быть отнесён. Нужно указать называние столбца. Для справки список UCD и их значений можно найти в спецификации IVOA.

    2. Поменять или проставить единицы измерения у столбца таблицы.

      {
          "table_name": "my_table_name",
          "actions": [
              {
                  "type": "change_unit",
                  "column": "column_name",
                  "unit": "km/s"
              }
          ]
      }
      

      Единицы измерения могут быть произвольной сложности. Для их парсинга используется astropy, так что список допустимых форм совпадает с тем, что принимает парсер этого модуля, но он очень широкий - в большинстве случаев об этом можно не думать.