Как извлечь спектры галактик для разных радиусов в Python для спектров, полученных спектрографом с длинной щелью?

Я пытаюсь извлечь кинематику из эллиптической галактики NGC 4697, используя алгоритм коэффициента корреляции Фурье (FCQ), описанный Бендером ( http://adsabs.harvard.edu/full/1990A%26A...229..441B ). Я работаю со звездным спектром звезды K3-III hd132345 в качестве эталона и спектрами галактик вдоль большой оси NGC 4697. Оба спектра сняты спектрографом с длинной щелью. Я реализовал первую версию алгоритма FCQ, моя текущая проблема заключается в том, что я не совсем уверен, как извлечь спектры галактик для разных радиусов (я новичок в работе с астрофизическими спектрами в формате fits). Ниже я покажу свои первые строки кода для сбора данных.

file_temp = dir + '/hd132345.fits'              # template spectra: star hd132345 (K3-IIICN 2 B)
file_gal = dir + '/ngc_4697_major_axis.fits'    # galaxy spectra along major axis from ngc 4697`   
hdu_temp = fits.open(file_temp)
hdu_gal = fits.open(file_gal)

hdr_temp = hdu_temp[0].header
hdr_gal = hdu_gal[0].header
data_gal = hdu_gal[0].data
data_temp = hdu_temp[0].data

# extract wavelength array and flux
flux_gal = data_gal[0]
flux_temp = data_temp
w_gal = WCS(hdr_gal, naxis=1, relax=False, fix=False)
loglam_gal = w_gal.wcs_pix2world(np.arange(len(flux_gal)), 0)[0]
w_temp = WCS(hdr_temp, naxis=1, relax=False, fix=False)
loglam_temp = w_temp.wcs_pix2world(np.arange(len(flux_temp)), 0)[0]`

Графики flux_gal по loglam_gal и flux_temp по loglam_temp выглядят следующим образом (спектры ребинированы в loglam). Красное смещение еще не устранено. Мне было интересно, почему линии поглощения шаблона шире, чем у галактики, ведь на самом деле должно быть наоборот.

введите описание изображения здесь

В шапку моей галактики подходит файл:

введите описание изображения здесь

Я понимаю, что ключевые слова CRVAL1 и CRVAL2 описывают начальные значения ln lambda в A и радиус в угловых секундах. В то время как CDELT1 и CDELT2 описывают приращения ln лямбда и радиус. Так что у меня должен быть спектр для моей галактики каждые 0,2 угловых секунды. Я не уверен, как извлечь их из моих входных файлов, и был бы очень рад получить ответ. Должен ли я смещать свои спектры галактик для всех радиусов в систему покоя длин волн, или я могу как-то сделать это все заранее, так как красное смещение для всех радиусов должно быть одинаковым. Буду рад любым советам или комментариям по этому вопросу.


Благодаря комментарию Питера Эрвина результаты теперь выглядят следующим образом. Полное 2D-изображение спектрального изображения NGC-4697 вдоль большой оси (отображается с помощью SAOImage):

введите описание изображения здесь

Спектр центра галактики, взятый в строке 597. (flux_gal_center = data_gal(597,:)):

введите описание изображения здесь

Небольшой комментарий к (добавленному) спектральному изображению: если внимательно посмотреть на него, можно увидеть вращение галактики. Вертикальные темные полосы — это линии поглощения, которые над рядом центра галактики смещены влево (= синее смещение относительно центра галактики), а ниже — вправо (= красное смещение относительно центра галактики). Это круто.

Ответы (1)

Мне было интересно, почему линии поглощения шаблона шире, чем у галактики, ведь на самом деле должно быть наоборот.

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

Случилось так, что, определив спектр галактики как data_gal[0], вы извлекли первую (нижнюю) строку из 2D-изображения, которая находится далеко от фактического света галактики. Я бы предложил отображать ngc_4697_major_axis.fitsв программе отображения изображений FITS (например, SAOimage DS9 ). Спектр, соответствующий центру галактики, будет самой яркой линией, идущей по середине изображения. (Оси изображения — это длина волны в одном направлении и расстояние вдоль щели в перпендикулярном направлении.)

Вот пример с веб-страницы прибора Gemini GMOS . Вы можете видеть яркую зону, проходящую через середину изображения; это центр галактики, который становится тусклее по мере продвижения вверх или вниз (т. е. вдоль щели в любом направлении):введите описание изображения здесь

Выясните, какой строке или строкам это соответствует, и извлеките их с помощью flux_gal = data_gal[n_row,:](для одной строки) или flux_gal = np.mean(data_gal[n_row1:n_row2,:], 0)для получения среднего значения строк с n_row1 по (n_row2 - 1).

(Помните, что Python и Numpy обрабатывают координаты изображения как [номер_строки, номер_столбца] = [y, x], где x и y соответствуют нормальным координатам, когда изображение отображается в SAOimage DS9.)

Чтобы извлечь спектры на разных радиальных расстояниях от центра галактики, сделайте то же самое, но выберите строки (или диапазоны строк) выше или ниже строки, соответствующей центру галактики. По мере удаления от центра соотношение S/N будет ухудшаться, поэтому вам, вероятно, потребуется начать суммирование или усреднение по нескольким рядам.

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

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

Красное смещение для всех радиусов почти наверняка не будет одинаковым, поскольку красное смещение на любом заданном радиусе представляет собой сумму красного смещения галактики (Хаббловский поток + пекулярная скорость галактики) и средней скорости вращения звезд на этом радиусе . Некоторые галактики ("медленные ротаторы") могут почти не вращаться, но NGC 4697 является "быстрым ротатором", и я полагаю, что скорость вращения достигнет ± 100 км/с в радиусе 10 угловых секунд от ядра галактики вдоль большой оси.

Я очень благодарен за любезную поддержку, спасибо. Так что я могу взять спектр в каждом ряду от центра. Верно ли, что, когда я буду использовать спектральную информацию строки 598, расстояние от центра теперь будет соответствовать 0,2, как в радиусах? Поскольку ключевое слово CRDELT2 имеет значение 0,2 ? Предположим, я хочу рассчитать расстояние от центра галактики из строки 450. Будет ли радиус R соответствовать: R=CRVAL2+(450-1)*CDELT2 ?
@trynerror 1. Я полагаю, что CDELT=0,2 означает, что расстояние вдоль щели составляет 0,2 угловых секунды на пиксель, хотя было бы неплохо, если бы ключевые слова CTYPE* ​​имели значения, а не были пустыми. Я не совсем уверен, что вы должны слепо полагаться на ключевое слово CRVAL2; вероятно, безопаснее игнорировать его и определить центральную (рядную) координату самостоятельно. Тогда радиус от центра строки Y будет (Y - Y_cen) * CDELT2.
Если вы сможете отследить исходную бумагу, из которой были взяты эти данные, она может сказать вам, каково было расстояние вдоль щели в угловых секундах.
да, мне сказали, что CDELT=0,2 означает 0,2 ас/пиксель. На самом деле я немного не уверен, как определить точную «центральную» строку, поскольку не так просто различить разные уровни яркости в яркой центральной области спектра.
Я бы определил центральную линию, найдя максимум (например, подогнав гауссиану) к профилю интенсивности суммарных значений линии.