FITS, Gaia и astropy

Реальная астрономия работает не с числами из учебника, а с гигантскими каталогами и снимками. Познакомимся с инструментами.

FITS (Flexible Image Transport System) — стандартный формат файлов в астрономии для хранения снимков, спектров и таблиц вместе с метаданными.

Формат FITS

Любой астрономический снимок — это таблица чисел (яркость в каждом пикселе) плюс заголовок с метаданными: координаты центра, время съёмки, фильтр, телескоп. Всё это хранится в формате FITS — он используется уже несколько десятилетий и понятен всем телескопам мира. Файл FITS состоит из блоков: текстовый заголовок (ключ = значение) и за ним массив данных.

SIMPLE  =                    T  / стандартный FITS
BITPIX  =                  -32  / 32-битные числа с плавающей точкой
NAXIS   =                    2  / двумерный массив (изображение)
NAXIS1  =                 2048  / ширина в пикселях
NAXIS2  =                 2048  / высота в пикселях
OBJECT  = 'M31     '            / снимаемый объект
EXPTIME =                300.0  / выдержка в секундах
END

Читают FITS на Python через astropy.io.fits. Это уже не stdlib, поэтому в браузере код не запустится — но в реальной среде он выглядит так:

from astropy.io import fits

# Открываем файл и читаем данные и заголовок
with fits.open("image.fits") as hdul:
    data = hdul[0].data       # двумерный массив яркостей (numpy)
    header = hdul[0].header   # метаданные
    print(header["OBJECT"], header["EXPTIME"])
    print("Размер:", data.shape)

Каталог Gaia

Космический телескоп Gaia (ESA) измерил положения, расстояния (параллаксы) и собственные движения почти двух миллиардов звёзд с беспрецедентной точностью. Это золотой стандарт для всего, что мы изучали: координаты, параллаксы, лестница расстояний. Доступ к каталогу — через библиотеку astroquery, которая шлёт запросы на серверы ESA и возвращает таблицы.

from astroquery.gaia import Gaia

# Запрос: 5 самых ярких звёзд с хорошим параллаксом
query = """
SELECT TOP 5 source_id, ra, dec, parallax, phot_g_mean_mag
FROM gaiadr3.gaia_source
WHERE parallax > 100
ORDER BY phot_g_mean_mag ASC
"""
job = Gaia.launch_job(query)
results = job.get_results()
print(results)

Как работает под капотом

Обратите внимание: запрос к Gaia — это обычный SQL. Каталог хранится в базе данных, и астроном фильтрует миллиарды звёзд языком запросов (на сервере используется диалект ADQL, близкий к SQL). Полученную таблицу astropy представляет как объект Table, удобный для работы. Все формулы, что мы реализовали вручную (параллакс → расстояние, величины, координаты), в astropy уже встроены в модулях astropy.coordinates и astropy.units — но теперь вы понимаете, что у них внутри.

Частые ошибки

  • Пытаться запустить код с astropy/astroquery в браузере — это сторонние пакеты, нужна полная среда Python.
  • Игнорировать заголовок FITS — без метаданных пиксели бессмысленны.
  • Забывать про единицы: Gaia даёт параллакс в миллисекундах дуги, а формула $d = 1/p$ ждёт секунды.

Итог

  • FITS — универсальный формат астроданных: заголовок с метаданными плюс массив.
  • Gaia — каталог ~2 млрд звёзд; доступ через astroquery и SQL-подобные запросы.
  • Библиотека astropy реализует все наши формулы — но понимать их всё равно нужно.
Проверьте себя
1. Что такое формат FITS?
AЯзык программирования для астрономии
BСтандартный формат файлов для снимков, спектров и таблиц с метаданными
CБаза данных звёзд
DТип телескопа
2. Почему код с astropy не запускается кнопкой в браузере?
Aastropy — сторонний пакет, в браузере доступна только стандартная библиотека Python
Bastropy слишком быстрый
CБраузер не поддерживает астрономию
Dastropy написан не на Python
3. Что измерил космический телескоп Gaia?
AТолько яркость Солнца
BПоложения, параллаксы и движения почти 2 млрд звёзд
CТемпературу планет
DСостав галактик