![На первую страницу](http://images.astronet.ru/img/bookicon.gif)
Введение в IRAF
Этот документ является кратким введением в IRAF (the Image Reduction and Analysis Facility). IRAF
- это "универсальный пакет программ для обработки и анализа астрономических
данных", разработанный группой IRAF в Национальной Оптической Астрономической
Обсерваториии (NOAO). Это учебное
пособие может стать хорошим вступлением для
студентов, которые начинают научную работу и нуждаются в изучении IRAF. Это
пособие отражает только основные возможности IRAF, некоторые примеры,
рассмотренные в пособии, основаны на нашем личном опыте. На этих примерах вы
сможете изучить более сложные программные пакеты.
Данное пособие было составлено Вольновой А.А.(alinus@yandex.ru) и Шульгой А.П.(babouche@yandex.ru) на основе документа Джоша Валавендера Introduction to IRAF.
Скачать сам пакет программ IRAF можно на официальном сайте http://iraf.noao.edu/. Также вы можете воспользоваться уже готовым архивом iraf-2.12.2a.slackware-10.2.tar.gz (40Mb). Файл README.iraf содержит краткое пояснение к нему).
Этот архив был установлен на Linux Slackware 10.2.
Оглавление
- Конфигурация и запуск IRAF
- Взаимодействие с CL.
- Ximtool и отображение картинок.
- Различные подсказки при работе с CL.
- Первичная обработка данных изображений.
- Первичная обработка спектроскопических данных.
- Обзор обработки спектроскопических данных.
- Определение оси дисперсии.
- Подготовка APALL.
- Запуск APALL: определение апертуры.
- Запуск APALL: определение фона.
- Запуск APALL: определение следа.
- Запуск APALL: извлечение спектра.
- Калибровка спектра по длинам волн.
- Согласование спектрального разрешения и изображения.
- Применение спектрального разрешения.
- Использование splot для просмотра откалиброванного спектра.
- Альтернатива команде APALL.
- Обработка фотометрических данных.
1. Конфигурация и запуск IRAF
1.1 Предварительные замечания
При работе с IRAF вы взаимодействуете с двумя командными средами: UNIX и IRAF CL (CL поддерживает интерфейс командной строки). Чтобы провести различия между этими двумя командными строками, мы будем присоединять командную подсказку к строке со всякой командой, которую мы приводим в качестве примера. При работе в UNIX мы будем использовать %, а при работе в IRAF CL - cl>. Заметьте, что подсказки, которые вы видите при работе в вашей системе, могут отличаться от этих. В этом пособии мы предполагаем , что читатель уже неплохо разбирается в UNIX. Если вам неизвестен UNIX, вы можете использовать пособие Джоша Валавендера по UNIX.
Так же как и UNIX, IRAF чувствителен ко всем командам и названиям файлов. Файл image.fits отличается от файла Image.fits и от файла image.FITS, так что будьте осторожны с большими и маленькими буквами.
1.2 Использование команды mkiraf.
IRAF требует конфигурационный файл (login.cl) и папку для сохранения параметров пользователя (uparm). Рекомендуется создать папку IRAF в своей домашней директории (~/iraf/) для хранения этих файлов. Команда mkiraf создает необходимые login.cl и uparm файлы в директории, в которой вы работаете.
% cd % mkdir iraf % cd iraf % mkiraf -- creating a new uparm directory Terminal types: xgterm,xterm,gterm,vt640,vt100,etc. Enter terminal type: xgterm A new LOGIN.CL file has been created in the current directory. You may wish to review and edit this file to change the defaults.
Когда по сценарию mkiraf спрашивает вас тип терминала, напечатайте xgterm. У IRAF есть несколько графических интерфейсов, которые вам захочется использовать при работе с изображениями. Это будет работать должным образом тогда, когда вы запускаете IRAF из xgterm.
1.3 Открытие xgterm.
Чтобы открыть xgterm, напечатайте xgterm в командной строке UNIX:
Вам следует всегда запускать IRAF из xgterm. Некоторые из команд IRAF используют специальные свойства xgterm для создания интерактивных графических окон, которые вы можете использовать для операций с данными. Обычно вам нужен только один xgterm, в котором работает IRAF. Одновременно у вас могут быть открыты обычные терминалы (т.е. xterm), так что вы можете видеть, какие файлы лежат в папке, где вы работаете.
1.4 Редактирование вашего файла login.cl.
Прежде чем вы начнете работу, отредактируйте файл login.cl, чтобы он отражал локальные настройки вашей системы. В UNIX войдите в папку ~/iraf/ и откройте login.cl, используя ваш любимый текстовый редактор. Во-первых, найдите строчку, в которой написано:
#set stdimage = imt800
Для нас это строка 27.
Так задается дефолтный размер отображаемой области в пикселях. Значок решетки (#) означает, что эта строка закомментирована и не читается IRAF. Если бы эта программа работала (без значка комментария), размер картинки был бы 800х800 пикселей. Если вы используете IRAF для обработки изображений, полученных на профессиональной обсерватории, рекомендуем задать параметр 4096, если вы используете камеру в SBO, рекомендуем поставить 2048. Таким образом, удалите значок комментария и замените 800 на нужное значение. Например, в нашем login.cl, эта строчка выглядит так (заметьте, что знак # убран из начала строки):
set stdimage = imt4096
Другая строчка в login.cl, которую надо изменить, выглядит так:
#set imtype = "imh"
Для нас это 34 строка.
Это задает дефолтный тип изображения. В тех случаях, когда в имени файла нет расширения, IRAF автоматически подразумевает расширение по умолчанию. Тип imh разрабатывался специально для IRAF, однако большинство ПЗС данных получают в формате FITS. Измените эту строчку (не забудьте убрать символ #):
set imtype = "fits"
1.5 Запуск IRAF.
Чтобы запустить интерфейс командной строки IRAF, используйте команду cl (всегда помните, что запускать IRAF надо из xgterm, а не из обычного xterm). Также помните, что IRAF нужно запускать из той директории, где находится login.cl.
% cd ~/iraf % cl NOAO PC-IRAF Revision 2.12.1-EXPORT Fri Jul 12 15:54:09 MST 2002 This is the EXPORT version of PC-IRAF V2.12 supporting most PC systems. Welcome to IRAF. To list the available commands, type ? or ??. To get detailed information about a command, type `help command'. To run a command or load a package, type its name. Type `bye' to exit a package, or `logout' to get out of the CL. Type `news' to find out what is new in the version of the system you are using. The following commands or packages are currently defined: dataio. language. noao. proto. utilities. dbms. lists. obsolete. softools. images. mscred. plot. system. cl>
Дальше мы будем работать скорее в IRAF, чем в UNIX. Если вы запустили IRAF из папки, где нет login.cl, вы получите такое сообщение:
Warning: no login.cl found in login directory
Удобно было бы создать символьную ссылку на login.cl из домашней директории, чтобы IRAF можно было запускать из нее:
% cd ~ % ln -s ~/iraf/login.cl login.cl
Где ~/iraf/login.cl - место нахождения login.cl. Теперь вы можете запускать IRAF из вашей домашней директории.
2. Взаимодействие с CL.
2.1 Команды UNIX и IRAF.
Некоторые основные команды UNIX существуют также и в IRAF, например: ls, mkdir, mv, cd, grep и многие другие.
Заметим, что команда rm не работает в IRAF, однако, ее заменяют две другие команды: imdel и del.
Почти все управление IRAF осуществляется через различные команды. Похожие команды группируются в пакеты. Различные пакеты с основными командами уже загружены. Если вы уже зашли в IRAF, напишите команду ? в CL
cl> ? dataio. language. noao. proto. utilities. dbms. lists. obsolete. softools. images. mscred. plot. system.
Это список доступных пакетов. Некоторые пакеты содержат в себе другие, это часто обозначается точкой после названия пакета ( т.е. images.imutil). Для получения списка доступных команд, напишите ?? в CL.
cl> ?? clpackage: dataio. language. noao. proto. utilities. dbms. lists. obsolete. softools. images. mscred. plot. system. language: access clear eparam jobs print set back defpac error keep printf show beep defpar flprcache kill putlog sleep bye deftask fprint logout radix stty cache defvar fscan lparam redefine task cd dparam gflush mktemp reset time chdir edit hidetask osfn scan unlearn cl. ehistory history package scanf update clbye envget imaccess prcache service wait noao: artdata. digiphot. nobsolete. onedspec. astcat. focas. nproto. rv. astrometry. imred. observatory surfphot. astutil. mtlocal. obsutil. twodspec. utilities: curfit entab polyfit surfit ucase detab lcase split translit urand proto: binfil hfix irafil rskysub bscale imcntr joinlines suntoiraf epix imextensions mimstatistics text2mask fields imscale mskexpr fixpix interp mskregions tv: display iis. imedit imexamine tvmark wcslab dataio: bintxt mtexamine rfits txtbin wtextimage export rcardimage rtextimage wcardimage import reblock t2d wfits plot: calcomp gkidir imdkern phistogram sgidecode surface contour gkiextract implot pradprof sgikern velvect crtpict gkimosaic nsppkern prow showcap gdevices graph pcol prows stdgraph gkidecode hafton pcols pvector stdplot imutil: chpixtype imdelete imheader imslice listpixels hedit imdivide imhistogram imstack minmax hselect imexpr imjoin imstatistics sections imarith imfunction imrename imsum imcopy imgets imreplace imtile immatch: geomap gregister imcombine skymap wcscopy wregister geotran imalign linmatch skyxymatch wcsmap xregister geoxytran imcentroid psfmatch sregister wcsxymatch xyxymatch imgeom: blkavg im3dtran imshift magnify shiftlines blkrep imlintran imtranspose rotate imfit: fit1d imsurfit lineclean imfilter: boxcar fmedian frmedian gauss laplace mode rmode convolve fmode frmode gradient median rmedian imcoords: ccfind ccsetwcs ccxymatch starfind wcsreset ccget ccstd imcctran wcsctran ccmap cctran skyctran wcsedit images: imcoords. imfit. immatch. tv. imfilter. imgeom. imutil. user: adb cp fc lpq mv rlogin sps vi bc csh find lprm nbugs rsh strings w buglog date finger ls nm rtar su wc cal dbx ftp mail od ruptime sync wtar cat df gdb make pg rusers telnet xc cls diff generic man ps rwho tip clw du grep mkpkg pwd sh top comm emacs less mon rcp spell touch system: allocate devstatus lprint page sort concatenate directory match pathnames spy copy diskspace mkdir phelp tail count files mkscript protect tee deallocate gripes movefiles references type delete head netstatus rename unprotect devices help news rewind lists: average lintran rimcursor tokens words columns rgcursor table unique
Как видите, это обычно длинный список.
2.2 Работа с командами.
Давайте попробуем сейчас поработать с некоторыми из этих команд. Здесь предполагается, что у вас уже есть несколько изображений, с которыми можно работать. Если вы работаете с изображениями для ASTR 3510/3520 они скорее всего получены с помощью SBO. Если так, удостоверьтесь, что они переведены в нужный формат. С этого момента название любого изображения, с которым вы работаете, будет заменяться на imagename, иногда к нему будет добавляться "хвостик", означающий фильтр, например imagename_V.
Например, воспользуемся командой imstat:
cl> imstat imagename # IMAGE NPIX MEAN STDDEV MIN MAX 030_n2392_300_V 173400 33556. 574.5 253. 63567.
Заметим, что когда мы печатаем название изображения, мы можем отбросить расширение .fits, потому что в файле login.cl мы установили тип изображения fits, и IRAF по умолчанию дописывает названию изображения расширение .fits.
imstat показывает основные данные об изображении.
2.3 Изменение параметров команд в CL.
Каждая команда IRAF имеет набор параметров , которые определяют действия команды. Это главным образом входные и выходные данные, а также опции, которые входят в команду. Чтобы увидеть параметры, которые используются в команде, используйте команду lpar.
cl> lpar imstat images = "030_n2392_300_V" List of input images (fields = "image,npix,mean,stddev,min,max") Fields to be printed (lower = INDEF) Lower limit for pixel values (upper = INDEF) Upper limit for pixel values (nclip = 0) Number of clipping iterations (lsigma = 3.) Lower side clipping factor in sigma (usigma = 3.) Upper side clipping factor in sigma (binwidth = 0.1) Bin width of histogram in sigma (format = yes) Format output and print column labels ? (cache = no) Cache image in memory ? (mode = "ql")
Здесь два вида параметров: те, которые требуют введения, когда мы запрашиваем команду, и параметры по умолчанию, которые не нуждаются в определении (скрытые параметры). Параметры, требующие введения, не имеют пояснительной фразы в списке lpar. В случае imstat единственным требуемым параметром, является название изображения (или список названий изображений), для которых вы хотите получить информацию. Если вы пропустите какой-нибудь из этих параметров, IRAF сообщит вам об этом.
Второй тип параметров заключен в скобки в списке lpar. Их не надо определять, когда вы пользуетесь командой, если вы их не определили, тогда используются значения по умолчанию.
Чтобы узнать, что обозначат каждый из параметров, вы можете посмотреть справочную страницу для этой команды.
cl> help imstat IMSTATISTICS (Feb01) images.imutil IMSTATISTICS (Feb01) NAME imstatistics -- compute and print image pixel statistics USAGE imstatistics images PARAMETERS images The input images or image sections for which pixel statistics are to be computed. fields = "image,npix,mean,stddev,min,max" The statistical quantities to be computed and printed. lower = INDEF The minimum good data limit. All pixels are above the default value of INDEF. upper = INDEF The maximum good data limit. All pixels are above the default value of INDEF.
В справке написано больше, но мы опустили оставшееся. Верхняя строчка рассказывает о названии команды и пакета, в котором она находится. Раздел USAGE определяет cl команду и порядок ввода (в данном случае только один). Раздел PARAMETERS описывает все параметры и вводимые данные. Чтобы определить дополнительные (скрытые) параметры в cl, используйте формат parametername=value. Например:
cl> imstat imagename binwidth=0.4 # IMAGE NPIX MEAN STDDEV MIN MAX 030_n2392_300_V 173400 33556. 574.5 253. 63567.
Заметим, что сначала определяется необходимые входные параметры в том порядке, в котором они описаны в справке, затем определяются дополнительные (скрытые) параметры. Некоторые скрытые параметры двоичны (у них есть только два значения, да или нет). Чтобы определить их, можно напечатать parametername=yes или parametername=no в cl, или укороченный вариант parametername+ или parametername- для yes или no соответственно.
Надо упомянуть об еще одном укороченном варианте: в IRAF не нужно печатать полное название команды или параметра, можно указать только несколько первых букв так, чтобы окончание для них было единственным. Мы уже это использовали: полное название команды imstat - imstatistics. Например:
cl> imstat imagename binw=0.4 format- 030_n2392_300_V 173400 33556.36 574.462 253. 63567.
1.4 Изменение параметров команд с использованием epar.
Метод изменения параметров, описанный в предыдущем параграфе, хорош для однократного использования команды. Но если мы хотим использовать тот же параметр каждый раз, когда обращаемся к данной команде, его нужно сделать постоянным. Это можно сделать с помощью команды epar. Используя эту команду, мы можем изменить любой параметр, когда мы выходим из редактора, изменения сохраняются. Они так же сохраняются, когда мы выходим из IRAF.
Запустив epar imstat, мы увидим страничку, похожую на ту, которую мы видели в lpar imstat, однако теперь мы можем корректировать список параметров. Используя стрелки для перемещения вверх и вниз по списку, найдите параметр, который вам нужно изменить и начните вносить изменения. Затем нажмите enter и переместитесь к следующему параметру, который вы хотите изменить. Когда вы внесли необходимые изменения, вы можете нажать CTRL-c и выйти без сохранения или нажать CTRL-d и выйти с сохранением изменений.
Попробуйте это: используйте epar для изменения imstat. Измените строчку
(fields = "image,npix,mean,stddev,min,max") Fields to be printed
На
(fields = "image,npix,mode,mean,stddev,min,max") Fields to be printed
Это просто добавит еще одну колонку к выходным параметрам команды, которая будет означать режим изображения.
cl> imstat imagename # IMAGE NPIX MODE MEAN STDDEV MIN MAX 030_n2392_300_V 173400 33487. 33556. 574.5 253. 63567.
Теперь imstat всегда будет выводить режим изображения (полезный параметр, как будет видно позже).
3. Ximtool и отображение картинок.
3.1 Как отображать картинки.
IRAF требует программу, которая может отображать картинки. Вот несколько примеров: ximtool, saoimage, ds9 и, возможно, еще какие-то. В основном используется ds9. Ximtool поддерживает 8 - битную цветопередачу, большинство мониторов сегодня 24 - битные, так что это большое препятствие.
Скачать программу ds9 можно здесь. Она устанавливается простой распаковкой архива.
Чтобы запустить ds9 запишите в UNIX команду (не запуская IRAF):
% ds9 &
Откроется новое окошко ds9.
Чтобы отображать картинки в ds9, используйте в IRAF команду display. Если вы посмотрите справку display, вы увидите, что эта команда имеет два входных параметра - имя изображения и номер окна. ds9 может одновременно отображать до 16 картинок (или до 4 в зависимости от версии программы). Переключаться между ними можно с помощью клавиши Tab. Чтобы отобразить картинку в первое окно надо написать:
cl> display imagename 1 z1=33373. z2=33745.93
Чтобы отобразить картинку в другое окно, надо заменить 1 на другое число (до 16).
Заметим, что display выводит два параметра z1 и z2. Мы обсудим их в следующем параграфе.
3.2 Понимание изображения: динамический диапазон.
Можно подумать, что отобразив картинку, вы увидите все данные, которые в ней есть, но это не так. Очень важно понимать, какая часть данных выведена на экран.
Динамический диапазон задается параметрами z1 и z2 команды display.Изображение - это матрица чисел, каждое из которых представляет яркость соответствующего пикселя. Динамический диапазон, заданный z1 и z2 определяет минимум и максимум отображаемых величин. Передаточная функция (будет обсуждаться позже) приписывает маленьким значениям черный цвет, а большим -- белый. Тогда z1 -- значение пикселя, соответствующее черному цвету, а z2 - белому. Все, что меньше z1 - черное, все, что больше z2 - белое, а все, что между ними изображается оттенками серого. Поэтому очень важно знать значения z1 и z2. например, если на изображении есть детали ярче значения z2, они не будут видны, пока вы не установите соответствующие пределы.
Использование параметров по умолчанию автоматически установит z1 и z2, согласуясь с внутренними алгоритмами. Параметр contrast изменит автоматически выбранный контраст (хотя значения по умолчанию являются оптимальными).
Параметр zscale включает и выключает автоматическое масштабирование. Если zscale выключен, а параметр zrange включен, тогда z1 и z2 соответствуют минимальному и максимальному значениям на изображении (чаще всего ужасный выбор). Лучше всего использовать команду epar display и отключить параметр zrange.
Чтобы задать z1 и z2 вручную, мы должны выключить zscale следующим образом:
cl> displ imagename 1 zsc- z1=950 z2=1500 z1=950. z2=1500.
Заметим, что это будет работать, только если zrange будет уже отключено. Тогда z1и z2, выводимые командой на экран, будут соответствовать тем, что вы ввели вручную.
3.3 Понимание изображения: передаточная функция (яркость и контраст).
Когда вы отобразили картинку и установили z1 и z2, вы все еще можете изменить изображение с помощью параметров яркость и контраст (передаточная функция). Это соотношение между значением пикселя и яркостью экрана. Это делается не в IRAF, а в ds9.
Нажмите и удерживайте правую кнопку мыши на окне ds9. Двигая мышь вправо и влево, вы будете менять контраст, а вверх и вниз - яркость. Это может помочь выделить слабые детали. Поэтому, когда вы смотрите на изображение, убедитесь, что передаточная функция оптимальна.
Замечание. Комбинация параметров z1, z2, яркость и контраст иногда называются вытягиванием изображения. После того, как вы поэкспериментируете с этим, вы увидите, что различные вытягивания изображений могут открыть новую информацию как в слабых, так и в ярких участках изображения.
4. Различные подсказки при работе с CL.
4.1 Списки ввода.
Много раз бывает так, что нужно применить одну и ту же команду к нескольким изображениям. Один из способов ввести список изображений через запятую. IRAF интерпретирует пробелы, как разделение различных входных параметров, так что удостоверьтесь, что в списке входных изображений нет пробелов.
cl> imstat sn2002ap_300_B,sn2002ap_300_V,sn2002ap_300_R # IMAGE NPIX MODE MEAN STDDEV MIN MAX sn2002ap_300_B 173400 1344. 1393. 192.8 -31158. 16957. sn2002ap_300_V 173400 1111. 1146. 169.5 750. 26947. sn2002ap_300_R 173400 1615. 1653. 193.7 1131. 28546.
Вы также можете использовать символ *:
cl> imstat sn2002ap_300_* # IMAGE NPIX MODE MEAN STDDEV MIN MAX sn2002ap_300_B.fit 173400 1344. 1393. 192.8 -31158. 16957. sn2002ap_300_B2.fit 173400 1336. 1393. 188.8 -31260. 17067. sn2002ap_300_R.fit 173400 1615. 1653. 193.7 1131. 28546. sn2002ap_300_R2.fit 173400 1652. 1681. 197.2 -30392. 17127. sn2002ap_300_V.fit 173400 1111. 1146. 169.5 750. 26947. sn2002ap_300_V2.fit 173400 1095. 1123. 173.6 -31350. 16715.
Последний способ - это создание файла со списком. Это текстовый документ, который содержит название тех файлов, с которыми вам надо работать, по одному на строке. Вы можете создать его с помощью любого текстового редактора. Чтобы IRAF использовал этот файл в качестве входного списка, используйте символ @:
cl> imstat @list_sn2002ap # IMAGE NPIX MODE MEAN STDDEV MIN MAX sn2002ap_300_B.fit 173400 1344. 1393. 192.8 -31158. 16957. sn2002ap_300_B2.fit 173400 1336. 1393. 188.8 -31260. 17067. sn2002ap_300_R.fit 173400 1615. 1653. 193.7 1131. 28546. sn2002ap_300_R2.fit 173400 1652. 1681. 197.2 -30392. 17127. sn2002ap_300_V.fit 173400 1111. 1146. 169.5 750. 26947. sn2002ap_300_V2.fit 173400 1095. 1123. 173.6 -31350. 16715.
Вы можете создать такой файл, используя команду files в IRAF. Она работает похоже на команду ls в UNIX, но выводит по одному названию файла на строку. Например:
cl> files sn2002ap_300_* sn2002ap_300_B.fit sn2002ap_300_B2.fit sn2002ap_300_R.fit sn2002ap_300_R2.fit sn2002ap_300_V.fit sn2002ap_300_V2.fit
Список просто отображается на экране. Нам нужно занести этот список в файл. Надо использовать направляющие команды (в IRAF они такие же как в UNIX). Чтобы записать выходные данные в файл надо прикрепить символ > и имя файла к команде. Знайте, что символ > не перепишет существующий файл, поэтому имя всякий раз должно быть новым. Команды type и page выведут на экран содержание текстового файла (cat и more в UNIX соответственно). Мы можем использовать эти команды, чтобы проверить, что в файле со списком содержится то, что нам надо.
cl> files sn2002ap_300_* > list_sn2002ap cl> type list_sn2002ap sn2002ap_300_B.fit sn2002ap_300_B2.fit sn2002ap_300_R.fit sn2002ap_300_R2.fit sn2002ap_300_V.fit sn2002ap_300_V2.fit
Мы также можем использовать команды UNIX для текстового редактора, чтобы изменить выходные данные команды files. Для этого хороши команды grep, sed, awk и perl. Например:
cl> files sn2002ap_300_* | grep B > list_sn2002ap_B cl> type list_sn2002ap_B sn2002ap_300_B.fit sn2002ap_300_B2.fit
4.2 История CL.
Еще одно удобство IRAF - это история команд. В UNIX мы используем стрелку вверх, чтобы вызвать предыдущие команды. В IRAF для этого существует команда ehistory. Просто напечатайте ehist или e в cl, затем, используя стрелку вверх найдите нужную команду в списке использованных, нажмите enter для запуска команды. Вы можете также изменять команды перед запуском. Для выхода из ehist нажмите CTRL-c.
Вы можете также вызвать уже использованную команду, напечатав ehist text, тогда история выведет последнюю команду, начинающуюся на text.
4.3 Команда apropos.
На некоторых инсталляциях IRAF доступна команда apropos. Она помогает подобрать нужную команду для выполнения данной работы. apropos ищет в кратких описаниях команд ключевые слова, которые вы ввели. Однако, в IRAF много команд, и иногда apropos больше мешает, чем помогает, когда выдает десяток команд.
4.4 Работа с частью изображения.
Если вы хотите, вы можете работать только с частью изображения. Чтобы описать часть изображения, с которой вы хотите работать, используйте следующее:
cl> imstat imagename[x1:x2,y1:y2]
где х1 и х2 - пределы по оси х, y1 и y2 - по оси y в пикселях. Вы можете также использовать команду imcopy, чтобы создать новую картинку, содержащую только часть большого изображения:
cl> imcopy imagename[x1:x2,y1:y2] imagename2
4.5 Скрипты CL.
В IRAF вы можете заменить одной командой последовательность команд, выполняемых друг за другом. Для этого надо составить CL скрипт - текстовый файл с расширением .cl. Его можно запустить, направив в cl с помощью <.
Например, если вы создали текстовый файл, называющийся myscript.cl в котором написано следующее:
displ 026_n2392_600_ha 1 zsc- z1=32943 z2=37000 imstat 026_n2392_600_ha
тогда вы можете запустить его:
cl> cl < myscript.cl z1=32943. z2=37000. # IMAGE NPIX MODE MEAN STDDEV MIN MAX 026_n2392_600_ha 173400 32945. 33056. 402. 11003. 61213.
В скрипты можно также добавлять комментарии, отделенные символом #. Все, что следует за символом # на строке, интерпретируется как комментарий. Например, в файле myscript.cl может быть написано:
# Display the image displ 026_n2392_600_ha 1 zsc- z1=32943 z2=37000 # note the altered z range # See the image statistics imstat 026_n2392_600_ha
Этот скрипт запускает те же самые команды, но с комментариями, которые могут облегчить интерпретацию полученных результатов.
5. Первичная обработка данных изображений.
5.1 Обзор обработки изображений.
Первая задача обработки изображений состоит в том, чтобы исправить два типа ошибок в ПЗС данных: аддитивные и мультипликативные. Как вы помните из параграфа 3.3, мы представляем изображение как матрицу чисел, каждое из которых соответствует яркости пикселя. Чтобы исправить аддитивные ошибки, мы просто вычитаем шум считывания и темновой ток изображения, а чтобы исправить мультипликативные - делим изображение на что-то.
Аддитивные ошибки имеют два источника: шум считывания и темновой ток. В этом пособии опущено детальное описание возникновение этих ошибок, мы сосредоточимся только на методах их исправления. Существует два типа калибровочных изображений, которые могут быть использованы для устранения аддитивных ошибок: это кадры dark и bias. Dark - это кадр, полученный ПЗС - матрицей при закрытом затворе с той же экспозицией и температурой матрицы, что и кадр, который нужно исправлять. Dark исправит сразу и шум считывания и темновой ток. Кадр bias - это темновой кадр с нулевой экспозицией. Так что он исправляет только шум считывания (заметим, что кадр bias называют нулевым кадром). Почему два метода? Исследовательские ПЗС - матрицы охлаждаются жидким азотом (температура около 77 К), так что их темновой ток не значителен. Данные с таких ПЗС - матриц исправляются только за шум считывания. Те ПЗС - матрицы, которые не охлаждаются до таких низких температур нуждаются также в исправлении темнового тока.
Мультипликативные ошибки имеют несколько источников: различный квантовый выход пикселей, неравномерная засветка матрицы, пылинки и грязь на поверхности матрицы. Все эти факторы изменяют чувствительность матрицы от пикселя к пикселю. Чтобы это исправить, надо получить калибровочный кадр, называемый плоское поле (flat field). Это просто кадр с равномерной засветкой (чаще всего белый экран или закрытый купол).
Математическое представление первоначального учета аддитивных и мультипликативных ошибок выглядит так:
(raw_image - dark1) final_image = -------------------------------- (flat - dark2) /
Есть еще один источник ошибок в изображениях - космические лучи. Космические лучи - это высокоэнергичные частицы, которые проходят через ПЗС - матрицу и выделяют большое количество энергии. ПЗС - матрица не может отличить их от обычных фотонов. Лучший способ отличить космические лучи -- получить несколько одинаковых изображений, тогда яркие пиксели, которые есть в данном месте только на одном изображении, являются космическими лучами.
5.2 Комбинирование темноты.
Каждый раз, когда мы прибавляем, вычитаем, умножаем или делим два изображения, мы привносим дополнительный шум. Это не желательно, так как если мы применим коррекцию, описанную выше, то в конце мы получим слишком большой шум. Чтобы этого избежать, необходимо сделать несколько одинаковых калибровочных изображений, чтобы составить из них одно (будь то dark, bias или flat).
Это уменьшает шумы в конечном калибровочном кадре, так что при обработке изображений добавится только незначительное количество шума. Рекомендуется делать три, а лучше пять и более калибровочных изображения каждого типа (причина удобства нечетного числа изображений будет ясна позже) и комбинировать их в одно калибровочное изображение.
Комбинирование изображений не является нахождением среднего, как можно подумать. Вместо этого мы вычисляем медиану изображений, то есть значение пикселя результирующей картинки является медианой соответствующих значений пикселя на складываемых картинках. Преимущества этого метода в том, что если на одном изображении пиксель имеет слишком большую яркость (например, от космической частицы) это не влияет сильно на результирующее изображение (медиана более устойчива к выпадающим значениям, чем среднее). Если у вас есть хотя бы три изображения, вы можете устранить практически все космические частицы. Заметим, что если у вас есть четное количество изображений, медиана будет браться как среднее между двумя серединными значениями (вот почему лучше всего брать нечетное количество изображений).
Первый шаг в схеме обработки - это комбинирование всех темновых кадров, учитывая длину экспозиции, в один master dark. Если у вас есть кадры с данными, экспозиции которых, например, 300, 180 и 60 секунд, у вас должно быть как минимум три темновых кадра для каждой экспозиции. Так же у вас должны быть темновые кадры с такой же экспозицией, с которой получен flat (обычно различные экспозиции для каждого фильтра). Таким образом, если у вас есть три фильтра, то всего вы получите 18 темновых кадров, после комбинирования вы получите 6 кадров master dark.
Допустим, вы используете для записей темновых кадров такой формат имени: ##dark_NNNs.fits, где ## -- это номер от 01 до 99 по ходу ночи, NNN - это время экспозиции, например, 300 секундные темновые кадры могут называться 67dark_300s.fits, 68dark_300s.fits и 69dark_300s.fits. Предположим, что вы также создали файл со списком (см. параграф 4.1), содержащим эти изображения, который называется list_dark_300s. Для комбинирования изображений используется команда imcombine. Используя эту команду, надо приписать параметру combine значения median. Вы можете изменить этот параметр, используя epar, или задать его из командной строки. Посмотрев справку для команды imcombine, вы увидите, что формат ее использования таков imcombine input output. Таким образом, мы запустим ее так:
cl> imcombine @list_dark_300s dark_300s combine=median
Команда выведет на экран различные сообщения, о выполнении. Ваше результирующее изображение (кадр master dark для экспозиции в 300 секунд) будет называться dark_300s.fits. Далее необходимо повторить эти действия, чтобы создать master dark для каждой экспозиции.
5.3 Вычитание темноты.
Кадр плоского поля так же содержит шум считывания и темновой ток, поэтому их надо исправлять, вычитая темновой ток. Предположим, что мы работаем с набором кадров плоского поля в фильтре V по 10 секунд экспозиции каждый. Назовем их ##flat_F_NNNs.fits , где ## - номер экспозиции, F - фильтр, NNN - время экспозиции. Таким образом, предполагаемые кадры могут называться 70flat_V_010s.fits, 71flat_V_010s.fits и 72flat_V_010s.fits. Мы запишем эти названия в файл со списком list_flat_V_010s. Чтобы вычесть 10 секундный кадр master dark из всех кадров, будем использовать команду imarith. Посмотрев справку для этой команды, вы увидите, что формат ее использования таков imarith operand1 op operand2 result. Мы можем создать файл, который будет содержать список результирующих изображений и назвать их 70flat_V_ds.fits, 71flat_V_ds.fits и 72flat_V_ds.fits, где ds означает, что темнота вычтена. Вы можете так же просто переписать исходные файлы, поставив в качестве выходного файла исходный файл со списком (так же как в примере выше).
cl> imarith @list_flat_V_010s - dark_010s @list_flat_V_010s
Теперь из наших плоских полей вычтена темнота.
Раз уж мы за это взялись, вычтем темноту из наших астрономических изображений. Для названия будем использовать формат ##obj_F_NNNs.fits, где ## - номер экспозиции, obj - название объекта, F - фильтр, NNN - время экспозиции. Например, если у нас есть три снимка туманности Ориона (М 42), изображения могут называться 01M42_V_120s.fits, 02M42_V_120s.fits и 03M42_V_120s.fits, файл со списком будет list_M42_V_120s. Вычитаем темноту:
cl> imarith @list_M42_V_120s - dark_120s @list_M42_V_120s
5.4 Комбинирование плоских полей.
Теперь необходимо скомбинировать плоские поля в каждом фильтре. Здесь есть одна хитрость: если во время экспозиции плоского поля лампы, освещающие белый экран, слегка изменяли яркость, различные темновые кадры для каждого фильтра будут иметь различное среднее значение. Это будет влиять на медиану, так как всегда будет браться пиксель из кадра со средней экспозицией, что не уменьшает шум. Необходимо умножить каждое плоское поле на небольшую величину. Можно сделать это, если в команде imcombine задать параметр scale = mode. Это означает, что перед комбинированием изображения будут помножены на число близкое к единице, так что вид всех кадров будет одинаков.
cl> imcombine @list_flat_V_010s flat_V combine=median scale=mode
Теперь у нас есть кадр master flat для фильтра V.
5.5 Нормировка плоских полей.
В итоге, необходимо разделить астрономические изображения на плоское поле, однако в кадре плоского поля каждый пиксель содержит большое количество отсчетов (мы снимали яркий экран), тогда как астрономическое изображение содержит малое количество отсчетов в пикселе (астрономический объект очень слабый). Если мы просто поделим одно на другое, все пиксели на итоговом изображении будут иметь очень маленькие значения, которые являются отношением значений пикселей плоского поля к значениям пикселей астрономического изображения. В идеале, нам нужно лишь слегка изменить отсчеты на кадре с объектом, чтобы устранить мультипликативные ошибки, не меняя при этом сильно значения пикселей. Для этого нам надо разделить плоское поле на некую константу, чтобы все отсчеты в нем были близки к единице, а уже потом разделить астрономическое изображение на получившееся плоское поле.
Существует много различных способов выбора этой константы. Для изображений без значительного виньетирования достаточно разделить каждый пиксель на моду изображения. Этот параметр мы получим, использовав команду imstat.
cl> imstat flat_V # IMAGE NPIX MODE MEAN STDDEV MIN MAX flat_V 173400 49996. 49496. 1069. 45694. 52944.
Теперь разделим плоское поле на это число:
cl> imarith flat_V / 49996.0 flat_V_norm
Теперь плоское поле нормировано, и значения всех пикселей близки к единице.
5.6 Деление на плоские поля.
У нас есть изображения, исправленные за темноту, а также скомбинированные и нормированные плоские поля. Чтобы исправить мультипликативные ошибки в изображении мы должны просто разделить:
cl> imarith @list_M42_V_120s / flat_V_norm @list_M42_V_120s
Теперь в астрономическом изображении исправлены все ошибки.
5.7 Выравнивание нескольких изображений для соединения.
Часто нам приходится увеличивать отношение сигнал/шум, используя длинные экспозиции. К сожалению, длинные экспозиции связаны с большим количеством препятствий, в том числе с неравномерным ведением телескопа. Обычно самая длинная экспозиция, которую можно получить без размазывания звезд, составляет 3-5 минут. Этого недостаточно для большинства слабых объектов, особенно при использовании узкополосных фильтров. Чтобы это обойти, необходимо делать несколько кадров с экспозицией по 300 секунд и комбинировать их.
В отличии от темноты и плоских поле в комбинировании нескольких астрономических изображений есть еще один шаг - выравнивание. Изображения могут быть смещены друг относительно друга, поэтому их необходимо сдвинуть. Для этого используем команду imalign. Посмотрев справку для этой команды, мы увидим, что она имеет несколько входных параметров: imalign input reference coords output shifts=shifts.txt. Мы так же будем использовать дополнительный параметр shifts. Обсудим каждый из них отдельно.
input - список изображений для выравнивания.
reference - опорное изображение, по которому мы будем равнять остальные.
сoords - текстовый файл, содержащий координаты звезд (X, Y) на опорном
изображении, звезды должны быть видны на всех изображениях. Они будут
использованы для определения сдвига каждого изображения.
оutput - список итоговых изображений.
shifts - текстовый файл, содержащий приблизительные сдвиги каждого изображения,
по одному изображению на строку. Используйте одну звезду, имеющуюся на всех
кадрах, чтобы оценить эти сдвиги. Этот дополнительный параметр нужен
практически всегда, так как без него изображения не будут хорошо выровнены.
5.8 Комбинирование нескольких изображений.
Теперь изображения выровнены. Их необходимо скомбинировать с помощью команды imcombine так же как мы это делали с плоскими полями.
cl> imcombine @list_M42_V_120s M42_V
M42_V - это итоговое изображение в фильтре V.
6. Первичная обработка спектроскопических данных.
Замечание. Для более полной и детальной информации по обработке спектра используйте пособие A User's Guide to Reducing Slit Spectra with IRAF.
6.1 Обзор обработки спектроскопических данных.
Первые несколько шагов такие же как для снимков звезд: исправление темноты и плоского поля (см. параграфы 5.1-5.6) Затем необходимо скомбинировать спектры, однако, нельзя применять ту же процедуру, что и с изображениями звезд (5.7).
Замечание. Если отношение сигнал/шум на снимке спектра мало, не надо применять коррекцию плоского поля. Часто систематические ошибки ПЗС-матрицы не добавляют значительного шума за счет плоского поля.
После получения результирующего изображения спектра необходимо определить дисперсионное уравнение. Это означает, что мы должны найти соотношения между количеством пикселей вдоль спектра и длиной волны.
6.2 Определение оси дисперсии.
Бывает, что нужно определить ось дисперсии. Для этого существует ключевое слово DISPAXIS в заголовке файла. Просмотрите заголовок, используя команду imheader с включением длинных ключевых слов:
cl> imhead science_exposure_filename long+
Найдите слово DISPAXIS в данном списке. Вы так же можете использовать команду UNIX grep, чтобы выделить слово DISPAXIS:
cl> imhead science_exposure_filename long+ | grep DISPAXIS
grep чувствительна к написанию, поэтому будьте уверены, что напечатали слово верно (или используйте опцию -i для этой команды).
Для спектров с горизонтальной осью дисперсии DISPAXIS=1, для вертикальных - DISPAXIS=2. Если вам необходимо изменить параметр DISPAXIS, используйте команду hedit:
cl> hedit science_exposure_filename DISPAXIS 1 add+
Замечание. Здесь использован параметр add, он нужен в тех случаях, когда слово DISPAXIS отсуствует в заголовке файла.
6.3 Подготовка APALL.
Замечание. Изначально эта процедура была разработана для определения следа спектра в спектроскопии континуума. Это можно использовать для спектроскопии туманностей, но здесь мы не будем на этом останавливаться. В этом пособии предполагается, что мы работаем со сплошным спектром. Если мы работаем со спектром туманности, пункты 3-7 этого раздела должны быть заменены другим методом. Мы вынесли это в отдельный раздел 7.
appall - многошаговая команда, которая извлекает данные из вашего двумерного ПЗС-изображения. Чтобы заместить команду apall, загрузите пакеты noao, onedspec, twodspec и apextract:
cl> noao no> onedspec on> twodspec tw> apextract
Теперь мы должны изменить параметры команды appall:
cl> epar apall PACKAGE = apextract TASK = apall input = List of input images (output = ) List of output spectra (apertur= ) Apertures (format = multispec) Extracted spectra format (referen= ) List of aperture reference images (profile= ) List of aperture profile images (interac= yes) Run task interactively? (find = no) Find apertures? (recente= no) Recenter apertures? (resize = no) Resize apertures? (edit = yes) Edit apertures? (trace = yes) Trace apertures? (fittrac= yes) Fit the traced points interactively? (extract= yes) Extract spectra? (extras = yes) Extract sky, sigma, etc.? (review = yes) Review extractions? (line = INDEF) Dispersion line (nsum = 10) Number of dispersion lines to sum or median
Изменяем find=no, recente=no, resize =no (как приведено выше). Замечание. У команды apall много параметров, здесь показана только первая страница.
Так же необходимо изменить параметры команды apextract:
cl> epar apextract PACKAGE = twodspec TASK = apextract (dispaxi= 1) Dispersion axis (1=along lines, 2=along columns) (databas= database) Database (verbose= no) Verbose output? (logfile= ) Text log file (plotfil= ) Plot file (version= APEXTRACT V3.0: August1990) (mode = ql) ($nargs = 0)
Изменяем dispaxi=1 (вдоль строк).
6.4 Запуск APALL: определение апертуры.
Чтобы запустить apall, и извлечь спектр, наберите:
cl> apall science_exposure_filename
Появится интерактивное окно, в котором можно задавать различные апертуры.
![](https://images.astronet.ru/pubd/2020/06/05/0001664636/introductioniraf_html_m252bcfef.jpg)
Рис.1
Это график зависимости значения пикселя от координаты Y. Звездный спектр представляет собой пик в районе 250-ой строки. Нам нужно задать апертуру, которая бы собрала весь свет из этого пика. Для начала необходимо увеличить масштаб. Для этого используются команды w и e. Чтобы увеличить, нажмите w, затем нажмите e, чтобы определить левую и правую границы области, которую необходимо увеличить. Например, если нажать w и e в том месте, где расположен курсор на рисунке 1, затем нажать e сразу по окончании пика, мы получим то, что изображено на рисунке 2. Для возвращения обратно наберите w и a.
![](https://images.astronet.ru/pubd/2020/06/05/0001664636/introductioniraf_html_m6353b1c3.jpg)
Рис.2
Теперь мы можем видеть больше деталей. Область, отделенная отрезком с цифрой 1 над ним - это апертура, автоматически определенная IRAF. Она выглядит правдоподобной, но давайте попробуем ее переопределить. Мы можем определить центр апертуры, используя курсор (навести его на центр, и нажать n), или использовать его как стартовую позицию для центрирования с помощью IRAF (навестись на центр и нажать m). Можно использовать кнопку d, чтобы удаль предыдущие значения апертуры (они будут нумероваться 1,2,3 и т.д.). Ширина апертуры может быть определена с помощью кнопки y. Она задает ширину апертуры, равной расстоянию от центра до местоположения курсора (поэкспериментируйте, чтобы понять, как это работает). Наоборот, вы можете задать верхнюю и нижнюю границы апертуры, используя кнопки u и l (для верхней и нижней соответственно).
6.5 Запуск APALL: определение фона.
Когда вы задали апертуру, нажмите b, чтобы перейти к заданию апертуры фона. IRAF снова выберет некоторые значения автоматически, как видно из рисунка 3.
![](https://images.astronet.ru/pubd/2020/06/05/0001664636/introductioniraf_html_7301d677.jpg)
Рис.3
Рекомендуется задать более расширенный вид, на котором видны детали фона. Для этого используем клавиши w и e или w и a, как и ранее. Получим то, что изображено на рисунке 4.
![](https://images.astronet.ru/pubd/2020/06/05/0001664636/introductioniraf_html_5440e33b.jpg)
Рис.4
Теперь мы видим фон. Четыре отрезка внизу картинки показывают места, где будет взят фон. Штриховая линия показывает приближенное значение фона, что очевидно неверно. Нам надо переопределить апертуру фона. Надо использовать клавишу s, чтобы задать новые области. Нажмите s в начале и в конце той области, которую вы хотите использовать для вычисления фона, затем нажмите f, чтобы штриховая линия обозначила новое приближение (вы можете удалить предыдущие области с помощью кнопки z). Рекомендуется использовать широкие полосы фона с двух сторон от пика (рисунок 5).
![](https://images.astronet.ru/pubd/2020/06/05/0001664636/introductioniraf_html_m461d6d40.jpg)
Рис.5
Теперь видно, что приближенный фон (штриховая линия) хорошо согласуется с реальным. Когда вы удовлетворены приближением фона, нажмите q, чтобы вернуться в режим редактирования апертуры.
6.6 Запуск APALL: определение следа.
След - это то, что определяет форму апертуры при движении вдоль дисперсионной оси. Например, если ваш звездный спектр не горизонтален или он кривой, IRAF необходимо определить его форму, чтобы аккуратно извлечь спектр.
Нажав q в режиме редактирования апертуры, вы попадете в режим поиска следа (рисунок 6).
![](https://images.astronet.ru/pubd/2020/06/05/0001664636/introductioniraf_html_7419479d.jpg)
Рис.6
Здесь точки с данными (+) представляют след спектра, штриховая линия показывает приближение. Разница выглядит огромной, пока вы не заметите, что отклонение по оси Y от штриховой линии составляет около 3 пикселей. Чтобы увеличить порядок приближающего полинома используйте команду :or (не забудьте двоеточие). После :or введите нужный порядок полинома. В данном случае лучше использовать четвертый порядок. Затем нажмите f, чтобы получить приближение. Вы увидите, что оно неплохо согласуется (рисунок 7), но все же не идеально, хотя отклонение от реальной картины порядка 0.1 пикселя.
![](https://images.astronet.ru/pubd/2020/06/05/0001664636/introductioniraf_html_5da7943a.jpg)
Рис.7
Все апертуры, которые мы только что определили, сохраняются в файл с именем database/apscience_exposure_filename в текущей папке. Так что вы можете вернуться к этой картинке позже и продолжить определение апертуры. Чтобы использовать эти апертуры для другого изображения, можете запустить apall следующим образом:
cl> apall science_exposure_filename2 ref=science_exposure_filename
6.7 Запуск APALL: извлечение спектра.
Чтобы извлечь спектр из данных, нажмите q для выхода из режима приближения следа и отвечайте на вопросы, задаваемые apall.
Есть два варианта извлечения спектра. Во-первых, можно просто просуммировать все отсчеты внутри апертуры и вычесть фон, однако, здесь есть несколько проблем. Малое количество фотонов в крыльях увеличивает шум, а если в нашу апертуру попадает космическая частица, это может увеличить общую сумму. Во-вторых, можно варьировать вес суммы по отношению сигнал/шум в каждом пикселе. Этот метод более устойчив к малому количеству шумящих пикселей и хорошо выявляет космические частицы. Недостаток этого метода в том, что он учитывает только шум считывания (без темнового тока).
Извлеченный спектр будет записан как одномерный спектр в файл science_exposure_filename.ms.fits.
6.8 Калибровка спектра по длинам волн.
IRAF может откалибровать спектр по длинам волн, используя список с длинами волн линий на снимке калибровочной лампы. Например, наш калибровочный файл называется sbo_HeAr.dat. Используйте команду identify , чтобы отождествить эти линии с особенностями на вашем калибровочном спектре.
cl> identify cal_lamp_exposure_filename section='line l1 l2' coordlist='path/sbo_HeAr.dat'
Параметры 11 и 12 означают строки, из которых мы берем информацию о спектре (так как это калибровка по длине волны, мы можем не брать полную апертуру, а ограничиться лишь двумя строками).
Однако, section='line l1 l2' может не работать. Если строки были плохо усреднены, можно использовать метод прибавления строк, описанный в следующем разделе.
Используя стандартные снимки калибровочной лампы, отождествите две или три линии, наведите курсор на их центры и нажмите m (для отметки). Затем введите длины волн согласно требованиям IRAF. Нажмите f, чтобы получить приблизительное разрешение. Нажмите q для возвращения к изображению спектра. Теперь IRAF имеет грубое представление о дисперсионном уравнении. Программа может отождествить дополнительные линии в вашем спектре и определить их длины волн из данных sbo_HeAr.dat. Вследствие этого, на графике зависимости длины волны от номера пикселя появится еще несколько точек. Чтобы IRAF автоматически отождествил дополнительные линии, нажмите l.
Теперь мы должны проверить, правильно ли IRAF провел идентификацию. Используйте клавиши z, d, +, p для удаления неверных отметок (см. справку для более подробной информации). Нажмите f еще раз, чтобы получить новое приближение. Используйте d, чтобы удалить все выпавшие точки. После этого еще раз нажмите f и выйдете из идентификационной программы (нажмите q два раза). Теперь у вас есть дисперсионное уравнение, которое было сохранено в папке с названием database.
6.9 Сопоставление дисперсионного уравнения и изображения.
Теперь мы должны сопоставить дисперсионное уравнение к астрономическим кадрам. Для этого необходимо добавить ключевое слово в заголовок файла с изображением. Чтобы изменить заголовок, используйте команду hedit (удостоверьтесь, что вы применяете ее к итоговому файлу):
cl> hedit science_exposure_filename.ms REFSPEC1 "cal_lamp_exposure_filename" add+
Если поле REFSPEC1 уже существует в заголовке, используйте параметр add-
6.10 Применение дисперсионного уравнения.
Чтобы применить дисперсионное уравнение к изображению, используйте команду dispcor:
cl> dispcor science-exposure-filename calibrated-science-exposure-filename
Теперь вы можете использовать splot , чтобы просмотреть и проанализировать ваши данные, используя в качестве координат ангстремы.
6.11 Использование splot для просмотра откалиброванного спектра.
Если вы правильно использовали команды identify и dispcor, тогда горизонтальная ось на изображении будет измеряться в ангстремах. Если вы наведете курсор на любую точку спектра и нажмете пробел, splot напечатает координаты курсора вверху окна.
Команда splot содержит много интерактивных инструментов для анализа спектра. Как и во всех интерактивных командах IRAF, значок ? выдает короткую справку по командам. Изучим некоторые из наиболее часто используемых команд.
Команды изображения: увеличение и уменьшения.
Вы можете поменять шкалу оси и увеличить часть спектра, используя клавишу a, чтобы отделить углы прямоугольника, который вы хотите увеличить. Наведите курсор на то место, которое будет левым нижним углом нового изображения и нажмите а. Затем наведите курсор на правый верхний угол и нажмите а. Прямоугольник, который вы определили, увеличится. Чтобы вернуться к полному изображению, нажмите c.
Так же может быть использована команда :hist. Она является переключателем двух разных типов линий на графике. Включив данную команду, вы увидите гистограмму, отключив, вы увидите спектр, все точки которого соединены прямыми линиями. Посмотрите, как вам больше понравится (рисунок 8 ниже построен в обычном стиле, а не в стиле гистограммы).
Определение центров линий и потоков: разделяющая команда.
Во многих случаях необходимо определить точную длину волны в центре линии и полный поток в линии. Для этого необходимо найти приближенный профиль линии, иногда профили нескольких близких линий. С помощью splot это можно сделать легко и быстро. Разделение линий - это многошаговый процесс, поэтому изучим все по порядку.
Во-первых, используем клавишу а, чтобы увеличить линию (линии), которые мы будем изучать.
Во-вторых, наведем курсор на участок непрерывного спектра далеко слева от линий и нажмем d. Затем сделаем тоже самое справа от линий. Это определит уровень непрерывного спектра. В выборе участка непрерывного спектра есть хитрость. С одной стороны, нужно захватить довольно большой участок непрерывного спектра, чтобы приближение было хорошим. Однако, это будет просто линия с неким наклоном, поэтому если непрерывный спектр не линеен, необходимо выбрать маленький участок, который будет приблизительно линеен. В конце процесса приближения мы увидим графическое представление приближенного непрерывного спектра, так что можно проверить, хорошо ли вы выбрали область.
В-третьих, необходимо выбрать, какие особенности спектра мы будем приближать. Заметьте, что вверху окна splot, есть меню, где написано что-то в роде:
Lines ('f'ile, 'g'aussian, 'l'orentzian, 'v'oigt, 't'ype, 'q'uit:
Вам нужно просто навести курсор на линию (при этом неважна вертикальная координата вашего курсора) и нажать клавишу, означающую тот тип приближения, который вам нужен. Предположим, что это гауссиана, так что надо нажать g. Проделайте тоже самое с каждой линией вашего сегмента. Используйте клавишу d, если вам не интересны некоторые линии. Если вы пропустите линию, ее величина будет считаться частью непрерывного спектра, что повлечет за собой большие ошибки. Каждый из отождествленных линий будет помечена коротким вертикальным штрихом. Как только вы пометили все линии, нажмите q и переходите к следующему шагу. Вы увидите вопрос вверху окна splot:
Fit positions (fixed, single, all, quit)
IRAF спрашивает, хотите ли вы, чтобы центры (положения) линий были переменными при приближении. Пока у вас нет причин это не делать, жмите а для подтверждения.
Теперь вам зададут новый вопрос:
Fit Gaussian widths (fixed, single, all, quit)
Теперь спрашивается, хотите ли вы, чтобы ширина линий была переменной. Заметьте. Что вопрос может меняться в зависимости от того, какой тип профиля вы использовали при маркировке линий. Лучше всего нажать а, чтобы у каждой линии была своя ширина.
Появится новый вопрос:
Fit background (no, yes, quit)
IRAF спрашивает, нужно ли вычислять поток в непрерывном спектре. В большинстве случаев лучше нажимать y (yes).
Теперь IRAF отобразит результат приближения, как показано на рисунке 8. Сначала проверьте, что приближение разумно. Зеленая штриховая линия показывает приближение уровня непрерывного спектра. Хотелось бы, чтобы она хорошо согласовалась со средним. На рисунке 8 это выглядит реально, так как зеленая линия проходит через шум на правдоподобном уровне. Красная штриховая линия показывает приближение профилей.
![](https://images.astronet.ru/pubd/2020/06/05/0001664636/introductioniraf_html_462c8dd4.jpg)
Рис.8
Текстовая строка вверху окна splot дает информацию о вычисленных линиях, которые пронумерованы от одного до n слева направо. На рисунке 8 мы видим, что низкая шумная широкая линия слева имеет центр на 6551.11 ангстремах, поток в ней составляет 637.4 отсчета*ангстрем, эквивалентная ширина не определена (INDEF), потому что это эмиссионная линия, а не абсорбционная линия, полуширина на полувысоте составляет 8.55 ангстрем. Чтобы просмотреть такую же информацию для других двух линий, используйте клавиши + и -. Нажав r, вы получите среднеквадратичное действующее значение шума непрерывного спектра для сравнения с потоком в линиях.
Нажмите q для выхода. Вас могут спросить, не хотите ли вы попробовать вычислить линии с другими параметрами. Чтобы выйти совсем, нажмите q для каждого из вопросов. Когда вы вернетесь в обычный режим splot, вы увидите вверху окна сообщение Deblending done. Чтобы покинуть splot еще раз нажмите q.
7. Альтернатива команде APALL.
Для непрерывного спектра команда apall работает прекрасно. Если же вы имеете дело со спектром туманности, команда apall уже не подходит. В этом случае нужен более сложный метод. Один из них описан здесь.
Пункты 1 и 2 этого раздела совпадают с пунктами 6.1 и 6.2. Так что начнем сразу с третьего.
7.3 Подготовка к нахождению апертуры.
Если ваш спектр вытянут вдоль горизонтальной оси, очевидной альтернативой apall будет простое усреднение нескольких строк для получения одномерной картинки. Если ваш спектр вытянут не вдоль горизонтальной оси, просто поверните его, используя команду rotate. Чтобы скомбинировать строки в одну (одномерный спектр), необходимо использовать команду imcombine с верными входными данными. В данном случае, вместо сложения изображений. Мы должны строки. Это можно сделать, используя части изображений, как описано в параграфе 4.4.
Нам необходимо создать список, в котором каждая картинка - это строка изображения, которую надо скомбинировать.
Есть простой код в UNIX, который генерирует такой список. Здесь приводится текстовый файл
## This program will print to screen a list for combining ## lines of pixels using the IRAF task imcombine. The output ## should be redirected to a file for usage as a list file in IRAF. ## ## usage: ## mkspeclist imagename linestart lineend ## imagename -- filename of the image whose lines you wish ## to combine ## linestart -- line number of the first (lowest numbered) ## line to be combined ## lineend -- line number of the last (highest numbered) ## line to be combined ## set file = $1 set a = $2 set b = $3 set ind = $a while ( $ind <= $b ) echo $file\[\*,$ind\] set ind = `expr $ind + 1` end
Использовать файл необходимо так:
% mkspeclist imagename l1 l2
Где imagename - название изображения, с которым вы работаете, а l1 и l2 - это первый и последний номера строк, которые необходимо скомбинировать. Программа просто выводит список на экран. Например, это может выглядеть так:
% mkspeclist myspectrum 450 460 myspectrum[*,450] myspectrum[*,451] myspectrum[*,452] myspectrum[*,453] myspectrum[*,454] myspectrum[*,455] myspectrum[*,456] myspectrum[*,457] myspectrum[*,458] myspectrum[*,459] myspectrum[*,460]
Теперь вы можете скопировать и вставить эти строки, чтобы создать файл со списком. По-другому, вы можете направить этот список в файл:
% mkspeclist myspectrum 450 460 > lines_myspectrum
Теперь откройте файл lines_myspectrum, он будет содержать 11 строк, которые до этого были на экране.
7.4 Нахождение апертуры.
Теперь, когда у нас есть начальный список, мы можем скомбинировать строки:
cl> imcombine @lines_myspectrum myspectrum_1D combine=average
Заметим, что здесь был специально определен параметр combine=average (а не медиана), так как если мы комбинируем что-то, что не имеет постоянной яркости, мы не должны использовать медиану.
7.5 Изучение одномерного спектра.
Файл myspectrum_1D - это одномерный спектр, который выглядит очень скучно (одна строка пикселей), однако, можно использовать команду implot, чтобы посмотреть на него:
cl> implot myspectrum_1D
Результат показан на рисунке 9.
![](https://images.astronet.ru/pubd/2020/06/05/0001664636/introductioniraf_html_58a314f6.jpg)
Рис.9
Команда implot содержит много интерактивных возможностей. Они описаны в справке, здесь мы выделим возможность увеличения части изображения. Например, в данном случае мы видим только самые яркие линии. Чтобы увидеть информацию о слабых деталях, необходимо изменить масштаб по оси Y. Необходимо напечатать :y 0 300 (не забудьте двоеточие), после этого отсчеты по оси Y будут от 0 до 300. Теперь можно увидеть более слабые линии (рисунок 10).
![](https://images.astronet.ru/pubd/2020/06/05/0001664636/introductioniraf_html_m66a4449a.jpg)
Рис.10
Существует подобная команда для изменения масштаба по оси X.
7.6 Вычитание неба.
Чтобы вычесть небо из спектра (в команде apall это делалось автоматически), надо описанным выше способом получить спектр из снимка, не содержащего объект:
% mkspeclist myspectrum 480 900 > lines_sky cl> imcombine @lines_sky myspectrum_sky combine=average
В данном случае строки 480-900 содержат только пустое небо. В идеале нужно комбинировать все линии, которые возможны, чтобы уменьшить количество шумов, вносимое вычитанием неба.
Теперь мы просто используем imarith для вычитания спектра неба.
cl> imarith myspectrum_1D - myspectrum_sky myspectrum_1D_skysub
Теперь файл myspectrum_1D_skysub - это одномерный спектр источника с вычтенным небом. Заметим, что в шаге вычитания важно, чтобы в команде imcombine был параметр combine=average (вместо суммы). Если бы мы сложили эти линии, мы бы не могли просто вычесть спектр неба из спектра объекта, так как они содержат разное количество строк. Так как мы усреднили, нам об этом не надо беспокоиться.
После всего этого вы можете вернуться в пункту 6.8 данного пособия.
8. Обработка фотометрических данных.
Для того, чтобы вы могли непосредственно потренироваться в обработке фотометрических данных, в архиве m51fits.zip (размер 2 Mb) лежат снимки галактики М 51 в 4 фильтрах, а также flat, dark и bias.
8.1 Использование расширение .imh и его взаимодействие с форматом .fits
В предыдущих разделах все изображения имели по умолчанию расширение .fits , так как это было задано в файле login.cl (см. параграф 1.4). Однако, можно также работать с другим типом файлов, имеющим расширение .imh. Для этого в файле login.cl 34 строку
set imtype = "fits"
заменить на
set imtype = "imh"
Если у вас есть начальные файлы, имеющие расширение .fits, их можно перевести в другой тип с помощью команды rfits.
cl> rfits /path/imagename.fits 0 imagename.imh
где path - местонахождение файла imagename.fits. Если у вас есть несколько изображений с похожими названиями, то их все можно перевести одним действием:
cl> rfits /path/imagename*.fits 0 imagename
В результате новые изображения будут называться imagename0001.imh, imagename0002.imh и т.д.
Аналогичным образом можно файлы .imh перевести в файлы .fits, используя команду wfits. С помощью команды epar можно изменить параметры:
cl> epar wfits bscale = 1. FITS bscale bzero = 0. FITS bzero (fextn = "fits") Extension to append to output disk FITS (extensions = no) Write all images to a single FITS file ? (global_hdr = yes) Prepend a global header to the FITS (make_image = yes) Create a FITS image file? (long_header = no) Print FITS header cards? (short_header = yes) Print short header? (bitpix = 16) FITS bits per pixel (blocking_fac = 0) FITS tape blocking factor (scale = yes) Scale data? (autoscale = yes) Auto_scaling? (mode = "ql")
Рекомендуется использовать для результирующих файлов расширение, отличное от .fits , например, .fts или .fit , чтобы различать начальные и конечные файлы.
В этом разделе мы для примера будем работать с файлами .imh.
8.2 Учет плоского поля, темнового тока и шума считывания. Сложение изображений.
В этом пункте надо проделать операции параграфов 5.2-5.8.
8.3 Определение апертур звезд.
Получив изображение после первичной обработки, можно приступать к получению фотометрических результатов. Первое, что нам необходимо сделать -- это определить апертуры фотометрируемых звезд. Для это нужно использовать команду radprof, адрес которой
cl> noao no> digi di> app ap> radprof imagename.imh
Появится перечень вопросов, ответы на которые вы определяете сами, в зависимости от вашей задачи. Часто удобными являются 10 и 1 соответственно
The maximum radial profile radius in scale units: The step size for radial profile in scale units:
После ответов на эти вопросы на изображении появится мигающий кружок, в центр которого необходимо поместить исследуемую звезду и нажать d. Появится дополнительное окно, в котором изображен двумерный профиль звезды (см. рисунок 11). Исходя из профиля, вы определяете радиус апертуры звезды, внутренний и внешний радиусы апертуры кольца фона в пикселях. Необходимо, чтобы звезда проваливалась внутрь апертуры , но при этом не захватывалось много фона. Для выхода необходимо нажать q два раза.
![](https://images.astronet.ru/pubd/2020/06/05/0001664636/introductioniraf_html_m24a19342.gif)
Рис.11
8.4 Подготовка к фотометрии.
После этого необходимо установить параметры фотометрии. Для этого надо набрать команду epar photpars:
Image Reduction and Analysis Facility PACKAGE = apphot TASK = photpars (weighti= constant) Photometric weighting scheme for wphot (apertur= 6.) List of aperture radii in scale units (zmag = 25.) Zero point of magnitude scale (mkapert= no) Draw apertures on the display (mode = ql)
И установить apertur= выбранному значению апертуры вашей звезды. Затем мы набираем команду epar fitskypars:
Image Reduction and Analysis Facility PACKAGE = apphot TASK = fitskypars (salgori= centroid) Sky fitting algorithm (annulus= 7.) Inner radius of sky annulus in scale units (dannulu= 3.) Width of sky annulus in scale units (skyvalu= 0.) User sky value (smaxite= 10) Maximum number of sky fitting iterations (sloclip= 0.) Lower clipping factor in percent (shiclip= 0.) Upper clipping factor in percent (snrejec= 50) Maximum number of sky fitting rejection iteratio (sloreje= 3.) Lower K-sigma rejection limit in sky sigma (shireje= 3.) Upper K-sigma rejection limit in sky sigma (khist = 3.) Half width of histogram in sky sigma (binsize= 0.1) Binsize of histogram in sky sigma (smooth = no) Boxcar smooth the histogram (rgrow = 0.) Region growing radius in scale units (mksky = no) Mark sky annuli on the display (mode = ql)
Где устанавливаем annulus= внутреннему радиусу фона, dannulu=ширина кольца.
8.5 Фотометрия ярких звезд.
Затем можно фотометрировать звезду, используя команду phot. На изображении снова появится кружок, в центр которого, как и раньше, необходимо поместить нашу звезду и нажать пробел. После чего на экране появится надпись:
imagename.imh 132.54 219.63 2687.225 15.218 ok
где первые два числа - координаты центра звезды, третье число - поток в единицах отсчета, далее следует инструментальная звездная величина. Команда phot создает файл imagename.imh.mag.*, где * означает номер звезды, в котором содержится все полученная информация. Его можно просмотреть с помощью команды less.
8.6 Фотометрия слабых звезд.
Для слабых звезд очень трудно выбрать апертуру способом, описанным ранее. Здесь используется метод PSF - фотометрии.
Для начала на изображении находим все звездообразные объекты. С помощью команды radprof надо определить апертуру каждой из них и апертуру фона приблизительно, используя клавишу пробел, найти значения параметра FWHM (см. рисунок 12). Затем выбрать максимальные из всех этих значений. Используем команду qphot:
ap> qphot imagename.imh 3 s d a
s - внутренний радиус фона, d - ширина фона, a - апертура звезды. На изображении появится кружок, мы должны навести его по очереди на каждую звезду и нажать пробел. Порядок звезд следует запомнить, самые слабые звезды нужно фотометрировать в последнюю очередь.
![](https://images.astronet.ru/pubd/2020/06/05/0001664636/introductioniraf_html_m4df62b93.gif)
Рис.12
Далее, мы покидаем apphot и загружаем daophot:
ap> by di> dao da>
Запускаем команду psf:
da> psf imagename.imh Input photometry file(s) (default: image.mag.?) (default): Input psf star list(s) (default: image.pst?): Output PSF image(s) (default: image.psf.?) (default): Output PSF star list(s) (default:image.pst.?) (default): Output PSF star group file(s) (default: image.psg.?) (default): Analytic psf function(s) (gauss): Analytic psf function(s): gauss Order of variable psf (0):
На все перечисленные вопросы надо ответить enter. Далее:
Psf radius in scale units (11.):
(здесь надо поставить число а из команды qphot).
New psf radius: 11. scale units 11. pixels Fitting radius in scale units (3.):
(здесь надо поставить удвоенное значение FWHM)
New fitting radius: 3. scale units 3. pixels Minimum good data value (INDEF) (CR or value):
(обычно нуль)
New minimum good data value: INDEF counts Maximum good data value (INDEF) (CR or value):
(обычно хватает 200000)
На изображении опять появляется кружок. Помня о порядке звезд, нам необходимо навестись на каждую и нажать а. Появится окно с трехмерным профилем звезды (см. рисунок 13). Если профиль достаточно хороший - жмем а, если он нам не нравится - жмем d. Когда все звезды по порядку пройдены - жмем последовательно f для приближения общего профиля, w для записи результатов в файл, q для выхода.
![](https://images.astronet.ru/pubd/2020/06/05/0001664636/introductioniraf_html_403e5602.gif)
Рис.13
Затем необходимо вычислить звездные величины, для этого используется команда peak.
da> peak imagename.imh Input photometry file (default: image.mag.?) (default): PSF image (default: image.psf.?) (default): Output photometry file (default: image.pk.?) (default): Output rejections file (default: image.rej.?) (default): Recenter the stars (yes): Recenter the stars: yes Refit the sky (no): Refit the sky: no
На эти все вопросы мы отвечаем enter. А на следующие:
Psf radius in scale units (11.):
(здесь надо поставить число а из команды qphot).
New psf radius: 11. scale units 11. pixels Fitting radius in scale units (3.):
(здесь надо поставить удвоенное значение FWHM)
New fitting radius: 3. scale units 3. pixels Minimum good data value (INDEF) (CR or value):
(обычно нуль)
New minimum good data value: INDEF counts Maximum good data value (INDEF) (CR or value):
(обычно хватает 200000)
На экране появится строки, похожие на эту:
Star: 1 X: 132.54 Y: 219.63 Mag: 15.22 Sky: 2687.23 FIT: Star: 1 X: 132.53 Y: 219.65 Mag: 15.22 Sky = 2687.23
Вся информация будет записана в файл imagename.imh.pk.*, который можно просмотреть с помощью команды less.
Если при работе с IRAF будут возникать какие-то вопросы, то следует обращаться к help.
Желаем удачной работы! =)
Публикации с ключевыми словами:
обработка наблюдений
Публикации со словами: обработка наблюдений | |
См. также:
|