'''
@brief Reads in fits image files; writes out 1st image in ascii.
@author A. Connors
'''
# @file ez_fits_to_ascii.py
#
# This script is explicitly for reading in fits-format files
# and writing them out in ascii form compatible with
# CHASC imaging software.
#

#from numarray import * ## Changed to numpy Aug 2007
from numpy import *
import pyfits

def EZFitsImageToAscii(InFitsFile,OutTxtFile):
#
#   1/ Here it is
    in_hdulst = pyfits.open(InFitsFile)
    # "Touch" the file before writing it out:
    print 'Reading in  : '+InFitsFile+'\n'
    print in_hdulst[0].header
    print in_hdulst[0].data
    file_out = open(OutTxtFile,mode='w')

    naxis1 = in_hdulst[0].header['NAXIS1']
    naxis2 = in_hdulst[0].header['NAXIS2']
    for i2 in range(naxis2):
        for i1 in range(naxis1):
            file_out.write( str(in_hdulst[0].data[0][i2][i1])+'\n' )
    in_hdulst.close()
    file_out.close()
    print '\n Wrote out: '+OutTxtFile+' \n'
    
def EZSumFitsImage(InFitsFile,il=0):
#
#   1/ Here it is
    in_hdulst = pyfits.open(InFitsFile)
    print in_hdulst[0].header
    print in_hdulst[0].data
    print 'Read in fits file: ', InFitsFile
    
    naxis1 = in_hdulst[0].header['NAXIS1']
    naxis2 = in_hdulst[0].header['NAXIS2']

    in_hdulst.close()

    sumit = 0.
    for i2 in range(naxis2):
        for i1 in range(naxis1):
            sumit = sumit + in_hdulst[0].data[il][i2][i1]

    print 'Sum: ', sumit

def EZRescaleFitsImage(InFitsFile,RescaleFactor,OutFitsFile,il=0):
#
#   1/ Here it is
    in_hdulst = pyfits.open(InFitsFile)
#    print in_hdulst[0].header
    print in_hdulst[0].data
    print 'Read in fits file: ', InFitsFile
    
    naxis1 = in_hdulst[0].header['NAXIS1']
    naxis2 = in_hdulst[0].header['NAXIS2']

    in_hdulst.close()

    dataout = zeros((il+1,naxis2,naxis1),dtype=float)
    for i2 in range(naxis2):
        for i1 in range(naxis1):
            dataout[il][i2][i1] = in_hdulst[0].data[il][i2][i1]*RescaleFactor

#    out_HDU = pyfits.PrimaryHDU(data=dataout,header=in_hdulst[0].header)
    out_HDU = pyfits.PrimaryHDU(data=dataout)
    out_HDU.writeto(OutFitsFile)
