Cursillo de Introducción al Iraf
Andrea Sosa - Dpto. de Astronomía (IFFC ) y OALM


Documentación: Contenido:

1 Nociones Básicas

1. Comenzando con Iraf
2. Personalizando el entorno de Iraf
3. Explorando archivos y directorios
4. Estructura básica de Iraf
2 El verdadero comienzo: trabajando con Iraf
1. Paquetes y tareas
2. Consiguiendo ayuda
3. Funcionamiento de las tareas
4. Abortando tareas
5. File and Image Templates
6. CL como calculadora
3 Trabajando con imágenes
1.Obteniendo información sobre una imagen
2. Visualizando las imágenes
3. Comandos para manipular imágenes
4. Herramientas gráficas
4. Algunas aplicaciones:
1. Estimación del Seeing
2. Evaluación del foco de una imagen
3. Estimación de la relación señal -ruido y de la magnitud límite


Comenzando con Iraf...

Supongamos al usuario andy en un ambiente de ventanas bajo un sistema unix o linux, y situado en el directorio /fisica1/users/andy/iraf . Ejecuto el comando mkiraf que creará el archivo login.cl y el subdirectorio uparm:
(los caracteres en color azul indican lo que escribe el usuario)

>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.
>

El login.cl es un archivo de configuración ejecutado en cada inicio de sesión iraf. El directorio uparm contiene los archivos de parámetros para comandos modificados por el usuario. El siguiente es un ejemplo del archivo login.cl:
 

# LOGIN.CL -- User login file for the IRAF command language.

# Identify login.cl version (checked in images.cl).
if (defpar ("logver"))
    logver = "IRAF V2.11 May 1997"

set home  = "/fisica1/users/andy/iraf/"
set imdir  = "/usr/tmp/andy/"
set uparm  = "home$uparm/"
set userid  = "andy"

# Set the terminal type.
if (envget("TERM") == "sun") {
    if (!access (".hushiraf"))
 print "setting terminal type to gterm..."
    stty gterm
} else {
    if (!access (".hushiraf"))
 print "setting terminal type to xgterm..."
    stty xgterm
}

# Uncomment and edit to change the defaults.
#set editor  = vi#set printer  = lw
#set stdimage = imt800
#set stdimcur = stdimage
#set stdplot  = lw
#set clobber  = no
#set filewait = yes
#set cmbuflen = 512000
#set min_lenuserarea = 64000
#set imtype  = "imh"
# List any packages you want loaded at login time, ONE PER LINE.
images          # general image operators
plot            # graphics tasks
dataio          # data conversions, import export
lists           # list processing

# The if(deftask...) is needed for V2.9 compatibility.
if (deftask ("proto"))
    proto       # prototype or ad hoc tasks

tv              # image display
utilities       # miscellaneous utilities
noao            # optical astronomy packages

keep
 

Se puede editar el login.cl para modificar algunas variables de ambiente como HOME, IMDIR, etc...

Iraf requiere un programa externo para desplegar imágenes. Las opciones son:

SAOImage
Ximtool
SAOtng

Advertencias:

Para iniciar el Ximtool:

En cualquier ventana ejecuto:

> ximtool &

Antes iniciar la sesión iraf, llamo a una terminal xgterm:

> xgterm &

Luego desde esa xgterm ,y situado en el directorio home del iraf (o sea el directorio que contiene
el archivo login.cl y el directorio uparm)  inicio iraf:

> cl

NOAO PC-IRAF Revision 2.11.3 EXPORT Tue Oct 26 21:01:12 MST 1999
    This is the EXPORT version of PC-IRAF V2.11 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.     dbms.       images.     language.   lists.      noao.       obsolete.   plot
cl>
 

Si llamo al iraf desde otro directorio, saldrá un mensaje de advertencia:

> cl
Warning: no login.cl found in login directory
      dataio      images      lists       obsolete    proto       system
      dbms        language    noao        plot        softools    utilities

Entonces salgo de iraf, me sitúo en el directorio correcto y lo llamo de nuevo.

cl> logout
> pwd
/fisica1/users/andy
> cd iraf
> cl
 

1.2 Personalizando el entorno de Iraf...

Iraf mantiene una serie de variables de ambiente que afectan la operación de muchos comandos (tasks)  Por ej., para ver la lista de las variables definidas ejecuto:

cl> show|page

Tabla 1  :  Variables importantes

variable
ejemplo
                      definición
terminal xgterm le dice al Iraf que tipo de terminal estoy usando
printer lp le indica cual impresora usar
stdplot lp le indica donde mandar los gráficos para imprimir
stdimage imt800 fija el tamaño del buffer de la imagen (no el tamaño del display)
stdgraph xgterm le indica al Iraf donde desplegar los gráficos 
imtype imh, fits fija el formato de imagen por defecto
imdir /usr/tmp/andy/ define el directorio donde serán guardados los archivos .pix
uparm home$uparm/ define el directorio donde se guardan los archivos de parámetros modificados por el usuario
tmp /tmp/ define el directorio donde estarán los archivos temporales
clobber yes/no determina si los archivos pueden sobreescribirse o no
imclobber yes/no determina si las imágenes pueden sobreescribirse o no

Para ver el valor de una variable en ptcar., por ej. imdir:

cl> show imdir
/usr/tmp/andy

Para cambiar el valor de una variable de ambiente,  puedo editar el login.cl, o puedo cambiarlo desde la propia línea de comandos:

cl> set imdir = "/fisica1/users/andy/iraf/impix/"
cl> show imdir
/fisica1/users/andy/iraf/impix

Aclaración: set cambia el valor de la variable temporalmente; al salir del paquete actual (ver más adelante), la variable retorna al valor previo. El comando reset tambien cambia el valor de la variable pero manteniendolo por toda la sesión.

Por ejemplo, para seleccionar la impresora:

cl> reset printer = lp

El comando set sin argumentos me muestra todas las variables con sus valores actuales:

cl> set

Otro ejemplo:

cl> show editor
vi

Para cambiarlo:

cl> set editor = ed

Otra variable que posiblemente deseemos modificar a nuestro gusto es la dimensión de la terminal donde estamos corriendo iraf:

cl> stty                         # muestra el tipo de terminal
xgterm ncols=94 nlines=29

Para modificarlo:

cl> stty ncolumns=20 nlines=55
 

1.3 Explorando archivos y directorios...

cl> dir            # lista directorio actual (idem ls)
cl> dir uparm      # lista archivos del subdirectorio uparm
cl> dir *cl*       # lista archivos con "cl" en el nombre
cl> dir login.??   # lista archivos que empiecen con "login."
                   # y tengan solo dos caracteres al final
cl> dir *.imh      # lista todas las imágenes en formato iraf
                   # en el directorio actual
cl> typearchivo   #idem cat
cl> page archivo   #idem more
cl> edit archivo
cl> del archivo    #idem rm
cl> path           #idem pwd
cl> cd ../noches/990608  # me muevo al directorio iraf/noches/990608
cl> cd             # retorno al home directory de iraf
cl> copy ../noches/990608/*.fits . # creo un link
cl> diskspace      # idem df

Filesystem         1024-blocks  Used Available Capacity Mounted on
/dev/hda1            2028098 1539777   383499     80%   /
/dev/hda3            5839334 5015781   521130     91%   /fisica10
/dev/hdc1            8105079 4100522  3752417     52%   /fisica1
heavy:/fisica        4053171 3701877   141556     96%   /fisica

cl> rename arch_vi arch_new # idem mv
cl> lprint archivo # idem lpr
cl> mkdir dir1

Para borrar el directorio dir1:

cl> cd dir1 # me muevo al directorio dir1
cl> imdel *.imh # borro las imágenes en formato iraf
cl> del * # borro el resto de los archivos
cl> cd .. # subo un nivel
cl> !rmdir dir1 # borro el directorio (ya vacío) (*)

    (*) Algunos comandos de unix no son reconocidos por iraf, y en tal caso
        hay que anteponer el                                                                                                                                                                                                                                                              signo ! delante del comando
 

1.4 Estructura básica de Iraf: Packages & Tasks

El elemento básico es la tarea (task) o comando iraf: es un programa usado para realizar una función específica. Las tareas que cumplen funciones similares y/o están relacionadas lógicamente se agrupan juntas en un paquete (pagkage). A su vez, los paquetes relacionados entre si pueden ser agrupados a un nivel superior:

Tabla 2 :  Ejemplo de la estructura jerárquica de los paquetes en Iraf

paquete pcal.
subpaquete
sub-subpaquete
tarea
noao
 
 
 
 
 
 
 
 
 

 

imred
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 



artdata
astrometry
astutil
digiphot
focas
mtlocal
nobsolete
nproto
observatory
onedspec
rv
surphot
twodspec
 

 

ccdred
 
 
 
 
 
 
 
 
 


argus
bias
ctioslit
dtoi
echelle
generic
hydra
iids
ired
irs
kpnocoude
kpnoslit
specred
vtel



 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

badpiximage
ccdhedit
ccdlist
ccdgroups
ccdinstrument
ccdproc
combine
zerocombine
darkcombine
flatcombine
cosmicray

(etc... )



 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

2 El verdadero comienzo: trabajando con Iraf...

 NOAO PC-IRAF Revision 2.11.3 EXPORT Tue Oct 26 21:01:12 MST 1999
    This is the EXPORT version of PC-IRAF V2.11 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.     images.     lists.      obsolete.   proto.      system.
      dbms.       language.   noao.       plot.       softools.   utilities.
cl>

2.1 Paquetes y Tareas...

Los nombres seguidos por un punto son los paquetes cargados. Los nombres sin punto al final son tareas. El prompt son las dos primeras letras del último paquete cargado (clpackge)

Para cargar un paquete dado (por ej. el noao):

cl> noao
      artdata.      digiphot.     mtlocal.      observatory   surfphot.
      astrometry.   focas.        nobsolete.    onedspec.     twodspec.
      astutil.      imred.        nproto.       rv.

Dentro del noao cargo el imred:

no> imred
      argus.      ctioslit.   generic.    irred.      kpnoslit.
     bias.       dtoi.       hydra.      irs.        specred.
     ccdred.     echelle.    iids.       kpnocoude.  vtel.

y dentro del imred cargo el ccdred:

im> ccdred
     badpiximage      ccdlist          combine          mkfringecor   mkskyflat
      ccdgroups        ccdmask          cosmicrays       mkillumcor       setinstrument
      ccdhedit         ccdproc          darkcombine      mkillumflat      zerocombine
      ccdinstrument    ccdtest          flatcombine      mkskycor
cc>

Tales serían los paquetes necesarios para reducir imágenes, por ej.

Para salir de un paquete:

cc> bye
      argus.      ctioslit.   generic.    irred.      kpnoslit.
      bias.       dtoi.       hydra.      irs.        specred.
      ccdred.     echelle.    iids.       kpnocoude.  vtel.
im>

Si se desea que cargue ciertos paquetes automáticamente al iniciarse la sesión iraf, basta editar el login.cl y agregarlos allí.

Para obtener información sobre los paquetes:

cl>              # lista los paquetes cargados. Si estoy en un paquete particular
                   # lista las tareas o subpaquetes de ese paquete.
cl> ??             # lista las tareas o subpaquetes de todos los paquetes
cl> package        # lista todos los paquetes cargados
 

2.2 Consiguiendo ayuda...

El comando help puede utilizarse con diversas opciones:

Tabla 3 :  Consiguiendo ayuda sobre comandos o paquetes

       comando 
descripción
help task  muestra todo el texto de la página de ayuda sobre el comando (task)
help package describe (uno por línea) los subpaquetes o tareas del paquete
phelp task muestra el help por página (= help | page)
example task muestra solamente la sección de ejemplos del help
describe task muestra solamente la sección de descripción
help task >  task.txt salvo la salida del help en un archivo 

Ejemplos:

cl> help rfits sec=examples     # me muestra sólo la sección de ejemplos
                                # de la descripción del comando rfits
cl> help help | lpr             # imprimo la descripción del help

En el caso en que no sepa cual es la tarea que necesito:

cl> apropos <keyword>   # Muestra todas las tareas que contienen
                        # la palabra keyword en su descripción
cl> references <keyword>  # Idem apropos

Ejemplo:

cl> references display
searching the help database...
cursors - Graphics and image display cursors  [language]
cv - Control image device, display "snapshot"  [iis]
cvl - Load image display (newer version of 'display')  [iis]
display - Load an image or image section into the display  [tv]
frame - Select the frame to be displayed  [iis]
history - Display  commands previously executed  [language]
iis - IIS image display control package  [tv]
imdkern - Image display device (IMD) graphics kernel  [plot]
imexamine - Examine images using image display, graphics, and text  [tv]
jobs - Display status of background jobs  [language]
odisplay - Display images (tv V2.10.4)  [obsolete]
rimcursor - Read the image display cursor (makes a list)  [lists]
tv - Image display utilities package  [images]
tvmark - Mark objects on the image display  [tv]
wcslab - Overlay a displayed image with a world coordinate grid   [tv]
cl>

2.3 Funcionamiento de las tareas...

La forma en que opera una tarea o comando está determinada por sus parámetros .
Existen dos tipos de parámetros:

requeridos (query or required parameters):  deben ser especificados al llamar la tarea. De lo contrario aparecerá un prompt requiriendo su ingreso. Son "aprendidos" (learned) por la tarea, transformándose en default para la próxima corrida del comando. Deben ser proporcionados en el orden correcto en la línea de comandos.

ocultos (hidden parameters): no es necesario especificarlos, la tarea usa valores default. Pueden especificarse en la línea de comandos, en cualquier orden, pero siempre despues
de los parámetros requeridos.

cl> lpar task   # me muestra los parámetros de la tarea task
cl> epar task   # edito los parámetros. Para salir y salvar  escribo "q:"
                # para salir descartando cambios escribo " q:!"
                # con "go:" salgo ejecutando.
cl> unlearn task   # vuelvo los parámetros de task a sus valores default

Ejemplo:

cl> epar imarith

                       I R A F
      Image Reduction and Analysis Facility

PACKAGE = imutil
   TASK = imarith

operand1=                       Operand image or numerical constant
op      =                    +  Operator
operand2=                       Operand image or numerical constant
result  =                       Resultant image
(title  =                     ) Title for resultant image
(divzero=                   0.) Replacement value for division by zero
(hparams=                     ) List of header parameters
(pixtype=                     ) Pixel type for resultant image
(calctyp=                     ) Calculation data type
(verbose=                   no) Print operations?
(noact  =                   no) Print operations without performing them?
(mode   =                   ql)
 

Esta tarea me permite realizar operaciones aritméticas con imágenes. Por ej., para sumar la imagen imag1 con la imagen imag2, y llamarle imag3 a la imagen resultante:

                                          I R A F
                           Image Reduction and Analysis Facility
PACKAGE = imutil
   TASK = imarith

operand1=      imag1  Operand image or numerical constant
op      =                   +       Operator
operand2=      imag2  Operand image or numerical constant
result  = imag3                 Resultant image
(title  =                     ) Title for resultant image
(divzero=                   0.) Replacement value for division by zero
(hparams=                     ) List of header parameters
(pixtype=                     ) Pixel type for resultant image
(calctyp=                     ) Calculation data type
(verbose=                   no) Print operations?
(noact  =                   no) Print operations without performing them?
(mode   =                   ql)

Los parámetros requeridos son los cuatro primeros, mientras el resto (entre parentésis) son los ocultos.
 

La alternativa es especificar los parámetros en la línea de comandos:

cl> imarith imag1 + imag2 imag3

Los parámetros ocultos también se pueden modificar en la línea de comandos:

cl> imarith imag1 + imag2 imag3 verbose=yes

Pero en este caso no son "aprendidos", para esto hay que modificarlos con epar

Cuando iraf va a ejecutar una tarea, primero se fija en el archivo de parámetros en el directorio uparm. Si no lo encuentra, usa valores default.

En resumen, tenemos tres formas distintas de ejecutar una tarea dada. Veamos otro ejemplo con imstatistic ( para análisis estadístico de una imagen):

1º)

cl> imstat
Images ( ): LAN1057
#               IMAGE      NPIX      MEAN    STDDEV       MIN       MAX
              LAN1057     98304     6133.      175.     4861.    13936.
cl>

2º)   En este caso especifico en la línea de comandos el parámetro requerido (image) y a continuación los ocultos que me interesan:

cl> imstat LAN1057 fields="image,mean,stddev"
#               IMAGE      MEAN    STDDEV
              LAN1057     6133.      175.
cl>

3º)  Edito el archivo de parámetros, modifico lo que corresponda y salgo con ":go"

cl> epar imstat
                      I R A F
       Image Reduction and Analysis Facility

PACKAGE = imutil
   TASK = imstatistics

images  =            LAN1057  Images
(fields = image,mean,stddev) Fields to be printed
(lower  =                INDEF) Lower cutoff for pixel values
(upper  =                INDEF) Upper cutoff for pixel values
(binwidt=                  0.1) Bin width of histogram in sigma
(format =                  yes) Format output and print column labels?
(mode   =                   ql)

:go

#              IMAGE      MEAN    STDDEV
              LAN1057     6133.      175.
cl>

Para redireccionar la salida de una tarea:

cl> imstat LAN1057> stat.txt

La salida de una tarea puede ser usado como entrada a otra:

cl> imhead LAN1057 long+ | page   # me muestra el header de la imagen
                                  # LAN1057 en formato largo, por página

También se pueden escribir dos o más comandos en la misma línea, separados por ";"

cl> time;dir;show printer
Wed 17:42:12 12-Apr-2000
LAN1057.FIT  LAN1057.imh
lp
cl>

Para correr una tarea en background:

cl> task <argumentos requeridos> &

2.4 Abortando tareas...

Una tarea en ejecución se puede abortar con "ctrl+C". A continuación conviene ejecutar:

cl> flpr

Si esto no alcanza para que iraf siga funcionando normalmente, entonces conviene reiniciar iraf.

Para detener procesos que están corriendo en background:

cl> ps | page  # me muestra en la primera columna el ID de cada proceso, y en la quinta el nombre del proceso

Para matar un proceso dado entonces hago:

cl> kill <ID>
 

2.5 File and Image Templates

Iraf da la posibilidad de ejecutar tareas con listas de imágenes. Por ejemplo, usando una sintaxis similar a la de Unix:

cl> imhead obj*.imh   # me muestra los headers de todas las imágenes
                      # cuyo nombre empiece con obj

cl> imstat obj00?.imh # realiza estadística sobre las
                      # imágenes obj001.imh, obj002.imh,...,obj009.imh

o creando una lista de imágenes:

cl> files obj*.imh > lista  # idem ls obj*.imh>lista

cl> imstat @lista

El archivo lista puede editarse para eliminar o borrar alguna imagen que no se quiera procesar, etc...

Iraf guarda los comandos ejecutados más recientemente en la memoria, y pueden recuperarse:

cl> e                       #  vuelvo al comando previo
cl>                       #  ejecuto el comando previo
cl> e imst            # vuelvo al comando previo que empieza con "imst"
cl> history 40        # despliega los últimos 40 comandos
cl> keeplog=yes       # todos los comandos son guardados en un archivo
cl> logfile="home$cllogfile.cl"  #  nombre del archivo donde se guardan
                                 #  los comandos cl
cl> type logfile | page  #  me muestra los comandos que estuve ejecutando

Para correr un comando exclusivamente unix:

cl> ! <comando>
 

2.6 CL como calculadora

cl> help mathfcns
MATHFCNS (Feb86)                language                MATHFCNS (Feb86)
 
 

NAME
    mathfcns -- math functions available in the CL
 

SYNOPSIS

    Function    Return value                  Description

    sin(x)          real                    sine
    cos(x)          real                    cosine
    tan(x)          real                    tangent
    atan2(x,y)      real                    arc-tangent
    exp(x)          real                    e**x
    log(x)          real                    natural logarithm
    log10(x)        real                    common logarithm
    frac(x)         real                    fractional part
    abs(x)          type of argument        absolute value
    min(a,b,...)    type of min. arg        minimum of a list of values
    max(a,b,...)    type of max. arg        maximum of a list of values
    real(x)         real                    convert to real
    int(x)          integer                 integer part
 

DESCRIPTION
cl>

Los cálculos deben empezar por el signo "="  Por ejemplo:

cl> =tan(1.5)/sin(20)*log10(11.5)
16.383617387749
cl> x=12.5;y=log(x)*24.2/sqrt(3.0);print("x=",x,"y=",y)
x=12.5 y=35.2891687271
cl>

También existe una calculadora astronómica (que se encuentra en el paquete astutil):

cl> refer astcalc
searching the help database...
astcalc - Astronomical calculator  [astutil]
cl> astutil
      airmass     asthedit    asttimes    galactic    keywpars@   precess     setairmass
      astcalc     astradius   ccdtime     gratings    pdm         rvcorrect   setjd
as>

Con esta tarea puede calcularse el día juliano, tiempo sidéreo, precesionar coordenadas, etc...

3 Trabajando con imágenes

Formatos:

FITSFlexible Image Transport System. Es el formato "universal"

OIF (.imh + .pix): Old Iraf Format.  Es el formato iraf "standard". El archivo
 image.imh contiene el header de la imagen . El archivo image.pix  contiene los datos (pixeles)

Los datos correspondientes a los pixeles a su vez pueden guardarse en distintos formatos, desde formato SHORT (enteros de 16 bits con signo), hasta DOUBLE (pto. flotante de 64 bits) En gral. se usa el formato REAL (pto. flotante de 32 bits).

IMPORTANTE: No se puede hacer procesamiento de imágenes en datos enteros;  si la imagen tiene formato entero entonces hay que transformarla a formato real.

Para cambiar el formato de pixel de una imagen puede usarse el comando chpixtype. El tipo de pixel puede determinarse con el comando imheader:

cl> imheader LAN1057
LAN1057[384,256][short]:
cl> chpixtype
Input images: LAN1057
Output images: LAN1057r
Output pixel type (|ushort|short|int|long|real|double|complex|): real
Image: LAN1057 (short) -> Image: LAN1057r (real)
cl> imhead LAN1057r
LAN1057r[384,256][real]:
cl>

3.1 Obteniendo información sobre una imagen...

Para  ver el header completo de la imagen:

cl>imhead LAN1057 l+
LAN1057[384,256][short]:
No bad pixels, min=4861., max=13936.
Line storage mode, physdim [512,256], length of user area 730 s.u.
Created Mon 16:44:06 10-Apr-2000, Last modified Mon 16:44:06 10-Apr-2000
Pixel file "cometin!/usr/tmp/andsosa/LAN1057.pix" [ok]
'02/06/99'
DATE-OBS= '02/06/99'
UT-START= '02:28:06.83'
UT-END  = '02:29:06.86'
TELESCOP= '0.35 m f/6.4 reflector '
INSTRUME= 'Hi-SIS22 CCD'
OBSERVER= 'A. Sosa '
EXPTIME =            60.000000
DETECTOR= 'Hi-SIS22'
RELEASE = 'QMiPS32 V1.0'
MIPS-HI =                 6700
MIPS-LO =                 5400
MIPS-X1 =                    1
MIPS-Y1 =                    1
MIPS-X2 =                  768
MIPS-Y2 =                  512
MIPS-BIX=                    2
MIPS-BIY=                    2
MIPS-CCD=                    2
 

Mediante el comando hedit puedo modificar o agregar una keyword al header. Por ejemplo, agreguemos a este header la keyword FILTER (que puede ser obligatoria para correr algunos programas de iraf):

cl> hedit LAN1057 FILTER add+
value expression ():
add LAN1057,FILTER = v
update LAN1057 ? (yes):
LAN1057 updated
cl>imhead LAN1057 l+
LAN1057[384,256][short]:
No bad pixels, min=4861., max=13936.
Line storage mode, physdim [512,256], length of user area 770 s.u.
Created Mon 16:44:06 10-Apr-2000, Last modified Mon 16:44:06 10-Apr-2000
Pixel file "cometin!/usr/tmp/andsosa/LAN1057.pix" [ok]
'02/06/99'
DATE-OBS= '02/06/99'
UT-START= '02:28:06.83'
UT-END  = '02:29:06.86'
TELESCOP= '0.35 m f/6.4 reflector '
INSTRUME= 'Hi-SIS22 CCD'
OBSERVER= 'A. Sosa '
EXPTIME =            60.000000
DETECTOR= 'Hi-SIS22'
RELEASE = 'QMiPS32 V1.0'
MIPS-HI =                 6700
MIPS-LO =                 5400
MIPS-X1 =                    1
MIPS-Y1 =                    1
MIPS-X2 =                  768
MIPS-Y2 =                  512
MIPS-BIX=                    2
MIPS-BIY=                    2
MIPS-CCD=                    2
FILTER  = 'v       '

Para corregir el valor de un mismo parámetro en una lista de imágenes:

cl> hedit @lista UT-START
value expression (v): 02:28:06.83
cl>

Otros comandos útiles: ccdlist, hselect

3.2 Visualizando las imágenes...

Previamente se debe tener abierto el Ximtool (o el SAOImage). Luego con el comando display cargamos la imagen:

cl>disp LAN1057 1  # indico al programa que despliegue la imagen en el
                   # frame 1 (el Ximtool dispone de 4 frames)

              LAN1057.FITS

LAN1057.fits

cl> disp LAN1057 1 zrange- zscale- z1=30 z2=1000 #  Desactivo el cálculo automático del rango dinámico y lo seteo "a mano"

cl> disp LAN1057 1 ztran=log # aplico una transformación logarítmica al mapeo de intensidades

cl> disp LAN1057 1 xmag=3.0 ymag=3.0 # hago zoom por un factor 3

cl> disp LAN1057 1 fill+ # redimensiono la imagen para que ocupe todo el buffer

cl> disp imag1 1 bpm=badpix.imh bpdisp=overlay # superpone en el display el mapa de pixeles malos
 

3.3 Comandos para manipular imágenes

cl> imcopy imag1 imag2  #  hace una copia de imag1 con el nombre imag2
cl> imrename imag1 imag2 # renombra imag1 en imag2
cl> imdel imag1  # borra imag1

IMPORTANTE: Jamás borrar una imagen con "rm"! (siempre con "imdel")

También se puede trabajar con una sección de la imagen en lugar de la sección total, donde la sección está definida de la forma: [Xstart:Xend,Ystart:Yend]. Por ejemplo:

cl> disp imag1[200:300,200:300] 1 xmag=4 ymag=4

cl> imstat imag1[*,200:300] # En este caso aplico imstat solo al sector formado
                            # por las filas comprendidas entre y=200 e y=300

cl> imcopy imag1[200:300,200:300] imag1_small

También pueden hacerse mosaicos de imágenes en una misma ventana:

cl> imcopy imag1[201:300,201:300] mosaic[1:100,1:100]

imcopy también permite hacer transformaciones de coordenadas.
 

3.4 Herramientas gráficas(ejemplos tomados del help)

1. Plot column 128 of image crab.5009 with default parameters:

      cl> pcol crab.5009 128

2. Annotate the axes of a column plot:

      cl> pcol crab.5009 64 xlabel="Row Number" ylabel=Intensity

3. Plot the average of columns 64 through  128  of  image  crab.5009  with  default
    parameters:

      cl> pcols crab.5009 64 128

4. Plot row 128 of image crab.5009 with default parameters:

      cl> prow crab.5009 128

 5.  Plot  the average of rows  128  through  150  of  image  crab.5009 with default
    parameters:

      cl> prows crab.5009 128 150

 6. Plot from the lower left to  upper  right  of  512  square  image of  crab.5009.

      cl> pvector crab.5009 1. 1. 512. 512.

7. Plot the same vector but with the sampling width = 3.

      cl> pvector crab.5009 1. 1. 512. 512. width=3

8.  Plot a vector in same image with center position 256, 256, and a
    position angle of 45 degrees which extends  from  one  edge  of  the
    frame to the other (the default length is  to  plot  the  vector from one edge of
    the frame to another).

      cl>   pvector   crab.5009   xc=256.  xc=256. theta=45.

9.  Plot the histogram of an image

      cl> imhist LAN1057

figura 1:  histograma de LAN1057.fit






10. Output the histogram of an image to a file.

      cl> imhist M51.imh li+ nbins=100 > fits1.hst

11.  Plot  the  histogram  of  another image between the values 0 and 2000.

      cl> imhist M31.imh nbins=100 z1=0. z2=2000.

12.  Plot  the  cumulative histogram.  This is most useful for images
    with fairly flat "normal" histograms.

      cl> imhist R50.imh hist=cum
 

Otro comando para graficar líneas y columnas de una imagen, en forma más interactiva y dinámica, es implot.

Si se aborta o cuelga una tarea gráfica, ejecutar el comando gflush.

El comando imexamine es ideal para analizar una imagen:

IMEXAMINE (Mar96)               images.tv              IMEXAMINE (Mar96)
 
 

NAME
    imexamine -- examine images using image display, plots, and text
 

USAGE
    imexamine [input [frame]]
 

COMMANDS

                                Cursor Keys

    ?       Print help (
    a       Aperture sum, moment parameters, and profile fit
    b       Box coordinates for two cursor positions - c1 c2 l1 l2
    c       Column plot
    d       Load the image display
    e       Contour plot
    f       Redraw the last graph
    g       Graphics cursor
    h       Histogram plot
    i       Image cursor
    j       Fit 1D gaussian to image lines
    k       Fit 1D gaussian to image columns
    l       Line plot
    m       Statistics
                image[section] npixels mean median stddev min max
    n       Next frame or image
    o       Overplot
    p       Previous frame or image
    q       Quit
    r       Radial profile plot with fit and aperture sum values
    s       Surface plot
    u       Centered vector plot from two cursor positions
    v       Vector plot between two cursor positions
    w       Toggle write to logfile
    x       Print coordinates
                col line pixval [xorign yorigin dx dy r theta]
    y       Set origin for relative positions
    z       Print grid of pixel values - 10 x 10 grid
    ,       Quick Gaussian/Moffat photometry
    .       Quick Gaussian/Moffat radial profile plot and fit

Por ejemplo,  ejecuto:

cl >  imexam LAN1057

 Me paro con el cursor sobre la imagen . Selecciono una estrella y apretando la tecla r obtengo
 su perfil radial (fig.2), apretando la tecla e obtengo un gráfico de contornos (fig.3),  y apretando
 la tecla s obtengo un gráfico en 3D  (fig.4)


                figura 2:  perfil radial de la estrella de coordenadas xc =123.68 e yc=187.56 (coord. del centroide)
 


figura 3: mapa de contornos (isofotas). El centro del diagrama corresponde a x=123.68 e y=187.56

                                            figura 4: gráfico en 2D del sector [ 114 :134, 178 :198 ] de LAN1057

Para salir de imexamine apreto la tecla q sobre la imagen.

La tarea análoga a imexamine para analizar espectros es splot.
 
 

Algunas aplicaciones
 

4.1   Estimación del seeing

Para medir el FWHM en una imagen estelar, tengo varios métodos:

a)   Mediante imexamine:

    cl> imexam LAN1057

Me paro con el cursor sobre la estrella y pulso la tecla "a":

#   COL    LINE   COORDINATES
#     R    MAG    FLUX     SKY    PEAK    E   PA BETA ENCLOSED   MOFFAT DIRECT
 123.68  187.56 123.68 187.56
   6.58  14.45  16562.   6150.   2323. 0.36   51 41.8     2.18     2.29   2.20

En este caso el FWHM sería aproximadamente 2.2 pixeles.
 

b)  Mediante prow o pvector:

    cl> pvector LAN1057 xi yi xf yf

donde  xi yi xf yf definen un segmento que corta a la estrella.

Ejemplo:

    cl> pvector LAN1057 114 178 134 198
 
 
 


                                  figura 5:  gráfica de las intensidades a lo largo del segmento definido por
                                                    xi=114 , yi= 178, xf=134 , yf= 198, a intervalos de 1 pixel.
 

c) Utilizando la tarea phot (paquete phot.digiphot para fotometría de apertura):

    ap> phot LAN1057
 

4.2   Evaluación del foco de una imagen

Supongamos que disponemos de varias imágenes de un mismo campo estelar, tomadas con distintos focos.
Se trata de determinar cual es la imagen mejor enfocada  para ajustar el valor del foco de la cámara CCD.
Para ello selecciono un mismo conjunto de estrellas en cada imagen, y mediante imexamine
comparo el perfil radial (r), el flujo luminoso (a) y el contorno (e) de una misma estrella, en todas las imágenes.
 

4.3   Estimación de la relación señal-ruido y de la magnitud límite

En una imagen de un campo de estándares, selecciono un sector de la imagen correspondiente a una estrella débil,
y mediante imstat determino el valor medio del flujo (mean_obj), y el nro. de pixeles (n_pix). Análogamente
determino el valor medio de background (mean_sky) y la desviación estándar (std_sky )para un sector de cielo
cercano al objeto.
 

La relación señal-ruido estará dada aproximadamente por:

S/R = (mean_obj-mean_sky) / std_sky . npix