Estas páginas son para familiarizar al nuevo usuario en el uso del
sistema
IRAF (Image Reduction and Analysis Facility), usado para la
reducción y análisis de imágenes astronómicas.
Aquí solamente se verán aspectos generales para usar los comandos, manipular sus argumentos, usar las cintas magnéticas e impresoras del área, iteración con Unix, etc. Cabe aclarar que esto es solo una guía rápida y no pretende sustituir los manuales.
Para la parte enfocada al procesado de las imágenes se recomienda ver los manuales del sistema IRAF y los reportes técnicos que se han ido desarrollando por los propios usuarios.
Se usara la siguiente notación: Para indicar el mensaje de la maquina en espera de un comando (prompt) se usa letra negrita, para indicar lo que el usuario debe de teclear se usa letra itálica negrita y para mostrar lo que despliegue el comando se usa itálica simple.
IRAF es un sistema para analizar imágenes y datos en general, pero se usa particularmente para imágenes astronómicas. Sus diversas funciones son enfocadas a las características específicas de un instrumento y otras funciones son de carácter general. El sistema consiste de cuatro piezas básicas que son:
Lenguaje de comandos. - (CL, interfaz del usuario con el sistema) Paquetes de aplicación. - (Algoritmos para analizar datos reales) Sistema operativo virtual. - (VOS Interfaz del sistema huésped)CL (Command Language) - La función básica de cl es proporcionar una interfaz entre el usuario y todos los paquetes de aplicación de IRAF. Muchos de los programas en los paquetes son funciones estándar para análisis de datos, de los cuales la mayoría son iterativos. La ejecución se controla con parámetros que el usuario puede modificar.
Estando en una estación de trabajo Sun, bajo el ambiente de ventanas OpenWindows se llama al menú general o de fondo y se selecciona el submenú [Iraf] y se ejecuta ya sea "saoimage" o "ximtool". También se activa con el mismo submenú un "xterm" o un "xgterm", dependiendo de la configuración que se tenga por default (ver contenido del archivo "login.cl" que se encuentra en su HOME), y esa ventana automáticamente ejecutará el interprete de comandos de IRAF, es decir cl.
Si se esta en otro ambiente de ventanas, se puede hacer esto mismo desde una ventana de comandos Unix y correr dichos programas en background, además del interprete de comandos cl.
Y en la ventana de comandos aparecerá lo siguiente:
NOAO SUN/IRAF Revision 2.10.4-p2 Thu May 16 20:31:31 MST 1996 This is the EXPORT version of Sun/IRAF V2.10.4 for Solaris 2.5. Welcome to the IRAF. To . . . dataio. language. plot. stsdas. dbms. lists. proto. system. hst_pipeline. noao. rvsao. tables. images. obsolete. softools. utilities. cl>3.1 Paquetes y tareas
Para cargar o tener acceso a las tareas del paquete plot se teclea esa palabra y mostrará las tareas del paquete:
cl> plot calcomp gkidir . . . contour . . . . . .Al ejecutar cl, automáticamente carga varios paquetes y con el comando siguiente podemos saber que paquetes ya están cargados:
cl> package plot images user system lists clpackage language noao utilities proto tv dataiocl distingue entre las letras mayúsculas y minúsculas para el nombre de un comando o los argumentos.
Una lista de todos los paquetes y sus respectivas tareas se obtiene al teclear "??" y con "?" se lista únicamente los nombres de las tareas del paquete activo o con "?nombre-del_paquete" listará las tareas del paquete especificado, siempre que haya sido cargado previamente. Los nombres de los paquetes y tareas pueden darse de forma abreviada (los primeros tres o cuatro caracteres, evitando la ambigüedad). Si la abreviatura no es única se tendrá un mensaje de error.
Para saber en que paquete se encuentra una tarea, el comando help proporciona esta información. Por ejemplo, si deseamos saber donde esta la tarea precess, se debe de teclear:
cl> help precess PRECESS (Oct87) noao.astutil PRECESS(Oct87) NAME precess -- general astronomical coordinate precession USAGE . . .En la parte superior central de la ayuda aparece la ruta de la tarea, que en este caso será noao.astutil. Para ejecutar la tarea precess, se deberá cargar este paquete tecleando:
cl> astutíl airmass asttimes . . . asthedit ccdtime . . . . . . as>Notar que en nuestro caso la tarea noaoya se encuentra cargada, de no ser así, se tendría que cargar antes del paquete astutil.
3.2 Algunos comandos
El comando help con argumentos da la ayuda de un paquete o tarea, según
sea el caso, si se da sin argumentos da la ayuda del paquete activo:
cl> help dataio - Data format conversion package (RFITS, etc.) dbms - Database management . . . images - General . . . . . .Para desplegar el contenido de un archivo de texto, se ejecuta:cl> help page PAGE (Nov86) system PAGE (Nov86) NAME page -- display a file or files one . . . . . .
cl> page logín.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.10 . . . set home = "/home/moises/" set imdir = "/home/moises/pix/" . . .La tarea page despliega el contenido por pantallas, con [Return] despliega la linea siguiente, con la tecla "espacio en blanco" despliega la siguiente pantalla y con "q" termina.
Para obtener la lista de archivos en el directorio corriente se da:
cl> dir HS.SSOL.GEN bin bin.ssun local pkg IS.PORT.GEN bin.generic dev . . . . . .La impresión de archivos de texto se realiza con el siguiente comando:
cl> lprint login.clY Para conocer lo que existe en la cola de impresión se da:
cl>!lpstat lw-5487 tonatiuh!moises 2892 Jul 18 16:51 on lwCon el número del trabajo, se puede eliminar de la cola de impresión de la manera siguiente:
cl> !cancel lw-5487 request "lw-5487" cancelled3.3 Fin de ejecución
as> bye dataio. language. . . . dbms. . . . . . . cl>Para terminar el uso de IRAF se teclea logout desde donde este el usuario:
no> logoutSi se uso OpenWindows la ventana se eliminara automáticamente, en caso contrario se tendrá el prompt del sistema operativo.
moises@tonatiuh%
4.1 Ejecución de la tarea
Al ejecutar una tarea, se puede dar en la misma línea los
parámetros y el redireccionamiento. Los parámetros de la tarea
que no se definieron y no son de default, al momento de la
ejecución el sistema pedirá se teclee su valor.
La forma general es:
cl> tarea [ expresión ... ] [ param=valor ] [ < archivo ] [ param+/- ] [ > archivo ] [ >> archivo ] [ >& archivo ] [ >>& archivo ] es decir: tarea - El nombre de la tarea. expresión - Una lista opcional de argumentos separados por espacios. param=valor - Palabra llave y su valor - o - param+/- - utilizándolo como switch.Estos son los parámetros de la tarea. Y el redireccionamiento se entiende como:
< - La entrada de datos desde un archivo. > - La salida a un archivo. >> - Anexar la salida al archivo. >& - Enviar la salida estándar y la de error a un archivo. >>& - Anexar la salida estándar y la de error a un archivo.Para continuar una lista de argumentos demasiado larga se teclea "\" al final de la línea.
pl> graph pix[*,51],pix[*,10],pix[*,15] po+ marker=circle \ >>> xlabel=columna ylabel=intensidad \ >>> title="lineas 5,10 y 15"las comillas se usan únicamente cuando la cadena de caracteres lleva espacio.
Se pueden ejecutar varias tareas sobre la misma línea de comando anexando el símbolo ";", por ejemplo:
cl> clear; dir; beepSi la secuencia es muy grande y no cabe en una línea se usa el símbolo "{" para iniciar y símbolo "}" para terminar la secuencia. Ejemplo:
cl> { >>> clear >>> directory >>> beep >>> }a esto se le nombra declaración compuesta, y se ejecuta como una unidad simple.
4.2 Datos de entrada y salida a tareas
Cuando alguna tarea requiere de varias líneas como argumentos y estos se
dan por el teclado, para indicar que es toda la información se teclea
[Ctrl][Z] que equivale a un "eof (end of file)". También
dichos parámetros pueden darse desde un archivo y no hay necesidad del
"eof".
Por ejemplo, para ejecutar la tarea precess se edita el archivo "coordl95O.txt" con el editor:
as> edit coordl950.txtse pone en este archivo las líneas de ascensión recta y declinación, usando notación decimal o sexagésima (12.5 -o- 12:30:04.2), y los los resultados pueden enviarse a un archivo.
as> precess coordl950.txt > coordl984.txtCuando son muchas las coordenadas se puede ejecutar la tarea en background usando el símbolo "&". Ejemplo:
as> precess coordl950.txt > coord.txt &Además el resultado de un comando puede ser la entrada para el siguiente usando "|" (pipe). Ejemplo:
cl> help rfits | lprint4.3 Manipulación de los parámetros de la tarea
cl> lparam delete file = list of files to be deleted go_ahead = delete or not? (verify = no) verify operation before deleting each file? (default-action = yes) default delete action for verify query (all versions = yes) delete all versions of a file? (sub files = yes) delete any subfiles of a file? (mode = ql)Los parámetros que no tienen paréntesis se llaman parámetros posicionales y los que están entre paréntesis se llaman parámetros ocultos. Si los parámetros posicionales no se encuentran, el sistema pregunta por ellos al momento de ejecutar la tarea.
cl se encarga de grabar los parámetros de las tareas usadas en el subdirectorio uparm, y los actualiza cuando el usuario los modifica. Si los parámetros son dados en la línea de comando, sus valores no son actualizados.
Para restaurar los valores de default de una tarea o un paquete se utiliza el siguiente comando:
cl> unlearn delete cl> unlearn systemPara restaurar todos los valores de default fácilmente, se borran archivos del subdirectorio uparm:
cl> delete uparm$*.parLa edición de los parámetros es un paso muy importante en toda tarea IRAF, ya que de dichos parámetros dependen los resultados de la reducción y análisis de las imágenes. Para editarlos se usa la siguiente tarea:
cl> eparam deleteel cursor se posiciona por medio de las flechas en el campo que se desee modificar, y aceptará la modificación después dar [Return]. Para terminar se da [Ctrl][Z] o [Ctrl][D]. Y para interrumpir la edición se da [Ctrl][C].IRAF Image Reduction and Analysis Facility PACKAGE = system TASK = delete files = list of files to be delet (verify = . . . . . .
Parte de las facilidades de cl, es la conexión con el sistema operativo huésped. Así, para ejecutar comandos de UNIX se usa el prefijo "!". Ejemplo:
cl> !pwd /home/moises cl>5.1 Variables del sistema
cl> set | page twodspec=noao$twodspec/ surfphot=noao$surfphot/ ...El valor individual de una variable de medio ambiente puede ser desplegado con show:
cl> show printer lw5.2 Manejo de archivos y directorios
cl> dir *.cl logfile.cl login.clsi tenemos un grupo de archivos donde sus nombres varían por una letra, se puede sustituir la posición de esa letra con "?":
cl> dir igual?.otros iguall.otros igual2.otros igual3.otros . . . . . .o se puede especificar un rango de caracteres con [inicio-rango]
cl> dir igual[1-4].otros iguall.otros igual2.otros igual3.otros igual4.otroscuando se pone más de un archivo en un comando, estos se separan con comas:
cl> del filel,file2,file3con la tarea files se pueden generar una lista de nombres de archivos:
cl> files *.otros > todosy esta lista puede ser accesada con "@", como parámetros de entrada en la tarea.
cl> dir @todos igual1.otros igual2.otros . . .Existen dos operadores de caracteres, el de concatenación "||" y el de substitución "%". Por ejemplo, para producir una lista de archivos cuyo nombre termina con "_o" se da:
cl> files lib$*.com||_o lib$fio-o.com lib$prc_o.comO cambiar la extensión de "com" a "dat", se da:
cl> files líb$*.%com%dat% lib$fio.dat lib$prc.datPara conocer el subdirectorio donde se encuentra el usuario, se teclea:
cl> path tonatiuh!/home/moises/Para crear un directorio se usa mkdir y para cambiarse de directorio se usa cd, con la misma idea que en Unix.
Una imagen IRAF se almacena en disco en dos archivos separados, uno que contiene el encabezado de la imagen y se encuentra en el directorio de trabajo y otro que contiene los pixeles y no necesariamente se encuentra en ese mismo directorio. El encabezado de la imagen para IRAF es muy importante, porque proporciona la información necesaria para su procesamiento (tiempo de exposición, ascensión recta, etc.) y da al usuario y al sistema de reducción la información de los análisis que ya se han realizado con ella.
Hay dos formatos de almacenamiento que soporta IRAF y son: OIF (Old Iraf Format) y el STF (SDAS group data Format). El OIF tiene extensión "imh" para el encabezado de la imagen y "pix" para el de los pixeles. El STF tiene tres caracteres para la extensión, donde el último carácter debe de ser "h" excepto "imh", por ejemplo "hhh". El sistema IRAF es distribuido con el formato estándar OIF, así, al copiar una imagen no es necesario especificar el formato. Pero si se pone una extensión diferente con terminación "h", entonces creará la imagen con formato STF. La variable de medio ambiente que contiene el tipo de formato se llama "IMTYPET", si esta variable no está definida, entonces tomará como default el formato OIF.
6.2 Imágenes en cinta magnética
Generalmente las imágenes que llegan del observatorio de Cananea o de
otro centro de observación, están en formato FITS. Cómo se
mencionó en el párrafo anterior, IRAF maneja su propio
formato para la reducción y análisis de las imágenes.
El paquete dataio, tiene las tareas rfits que transcribe de FITS a OIF y wfits que transcribe de OIF a FITS. Para ejecutar estas tarea, se deben de realizar unos pasos previos; primero se debe de asignar la unidad de cinta magnética, ejecutar unos comandos de reconocimiento, después leer o escribir la información según sea el caso y por último, deshabilitar la unidad de cinta. Este último paso es muy importante, puesto que el no hacerlo, provoca que otro usuario le sea imposible usar dicha unidad.
Ejemplo:
cl> dataio #Carga el paquete, si no está cargado. da> alloc mta-dat #Habilita la unidad de cinta magnética da> devstatus mta-dat #Proporciona el estado de la unidad #Magtape unit mta-dat status Mon 11:32:08 21-Jul-97 user moises file = -l record = -l nfiles = 0 tapeused = 0 Kb pflags = 0Para leer las imágenes 1,2,3 y 7 de la cinta magnética dar:
da> rfits mta-dat 1-3,7 img File: img001 m51 B 6OOs Size=512x512 File: img002 m51 B 6OOs Size=512x512 File: img003 m51 B 6OOs Size=512x512 File: img007 m51 B 6OOs Size=512x512Para escribir a cinta magnética nueva o sin información dar:
da> wfits img*.imh mta-dat newtape+ File 1: img001.imh -> mta-dat[1] m51 B 6OOs Size=512x512 pixtype=short bitpix=16 blkfac=10 scaling=none 2 Header 183 Data logical (2880 bytes) records written File 2: img002.imh -> mta-dat[EOT] m51 B 6OOs Size=512x512 pixtype=short bitpix=16 blkfac=10 scaling=none 2 Header 183 Data logical (2880 bytes) records written File 3: img003.imh -> mta-dat[EOT] m51 B 6OOs Size=512x512 pixtype=short bitpix=16 blkfac=10 scaling=none 2 Header 183 Data logical (2880 bytes) records written File 4: img007.imh -> mta-dat[EOT] m51 B 6OOs Size=512x512 pixtype=short bitpix=16 blkfac=10 scaling=none 2 Header 183 Data logical (2880 bytes) records writtenPara anexar información a la cinta magnética usada dar:
da> wfits ho*.imh mta-dat newtape- File 1: ho001.imh -> mta-dat[EOT] m51 B 6OOs Size=512x512 pixtype=short bitpix=16 blkfac=10 scaling=none 2 Header 183 Data logical (2880 bytes) records written File 2: ho002.imh -> mta-dat[EOT] m51 B 6OOs Size=512x512 pixtype=short bitpix=16 blkfac=10 scaling=none 2 Header 183 Data logical (2880 bytes) records written . . .Para finalizar (ES MUY IMPORTANTE!!!) dar:
da> dealloc mta-dat6.3 Operaciones con imágenes
Sección Se refiere a:y combinaciones de ellas.
imagen Toda la imagen imagen[] Toda la imagen imagen[i,j] El pixel (i,j) imagen[*,*] Toda la imagen en dos dimensiones imagen[*,-*] Toma el eje Y en orden inverso imagen[*,*,b] La banda "b" de la imagen en 3 dimensiones imagen[*,*:s] Submuestra en el eje Y, tomándolos de S en S imagen[*,1] La línea 1 de la imagen imagen[c,*] La columna "c" de la imagen imagen[i1:i2,j1:j2] Subrango de la imagen imagen[i1:i2:sx,j1:j2:sy] Subrango con submuestra
pl> graph dev$pix[*,10] #Gráfica de la línea 10 pl> contour dev$pix[*:16,*:16] #Gráfica de contornos con submuestra de 16, en ambos ejesPara visualizar una imagen en dos dimensiones se usa la tarea display, dando el nombre de la imagen y el número del frame. Ejemplo:
cl> display dev$pix 1El tamaño de esta ventana puede ser modificada con las predefiniciones del archivo imtoolrc, su contenido se despliega de la manera siguiente:
cl> page dev$imtoolrc # IMTOOLRC -- Predefined frame buffer configuration . . . . . . # Format: configno nframes width height 1 2 512 512 # imtl:imt512 2 2 800 800 # imt2:imt800 3 2 1024 1024 # imt3:imt1024 . . .Para definir el nuevo tamaño de despliegue se realizan estos pasos:
cl> set stdimage = imt800 cl> display dev$pix 1La tarea automáticamente define el tamaño de la imágen dentro de la ventana de despliegue.
7.1 Registro de comandos
cl tiene la opción de registrar todos los comandos usados de una
sesión de trabajo, siempre y cuando el parámetro keeplog
sea verdadero.
cl> keeplog = yesPor default el nombre del archivo donde deposita la información es logfile.cl .Y se puede cambiar el nombre de la manera siguiente:
cl> logfile = "nombre.log"Estos dos parámetros "keeplog" y "logfile" son parámetros de cl, dado que cl es una tarea.
cl> help language.cl CL (Jun86) language CL (Jun86) NAME cl -- call the CL as a task clbye -- like cl(), but closes current script file too PARAMETERS ...7.2 Mecanismo histórico
cl> history . . . 88 set | page 89 show printerY dando un numero como argumento, muestra los últimos n-comandos.
cl> history 2 102 help graph | lprint 103 history 2Se pueden llamar a comandos individuales de la siguiente forma:
cl> ^101 #Llama al comando de la posición 101 cl> ehist -3 #Al tercer comando previo cl> ^ur #Al comando que Inicie con "ur" cl> ehíst ?mark? #Al comando que contenga la cadena "mark"o cambiar argumentos de comandos previos con:
^^ - Hace referencia al primer argumento del comando ^$ - Al último argumento del comando ^* - A todos los argumentos del comando ^O - Al nombre de la tarea ^N - Al argumento NEjemplo:
cl> dir lib$*.h,home$login.cl lib$chars.h . . . lib$clio.h . . .Una de las facilidades del mecanismo histórico, es la habilidad para repetir un comando. Ejemplo:cl> lprint ^^ lprint lib$*.h,home$login.cl
ut> urand 200 2 | graph po+ . . . ut> ^^title = '200 random numbers' urand 200 2 | graph po+ title = '200 random numbers'en este caso "^^" se refiere al último comando ejecutado. La notación no es ambigua, pues el símbolo "^^" aparece al inicio de la línea del comando. Y no hay confusión con el uso de "^^" para referirse al primer argumento.
7.3 Comandos de Unix como tareas
Podemos definir comandos de UNIX como tareas de cl, utilizando el
comando task. En este ejemplo se declaran los comandos de Unix mail y grep como tareas de cl:
cl> task $mail $grep = $foreignPuedes ver en el archivo login.cl ejemplos de este tipo de definición de comandos Unix como tareas.
7.4 Tareas en background y colas
Cuando existen tareas que consumen mucho tiempo, estas pueden ejecutarse en
background con el símbolo "&". Por ejemplo:
pl> contour m92 dev=stdplot & [3] pl>el valor numérico [n], (donde n esta entre 3 y 6, dependiendo de la capacidad de la máquina), es una identificación que el sistema le asigna a la tarea y uno de sus usos es para notificar que el comando terminó su ejecución.
pl> [3] done pl>Si el proceso en background encuentra necesaria la entrada de parámetros entonces manda el siguiente mensaje:
pl> [3] stopped waiting for parameter inputcuando el usuario crea conveniente dar los parámetros, lo podrá hacer con:
pl> service 3se puede asignar una prioridad al proceso, indicándolo en la línea del comando. Por ejemplo:
cl> bigjob &4 [5]indicará que la tarea "bigjob" tendrá una prioridad de nivel cuatro. También se puede usar la prioridad relativa con "&-1", donde esto expresa que se dará una prioridad uno menos que la prioridad corriente de cl.
IRAF soporta tres colas lógicas de trabajo en batch que son:
FAST - Para trabajos cortos y de alta prioridad. BATCH - Para trabajos medianos. SLOW - Para trabajos grandes que necesitan mucho tiempo de ejecución.Para asignar la tarea a alguna cola, se da el nombre de esta al final.
cl> bigjob &fastEn ocasiones es necesario esperar a que termine una tarea de background para poder utilizar sus resultados en procesos subsecuentes, para esto se utiliza el comando:
cl> wait 3; beepal cual se le indica la tarea deseada usando el valor que el sistema le asigno y que al término de su ejecución mande un sonido de alerta.
Para conocer el estado de todas las tareas en background se usa el comando:
cl> jobs [1] 0:12 Done procesos [2] 0:44 Running proceso2 [3] 0:31 +Running proceso3Una tarea que se encuentre corriendo iterativamente, se puede abortar con [Ctrl][C]. Para las tareas en background, se utiliza el comando kill y el número dado por cl cuando se ejecuta la tarea en esa modalidad:
cl> kill 3 [3] exit 5037.5 Tópicos avanzados
cl> edit taskname.cl { print('Hello, world !!') }y se identifica como tarea por medio de un nombre de la manera siguiente:
cl> task $my_new_task = taskname.clde esta manera tenemos definida una nueva tarea.
Para más información de este último punto, se sugiere ver el manual de IRAF llamado, "User Handbook Volume lA".