4. feladat

Fits fájlok - I.

Adott a data/hf.fits állomány. A tanult módon olvasd be a pythonba, majd végezd el a következő feladatokat:

  • Listázd ki a fájlban levő HDU-kat.
  • Válaszd ki a 'BAT_IMAGE_2' nevő blokkot
  • A kiválasztott blokk fejlécéből olvasd ki a következő változók értékét: "E_MIN", "E_MAX", "EXPOSURE", "TSTART", TSTOP", "DATE-OBS"
  • Add meg, hogy a kiválaszott adattömb, hanyadik energiabinnek felel meg, az "EBOUNDS" hdu adatai alapján.
  • Ábrázold (imshow) a kiválaszott adatsort égi kordinátarendszerben a következő paraméterekkel: cmap="jet", origin='lower', vmin=-0.001, vmax=0.001

Megoldás

Elöször betöltjük a szükséges csomagokat.

In [1]:
import astropy.io.fits as fits
import astropy.wcs as wcs
%pylab inline
Populating the interactive namespace from numpy and matplotlib

Majd betöltjük a fájlt, és kiiratjuk a HDU-kat

In [2]:
hf = fits.open("../data/hf.fits")
hf.info()
Filename: ../data/hf.fits
No.    Name         Type      Cards   Dimensions   Format
  0  BAT_IMAGE_1  PrimaryHDU     254   (1760, 954)   float32   
  1  BAT_IMAGE_2  ImageHDU       253   (1760, 954)   float32   
  2  EBOUNDS     BinTableHDU    155   1R x 3C   [I, E, E]   
  3  STDGTI      BinTableHDU     72   1R x 2C   [D, D]   

Mivel a BAT_IMAGE_2 blokk, a 1-es számú HDU, ezt kiválsztjuk, és kiiratjuk a változóit.

In [3]:
bi2 = hf[1]
print("E_MIN = {}\n".format(bi2.header.get("E_MIN")) +
      "E_MAX = {}\n".format(bi2.header.get("E_MAX")) +
      "EXPOSURE = {}\n".format(bi2.header.get("E_EXPOSURE")) +
      "TSTART = {}\n".format(bi2.header.get("TSTART")) +
      "TSTOP = {}\n".format(bi2.header.get("TSTOP")) +
      "DATE-OBS = {}".format(bi2.header.get("DATE-OBS")))
E_MIN = 14.0
E_MAX = 194.9
EXPOSURE = None
TSTART = 221640605.0
TSTOP = 221640783.0
DATE-OBS = 2008-01-10T06:45:04

Az EBOUNDS tömb adatai:

In [4]:
hf[2].data.tolist()
Out[4]:
[(0, 14.0, 194.89999389648438)]

És végül ábrázoljuk a tárolt képet:

In [5]:
image=bi2.data
kord=wcs.WCS(bi2.header)
subplot(111,projection=kord) 
plt.imshow(image, cmap="jet", origin='lower', vmin=-0.001, vmax=0.001)
plt.xlabel('RA')
plt.ylabel('Dec')
plt.title("Cím, mert muszály", size=18, y=1.05)
WARNING: FITSFixedWarning: RADECSYS= 'FK5' / default 
the RADECSYS keyword is deprecated, use RADESYSa. [astropy.wcs.wcs]
Out[5]:
<matplotlib.text.Text at 0x7f2f94e1ff28>