IRAF (Image Reduction and Analysis Facility) es un conjunto de software desarrollado en el Observatorio Nacional de Astronomía Óptica (NOAO) para la reducción de imágenes y espectros astronómicos en formato de matriz de píxeles. Se trata principalmente de datos obtenidos de detectores de matriz de imágenes, como los CCD . Está disponible para los principales sistemas operativos de ordenadores centrales y de escritorio. IRAF fue diseñado para ser multiplataforma, compatible con sistemas operativos VMS y tipo UNIX . Su uso en Microsoft Windows fue posible gracias a Cygwin en versiones anteriores, y actualmente se puede realizar con el Subsistema de Windows para Linux . Hoy en día, se utiliza principalmente en macOS y Linux .
Los comandos de IRAF (conocidos como tareas) se organizan en estructuras de paquetes. Se pueden añadir paquetes adicionales a IRAF. Los paquetes pueden contener otros paquetes. Existen numerosos paquetes disponibles, tanto de NOAO como de desarrolladores externos, que suelen centrarse en una rama de investigación o instalación específica.
Entre las funcionalidades disponibles en IRAF se incluyen la calibración de los flujos y las posiciones de los objetos astronómicos dentro de una imagen, la compensación de las variaciones de sensibilidad entre los píxeles del detector, la combinación de múltiples imágenes o la medición de los desplazamientos al rojo de las líneas de absorción o emisión en un espectro .
Aunque IRAF sigue siendo muy popular entre los astrónomos, se interrumpió su desarrollo y mantenimiento institucional. Actualmente, IRAF se mantiene como software comunitario. [ 1 ] [ 2 ]
Historia
El proyecto IRAF comenzó en otoño de 1981 en el Observatorio Nacional de Kitt Peak. En 1982, se completó un diseño preliminar y la primera versión del lenguaje de comandos (CL). Se fundó el Grupo IRAF. El diseñador del sistema IRAF y programador jefe fue Doug Tody. En 1983, el Instituto Científico del Telescopio Espacial seleccionó IRAF como entorno para su sistema de análisis de datos SDAS y lo adaptó a VMS. La primera versión interna de IRAF se publicó en 1984. Tras una distribución limitada a algunos sitios externos, la primera versión pública se publicó en 1987. [ 3 ]
A mediados de la década de 1990, se inició el proyecto "Open IRAF" para abordar los problemas que se observaban en ese momento. Esto incluía enlaces de lenguaje, una forma de usar componentes IRAF sin el entorno IRAF completo, nuevos tipos de datos y código de usuario cargable dinámicamente. [ 4 ] Este proyecto nunca se completó.
A finales de la década de 1990, el desarrollo de IRAF se ralentizó considerablemente, ya que el sistema se consideraba maduro. El soporte al usuario se trasladó a un foro web en 2005 y el desarrollo del sistema central se redujo oficialmente a un nivel muy bajo. [ 5 ] Sin embargo, el trabajo voluntario de los desarrolladores de IRAF continuó y distribuyeron algunas versiones intermedias no oficiales. [ 6 ]
Entre 2006 y 2009, se realizó un primer intento de portar IRAF a 64 bits en el Instituto de Ciencias Espaciales y Astronáuticas de Japón. [ 7 ] Si bien este esfuerzo no se convirtió en una nueva versión oficial de IRAF, contribuyó significativamente a la adaptación a 64 bits realizada por NOAO.
NOAO reanudó los esfuerzos de desarrollo en 2007, [ 8 ] adaptando el sistema a 64 bits y añadiéndole capacidades de Observatorio Virtual. Esta fase finalizó en 2013 con el lanzamiento de la versión 2.16.1.
En 2017, el código fuente se transfirió a GitHub . Con el fin de empaquetar el software IRAF para Debian , se eliminó el código fuente no libre restante y desde entonces su mantenimiento corre a cargo exclusivamente de la comunidad. Tras algunas versiones preliminares, la versión 2.17 se publicó a principios de 2022. [ 9 ]
En 2023, NOIRLab (sucesor de NOAO) reanudó parte del desarrollo y creó su propia versión 2.18 con un alcance limitado para dar soporte al antiguo pipeline de reducción de datos de Gemini . [ 10 ] Los cambios relevantes se fusionaron posteriormente en la versión comunitaria 2.18. [ 11 ]
Licencias
La licencia de IRAF generalmente sigue el esquema de licencia MIT . Las versiones anteriores contenían software no libre. En particular, el código gráfico NCAR restringía la redistribución de IRAF antes de ser eliminado en la versión 2.16. [ 13 ] Además, las versiones antiguas utilizaban código tomado del libro Numerical Recipes bajo una licencia diferente. Este código fue eliminado o reemplazado por código abierto en versiones posteriores a la 2.16.1. [ 14 ] Esto permitió la distribución de paquetes IRAF en distribuciones Linux populares como Debian [ 15 ] o Ubuntu.
Diseño del sistema
El sistema IRAF en tiempo de ejecución consta de cuatro componentes básicos: [ 16 ]
- Los paquetes de aplicaciones son una colección estructurada de tareas portátiles para la reducción y el análisis de datos científicos, pero también para utilidades del sistema.
- El lenguaje de comandos ( CL ) es la interfaz de usuario interactiva predeterminada y también se utiliza como lenguaje de scripting para las tareas en los paquetes de la aplicación.
- El Sistema Operativo Virtual ( VOS ) proporciona una interfaz portátil para las tareas de la aplicación. Está modelado a partir de las funciones del sistema Unix, pero con una API para el lenguaje de preprocesamiento de subconjuntos ( SPP ) específico de IRAF.
- La interfaz del sistema anfitrión ( HSI ) es el núcleo que proporciona una interfaz entre el sistema anfitrión y las funciones del VOS. También proporciona las herramientas necesarias para arrancar el sistema desde el código fuente. El compilador SPP también forma parte de la HSI.
Solo el HSI depende del sistema. Todos los demás componentes son portátiles gracias a las funciones que proporciona el HSI. De esta forma, la migración a un nuevo sistema solo requiere modificaciones en este componente. Sin embargo, el diseño inicial se basaba implícitamente en el uso universal de tipos de datos de 32 bits, por lo que la migración a 64 bits requirió un gran esfuerzo no solo en el HSI, sino en todos los componentes del sistema.
Paquetes de aplicación
Los paquetes de aplicaciones se estructuran recursivamente en subpaquetes y tareas. Se dividen en dos clases: utilidades generales del sistema y de procesamiento básico de datos, y paquetes específicos para la reducción y el análisis de datos astronómicos. Las tareas se escriben principalmente en SPP y CL.
Paquetes del sistema
Los paquetes del sistema se encuentran en el paquete base de IRAF y proporcionan herramientas para el CL, utilidades útiles del sistema operativo y utilidades científicas básicas, por ejemplo, para el procesamiento de imágenes:
- datosio
- Conversión de formato de datos ( FITS , formato de imagen IRAF, etc.)
- imágenes
- Procesamiento y visualización general de imágenes de mapa de bits
- liza
- Procesamiento de listas
- trama
- utilidades de trazado de gráficos vectoriales
- softtools
- Herramientas para el desarrollo de software y el mantenimiento de sistemas
- sistema
- Utilidades del sistema
- servicios públicos
- Utilidades diversas, incluyendo nttools para el manejo de tablas.
Paquetes de astronomía óptica
Los paquetes noao se utilizan para el análisis de datos de astronomía óptica. La mayoría de estas tareas son generales, pero el paquete imred también contiene tareas de reducción de datos para instrumentos específicos. Algunos de los paquetes importantes son:
- imred
- Paquete de reducción de imágenes , que contiene tareas generales para la reducción de datos astronómicos y para instrumentos específicos del KPNO.
- datos de arte
- Paquete de generación de datos artificiales. Puede generar catálogos artificiales, espectros 2D y 3D, crear imágenes de estrellas artificiales, galaxias, ruido y rayos cósmicos, etc., con fines de prueba.
- astrometría
- Paquete de astrometría para obtener coordenadas astrométricas de objetos en campos estelares.
- digifoto
- Paquete de fotometría estelar digital

- especificación unida
- Paquete de análisis y reducción de datos espectrales unidimensionales. Una función importante de este paquete es splot , una herramienta gráfica para el análisis de espectros.
- dos especificaciones
- Paquete de análisis y reducción espectral bidimensional, con las mismas operaciones para espectros bidimensionales ( longslit , multispec).
- foto de surf
- Paquete de análisis de isofotas de galaxias
- gato ast
- Paquete de acceso a catálogos y estudios astronómicos
Paquetes externos
Una de las fortalezas de IRAF fue la existencia de varios paquetes externos que resolvían problemas específicos o implementaban procesos especializados de reducción de datos. Entre los paquetes se encuentran:
- se ajusta a la utilidad
- Utilidades para archivos FITS de una o varias extensiones
- tabla de partículas
- Paquete IRAF para espectros tabulares
- ctio
- Herramientas para el Observatorio Interamericano de Cerro Tololo
- stsdas
- Sistema de software del Space Telescope Science Institute para la calibración y el análisis de datos del Telescopio Espacial Hubble . El soporte para tareas seleccionadas del paquete stsdas se mantiene en el paquete st4gem . El paquete de tablas original de STSci ahora se incluye como utilities.nttables en los paquetes del sistema.
- stecf
- Tareas de IRAF desarrolladas en el Centro Europeo de Coordinación del Telescopio Espacial.
- rvsao
- Paquete de velocidades radiales del Observatorio Astrofísico Smithsoniano
- wctools
- Utilidades del sistema de coordenadas mundiales de la imagen , por Jessica Mink
- Extracción espectral de AXe
- Software de extracción y visualización espectral para procesar imágenes espectroscópicas astronómicas sin rendija de gran formato, como las obtenidas con la Cámara Avanzada para Sondeos del Telescopio Espacial Hubble . El paquete consta de varias tareas, cada una de las cuales realiza un paso de reducción específico sobre los datos para producir los espectros finales extraídos. El usuario puede analizar y controlar los espectros y, si es necesario, volver a ejecutar el proceso con parámetros ligeramente modificados hasta obtener un resultado satisfactorio. Una imagen profunda del grism de la ACS WFC puede contener espectros detectables de miles de objetos. Comprobar cada espectro individualmente es muy tedioso. Para ayudar a los usuarios a analizar la totalidad de sus datos, se desarrolló la tarea adicional aXe2web para generar páginas web navegables a partir de datos espectrales reducidos, lo que permite examinar cientos de espectros de forma rápida y precisa. La herramienta puede utilizarse para una consulta rápida o como herramienta de previsualización en flujos de datos, bases de datos o incluso para observatorios virtuales. [ 17 ]
- Géminis
- Proceso de reducción de datos para el Observatorio Gemini
Sin embargo, muchos de estos paquetes ya no reciben mantenimiento. [ 18 ] La adaptación a 64 bits también requirió un esfuerzo significativo y no todos los paquetes externos fueron adaptados y, por lo tanto, solo se pueden usar en un entorno de 32 bits.
Tareas definidas por el usuario
IRAF permite a los usuarios escribir sus propias tareas de dos maneras principales. Una es mediante la escritura de scripts de procedimiento no compilados (lenguaje de comandos, CL). La segunda es mediante programas preprocesadores de subconjuntos (SPP) compilados. Existen documentos tutoriales para ambos métodos. [ 19 ]
Idiomas específicos de la IRAF
Lenguaje de comandos
El lenguaje de comandos (CL) sirve como interfaz de comandos y de ejecución entre el usuario en su terminal y los programas que ejecuta. El usuario introduce sus comandos en el CL, que realiza las tareas y manipulaciones de archivos necesarias para ejecutarlos. En versiones posteriores, el CL original se amplió a ECL, cuya principal ventaja es una línea de comandos editable. También se desarrolló una versión que permitía el acceso directo al Observatorio Virtual (VOCL).
La CL funciona principalmente como un intérprete de comandos y organiza el trabajo con el sistema y las aplicaciones. Existen tres tipos de tareas que la CL puede ejecutar: tareas nativas, que forman parte de los ejecutables IRAF compilados; scripts (tareas CL escritas en CL); y tareas externas, programas o scripts externos que ejecuta la CL. Para cada tarea, puede existir un archivo de parámetros. Este archivo contiene una descripción de cada uno de los parámetros utilizados por la tarea que la CL debe conocer y gestionar. [ 20 ]
Aquí tenéis un sencillo script de "Hola Mundo" en CL:
{ print ( ' ¡ Hola , mundo ! ' ) }Los scripts CL suelen tener el sufijo .cl, lo que puede causar conflictos con los archivos de código Common Lisp .
Lenguaje de preprocesamiento de subconjuntos
El lenguaje de preprocesamiento de subconjuntos (SPP) implementa un subconjunto del lenguaje de preprocesamiento IRAF que se planificó en los inicios de IRAF. El lenguaje SPP se basa en el lenguaje Ratfor . La forma léxica, los operadores y las estructuras de control de flujo son idénticos a los proporcionados por Ratfor. Las principales diferencias radican en los tipos de datos, la forma de un procedimiento, la adición de cadenas en línea y constantes de caracteres, el uso de corchetes para matrices y la instrucción de tarea . Las funcionalidades de entrada/salida que proporciona son bastante diferentes. [ 21 ]
El programa xc , incluido con IRAF, traduce los programas SPP a Fortran 66 y, a partir de ahí, con f2c , a código C.
El preprocesador se complementa con mkpkg , una herramienta de automatización de compilación similar a make , generic , una herramienta para traducir tipos genéricos en código fuente dependiente del tipo, y xyacc , una versión modificada de yacc para producir salida SPP.
Aquí tenéis un sencillo programa "Hola Mundo" en SPP:
tarea hello # Tarea invocable de CL procedimiento hello () # procedimiento común begin call printf ( "hola, mundo \n " ) endLos programas SPP suelen tener el sufijo .x, aquellos que necesitan ser preprocesados con la herramienta genérica tienen .gx.
Software complementario
Un entorno de trabajo IRAF completo generalmente requiere otras dos aplicaciones: una ventana xterm extendida con una ventana gráfica (llamada xgterm y distribuida en un paquete x11iraf independiente) y un programa de visualización de imágenes conocido como "servidor de imágenes". Los dos servidores de imágenes más populares son SAOImageDS9 (de SAO ) y ximtool (NOAO, también distribuido en el paquete x11iraf). [ 22 ]
Como alternativa a xgterm y al lenguaje de comandos, se puede utilizar el paquete de Python PyRAF. PyRAF permite traducir scripts CL a scripts de Python. También proporciona una ventana gráfica (basada en Tk o en Matplotlib ). Como intérprete de comandos, se puede usar el intérprete de comandos de Python o IPython , o un modo especial que se asemeja mucho a la apariencia del intérprete de comandos CL. [ 23 ]
Véase también
Referencias
- ↑ "Reducción de datos / Software | NOIRLab Science" . www.noirlab.edu . Consultado el 11 de diciembre de 2022 .
- ↑ "IRAF 2.17" . Distribución de la comunidad IRAF . Consultado el 11 de diciembre de 2022 .
- ↑ Fitzpatrick, Mike (septiembre de 2012). "IRAF: Lecciones para la longevidad del proyecto" . Serie de conferencias de la ASP . 461 : 595. Bibcode : 2012ASPC..461..595F .
- ↑ Heck, Andre, ed. (2000). Manejo de la información en astronomía . Springer Science+Business Media. pp. 83–85 . ISBN 978-94-010-5871-1.
- ↑ Boroson, Todd (septiembre de 2005). "Productos de datos y software en NOAO: se avecinan algunos cambios" . Boletín informativo de NOAO-NSO . N.° 83. págs. 10–12 .
- ↑ Smith, Chris; Fitzpatrick, Mike (septiembre de 2007). "IRAF 2.14" . Boletín informativo de NOAO-NSO . N.° 91. pág. 28.
- ↑ Yamauchi, Chisato (agosto de 2008). "Portando IRAF a sistemas operativos x86_64" . ASP Conference Series . 394 : 666–669 . Bibcode : 2008ASPC..394..666Y .
- ↑ Fitzpatrick, Mike; Smith, Chris (diciembre de 2007). "Lanzamientos de IRAF V2.14 y Ximtool" . Boletín informativo de NOAO-NSO . N.° 92. págs. 21–22 .
- ↑ "Notas de la versión IRAF 2.17 — Documentación IRAF 2.17" . iraf.readthedocs.io . Consultado el 23 de abril de 2024 .
- ↑ Fitzpatrick, Michael; Placco, Vinicius; Bolton, Adam; Merino, Brian; Ridgway, Susan; Stanghellini, Letizia (2024-01-03). "Modernización de IRAF para apoyar la reducción de datos de Gemini". Astronomical Data Analysis Software and Systems Xxxiii . 541 : 461. arXiv : 2401.01982 . Bibcode : 2025ASPC..541..461F .
- ↑ "Notas de la versión IRAF 2.18 — Documentación IRAF 2.18" . iraf.readthedocs.io . Consultado el 11 de abril de 2024 .
- ↑ "Notas de lanzamiento de IRAF" . Consultado el 13 de marzo de 2022 .
- ↑ "Notas de la versión IRAF V2.16" . Consultado el 19 de marzo de 2023 .
- ↑ "Problemas de licencia en IRAF" . Distribución de la comunidad IRAF . Consultado el 10 de diciembre de 2022 .
- ↑ "Debian -- Detalles del paquete iraf en bullseye" . packages.debian.org . Consultado el 10 de diciembre de 2022 .
- ↑ Tody, Doug (enero de 1986). Crawford, David L. (ed.). "El sistema de reducción y análisis de datos IRAF" (PDF) . Proc. SPIE Instrumentation in Astronomy . Instrumentation in Astronomy VI. VI : 627–733 . Bibcode : 1986SPIE..627..733T . doi : 10.1117/12.968154 .
- ↑ Página ST-ECF para aXe
- ↑ "Paquetes externos" . Distribución de la comunidad IRAF . Consultado el 10 de diciembre de 2022 .
- ↑ "Documentación de IRAF — Documentación de IRAF 2.17" . iraf.readthedocs.io . Consultado el 10 de diciembre de 2022 .
- ↑ "Manual del programador de CL — Documentación de IRAF 2.17" . iraf.readthedocs.io . Consultado el 11 de diciembre de 2022 .
- ↑ "Manual de referencia de SPP — Documentación de IRAF 2.17" . iraf.readthedocs.io . Consultado el 11 de diciembre de 2022 .
- ↑ "X11IRAF – Herramientas gráficas para trabajar con IRAF" . Distribución de la comunidad IRAF . Consultado el 11 de diciembre de 2022 .
- ↑ "El tutorial de PyRAF — Documentación de PyRAF 2.2" . pyraf.readthedocs.io . Consultado el 11 de diciembre de 2022 .
Enlaces externos
- Página principal de IRAF
- Documentación de IRAF
- Repositorio de código fuente en Github
- Página de debate de la comunidad IRAF
- Antigua página principal de IRAF en el archivo web.
- Software de astronomía
- Software multiplataforma