SusanaFG Publicado 6 de Noviembre del 2008 Publicado 6 de Noviembre del 2008 Hola a tod@s Necesito ayuda urgente con el tema reducción de datos astronómicos: Os pongo en situación: me han pedido desarrollar un prototipo de reducción usando python y estoy tomando HST. El HST hasta ahora a usado IRAF, pero se han inclinado por python y han creado un paquete pyraf, que usara las task de IRAF usando lenguaje python. El problema que ahora tengo es que necesito el procedimiento de reduccion de datos con IRAF y Pyraf. Y no lo consigo encontrar, llevo ya tres dias buscando y estoy bastante desesperada. Tengo que tener algo listo en poquísimo tiempo. Agradecería cualquier tipo de ayuda. Muchas gracias Podéis mandarme un mensaje personal si os resulta mas cómodo: fg_susana@yahoo.es
Borges Publicado 6 de Noviembre del 2008 Publicado 6 de Noviembre del 2008 Hola, bienvenida. Si realmente estás muy urgida, deberías intensificar tu búsqueda en la Web acudiendo a centros universitarios, ya que esos lenguajes son de uso en instrumental científico profesional no aficionado. - Saludos
SusanaFG Publicado 6 de Noviembre del 2008 Autor Publicado 6 de Noviembre del 2008 Pues te aseguro que todo eso ya lo hice, y en particular en los centros universitarios es donde aprecen los links que ya trate. Es decir meterme directamente en el HST. El caso es que la pagina del HST es compleja, y puede ocurrir que alguienc onozca algun link que de directo el manual y que yo no encuentre. Otra de mis esperanzas es que alguien tuviese algun link especial , no se ... Ya pregunte a profesores incluidos. Pero nadie me proporciona una ayuda. un saludo y gracias
jcosellame Publicado 6 de Noviembre del 2008 Publicado 6 de Noviembre del 2008 Yo no conozco nada de PyRAF, lo que sí conozco es de lenguaje de programación Python. PyRAF tengo entendido que está programado en Python. Si me das más detalles de lo que tenés que hacer y con un poquito más de claridad, puedo analizar el código fuente de PyRAF e intentar ver cual puede ser la función que te sirve. Repito, a nivel de código fuente, no a nivel de utilización del programa PyRAF. Hallar la función que hace lo que necesitas me puede me llevar más o menos tiempo dependiendo de los de los detalles que me des y del tamaño del código fuente de PyRAF. Si te esto te sirve, te puedo dar una mano. Por otra parte, fijate si este pdf te ayuda en algo: http://www.physics.ucf.edu/~yfernandez/iraf/ourmanual.pdf Saludos
Gliese Publicado 7 de Noviembre del 2008 Publicado 7 de Noviembre del 2008 Wow, me hiciste descubrir otra relación mas con mi carrera (estudio Ing. en sistemas) con la astronomía. Investigando vi que el IRAF es una forma de organizar datos astronómicos, no solo fotos, sino espectros, una misma foto con capas en UV, IR, etc., todo esto en una estructura de tipo array (algo asi como una matriz) donde cada píxel es una posición de la matriz y de algún modo reduce los gigantezcos datos que tienen para analizar los astrónomos dejando lo más importante para analizar. Perdón que no te pueda ayudar porque soy un novato en la carrera, pero lo que se me ocurre es obtener el código fuente del lenguaje que use IRAF y pasarlo a Phyton. Espero que cuando este más avanzado en la carrera pueda aportar algo a estos proyectos que por lo que ví son de código libre.
SusanaFG Publicado 4 de Diciembre del 2008 Autor Publicado 4 de Diciembre del 2008 Yo no conozco nada de PyRAF, lo que sí conozco es de lenguaje de programación Python. PyRAF tengo entendido que está programado en Python. Si me das más detalles de lo que tenés que hacer y con un poquito más de claridad, puedo analizar el código fuente de PyRAF e intentar ver cual puede ser la función que te sirve. Repito, a nivel de código fuente, no a nivel de utilización del programa PyRAF. Hallar la función que hace lo que necesitas me puede me llevar más o menos tiempo dependiendo de los de los detalles que me des y del tamaño del código fuente de PyRAF. Si te esto te sirve, te puedo dar una mano. Por otra parte, fijate si este pdf te ayuda en algo: http://www.physics.ucf.edu/~yfernandez/iraf/ourmanual.pdf Saludos HIii perdonad el retraso, como no recibía notificación de respuestas pensé q nadie respondió. Muchas gracias por tu ayuda. El tema por ahora ha girado, ahora solo uso python! Y bueno, pyfits q es un modulo para abrir las imágenes ".fits" De python...ufff tengo muchas dudas, ahora estoy intentando salvar el header de una imagen que he modificado pero me salen errores q no entiendo, por otro lado me gustaría poder comprobar que una aplicación esta corriendo, no que ha sido lanzada. Así q tal vez me puedas ayudar!! La ayuda de python no me gusta nada, no hay modo de buscar algo directo. Ademas consideremos que no soy programadora sino física y astrofisica...cuando leo las cosas de python no entiendo nada!!! El tema es q las el modulo de pyfits abre un header y puedes modificarlo pero salta un error al querer salvarlo como dice el manual. He buscado y he localizado el error pero no entiendo el significado: http://doc.astro-wise.org/pyfits.NP_pyf ... erifyError Si lo entiendes me podrías ayudar?? tampoco me deja sobreescribir. Los datos... Vale antes explico lo del fits. Fits es un formato de imagen formado por un header texto y luego un array de datos q es la imagen, formada por el numero de pixeles y el valor q tiene q es el numero de electrones recogido en cada pixel. Bueno pues con pyfits puedes leer el header y los datos del array, ambos puedes modificarlos. La imagen me deja salvarla, y añadir otra incluyéndome nuevos planos, pero no actualizar, q sera sobreescribir. Del header nada, me sale el error anterior. Si se te ocurre algo....estaría muy agradecida, no conozco a nadie q sepa de python así q estoy sola ante el peligro!! Y Gliese me alegro q te sirviese de ayuda la pregunta! Besitos!!
jcosellame Publicado 4 de Diciembre del 2008 Publicado 4 de Diciembre del 2008 Hola Susana Por lo que veo, VerifyError es una clase para manejar excepciones. No es un error. Te explico: Esto está aplicado al control de errores. Cuando un humano se encuentra con un problema (error), analiza la situación y reacciona acorde. Como la computadora no es capaz por si sola de tomar la decisión correcta se utilizan las excepciones. En donde el programador indica que acción tomar en determinada situación de error. Por ejemplo, tenes un array de 3x3 y pusiste mas datos de los que puede alojar el array, esto va a generar un error. Otro ejemplo puede ser una división por 0, también va a generar un error. Ahora... la computadora no sabe que hacer, entonces aborta el programa. Con las excepciones vos le podes decir algo como: "cuando te encuentres con una división por 0 hace tal cosa". Y de esta manera el programa no aborta, sigue adelante. Debe ser una equivalente en lenguaje C++ a try, catch, throw. Lo que supongo que debe pasar, es que tengas algún error de sentencia. Algunos ejemplos pueden ser que te falte una , (coma)... un ; (punto y coma) o algún parámetro o algo similar en el código fuente en esa función. Posiblemente el editor que estás utilizando para modificar el código fuente tiene algún control de sintaxis y no te deje grabar al encontrar un error en el código (lo cual sería muy molesto). Si querés mandame una captura de pantalla cuando te sale este mensaje para poder ver mejor de que se trata. Te dejo mi mail: juan.cruz.osellame@gmail.com Saludos
cesarHR Publicado 5 de Marzo del 2009 Publicado 5 de Marzo del 2009 Yo no conozco nada de PyRAF, lo que sí conozco es de lenguaje de programación Python. PyRAF tengo entendido que está programado en Python. Si me das más detalles de lo que tenés que hacer y con un poquito más de claridad, puedo analizar el código fuente de PyRAF e intentar ver cual puede ser la función que te sirve. Repito, a nivel de código fuente, no a nivel de utilización del programa PyRAF. Hallar la función que hace lo que necesitas me puede me llevar más o menos tiempo dependiendo de los de los detalles que me des y del tamaño del código fuente de PyRAF. Si te esto te sirve, te puedo dar una mano. Por otra parte, fijate si este pdf te ayuda en algo: http://www.physics.ucf.edu/~yfernandez/iraf/ourmanual.pdf Saludos HIii perdonad el retraso, como no recibía notificación de respuestas pensé q nadie respondió. Muchas gracias por tu ayuda. El tema por ahora ha girado, ahora solo uso python! Y bueno, pyfits q es un modulo para abrir las imágenes ".fits" De python...ufff tengo muchas dudas, ahora estoy intentando salvar el header de una imagen que he modificado pero me salen errores q no entiendo, por otro lado me gustaría poder comprobar que una aplicación esta corriendo, no que ha sido lanzada. Así q tal vez me puedas ayudar!! La ayuda de python no me gusta nada, no hay modo de buscar algo directo. Ademas consideremos que no soy programadora sino física y astrofisica...cuando leo las cosas de python no entiendo nada!!! El tema es q las el modulo de pyfits abre un header y puedes modificarlo pero salta un error al querer salvarlo como dice el manual. He buscado y he localizado el error pero no entiendo el significado: http://doc.astro-wise.org/pyfits.NP_pyf ... erifyError Si lo entiendes me podrías ayudar?? tampoco me deja sobreescribir. Los datos... Vale antes explico lo del fits. Fits es un formato de imagen formado por un header texto y luego un array de datos q es la imagen, formada por el numero de pixeles y el valor q tiene q es el numero de electrones recogido en cada pixel. Bueno pues con pyfits puedes leer el header y los datos del array, ambos puedes modificarlos. La imagen me deja salvarla, y añadir otra incluyéndome nuevos planos, pero no actualizar, q sera sobreescribir. Del header nada, me sale el error anterior. Si se te ocurre algo....estaría muy agradecida, no conozco a nadie q sepa de python así q estoy sola ante el peligro!! Y Gliese me alegro q te sirviese de ayuda la pregunta! Besitos!! Hola: Supongo que llego un poco tarde, pero quizá te sirva lo que pueda contarte. Cuando modificas un FITS con Pyfits, lo primero que debes de hacer se abrir el fichero con mode='update'. Tras modificar un fichero o crear un nuevo FITS, cuando llega la hora de almacenar los cambios, Pyftis realiza una validación de los datos introducidos, tanto en la cabecera como los datos (han de cumplir las especificaciones del formato FITS). Más en concreto, cuando ejecutas un "writeto" o "flush" se ejecuta de forma automática la validación de los datos. En esos casos, existe un parámetro de dichas funciones que te permite establecer la respuesta a un error. Suele llamarse "output_verify" y valores típicos suelen ser "fix", "silentfix", "exception" (valor por defecto) o "ignore". En cuanto al hecho de te dé problemas a la hora de guardar fichero, puede que se deba a que existe otro fichero con el mismo nombre. Por defecto no sobreescribe. Si quieres modificar ese comportamiento, el método "writeto" tiene un parámetro llamado "clobber". El valor True, permite sobreescibir. Echa un ojo al manual oficial http://www.stsci.edu/resources/software ... anual1.pdf Si tienes dudas responde al mensaje. He especificado que el foro me notifique cuando se produzca una respuesta. Un saludo
SusanaFG Publicado 6 de Marzo del 2009 Autor Publicado 6 de Marzo del 2009 Hola: Supongo que llego un poco tarde, pero quizá te sirva lo que pueda contarte. Cuando modificas un FITS con Pyfits, lo primero que debes de hacer se abrir el fichero con mode='update'. Tras modificar un fichero o crear un nuevo FITS, cuando llega la hora de almacenar los cambios, Pyftis realiza una validación de los datos introducidos, tanto en la cabecera como los datos (han de cumplir las especificaciones del formato FITS). Más en concreto, cuando ejecutas un "writeto" o "flush" se ejecuta de forma automática la validación de los datos. En esos casos, existe un parámetro de dichas funciones que te permite establecer la respuesta a un error. Suele llamarse "output_verify" y valores típicos suelen ser "fix", "silentfix", "exception" (valor por defecto) o "ignore". En cuanto al hecho de te dé problemas a la hora de guardar fichero, puede que se deba a que existe otro fichero con el mismo nombre. Por defecto no sobreescribe. Si quieres modificar ese comportamiento, el método "writeto" tiene un parámetro llamado "clobber". El valor True, permite sobreescibir. Echa un ojo al manual oficial http://www.stsci.edu/resources/software ... anual1.pdf Si tienes dudas responde al mensaje. He especificado que el foro me notifique cuando se produzca una respuesta. Un saludo Hola, muchas gracias por tu respuesta. Nunca es tarde, de hecho el problema esta aun pendiente de solución. Ese manual me lo lei entero, ese y el de pyfits y aun asi.... Algunas cosas de mi problema localice cuales eran, te cuento. A ver el problema que me encontraba es que no me guardaba cuando usaba el comando pyfits.writeto(imagen,array, hdr), al decirle lo de hdr, me daba error, no porque tuviese otra imagen con el mismo nombre que no lo habia. El tema era que en el header hay keywords que no reconoce. Usando: >hdulist =pyfits.open('image.fits') >hdulist.close() modifico el header o no, eso da igual el problema sigue existiendo >hdulist.writeto('newimage.fits') ---> SALTA EL ERROR Ahora si visaulizo donde esta el problema, me da en keywords, asi q le aplico el ignore > hdulist.writeto('newimage.fits',output_varify ='ignore') de este modo si me escribe la imagen. Ahora diras, pues no tienes problemas, bueno el problema q surgio luego es q este método no lo puedo aplicar porque cuando quiero abrir la array y operar con ella me dice que no tiene datos, uso el comando: scidata=hdulist[1].data. Por tanto, aplico el método mas sencillo y compacto: "convenience function", es decir: > data. hdr =pyfits.getdata('image.fits', header =True) Pero de este modo no acepta utilizar "ignore" cuando aplico "writeto". Estuve mirando el código y por defecto, como dices, esta "exception". Claro la posibilidad es lo que aplique, abrir el header, mirar cuales son las keys que no sirven , modificar el header y update. Ahora si escribe. !! Pero...esto mirando imagen a imagen, son concretras, pero el programita debe ser automático, metes una imagen raw y debe hacer todo el proceso de calibración completo. Una solución es analizar bien el código de NP_pyfits pero modificaría algo interno. Asi q no se como solucionar el tema, salvo q las imagenes vengan sin fallos en el header....si tienes alguna idea me seria de gran ayuda. No se si ha quedado claro o lo he liado más. Muchas gracias de nuevo Susana
cesarHR Publicado 10 de Marzo del 2009 Publicado 10 de Marzo del 2009 Hola: Supongo que llego un poco tarde, pero quizá te sirva lo que pueda contarte. Cuando modificas un FITS con Pyfits, lo primero que debes de hacer se abrir el fichero con mode='update'. Tras modificar un fichero o crear un nuevo FITS, cuando llega la hora de almacenar los cambios, Pyftis realiza una validación de los datos introducidos, tanto en la cabecera como los datos (han de cumplir las especificaciones del formato FITS). Más en concreto, cuando ejecutas un "writeto" o "flush" se ejecuta de forma automática la validación de los datos. En esos casos, existe un parámetro de dichas funciones que te permite establecer la respuesta a un error. Suele llamarse "output_verify" y valores típicos suelen ser "fix", "silentfix", "exception" (valor por defecto) o "ignore". En cuanto al hecho de te dé problemas a la hora de guardar fichero, puede que se deba a que existe otro fichero con el mismo nombre. Por defecto no sobreescribe. Si quieres modificar ese comportamiento, el método "writeto" tiene un parámetro llamado "clobber". El valor True, permite sobreescibir. Echa un ojo al manual oficial http://www.stsci.edu/resources/software ... anual1.pdf Si tienes dudas responde al mensaje. He especificado que el foro me notifique cuando se produzca una respuesta. Un saludo Hola, muchas gracias por tu respuesta. Nunca es tarde, de hecho el problema esta aun pendiente de solución. Ese manual me lo lei entero, ese y el de pyfits y aun asi.... Algunas cosas de mi problema localice cuales eran, te cuento. A ver el problema que me encontraba es que no me guardaba cuando usaba el comando pyfits.writeto(imagen,array, hdr), al decirle lo de hdr, me daba error, no porque tuviese otra imagen con el mismo nombre que no lo habia. El tema era que en el header hay keywords que no reconoce. Usando: >hdulist =pyfits.open('image.fits') >hdulist.close() modifico el header o no, eso da igual el problema sigue existiendo >hdulist.writeto('newimage.fits') ---> SALTA EL ERROR Ahora si visaulizo donde esta el problema, me da en keywords, asi q le aplico el ignore > hdulist.writeto('newimage.fits',output_varify ='ignore') de este modo si me escribe la imagen. Ahora diras, pues no tienes problemas, bueno el problema q surgio luego es q este método no lo puedo aplicar porque cuando quiero abrir la array y operar con ella me dice que no tiene datos, uso el comando: scidata=hdulist[1].data. Por tanto, aplico el método mas sencillo y compacto: "convenience function", es decir: > data. hdr =pyfits.getdata('image.fits', header =True) Pero de este modo no acepta utilizar "ignore" cuando aplico "writeto". Estuve mirando el código y por defecto, como dices, esta "exception". Claro la posibilidad es lo que aplique, abrir el header, mirar cuales son las keys que no sirven , modificar el header y update. Ahora si escribe. !! Pero...esto mirando imagen a imagen, son concretras, pero el programita debe ser automático, metes una imagen raw y debe hacer todo el proceso de calibración completo. Una solución es analizar bien el código de NP_pyfits pero modificaría algo interno. Asi q no se como solucionar el tema, salvo q las imagenes vengan sin fallos en el header....si tienes alguna idea me seria de gran ayuda. No se si ha quedado claro o lo he liado más. Muchas gracias de nuevo Susana Hola Susana: De momento lo único que se me ocurre es que quizá estés leyendo una HDU que no exista. Me explico: una imagen FITS puede contener uno o varios arrays de datos y sus correspondientes cabeceras. Cuando tratas de leer los datos empleas la instrucción "scidata=hdulist[1].data". Supongo que quieres leer el segundo conjunto de datos, ya que el primero (la lista HDU primaria) se referencia mediante el índice 0, esto es, "scidata=hdulist[0].data". Para obtener información acerca del FITS que tienes entre manos, existe el método pyfits.info(), que se emplea de la siguiente forma: hdulist = pyfits.open(’input.fits’) hdulist.info() y que te muestra información al respecto del contenido de 'input.fits'. La otra posibilidad es que aunque los headers no cumplan estrictamente con los estandares FITS, no hayan escrito correctamente la matriz de datos, aunque me inclino más por el caso de que trates de leer datos donde no hay (cabecera equivocada)
SusanaFG Publicado 10 de Marzo del 2009 Autor Publicado 10 de Marzo del 2009 Hola Susana: De momento lo único que se me ocurre es que quizá estés leyendo una HDU que no exista. Me explico: una imagen FITS puede contener uno o varios arrays de datos y sus correspondientes cabeceras. Cuando tratas de leer los datos empleas la instrucción "scidata=hdulist[1].data". Supongo que quieres leer el segundo conjunto de datos, ya que el primero (la lista HDU primaria) se referencia mediante el índice 0, esto es, "scidata=hdulist[0].data". Para obtener información acerca del FITS que tienes entre manos, existe el método pyfits.info(), que se emplea de la siguiente forma: hdulist = pyfits.open(’input.fits’) hdulist.info() y que te muestra información al respecto del contenido de 'input.fits'. La otra posibilidad es que aunque los headers no cumplan estrictamente con los estandares FITS, no hayan escrito correctamente la matriz de datos, aunque me inclino más por el caso de que trates de leer datos donde no hay (cabecera equivocada) Hola, Si, eso lo use, tanto info como getdata funcionan y da datos, es decir con getdata puedo trabajar sobre la matriz pero con hdulist[1] no, y no me deja mezclar comandos, me explico; para salvar los datos con el header o uso el método de pyfits.writeto previamente leídos con getdata y getheader o uso writeto con hdulist[0] y hdulist [1], pero no puedo mezclarlos, no salva ya lo comprobé. Por tanto como el método para trabajar sobre el array es getdata necesito usar getheader y pyfits.writeto. Y es aquí donde no me deja salvar el header por culpa del fallo en las keys del header y no me deja aplicar el método "ignore" porque no esta definido como parámetro. Imagino que es un fallo exclusivo de las imágenes q baje q se modifico el header, ya que las imágenes ciencia no presentan este problema. Si logro bajar mas imágenes raw de dark, flat y bias...pero no localizo ninguna web y el HST por ejemplo lo que me proporciona son masterdark , masterfalt y masterbias, y yo lo que necesito son las individuales para crear las master. No veo solución, o es cosa de las imágenes o modifico código del modulo. Muchas gracias por tu ayuda.
cesarHR Publicado 11 de Marzo del 2009 Publicado 11 de Marzo del 2009 Hola Susana: De momento lo único que se me ocurre es que quizá estés leyendo una HDU que no exista. Me explico: una imagen FITS puede contener uno o varios arrays de datos y sus correspondientes cabeceras. Cuando tratas de leer los datos empleas la instrucción "scidata=hdulist[1].data". Supongo que quieres leer el segundo conjunto de datos, ya que el primero (la lista HDU primaria) se referencia mediante el índice 0, esto es, "scidata=hdulist[0].data". Para obtener información acerca del FITS que tienes entre manos, existe el método pyfits.info(), que se emplea de la siguiente forma: hdulist = pyfits.open(’input.fits’) hdulist.info() y que te muestra información al respecto del contenido de 'input.fits'. La otra posibilidad es que aunque los headers no cumplan estrictamente con los estandares FITS, no hayan escrito correctamente la matriz de datos, aunque me inclino más por el caso de que trates de leer datos donde no hay (cabecera equivocada) Hola, Si, eso lo use, tanto info como getdata funcionan y da datos, es decir con getdata puedo trabajar sobre la matriz pero con hdulist[1] no, y no me deja mezclar comandos, me explico; para salvar los datos con el header o uso el método de pyfits.writeto previamente leídos con getdata y getheader o uso writeto con hdulist[0] y hdulist [1], pero no puedo mezclarlos, no salva ya lo comprobé. Por tanto como el método para trabajar sobre el array es getdata necesito usar getheader y pyfits.writeto. Y es aquí donde no me deja salvar el header por culpa del fallo en las keys del header y no me deja aplicar el método "ignore" porque no esta definido como parámetro. Imagino que es un fallo exclusivo de las imágenes q baje q se modifico el header, ya que las imágenes ciencia no presentan este problema. Si logro bajar mas imágenes raw de dark, flat y bias...pero no localizo ninguna web y el HST por ejemplo lo que me proporciona son masterdark , masterfalt y masterbias, y yo lo que necesito son las individuales para crear las master. No veo solución, o es cosa de las imágenes o modifico código del modulo. Muchas gracias por tu ayuda. Hola otra vez: Ya que te decantas por el método que funciona (getheader, getdata), puedes validar las cabeceras antes de guardar el fichero. De hecho, existen al menos dos formas de validación: del header completo, o de cada una de las 'cards' (KEYWORDS) del header. El método es el de siempre: verify. Las opciones a aplicar: 'fix' o 'silentfix'. Te remito al capítulo 5 del manual de Pyfits. En él encontrarás unos cuantos ejemplos de código. Muchas suerte y no te rindas
Publicaciones recomendadas
Crear una cuenta o conéctate para comentar
Tienes que ser miembro para dejar un comentario
Crear una cuenta
Regístrese para obtener una cuenta nueva en nuestra comunidad. ¡Es fácil!
Registrar una nueva cuentaConectar
¿Ya tienes una cuenta? Conéctate aquí.
Conectar ahora