1.1Qué es IRAF
1.2 La primera vez
1.3 El CL
1.3.1 Comandos tipo UNIX y externos
1.3.2 Variables de entorno
1.3.3 Calculadora
1.4 Programas y paquetes de programas
1.4.1 Parámetros
1.4.2 Ejecutando programas
1.4.3 Obteniendo ayuda
1.5.1 Formatos
1.5.2 Leyendo la cabecera
1.5.3 Manipulando ficheros de imágenes
1.5.4 Secciones de imágenes
1.5.5 Inspeccionando imágenes
1.5.6 Operaciones básicas con imágenes
1.5.7 Sistemas de coordenadas
1.6 Los gráficos
1.6.1 Ficheros graficos
1.6.2 Gráficos sobre la pantalla de visualización de imágenes:
1.7 Referencias
2.1.1 Determinación del nivel de pedestal o nivel cero ("bias")
2.1.1.1 ¿Cuántas imágenes de cero se deben obtener?
2.1.2 Corrección de sensibilidad ("flat-fielding")
2.1.2.1 ¿Cuántas imágenes de "flat" se deben obtener?
2.1.3 Pixeles muertos o no lineales
2.2 Determinación de Bias y sección útil del CCD
2. 3. 1 Combinando imágenes de cero
2.3.2 Primer paso por ccdproc
2.4 Corrección de respuesta pixel a pixel ("flatfielding")
2.4.1 Combinando imágenes de flat-field
2.4.2 Caso espectroscopía
2.4.3 Segundo paso por ccdproc
2.4.4 Corrección de iluminación
2.4.5 Tercer paso por ccdproc
2.5 Corrección de pixeles defectuosos
2.6 Preparación para una reducción más comoda
2.6.1 Setupinstrument
2.6.2 Agrupando imágenes según tipos de exposición
2.8 Referencias
4 ANÁLISIS DE ISOFOTAS Y FOTOMETRÍA DE OBJETOS EXTENSOS
5 ESPECTROSCOPIA CON RENDIJA LARGA
IRAF corresponde a las siglas Image Reduction and Analysis
Facility, y como es de esperar de ese nombre proporciona un amplio conjunto
de herramientas para el análisis y el procesado de imágenes
astronómicas. Fue desarrollado a mediados de los años 80
por la institución National Optical Astronomy Observatories (NOAO)
en Tucson, Arizona. Se ha hecho popular entre la comunidad astronómica
entre otras cosas por haber sido seleccionado como el sistema sobre el
cual se basan los programas de reducción y análisis de datos
del Telescopio Espacial (HST). Su arquitectura permite que se añadan
paquetes externos con facilidad. De hecho existen paquetes de aplicaciones
específicas que se distribuyen separadamente como son STSDAS Y TABLES
(desarrollados en el STScI, con muchas utilidades, incluyendo herramientas
para procesar los datos del HST), PROS (específico para datos de
rayos X).
Antes de arrancar IRAF es necesario tener en cuenta varios detalles. El sistema IRAF necesita un directorio de arranque, normalmente siempre se hace desde el mismo directorio, la mayoría creará un subdirectorio debajo su principal y lo llamará por ejemplo "iraf" (/home/username/iraf). Una vez colocados en este directorio ejecutamos la instrucción "mkiraf". Este comando nos preguntará que tipo de terminal vamos a usar, y que en general será xgterm. Entretanto se copiaran dos ficheros: login.cl y loginuser.cl, que contienen definiciones para arrancar el sistema. Conviene echar un vistazo al fichero loginuser.cl y comprobar que la variable imdir está puesta a HDR$pixels/ (set imdir = HDR$pixels/). También se creará un subdirectorio llamado uparm que contendrá los últimos valores de los parámetros de cada programa que se haya usado en IRAF.
Ahora estamos en condiciones de arrancar IRAF, para ello
abriremos una nueva pantalla con el comando:
Esta pantalla contiene una interfaz gráfica
mejorada para el análisis de datos. Sobre ella y desde el directorio
seleccionado accederemos al sistema IRAF con el comando:
y ya estamos en IRAF!!
Además para trabajar con imágenes astronómicas
vamos a necesitar una herramienta de visualización, IRAF no tiene
este dispositivo pero permite utilizar programas externos como:
Se puede usar cualquiera de estos, siempre y cuando no
se pretenda usarlos simultáneamente, así pues se debe
arrancar
sólo uno en cada momento.
CL proviene de Command Language, y resulta ser el sistema
operativo para acceder a todos las facilidades del sistema IRAF. Según
se arranca el sistema veremos información acerca de la versión,
algún mensaje de bienvenida y además nos dirá los
paquetes disponibles en nuestro entorno. Reconocemos que hemos entrado
cuando obtenemos el prompt cl. Para salir del entorno del cl
se usa el comando logout.
El siguiente paso es acceder al directorio donde tenemos los datos, esto se hace con el comando cd. Además existen otros comandos similares a los usados en UNIX como son copy, mkdir, mv, dir, ls, lprint, deletecuya función es sencilla de adivinar.
Cualquier programa se puede ejecutar en modo "background", simplemente añadiendo & al final de la línea.
Cuando una línea de comandos se hace muy larga se puede pasar a la siguiente añadiendo \ al final, y pasando a una nueva.
Las salidas de un programa, información sobre la pantalla y/o mensajes de error, pueden ser redirigidas a cualquier archivo. Esto se hace de forma similar a UNIX, se añade:
> para la salida de un programa
>> si va al final de un fichero ya existente
>& para la salida y los mensajes de error
>G para la salida gráfica de un programa
Existe la posibilidad de hacer que la salida de un programa sea la entrada de otro. Por ejemplo
cl>files *.fits | imheader | page
Estos comandos hacen una lista de todos los ficheros *.fits
y a continuacion nos muestra la cabecera de cada una de las imágenes,
página a página.
Dentro de cl se mantiene una tabla de variables de entorno,
algunas son impuestas por el sistema y sirven para controlar el funcionamiento
de muchas funciones de IRAF. Por ejemplo las siguientes variables:
stdgraph - dispositivo gráfico
stdplot - dispositivo gráfico de impresión, la impresora.
Del mismo modo se pueden definir variables nuevas
con el comando set. Por ejemplo para especificar el directorio donde se
encuentran los datos:
cl> cd datos1
Dentro de cl tenemos acceso a una calculadora simple. El comando help mathfcns da un listado con las funciones disponibles. Veamos algunos ejemplos:
El resultado de un cálculo aritmético se
obtiene precediendo cualquier operación por el signo "="
cl> =15:34:10 (convertir notación sexágesimal a decimal)
Se pueden definir nuevas variables para operar con
ellas
Los comandos que sirven para realizar determinadas tareas
dentro del cl se denominan programas, y están agrupados en
paquetes de acuerdo con su funcionalidad ("tasks" y "packages" en la jerga
de IRAF). A su vez los paquetes se suelen organizar en otros paquetes de
más alto nivel. Una lista con los principales paquetes que constituyen
el núcleo del sistema IRAF aparece debajo:
images - utilidades para el tratamiento general de imágenes (operaciones aritméticas, filtros, combinaciones, etc).
language - el lenguaje de comandos en si mismo.
lists - procesado de listas (listas de nombres, ficheros, etc)
noao - contiene la mayoría de programas usados en el tratamiento de datos CCD, análisis y calibración tanto de espectroscopía como fotometría.
plot - programas gráficos para imágenes de cualquier dimensión, manipulación de ficheros gráficos ("metacode files").
proto - programas prototipo o en desarrollo.
obsolete - programas antiguos que por su gran uso se mantienen.
tv - utilidades para visualización de imágenes y control.
system - utilidades del sistema (copiar, borrar, renombrar ficheros),
stsdas - programas desarrollados por el STScI
utilities - miscelánea de programas.
Cuando el sistema arranca sólo se tienen cargados
un cierto número de paquetes, por ello no todos los programas son
accesibles. Para ejecutar cualquier programa es necesario cargar previamente
el paquete que lo contiene, para ello basta con teclear el nombre del paquete
(siempre en minúsculas). Cada vez que se carga un paquete nos aparece
en pantalla una lista con todos los programas o subpaquetes que contiene,
a partir de ese momento ya tenemos acceso a ellos. También notaremos
que cambia el "prompt", y que obtenemos las dos primeras letras del paquete
recién cargado. Conviene mencionar que cargando muchos paquetes
la memoria de la maquina queda reducida para ejecutar otros procesos, comprometiendo
su rendimiento. Para abandonar un paquete cargado y que no vaya a ser usado
posteriormente se usa el comando bye. No obstante sólo se
puede abandonar el último paquete cargado y así sucesivamente
en orden ascendente.
La forma de actuar de un programa depende generalmente de un conjunto de parámetros configurables. Para examinar el valor de estos se ejecuta el comando:
cl> lpar delete # muestra los parámetros del programa "delete" y se obtiene el siguiente resultado:
b- también es posible hacerlo sobre la línea de comandos
c- se pueden recuperar
los valores por defecto:
Los paquetes también tienen sus ficheros de
parámetros, la modificación de éstos sirve para controlar
variables que son relevantes en varios de los programas que contiene.
Para ejecutar un programa basta con teclear únicamente
su nombre, también podemos especificar los parametros posicionales
en la misma línea, incluso podemos especificar los ocultos por su
nombre seguido del signo "=" y su valor, por ejemplo:
Es posible ejecutar un conjunto de programas en modo
"background", lo cual es muy útil si se trata de tareas largas y
que no requieren nuestra intervención. Para ello se ejecuta el programa
mkscript,
que nos pedirá qué programas queremos ejecutar, sus parámetros
y finalmente producirá un fichero "script.cl" con todos los comandos.
Luego podemos ejecutarlo del siguiente modo:
cl> jobs
Tendremos cualquier mensaje de error en script.log
y con el comando jobs podemos ver el estado de la tarea (en ejecución,
parada o terminada si no aparece en la lista).
help programa - muestra toda la ayuda disponible para ese programa (existen varias secciones: parámetros, descripción, ejemplos).
describe programa - muestra la sección de descripción para ese programa.
example programa - muestra la sección de ejemplos para ese programa.
help paquete - describe en una línea cada programa contenido dentro del paquete.
package - enumera los paquetes cargados en ese momento.
? - enumera los programas disponibles en el último paquete cargado.
?? - enumera todos programas disponibles en ese momento.
apropos clave - enumera
todos programas relacionados con la palabra clave.
NOTA: hay que definir previamente la tarea:
task apropos =/usr/pkg/iraf/extern/stsdas/apropos.cl
bien dentro de IRAF o bien en el loginuser.cl (si se
define en el fichero estará definida al entrar en IRAF)
El sistema IRAF puede leer y escribir una variedad de
formatos de imágenes, aunque los más comunes son:
OIF - Este el formato Standard de IRAF. Se compone de dos ficheros: image.imh (formato ASCII, contiene la cabecera), image.pix (binario, contiene los valores de cada pixel).
STF - Space Telescope Format. Es análogo
al OIF con extensiones .hhh (cabecera) y .hhd (valores por pixel). Tiene
otras peculiaridades dependiendo de los instrumentos.
Leyendo la cabecera (imheader,
iminfo, hedit, hselect)
Toda la información acerca de una imagen se escribe en la cabecera. Es posible ver y editar su contenido:
Ver la información básica de una imagen
(dimensión y tipo de pixel):
Ver todas la información:
Editar, borrar palabras claves ("keyword") de una
cabecera:
Mostrar el valor de algunas palabras claves para una
serie de imágenes (útil para sacar un listado de observaciones).
En los ejemplos que siguen se muestra como sacar una lista con el nombre
de la imagen [$I], el filtro [filter], el nombre del objeto [object]:
cl> hedit *.fit $I,i_title .
Igualmente se pueden seleccionar imágenes según
los valores de algunas palabras claves (insfilte igual a V ó
exptime =1200):
cl> hselect*.fit $I,filter 'exptime = 1200' |page # Extrae nombres de imagenes y filtro obtenidos con exptime igual a 1200
cl> hselect *.fit $I 'OBJECT ?= "flat"' # Extrae nombres de imagenes que contengan dentro de 'OBJECT' la cadena 'flat'
Existen rutinas especiales para manipular imágenes
(cada imagen puede estar compuesta de dos ficheros, formato original de
IRAF), se recomienda no usar comandos como copy o mv para imágenes.
Sus equivalentes son:
cl> imrename a b
cl> imdelete a
Se pueden trabajar con toda la imagen, o también
se pueden seleccionar por dimensiones, secciones en un plano, cualquier
comando se puede usar sobre una parte de la imagen. Por ejemplo:
cl> imcopy a[-*,*] b
Otra utilidad es la que nos permite crear listas de
imágenes a través del nombre, se trata del programa files.
También el comando sections sirve para crear listas de imágenes,
además incluyendo secciones. Por ejemplo:
Crear una nueva lista de imagenes con distinto nombre
a partir de otras existentes:
El hecho de crear listas de imágenes es especialmente
util para ejecutar el mismo programa sobre muchas imágenes a la
vez con un solo comando, por ejemplo:
Existen varios programas que permiten ver en detalle las
imágenes tanto visualmente como los valores de cada pixel, así
como hacer algunas operaciones básicas.
display dev$pix 1
También se puede especificar un rango determinado, deshabilitando el cálculo automático del rango dinámico (zscale=no), y tambien evitando que cubra todo el rango de valores de la imagen (zrange=no):
display dev$pix 1 zscale=no zrange=no z1=100 z2=400
imexamine
Este programa permite examinar interactivamente una imagen
que ha sido previamente visualizada sobre la pantalla de imagenes (Ximtool
o SAOimage). Es un programa muy completo y tiene muchas acciones que responden
a una letra, entre las mas destacadas están:
r - perfil radial del objeto proximo al cursor, centroide, anchura a altura mitad (FWHM), magnitud instrumental
h - histograma de una zona alrededor del cursor
s - diagrama de contorno en torno a la posición del cursor
e - diagrama de superficie alrededor de la posición del cursor
c/l - dibuja la columna o la fila marcada por el cursor
v - dibuja un corte entre dos marcas del cursor
z - lista de valores de cada pixel, alrededor de
una posición seleccionada por el cursor
imreplace
Este programa sirve para modificar valores de los pixeles.
Por ejemplo permite: cambiar los valores de una region por una constante;
sustituir los pixeles que están por debajo o por encima de un valor
por una constante.
listpixels
Este programa da una lista con los valores de cada pixel
en la imagen o una sección, sirve para exportar los valores a un
fichero ASCII, o comprobar operaciones.
Creación
imexpr sirve para crear nuevas imágenes
según expresiones algebraicas definidas por nosotros y con las dimensiones
deseadas:
Aritmeticas:
Para realizar operaciones binarias entre imágenes
se usa
imarith. Por ejemplo:
Para operar sobre cualquier número de imágenes
usando cualquier expresión se usa
imcalc (es necesario cargar
el paquete stsdas). Por ejemplo:
Combinando imágenes
imcombine es un programa que sirve para combinar
un número cualquiera de imágenes, incluyendo una opción
para proyectar una imagen de dimensión superior sobre otra con una
menos (por ejemplo de un cubo a una imagen bidimensional). Es muy versatil
y tiene muchas posibilidades. A continuación se describen los parámetros
principales y sus opciones:
combine="average|median" # el resultado de la combinacion puede ser la media o la mediana.
reject="none,minmax,sigclip,pclip,crreject" # se pueden descartar valores que cumplan con ciertas condiciones, valores maximo y/o minimo, exceden un factor la desviacion tipica, o utilizando un determinado algoritmo
masktype="none,goodvalue,badvalue"# tipo de máscara a utilizar
offsets="wcs|none|grid" # se pueden desplazar entre si las imágenes antes de combinarlas.
scale="none,mode,median,mean,esposure" # cada imagen se puede escalar por un valor basado en la media, o la mediana, etc.
zero="none,mode,mean,median" # se puede añadir a cada imagen un valor basado en la moda, o la media, o la mediana.
lthreshold,hthreshold=limites # se combinan los imagenes descartando valores que estén dentro de un rango seleccionado.
Por ejemplo si queremos combinar una secuencia de imagenes
de "flat-field" contenidas en el fichero flat.lst, obtener el valor promedio,
escalando previamente al valor de la mediana y rechazando valores 3 sigma
por encima y por debajo de la media, se ejecutaría:
cl> imcombine @flat.lst combine="average" scale="median"
reject="sigclip"
Existen tres tipos de sistemas de coordenadas: lógico,
físico y de usuario ("logical", "physical" y "world systems" en
la jerga IRAF). El sistema lógico se define con referencia a la
imagen en si misma, o incluso a una parte. El sistema físico tiene
en cuenta si la imagen proviene de otra y las coordenadas se refieren a
la original. El sistema de usuario puede ser el sistema de coordenadas
sobre el cielo, o longitud de onda en el caso de espectroscopía.
El sistema de coordenadas de usuario se especifica a través
de parámetros ("keywords") en la cabecera, los relevantes son:
CRPIX2 - Pixel referencia sobre el eje Y
CRVAL1 - Coordenada de usuario sobre el eje X para el pixel de referencia
CRVAL2 - Coordenada de usuario sobre el eje X para el pixel de referencia
CDELT1 - Separación entre pixeles sobre el eje X, en coordenadas de usuario
CDELT2 - Separación entre pixeles sobre el eje Y, en coordenadas de usuario
CTYPE1 - Tipo de sistema de coordenada de usuario sobre el eje X
CTYPE2 - Tipo de sistema de coordenada de usuario sobre el eje Y
Existen programas que permiten modificar el sistema
de coordenadas (físico y de usuario): wcsreset y wcsedit.
La mayoría de los programas son capaces de actualizar la información
del sistema de coordenadas cuando se producen transformaciones sobre la
geometría de las imágenes.
Muchos programas en IRAF producen una salida gráfica como paso final ó a veces para interaccionar con los datos. Los más comunes son: en una dimensión, implot, phistogram, pradprof; bidimensionales, contour, surface. Normalmente cada programa tiene sus propios comandos y suelen ser del tipo de una sola letra o un número. Se puede obtener una lista de todos los comandos propios de esa tarea tecleando ?. Además existe un conjunto de comandos disponibles en cualquier programa y que controlan básicamente el aspecto del gráfico, se puede obtener una lista tecleando :.help.
Además existe una posibilidad de invocar el entorno
de la pantalla gráfica y sus comandos comunes con el comando
Cualquier salida grafica de un programa se puede guardar en un fichero para usarlo posteriormente. Estos ficheros se llaman ficheros de metacode, se pueden crear por redireccionamiento de la salida de un programa (añadiendo >G fichero) , o bien desde la pantalla gráfica (con el comando :.write fichero).
El programa gkimosaic sirve para mostrar varios gráficos simultáneamente, de los contenidos en un fichero de "metacode". Es útil cuando se ejecuta un programa en modo "background" para inspeccionar los resultados del programa.
El programa gkiextract sirve para extraer una parte
de los graficos contenidos en un fichero de "metacode".
disconlab y wcslab sirven para superponer
una cuadrícula con las coordenadas sobre la imagen. Usando la imagen
de la galaxia M51 incluida en el sistema:
Si queremos marcar algunas posiciones sobre la imagen
(con círculos ó cuadrados), por ejemplo una lista de estrellas
(contenidas en un fichero posiciones), se usa el comando
tvmark.
Por ejemplo: