Звёзды-родственники: зачем и как мы их ищем, данные + код (Python)

С древних времён человек стремится найти ответы на вопросы о своем существовании, обращая взор к небу. Исследование звёзд, как ключа к расшифровке тайн космоса, занимает центральное место в нашем стремлении к пониманию происхождения и эволюции вселенной.

В настоящее время, благодаря передовым обсерваториям, космическим телескопам и миссиям, включающим (но не ограничивающимся) Hubble, Kepler, Gaia, возможности для изучения звезд и их скоплений вышли на новый уровень. Технологии позволяют не только проникнуть в самые далекие уголки космоса, но и наблюдать реальность с невиданной ранее детализацией. Благодаря им и обнаруживаются «звёзды-родственники» (т.е. образовавшиеся из одного облака). Эти объекты обладают схожими характеристиками, включая химический состав, возраст и скорость движения.

Выявление звезд общего происхождения имеет важное значение для наших попыток понять устройство мира на глобальном уровне. В частности, это даёт возможности:

  1. лучше понять эволюцию галактик. Например, обнаружение звёзд со схожими характеристиками и химическим составом позволяет создать мозаичный портрет галактических процессов, раскрывая, как звезды взаимодействуют с окружающей средой, и какие факторы влияют на формирование разнообразных элементов;

  2. исследовать гравитационные взаимодействия в галактическом масштабе. Звезды, рождённые из одного источника, предоставляют уникальную возможность анализа их взаимосвязей, раскрывая законы взаимодействия и динамику их систем;

  3. изучать внутренние процессы и отследить химические элементы, выбрасываемые звездами в космическое пространство. Это становится возможным благодаря, например, спектроскопии — методу изучения взаимодействия материи с излучением различных длин волн, позволяющему анализировать свойства и состав материи, определять ее структуру и композицию;

  4. обнаружить планеты, имеющие потенциал стать колыбелью жизни или являющиеся таковыми. Схожие параметры звезд, рожденных из одного материнского облака, как раз способствуют выявлению систем, где возможно существование жизни, открывая новые горизонты в поиске экзопланет и условий возникновения живых организмов.

Так что каждая звезда становится своеобразным артефактом, раскрывающим часть загадок нашего космического происхождения.

Если у Вас есть желание попробовать себя в роли астрофизика и отправиться в астрономическое путешествие, предлагаю свою программу в качестве транспортного средства. Код включает двухэтапный анализ данных Gaia, реализованный через применения метода кластеризации HDBSCAN и фотометрической валидации по сходству с изохроной, с целью выявления звёзд общего происхождения. Все необходимые для погружения материалы, включая ссылку на реальные данные аппарата Gaia (Европейское космическое агентство), находятся в моём репозитории Astronomy Data Analysis Tool (ADAT_co) на GitHub.

Gaia — спутник, запущенный Европейским космическим агентством в 2013 году с целью составления самой подробной карты нашей галактики. Предоставляет информацию о миллиардах звезд, их распределении, движении, свойствах и т.д. Gaia измеряет позиции звезд и изменения этих позиций с высокой точностью, создавая наиболее полную карту.

Техническая Сторона: методы и реализация

Загрузка и подготовка данных

Программа предполагает, что данные будут подгружены в формате FITS (Flexible Image Transport System), который часто используется в астрофизике. Для открытия файла использована библиотека astropy.io.fits, затем данные структурируются в удобную для работы форму с использованием numpy и pandas.

fits_file_path = 'Ваш путь к файлу'
hdulist = fits.open(fits_file_path)
data = hdulist[1].data
hdulist.close()

На следующем шаге выбираются координаты, которые могут быть ключевыми для выявления звезд с общим происхождением:

selected_cols = ['ra', 'dec', 'pmra', 'pmdec', 'parallax', 'radial_velocity']
X = np.array([data.field(col) for col in selected_cols]).T

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

О координатах:
Right Ascension (ra) и Declination (dec): указывают на положение объекта. Звёзды, рожденные в одном регионе, могут иметь схожие координаты на небесной сфере.
Proper Motion in Right Ascension (pmra) и Proper Motion in Declination (pmdec): собственное движение звезд, представленное этими координатами, может указывать на их общее происхождение, так как звезды, образованные в одном регионе, могут иметь схожие движения.
Parallax (parallax): параллакс — угловое смещение звезды на фоне ближайших звезд из-за движения Земли вокруг Солнца. Он может предоставить информацию о расстоянии до звезды и помочь идентифицировать звезды с общим происхождением.
Radial Velocity (radial_velocity): представляет собой скорость удаления или приближения звезды относительно наблюдателя. Звезды, рожденные из общего облака, могут иметь схожие радиальные скорости.

Двухэтапный анализ

1. Кластеризация с HDBSCAN

Первый применяемый метод — HDBSCAN (Hierarchical Density-Based Spatial Clustering of Applications with Noise) — алгоритм кластеризации, который отлично подходит для обнаружения кластеров различной формы и размеров в данных. Применяется с помощью одноимённой библиотеки.

clusterer = hdbscan.HDBSCAN(min_cluster_size=10, min_samples=5)
labels = clusterer.fit_predict(X)

min_cluster_size определяет минимальное количество точек, которые должны образовать кластер. Это позволяет фильтровать небольшие скопления данных, не являющиеся значимыми.

min_samples задает минимальное количество точек, расположенных по соседству, которое должно присутствовать внутри минимального кластера. Это управляет чувствительностью алгоритма к выбросам и компактности кластеров.

2. Фотометрическая валидация по сходству с изохроной

После кластеризации применяется фотометрическая валидация по сходству с изохроной. Изохрона представляет собой кривую в цвет-магнитудном пространстве, которая показывает ожидаемое положение звезд.

Изохроны добавляются для различных координат, чтобы улучшить интерпретацию данных, которая включает в себя проверку корректности данных в фотометрических столбцах:

valid_mask = np.isfinite(data['bp_rp']) & np.isfinite(data['phot_g_mean_mag'])
valid_cluster_mask = np.isin(np.arange(len(data)), np.nonzero(cluster_mask)[0]) & valid_mask

Valid Mask: создается маска для проверки корректности данных в столбцах bp_rp и phot_g_mean_mag. Только те точки, где оба значения корректны, будут включены в маску.

Valid Cluster Mask комбинируется с маской кластера. Таким образом, получается общая маска, фильтрующая только те точки, которые принадлежат выбранному кластеру и прошли фотометрическую валидацию.

Визуализация

Для визуализации результатов традиционно используется matplotlib. Создаются графики для трех координатных пар, в каждой из которых выделяются точки, соответствующие выявленным звёздным скоплениям, где объекты произошли из одного облака.

Ниже представлена функция, которая визуализирует диаграмму рассеяния. Звёзды на графике отображаются с использованием scatter (серый цвет выбран для фоновых точек, красный — для относящихся к скоплению). С помощью cluster_mask происходит разделение звёзд на фоновые и принадлежащие скоплению.

def plot_cluster_with_isochrone(ax, cluster_mask, data, iso_data, coord_pair, cluster_color, label):
ax.scatter(data[coord_pair[0]][~cluster_mask], data[coord_pair[1]][~cluster_mask], color='gray', label='Other Stars', s=5, alpha=0.7)
ax.scatter(data[coord_pair[0]][cluster_mask], data[coord_pair[1]][cluster_mask], color='red', label='Cluster Stars', s=5, alpha=0.7)
ax.plot(iso_data['G_BPmag'], iso_data['Gmag'],
color='darkblue', linestyle='dashed', label='Isochrone', linewidth=2)
ax.set_xlabel(coord_pair[0])
ax.set_ylabel(coord_pair[1])
ax.legend()

Сохранение результатов

Полученные изображения сохраняются в формате TIFF:

output_filename = f'{output_directory}cluster_{cluster_label}_isochrone.tif'
plt.savefig(output_filename, bbox_inches='tight', dpi=300)

Таким образом, весь код организован вокруг метода кластеризации с последующим применением фотометрической валидации по сходству с изохроной для обнаружения и исследования звёзд с общим происхождением.

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

Ниже представлены 2 примера — результаты работы программы для ознакомления.

Красные точки — выявленные молодые звёзды вблизи М45 (Плеяды), сформированные приблизительно в одно и то же время из одной и той же области межзвездного вещества. Серые точки — «фоновые» звёзды.

Пример 1

Пример 1

Пример 2

Пример 2

Такой результат указывает на связь между звездами, которую можно характеризовать общим происхождением и нахождением в схожих физических условиях. В то же время, в данном примере наблюдается интересное явление, когда модель изохроны отвечает данным Gaia в координатах движения звезд по небесной сфере (pmra и pmdec), их параллаксом (parallax) и радиальной скоростью (radial velocity), но не совпадает в координатах прямого восхождения (ra) и склонения (dec). Это говорит о том, что выбранная модель изохроны имеет ограничения, которые могут влиять на ее совмещение с данными.

Вы можете самостоятельно поэкспериментировать с набором изохрон в одноимённом файле в репозитории GitHub или, например, использовать библиотеку isochrones для получения расширенных возможностей.

О чём могут сообщить результаты работы программы

На примере parallax-radial velocity и pmra-pmrdec:

Расстояние между звёздами в графиках parallax-radial velocity и pmra-pmrdec говорит о том, как они двигаются по небесной сфере и как взаимодействуют друг с другом. Если объекты принадлежат одному скоплению, то их скорости и угловые положения будут связаны общим движением скопления, что обычно отражается на взаимном расположении звёзд в этих графиках. При этом, если звёзды образуют сложную структуру, которая может казаться хаотической или случайно распределённой, это говорит о таких процессах, как влияние гравитационных взаимодействий в звездном скоплении.

Общие замечания

В ходе работы с программой Вы сможете наблюдать интересные сценарии, которые найдут своё отражение в графиках. Это, в частности, связано со следующими факторами:

  1. Внутри скопления звезды гравитационно взаимодействуют между собой. Некоторые из них могут быть выброшены из скопления в результате взаимодействий, что приводит к увеличению расстояния между оставшимися звездами.

  2. Объекты в скоплении могут терять энергию из-за взаимодействия с окружающим газом или другими звездами. Это может замедлять их движение, что приводит к увеличению расстояния между объектами в скоплении со временем.

  3. Скопления могут подвергаться сложным эволюционным процессам, таким как взрывы сверхновых или влияние гравитационных возмущений извне, что в конечном итоге может привести к тому, что звезды в скоплении будут находиться на большом расстоянии друг от друга.

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

P.S.: Обратите внимание: данные Gaia содержат большое количество характеристик звёзд, но для решения поставленной задачи мы используем лишь их малую часть.

Дополнение:

Концепция изохроны является упрощенной моделью эволюции звезд. Изохроны строятся на основе теоретических моделей эволюции звезд, учитывающих физические процессы, такие как ядерные реакции, трансфер энергии и другие базовые физические явления, влияющие на светимость и иные характеристики звезд. Однако существует ряд аспектов, которые могут быть недостаточно учтены в этих моделях, что может привести к расхождениям между изохронами и реальными наблюдениями звездных скоплений. В частности, звездные скопления могут иметь более сложные динамические процессы внутри себя (например, гравитационное влияние), которые не всегда учитываются в изохронах.

Буду рада обратной связи в виде комментариев, вопросов, предложений. Если тема покажется интересной, буду её продолжать, раскрывая возможности определения возраста звёзд, скорости их вращения, анализа содержания различных элементов и получения другой информации, включая оценку размеров и форм. Если Вы, попробовав, захотите внести изменения в код, например, решите улучшить визуализацию, — буду рада и признательна!

© Habrahabr.ru