In [1]:
import pyfits as pf
import numpy as np

In [2]:
imname = 'spec.fits'

In [3]:
hdulist = pf.open(imname)

In [4]:
hdulist.info()


Filename: spec.fits
No.    Name         Type      Cards   Dimensions   Format
0    PRIMARY     PrimaryHDU     143   (2542,)      float32   

In [5]:
pridata = hdulist[0].data #flux  -- wavelength is described in the header

In [6]:
pridata


Out[6]:
array([ 0.99421591,  0.99000108,  0.98497832, ...,  0.99758834,
        0.99674183,  0.99806845], dtype=float32)

In [7]:
np.shape(pridata)


Out[7]:
(2542,)

In [8]:
priheader = hdulist[0].header

In [9]:
priheader


Out[9]:
SIMPLE  =                    T / Fits standard                                  
BITPIX  =                  -32 / Bits per pixel                                 
NAXIS   =                    1 / Number of axes                                 
NAXIS1  =                 2542 / Axis length                                    
EXTEND  =                    T / File may contain extensions                    
ORIGIN  = 'NOAO-IRAF FITS Image Kernel July 2003' / FITS file originator        
DATE    = '2015-01-20T15:38:21' / Date FITS file was generated                  
IRAF-TLM= '2015-01-20T15:38:21' / Time of last modification                     
OBJECT  = 'HR5056  '           / Name of the object observed                    
COMMENT   FITS (Flexible Image Transport System) format is defined in 'Astronomy
COMMENT   and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H 
HEAD    = '        '           / Head Model                                     
ACQMODE = 'Single  '           / Acquisition Mode                               
READMODE= 'Image   '           / Readout Mode                                   
IMGRECT = '1, 2048, 2048, 1'   / Image Format                                   
HBIN    = '1       '           / Horizontal Binning                             
VBIN    = '1       '           / Vertical Binning                               
SUBRECT = '1, 2048,2048,1'     / Subimage Format                                
XTYPE   = 'Pixel number'       / Calibration type                               
XUNIT   =                    0 / Calibration units                              
TRIGGER = 'Internal'           / Trigger Mode                                   
CALIB   = '0,1,0,0 '           / Calibration                                    
DLLVER  = '2.93.30006.0'       / Software Version                               
EXPOSURE= '60,00000'           / Total Exposure Time                            
TEMP    = '-81,2   '           / Temperature                                    
READTIME=              1.0E-06 / Pixel readout time                             
OPERATN =                    4 / Type of system                                 
GAIN    = '1.0     '           / Ganho                                          
EMREALGN=                    0 / EM Real Gain                                   
VCLKAMP =                    0 / Vertical Clock Amplitude                       
VSHIFT  = '76,95   '           / Vertical Shift Speed                           
PREAMP  = '4x      '           / Pre Amplifier Gain                             
SERNO   = '13740   '           / Serial Number                                  
UNSTTEMP= '-999    '           / Unstabilized Temperature                       
BLCLAMP =                    F / Baseline Clamp                                 
PRECAN  =                    0 / Prescans                                       
FLIPX   =                    0 / Horizontally Flipped                           
FLIPY   =                    0 / Vertically Flipped                             
CNTCVTMD=                    0 / Count Convert Mode                             
CNTCVT  =                    0 / Count Convert                                  
DTNWLGTH=                 500. / Detection Wavelength                           
SNTVTY  =                   0. / Sensitivity                                    
SPSNFLTR=                    0 / Spurious Noise Filter Mode                     
THRSHLD =                   0. / Threshold                                      
PCNTENLD=                    0 / Photon Counting Enabled                        
NSETHSLD=                    0 / Number of Photon Counting Thresholds           
PTNTHLD1=                   0. / Photon Counting Threshold 1                    
PTNTHLD2=                   0. / Photon Counting Threshold 2                    
PTNTHLD3=                   0. / Photon Counting Threshold 3                    
PTNTHLD4=                   0. / Photon Counting Threshold 4                    
AVGFTRMD=                    0 / Averaging Filter Mode                          
AVGFCTR =                    1 / Averaging factor                               
FRMCNT  =                    1 / Frame Count                                    
USERTXT1= '        '           / User text                                      
USERTXT2= '        '           / User text                                      
USERTXT3= '        '           / User text                                      
USERTXT4= '        '           / User text                                      
FRAME   = '2014-07-16T07:08:20.751' / Start of Frame Exposure                   
ESHTMODE=                    0 / Electronic Shuttering Mode                     
DETECTOR= '        '           / Head Model                                     
EXPTIME = '3000.   '           / Total Exposure Time                            
OUTPTAMP= 'Conventional'       / Output Amplifier                               
CAMGAIN = '4x      '           / Pre Amplifier Gain                             
DATE-OBS= '2014-07-16T07:08:20.751' / Start of Frame Exposure                   
RA      = '01:37:43'           / Alfa                                           
DEC     = '-57:14:12'          / Delta                                          
EPOCH   = '2000.0  '           / Epoca                                          
AIRMASS = '1.313   '           / Massa de Ar                                    
JD      = '2456854.79822'      / Data Juliana                                   
ST      = '23:43:17'           / Tempo Sideral                                  
HA      = '-1:54:53'           / Angulo Horario                                 
IMAGE   = 'aeri_v_0004'        / Nome da imagem                                 
TELESCOP= '1.60m   '           / Telescopio                                     
PLATESCL= '0.18    '           / Escala de Placa ("/pixel)                      
INSTRUME= '        '           / Instrumento                                    
OBSERVER= '        '           / Observador                                     
RDNOISE = '5.9     '           / Ruido de Leitura                               
FILTER  = '        '           / Filtro                                         
WCSDIM  =                    1                                                  
LTM1_1  =                   1.                                                  
WAT0_001= 'system=equispec'                                                     
WAT1_001= 'wtype=linear label=Wavelength units=angstroms'                       
ZEROCOR = 'Jan 18 13:56 Zero level correction image is ../calib/avg_bias'       
FLATCOR = 'Jan 18 13:56 Flat field image is ../calib/norm_flat_v with scale=1.' 
CCDSEC  = '[1:2048,1:2048]'                                                     
CCDMEAN =             1220.445                                                  
CCDMEANT=           1106056572                                                  
CCDPROC = 'Jan 18 13:56 CCD processing done'                                    
CTYPE1  = 'LINEAR  '                                                            
CDELT1  =   0.0393545848091301                                                  
CD1_1   =   0.0393545848091301                                                  
DCLOG1  = 'REFSPEC1 = avg_lamp_v.ms'                                            
APNUM1  = '1 63 13.00 24.02'                                                    
DC-FLAG =                    0                                                  
CRVAL1  =                6513.                                                  
CRPIX1  =                   1.                                                  
NCOMBINE=                   50                                                  
BANDID1 = 'spectrum - background fit, weights variance, clean yes'              
DOPCOR01= '      0. all'                                                        
DOPCOR  = 'Heliocentric system'                                                 
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                

In [10]:
spechdr = pf.getheader(imname)

In [11]:
spechdr


Out[11]:
SIMPLE  =                    T / Fits standard                                  
BITPIX  =                  -32 / Bits per pixel                                 
NAXIS   =                    1 / Number of axes                                 
NAXIS1  =                 2542 / Axis length                                    
EXTEND  =                    T / File may contain extensions                    
ORIGIN  = 'NOAO-IRAF FITS Image Kernel July 2003' / FITS file originator        
DATE    = '2015-01-20T15:38:21' / Date FITS file was generated                  
IRAF-TLM= '2015-01-20T15:38:21' / Time of last modification                     
OBJECT  = 'HR5056  '           / Name of the object observed                    
COMMENT   FITS (Flexible Image Transport System) format is defined in 'Astronomy
COMMENT   and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H 
HEAD    = '        '           / Head Model                                     
ACQMODE = 'Single  '           / Acquisition Mode                               
READMODE= 'Image   '           / Readout Mode                                   
IMGRECT = '1, 2048, 2048, 1'   / Image Format                                   
HBIN    = '1       '           / Horizontal Binning                             
VBIN    = '1       '           / Vertical Binning                               
SUBRECT = '1, 2048,2048,1'     / Subimage Format                                
XTYPE   = 'Pixel number'       / Calibration type                               
XUNIT   =                    0 / Calibration units                              
TRIGGER = 'Internal'           / Trigger Mode                                   
CALIB   = '0,1,0,0 '           / Calibration                                    
DLLVER  = '2.93.30006.0'       / Software Version                               
EXPOSURE= '60,00000'           / Total Exposure Time                            
TEMP    = '-81,2   '           / Temperature                                    
READTIME=              1.0E-06 / Pixel readout time                             
OPERATN =                    4 / Type of system                                 
GAIN    = '1.0     '           / Ganho                                          
EMREALGN=                    0 / EM Real Gain                                   
VCLKAMP =                    0 / Vertical Clock Amplitude                       
VSHIFT  = '76,95   '           / Vertical Shift Speed                           
PREAMP  = '4x      '           / Pre Amplifier Gain                             
SERNO   = '13740   '           / Serial Number                                  
UNSTTEMP= '-999    '           / Unstabilized Temperature                       
BLCLAMP =                    F / Baseline Clamp                                 
PRECAN  =                    0 / Prescans                                       
FLIPX   =                    0 / Horizontally Flipped                           
FLIPY   =                    0 / Vertically Flipped                             
CNTCVTMD=                    0 / Count Convert Mode                             
CNTCVT  =                    0 / Count Convert                                  
DTNWLGTH=                 500. / Detection Wavelength                           
SNTVTY  =                   0. / Sensitivity                                    
SPSNFLTR=                    0 / Spurious Noise Filter Mode                     
THRSHLD =                   0. / Threshold                                      
PCNTENLD=                    0 / Photon Counting Enabled                        
NSETHSLD=                    0 / Number of Photon Counting Thresholds           
PTNTHLD1=                   0. / Photon Counting Threshold 1                    
PTNTHLD2=                   0. / Photon Counting Threshold 2                    
PTNTHLD3=                   0. / Photon Counting Threshold 3                    
PTNTHLD4=                   0. / Photon Counting Threshold 4                    
AVGFTRMD=                    0 / Averaging Filter Mode                          
AVGFCTR =                    1 / Averaging factor                               
FRMCNT  =                    1 / Frame Count                                    
USERTXT1= '        '           / User text                                      
USERTXT2= '        '           / User text                                      
USERTXT3= '        '           / User text                                      
USERTXT4= '        '           / User text                                      
FRAME   = '2014-07-16T07:08:20.751' / Start of Frame Exposure                   
ESHTMODE=                    0 / Electronic Shuttering Mode                     
DETECTOR= '        '           / Head Model                                     
EXPTIME = '3000.   '           / Total Exposure Time                            
OUTPTAMP= 'Conventional'       / Output Amplifier                               
CAMGAIN = '4x      '           / Pre Amplifier Gain                             
DATE-OBS= '2014-07-16T07:08:20.751' / Start of Frame Exposure                   
RA      = '01:37:43'           / Alfa                                           
DEC     = '-57:14:12'          / Delta                                          
EPOCH   = '2000.0  '           / Epoca                                          
AIRMASS = '1.313   '           / Massa de Ar                                    
JD      = '2456854.79822'      / Data Juliana                                   
ST      = '23:43:17'           / Tempo Sideral                                  
HA      = '-1:54:53'           / Angulo Horario                                 
IMAGE   = 'aeri_v_0004'        / Nome da imagem                                 
TELESCOP= '1.60m   '           / Telescopio                                     
PLATESCL= '0.18    '           / Escala de Placa ("/pixel)                      
INSTRUME= '        '           / Instrumento                                    
OBSERVER= '        '           / Observador                                     
RDNOISE = '5.9     '           / Ruido de Leitura                               
FILTER  = '        '           / Filtro                                         
WCSDIM  =                    1                                                  
LTM1_1  =                   1.                                                  
WAT0_001= 'system=equispec'                                                     
WAT1_001= 'wtype=linear label=Wavelength units=angstroms'                       
ZEROCOR = 'Jan 18 13:56 Zero level correction image is ../calib/avg_bias'       
FLATCOR = 'Jan 18 13:56 Flat field image is ../calib/norm_flat_v with scale=1.' 
CCDSEC  = '[1:2048,1:2048]'                                                     
CCDMEAN =             1220.445                                                  
CCDMEANT=           1106056572                                                  
CCDPROC = 'Jan 18 13:56 CCD processing done'                                    
CTYPE1  = 'LINEAR  '                                                            
CDELT1  =   0.0393545848091301                                                  
CD1_1   =   0.0393545848091301                                                  
DCLOG1  = 'REFSPEC1 = avg_lamp_v.ms'                                            
APNUM1  = '1 63 13.00 24.02'                                                    
DC-FLAG =                    0                                                  
CRVAL1  =                6513.                                                  
CRPIX1  =                   1.                                                  
NCOMBINE=                   50                                                  
BANDID1 = 'spectrum - background fit, weights variance, clean yes'              
DOPCOR01= '      0. all'                                                        
DOPCOR  = 'Heliocentric system'                                                 
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                

In [12]:
print (spechdr.cards[:10])


('SIMPLE', True, 'Fits standard')
('BITPIX', -32, 'Bits per pixel')
('NAXIS', 1, 'Number of axes')
('NAXIS1', 2542, 'Axis length')
('EXTEND', True, 'File may contain extensions')
('ORIGIN', 'NOAO-IRAF FITS Image Kernel July 2003', 'FITS file originator')
('DATE', '2015-01-20T15:38:21', 'Date FITS file was generated')
('IRAF-TLM', '2015-01-20T15:38:21', 'Time of last modification')
('OBJECT', 'HR5056', 'Name of the object observed')
('COMMENT', "  FITS (Flexible Image Transport System) format is defined in 'Astronomy", '')

In [13]:
print (spechdr.keys())


['SIMPLE', 'BITPIX', 'NAXIS', 'NAXIS1', 'EXTEND', 'ORIGIN', 'DATE', 'IRAF-TLM', 'OBJECT', 'COMMENT', 'COMMENT', 'HEAD', 'ACQMODE', 'READMODE', 'IMGRECT', 'HBIN', 'VBIN', 'SUBRECT', 'XTYPE', 'XUNIT', 'TRIGGER', 'CALIB', 'DLLVER', 'EXPOSURE', 'TEMP', 'READTIME', 'OPERATN', 'GAIN', 'EMREALGN', 'VCLKAMP', 'VSHIFT', 'PREAMP', 'SERNO', 'UNSTTEMP', 'BLCLAMP', 'PRECAN', 'FLIPX', 'FLIPY', 'CNTCVTMD', 'CNTCVT', 'DTNWLGTH', 'SNTVTY', 'SPSNFLTR', 'THRSHLD', 'PCNTENLD', 'NSETHSLD', 'PTNTHLD1', 'PTNTHLD2', 'PTNTHLD3', 'PTNTHLD4', 'AVGFTRMD', 'AVGFCTR', 'FRMCNT', 'USERTXT1', 'USERTXT2', 'USERTXT3', 'USERTXT4', 'FRAME', 'ESHTMODE', 'DETECTOR', 'EXPTIME', 'OUTPTAMP', 'CAMGAIN', 'DATE-OBS', 'RA', 'DEC', 'EPOCH', 'AIRMASS', 'JD', 'ST', 'HA', 'IMAGE', 'TELESCOP', 'PLATESCL', 'INSTRUME', 'OBSERVER', 'RDNOISE', 'FILTER', 'WCSDIM', 'LTM1_1', 'WAT0_001', 'WAT1_001', 'ZEROCOR', 'FLATCOR', 'CCDSEC', 'CCDMEAN', 'CCDMEANT', 'CCDPROC', 'CTYPE1', 'CDELT1', 'CD1_1', 'DCLOG1', 'APNUM1', 'DC-FLAG', 'CRVAL1', 'CRPIX1', 'NCOMBINE', 'BANDID1', 'DOPCOR01', 'DOPCOR', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']

In [14]:
"CRVAL1" in spechdr.keys()


Out[14]:
True

In [15]:
cdelt1 = spechdr['CDELT1'] #delta for the wavelength -- next value for the wavelength

In [16]:
cdelt1


Out[16]:
0.0393545848091301

In [17]:
crval1 = spechdr['CRVAL1'] #first wavelength, where the spectrum starts

In [18]:
crval1


Out[18]:
6513.0

In [19]:
specdata = pf.getdata(imname)

In [20]:
specdata


Out[20]:
array([ 0.99421591,  0.99000108,  0.98497832, ...,  0.99758834,
        0.99674183,  0.99806845], dtype=float32)

In [21]:
naxis1 = len(specdata) #can be in the header, but may not be

In [22]:
naxis1


Out[22]:
2542

In [23]:
lbarr = np.arange(naxis1)*cdelt1+crval1

In [24]:
import matplotlib.pyplot as plt


/home/mldantas/anaconda2/lib/python2.7/site-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.
  warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')

In [25]:
plt.plot(lbarr, specdata, 'o--', ms=2)


Out[25]:
[<matplotlib.lines.Line2D at 0x7fc072864450>]

In [26]:
plt.show()



In [27]:
n, bins, patches = plt.hist(specdata)

In [28]:
plt.show()



In [29]:
n


Out[29]:
array([    6.,    20.,    37.,   576.,  1676.,    53.,    36.,    36.,
          40.,    62.])

In [30]:
pf.writeto('spec_modified01.fits', specdata, header=spechdr, clobber=True)


/home/mldantas/anaconda2/lib/python2.7/site-packages/pyfits/file.py:372: UserWarning: Overwriting existing file 'spec_modified01.fits'.
  warnings.warn("Overwriting existing file %r." % self.name)

In [31]:
f = pf.open('spec_modified01.fits', mode = 'update')
f.flush()

In [32]:
f.close()

In [33]:
image = 'hdust_rgb.fits'

In [34]:
fits_image = pf.open(image)

In [35]:
data_image = fits_image[0].data

In [36]:
np.shape(data_image)


Out[36]:
(256, 256)

In [53]:
data = pf.getdata(image)

plt.imshow(data)
plt.show()



In [49]:
data = pf.getdata(image)

plt.imshow(data[::-1], extent=[0,10,0,10], cmap='hot')
plt.colorbar()
plt.show()



In [55]:
data = pf.getdata(image)

plt.imshow(data[::-1], extent=[0,10,0,10], cmap='cubehelix')
plt.colorbar()
plt.show()



In [65]:
from PIL import Image
img = Image.open('hdust_rgb.png')
img_ar = np.array(img)
np.shape(img_ar)


Out[65]:
(256, 256, 3)

In [66]:
plt.imshow(img_ar[:,:,0], vmin=0, vmax=255, cmap="gray") #first layer: 'r' (red of rgb)
plt.show()



In [67]:
plt.imshow(img_ar[:,:,1], vmin=0, vmax=255, cmap="gray") #first layer: 'g' (green of rgb)
plt.show()



In [68]:
plt.imshow(img_ar[:,:,2], vmin=0, vmax=255, cmap="gray") #first layer: 'b' (blue of rgb)
plt.show()



In [ ]:


In [ ]: