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реализует все наши формулы — но понимать их всё равно нужно.