<jupyter_start><jupyter_text>Universidad de Costa Rica Centro de Investigaciones Espaciales - CINESPAProyecto:  Estudio de la radiación de microondas y rayos X como índicadores de la velocidad de propagación de CME's en el medio interplanetario.Coordinadores: <NAME> -               <NAME>               Asistente: Yasser WagonPeriodo: II ciclo- 2018 Manejo de archivos FITS usando la librería AstropyLas imágenes solares, contenidas en archivos FITS, requieren ser manejadas por librerías especializadas para ello. Astropy es una librería muy utilizada para lograr dicho objetivo. A continuación se describen funciones básicas para el manejo de archivos FITS.Flexible Image Transport System (FITS) es un formato de archivo usado en astronomía. Los archivos se conforman de una lista de Header Data Unit (HDU) tambien llamado HDUList, cada HDU consta de un encabezado y un array de datos. El array de datos puede ser una imagen o una tabla.  Se importan las librerías necesarias, entre la que se encuentra 'fits' de Astropy. Además se importan numpy y matplotlib.<jupyter_code>from astropy.io import fits
import numpy as np
import matplotlib.pyplot as plt<jupyter_output><empty_output><jupyter_text>Los archivos FITS se encuentran en la carpeta "ImageFITS" del repositorio. Para abrir un archivo FITS, se utiliza la función fits.open()<jupyter_code>sunImageFile = fits.open('ImageFITS/5.fits')
sunImageFile.info()<jupyter_output>Filename: ImageFITS/5.fits
No.    Name      Ver    Type      Cards   Dimensions   Format
  0  PRIMARY       1 PrimaryHDU     248   (2048, 2048)   int16 (rescales to uint16)<jupyter_text>Es posible obtener el HDUList del archivo FITS, con el método HDUList.info(). Es importante notar que la función fits.open(), retorna un objeto HDUList.Se observa que '5.fits' contiene solo un HDU llamado PRIMARY. El header contiene 248 datos, y el tamaño de la imagen es de 2048x2048 pixeles.Cada HDU posee dos atributos, el header y el arreglo de datos. Se imprime el header del archivo '5.fits',<jupyter_code>sunImageFile[0].header<jupyter_output><empty_output><jupyter_text>Para guardar algún card (datos que conforman el header) en una variable, se puede hacer de forma indexada o utilizando la etiqueta. Se obtiene e imprime la fecha de observación utilizando ambas formas.<jupyter_code>date1 = sunImageFile[0].header[5]
date2 = sunImageFile[0].header['DATE-OBS']

print date1
print date2<jupyter_output>2012-01-01T01:06:15.005
2012-01-01T01:06:15.005<jupyter_text>Se puede obtener el arreglo de datos del HDU de dos formas. Una es usando la función fits.getdata(), y la otra es accediendo al atributo data que posee cada objeto HDU. A continuación, se obtiene la imagen contenida en el archivo '5.fits' de las dos formas ya comentadas. Seguidamente se imprime la matriz que representa la imagen y dimensión de la misma.<jupyter_code>image_data1 = fits.getdata('ImageFITS/5.fits', ext=0)
image_data2 = sunImageFile[0].data

print(image_data1)
print(image_data1.shape)
print('\n')
print(image_data2)
print(image_data2.shape)<jupyter_output>[[730 730 730 ..., 722 722 722]
 [728 728 728 ..., 722 722 722]
 [726 726 726 ..., 722 722 722]
 ..., 
 [724 724 724 ..., 724 724 724]
 [724 724 724 ..., 724 724 724]
 [724 724 724 ..., 724 724 724]]
(2048, 2048)


[[730 730 730 ..., 722 722 722]
 [728 728 728 ..., 722 722 722]
 [726 726 726 ..., 722 722 722]
 ..., 
 [724 724 724 ..., 724 724 724]
 [724 724 724 ..., 724 724 724]
 [724 724 724 ..., 724 724 724]]
(2048, 2048)<jupyter_text>Se desplega la imagen con la librería matplotlib. Es posible guardar la imagen resultante usando la función plt.savefig().<jupyter_code>%matplotlib inline
plt.figure()
plt.imshow(image_data1)
plt.colorbar()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.08161626973508161, 'fraction_numerical': 0.08589777896708589, 'mean_word_length': 4.464912280701754, 'pattern_counts': {'":': 0, '<': 24, '<?xml version=': 0, '>': 24, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '6', 'dir': 'jupyter-structured-clean-dedup', 'id': '506387', 'license': 'Apache-2.0', 'n_tokens_mistral': 1538, 'n_tokens_neox': 1320, 'n_words': 473, 'path': 'ManejoArchivosFITS.ipynb', 'repo_name': 'yasser26/HorasAsistente-I2018', 'size': '3750'}