ValerieKostiuk / Course-work

1 stars 0 forks source link

Данные из VENGA #3

Closed ValerieKostiuk closed 4 years ago

ValerieKostiuk commented 4 years ago

Я так понимаю мне дальше нужно начинать обрезать данные, исходя из того, что есть венговских фитсах. Вы обещали, что поможете мне с этим. Я в принципе посмотрела, как вы это делали в вашем коде . Я могу просто взять ваши функции. Но для начала мне нужно разобраться с самими данными из VENGA. Проблема в том, что я там вижу много NAN пикселей . Мне нужно эти фитсы как-то для начала обрезать,чтобы убрать эти пиксели?

Amarchuk commented 4 years ago

Там идея простая - в каждом фитсе есть небесные координаты, и с помощью astropy можно вырезать ту же область, что нам нужна. Можно напрямую использовать мои функции, еси там все понятно.

Можно не убирать пиксели без значений, просто мы их не учтем в конечной карте (покажем например серым цветом). Насколько их много? Можете картинку сюда запостить, например.

ValerieKostiuk commented 4 years ago

Два первых изображения из notes.ipynb, которые я вывожу , это данные из VENGA. Я хотела бы написать свою функцию, опираясь на ваш код. Поэтому, как только у меня появятся вопросы технического плана , я вам сразу буду сюда писать.

ValerieKostiuk commented 4 years ago

def get_cutout(fits_name, size=(106, 314)): data = fits.getdata(fits_name) data = np.squeeze(data) w = WCS(fits_name, naxis=2) cposition= SkyCoord('{} {}'.format(w.wcs.crval[0], w.wcs.crval[1]), frame='fk5', unit='deg', equinox='J2000.0') cposition= SkyCoord('24.174042 15.783472', frame='fk5', unit='deg', equinox='J2000.0') size = u.Quantity(size, u.arcsec) cutout = Cutout2D(data, cposition, size, wcs=w) return cutout, w 1 вопрос: Правильно ли я понимаю, что в cposition будут записаны координаты центрального пикселя изображения fits_name в небесных координатах? 2 вопрос: В size мы изначально забиваем каких-то два значения, затем мы эти два значения должны подать как аргумент функции Cutout2D в градусной мере. Правильно ли я понимаю, что изначально в size мы записываем размеры той области в пикселях , которую мы хотим вырезать, а u.Quantity(size, u.arcsec) просто переводит размеры из пикселей в то, что нам нужно?

Amarchuk commented 4 years ago

Да, думаю так есть. Сейчас точно не могу посмотреть (болею), но думаю там легко будет увидеть, если это не так - по несовпадению рукавов например

ср, 13 нояб. 2019 г., 23:31 LerkaKostuik notifications@github.com:

def get_cutout(fits_name, size=(106, 314)): data = fits.getdata(fits_name) data = np.squeeze(data) w = WCS(fits_name, naxis=2) cposition= SkyCoord('{} {}'.format(w.wcs.crval[0], w.wcs.crval[1]), frame='fk5', unit='deg', equinox='J2000.0') print cposition cposition= SkyCoord('24.176371524899999 15.7865508568', frame='fk5', unit='deg', equinox='J2000.0')

cposition= SkyCoord('24.174042 15.783472', frame='fk5', unit='deg', equinox='J2000.0') size = u.Quantity(size, u.arcsec) cutout = Cutout2D(data, cposition, size, wcs=w) return cutout, w

1 вопрос: Правильно ли я понимаю, что в cposition будут записаны координаты центрального пикселя изображения fits_name в небесных координатах? 2 вопрос: В size мы изначально забиваем каких-то два значения, затем мы эти два значения должны подать как аргумент функции Cutout2D в градусной мере. Правильно ли я понимаю, что изначально в size мы записываем размеры той области в пикселях , которую мы хотим вырезать, а u.Quantity(size, u.arcsec) просто переводит размеры из пикселей в то, что нам нужно?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/LerkaKostuik/Course-work/issues/3?email_source=notifications&email_token=AAH756DVAAQX335GCP7XATTQTRPZFA5CNFSM4JLHQS2KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOED7RPJQ#issuecomment-553588646, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAH756GMQHH43OXFNZ2YL73QTRPZFANCNFSM4JLHQS2A .

ValerieKostiuk commented 4 years ago

Пожалуйста, можете посмотреть конец моего файла main_program.ipynb. У меня что-то не очень получается обрезать фитсы по венговским данным. В данном случае у меня возникла проблема с тем,что у меня вроде бы должна обрезаться одна и та же область в венговском фитсе и фитсе из THINGS, но при этом у меня вырезается разное количество пикселей.

Amarchuk commented 4 years ago

@LerkaKostuik Там скорее проблема даже не в том, что размеры разные, а то что вырезались разные куски - это визуально видно, что они разные.

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

Про размерность: она и должна быть разной! Вы наверное думали, что мы вырезаем область N x M пикселей - но это не так, в текущей версии мы режем в угловых секундах. И даже если в пикселях - у одного телескопа разрешающая способность лучше, чем у другого. Мы можем с этим по-разному поступить - либо привести к одному разрешению, либо просто по координатам брать значения.

P.S. Я в верхнем комменте заметил как раз что ответил неправильно

В size мы изначально забиваем каких-то два значения, затем мы эти два значения должны подать как аргумент функции Cutout2D в градусной мере. Правильно ли я понимаю, что изначально в size мы записываем размеры той области в пикселях , которую мы хотим вырезать, а u.Quantity(size, u.arcsec) просто переводит размеры из пикселей в то, что нам нужно?

u.Quantity(size, u.arcsec) - просто присваивает числам размерность и ничего не переводит. Т.е. становится 300 arcsec, а не "300 пикселей для этой картинки переводим в угловые секунды". Думаю это можно легко понять, читая документацию :) В ноутбуках - help(комманда), например help(u.Quantity).

Amarchuk commented 4 years ago

По поводу разного разрешения: посмотрите n628_2D_small_v3.ipynb пункты 3.1 и 3.3. Там показано, как мы просто делаем второе изображение того же масштаба в пикселях - вырезая по координатам пиксели из первого. Это один путь, возможно не самый правильный, но сравнительно простой. Посмотрите, если будут вопросы - спрашивайте.

ValerieKostiuk commented 4 years ago

Я вроде разобралась, как исправить разрешение, теперь массивы данных имеют одинаковые размерности. Что мне дальше нужно сделать?

Amarchuk commented 4 years ago
ValerieKostiuk commented 4 years ago

Я сделала то же самое, что и вы в своей работе. Я нарисовала все шесть картинок вместе. Также я нашла две кривые вращения и вставила их в конце main_program.ipynb.

Amarchuk commented 4 years ago

Отлично!

velocity куб не нужен раз вы нашли кривую вращения, а нужен '$\Sigma_star$' - поверхностная плотность звезд (советую написать тех-ом где-нибудь себе в ноутбуке формулу двухжидкостной неустойчивости, чтобы помнить что нужно - и попрактиковаться в написании формул. Ноутбук - это документ, следует использовать все его возможности).

Тогда остался еще один шаг - нужно оцифровать кривую вращения (можете воспользоваться https://apps.automeris.io/wpd/) и вычислить эпициклическую частоту kappa, нарисовать её. Вставьте также ссылки на работы, откуда вы взяли кривые вращения. Обратите внимание, что

P.S. https://arxiv.org/pdf/1911.09692.pdf - вот например свежая статья о неустойчивости, правда для звездного диска. Это как пример что все это актуально и нужно

ValerieKostiuk commented 4 years ago

Во-первых, по поводу согласованности угла наклона. В той статье (https://arxiv.org/pdf/1808.07483.pdf) , из которой я взяла верхнюю кривую вращения, в качестве угла наклона берётся 61.3 . Этот автор ссылается на статью (https://arxiv.org/pdf/1101.2626.pdf), в которой это значение получено путём вычисления elliptical fits (не смогла нормально перевести). Далее я просмотрела другую статью (https://arxiv.org/pdf/1312.0604.pdf), из которой я брала нижнюю кривую скоростей. В ней автор получает значение 65 из формы внешних изофот. Затем я просмотрела другие статьи, в которых упоминался угол наклона, в них были следующие значения 65 ( https://arxiv.org/pdf/1609.06448.pdf), 60 (https://arxiv.org/pdf/1608.06626.pdf) , 52 (https://arxiv.org/pdf/1409.7982.pdf), 62 (https://arxiv.org/pdf/1406.4561.pdf), 63 (https://arxiv.org/pdf/1103.5540.pdf) Во-вторых, что касается кривой вращения, я не могу понять какую мне оцифровывать. Там есть fixed i и free i. Я думаю, что можно взять free i , т.к. в статье написано

the freely-varying inclination iteration more closely recovers the expected PA = 178◦ of NGC 3627

Значит ли это, что я могу просто взять и оцифровать кривую free i и, не умножая на sin i, утверждать, что она соответствует кривой скоростей с P.A. = 178?

Amarchuk commented 4 years ago

Отлично, значит из обзора следует, что мы условно можем считать наклон i=62±2.

что касается кривой вращения, я не могу понять какую мне оцифровывать.

Так они же почти совпадают? Если бы делал я, то взял бы обе, вычислил эпицик. частоту и увидел, что они почти не отличаются. Думаю можно взять просто free i и воспринимать ответ на ваш вопрос как "да".

Тут еще важно, какая именно это кривая вращения. Она тут получена по линиям CO, а не атомарного водорода, как делал я. Скорее всего это без разницы, но надо это понимать.

ValerieKostiuk commented 4 years ago

Я нашла данные Sigma_star, добавила их в ноутбук и построила эпициклическую частоту. Также я заметила, что данные из VENGA H_alpha и sigma_s на совпадают по координатам (посмотрите на картинку, на котором я вывела все обрезанные данные). В начале файла main_program.ipynb я попыталась обрезать sigma_s по H_alpha и получилось,что-то некрасивое.

Amarchuk commented 4 years ago

Сперва по кривой вращения: сняты точки хорошо! Но мне кажется, что там неправильная размерность получилась (в смысле у вас написано на кпк, но возможно это не так и там arcsec). Исправьте пожалуйста и приведите к кпк. С размерностями надо быть очень аккуратными.

Про несовпадение: скорее всего (я почти уверен) это связано с тем, что в cut_fits центр жестко задан и поэтому ошибка. Мне казалось, что данные VENGA можно просто использовать "как есть", т.к. это именно тот размер, к которому мы приводим. Тут я вижу два решения - простое и долгое. Простое - это просто берете те карты, что вы получили, и обрезаете по паре полосок так, чтобы совпало с sigma_s (надеюсь понятно что я имею в виду, на общей картинке видно где надо обрезать). Долгое и честное - возиться с центрами. Это правильно, но требует времени и по сути не приближает к решению. И это тоже опыт - не тратить время на побочные задачи (как и с размерностями выше).

И сразу новое: переведите интенсивности в поверхностные плотности I_CO -> Sigma_H2. Если тут у нас CO(2->1), то думаю формула (А3) из Leroy et al. 2008 подойдет.

ValerieKostiuk commented 4 years ago

Я не совсем понимаю, мне все данные обрезать вручную по sigma_s? Но ведь у меня же уже есть обрезанные по H_alpha данные , причем видно, что они все совпадают по спиральным рукавам. Может мне тогда взять любой уже готовый массив данных и по нему попробовать обрезать sigma_s?

Amarchuk commented 4 years ago

Смотрите, по финальной картинке, где 6 штук: все совпадают, кроме первой. Первый вариант, что я написал - это просто взять эти картинки (как массивы) и сдвинуть все (кроме первой) на одну строчку и столбец, а первую - тоже, но в другую сторону. Тогда они все будут покрывать одну и ту же область. То, что на первой координаты другие - об этом просто не думайте, это ошибка с неверным центром (главное мы видим, что область одна и та же). Если будет все еще совсем непонятно - спрашивайте.

ValerieKostiuk commented 4 years ago

Посмотрите, пожалуйста, что у меня получилось. Мне кажется нижние данные теперь куда-то поехали(

Amarchuk commented 4 years ago

Ну посмотрите - первые два рисунка должны совпадать по контурам, а они не совпадают. Во-первых не стоит использовать projection=first_data.wcs, если уже вырезали одинаковые массивы - он только путает. Во-вторых, я раньше не заметил - но сам размер вырезанной области как-то не очень (он не покрывает все данные VENGA - снизу обрезано, например). Т.е. нужно лучше size подобрать, чтобы все влезало. Полезно кстати каждый фитс с данными целиком рисовать оригинальный, чтобы видеть, что к чему (и не ошибаться). Думаю стоит вырезать все данные побольше и затем вернуться к вопросу о несовпадении размеров - если не получится, я сам сделаю.

Еще комментарий про сами фитсы: ngc3627_emom0_I_CO_J1-2_lwb2009.fits и NGC3627.phot.1_nonan.fits - это что и откуда? Первое выглядит как ошибки, а не сам фитс, а второе - это ИК данные или откуда? (мне же тоже надо их скачивать, чтобы локально запускать, вы же не выкладываете их в репозиторий) Не стесняйтесь писать комментарии к данным, чтобы было понятно.

И еще может быть удобно заводить отдельный issues под задачи, что я тут пишу, чтобы не забыть и чтобы удобно отмечать было. Можно использовать списки с чекбоксами:

ValerieKostiuk commented 4 years ago

Я что-то с данными сделала и вроде получилось. Что касается ваших комментариев, я немного попозже напишу в ноутбук, откуда я взяла данные. Было бы хорошо завести отдельный issues, действительно так было бы удобнее.

Amarchuk commented 4 years ago

Да, теперь похоже все совпадает.

ValerieKostiuk commented 4 years ago

Можете посмотреть тогда, какой конкретно мне файл нужно скачать из HERACLES. Я находила эти фитсы по следующему алгоритму:

Amarchuk commented 4 years ago

Вы все правильно сделали, только выбрали не тот - нужен без буквы "e" в названии. Обычно всегда так - с "е" это "error", и там обычно сильно меньше значения (потому что ошибки маленькие в основном по сравнению с основным изображением). В данном случае это тоже так.

ValerieKostiuk commented 4 years ago

Напишите, пожалуйста, что мне дальше нужно сделать. Я создала отдельный issues с задачами.

Amarchuk commented 4 years ago

А, я думал вы его сами наполните на основе того, что я написал. Сейчас напишу