Astronet Астронет: А. А. Вольнова, А. П. Шульга/"Introduction to IRAF" Введение в IRAF
http://www.variable-stars.ru/db/msg/1216409
Введение в IRAF

Введение в 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.

Оглавление

  1. Конфигурация и запуск IRAF
    1. Предварительные замечания
    2. Использование команды mkiraf.
    3. Открытие xgterm.
    4. Редактирование вашего файла login.cl.
    5. Запуск IRAF.
  2. Взаимодействие с CL.
    1. Команды UNIX и IRAF.
    2. Работа с командами.
    3. Изменение параметров команд в CL.
    4. Изменение параметров команд с использованием epar.
  3. Ximtool и отображение картинок.
    1. Как отображать картинки.
    2. Понимание изображения: динамический диапазон.
    3. Понимание изображения: передаточная функция.
  4. Различные подсказки при работе с CL.
    1. Списки ввода.
    2. История CL.
    3. Команда apropos.
    4. Работа с частью изображения.
    5. Сценарии CL.
  5. Первичная обработка данных изображений.
    1. Обзор обработки изображений.
    2. Комбинирование темноты.
    3. Вычитание темноты.
    4. Комбинирование плоских полей.
    5. Нормировка плоских полей.
    6. Деление на плоские поля.
    7. Выравнивание нескольких изображений для соединения.
    8. Комбинирование нескольких изображений.
  6. Первичная обработка спектроскопических данных.
    1. Обзор обработки спектроскопических данных.
    2. Определение оси дисперсии.
    3. Подготовка APALL.
    4. Запуск APALL: определение апертуры.
    5. Запуск APALL: определение фона.
    6. Запуск APALL: определение следа.
    7. Запуск APALL: извлечение спектра.
    8. Калибровка спектра по длинам волн.
    9. Согласование спектрального разрешения и изображения.
    10. Применение спектрального разрешения.
    11. Использование splot для просмотра откалиброванного спектра.
  7. Альтернатива команде APALL.
    1. Обзор обработки спектроскопических данных.
    2. Определение оси дисперсии.
    3. Подготовка к нахождению апертуры.
    4. Нахождение апертуры.
    5. Изучение одномерного спектра.
    6. Вычитание неба.
  8. Обработка фотометрических данных.
    1. Использование расширение .imh и его взаимодействие с форматом .fits
    2. Учет плоского поля, темнового тока и шума считывания. Сложение изображений.
    3. Определение апертур звезд.
    4. Подготовка к фотометрии.
    5. Фотометрия ярких звезд.
    6. Фотометрия слабых звезд.

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:

% xgterm &

Вам следует всегда запускать 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, вы все еще можете изменить изображение с помощью параметров яркость и контраст (передаточная функция). Это соо