'''
@brief Runs routines that reads in MC "movie" file + moments in fits form.
@author A. Connors
'''
# @file run_sort_imagemovie.py
#
# This script is explicitly for reading in "output.txt" format files
# and writing them out in fits form compatible with
# CHASC imaging software.
#
import pyfits
from numpy import *
from sort_imagemovie import *

infile_list = [('/AstroCode/EMC2/Bayes-Image-Analysis_dvd_060818/do_emc2c1_HlfSquishICSPionBremss539.0.060912_on_Pois539.X.060612.it1000.ms100gamttlcnt_1_.05FixS0.061002a.allmovies.fits',
               '/AstroCode/EMC2/Bayes-Image-Analysis_dvd_060818/do_emc2c1_HlfSquishICSPionBremss539.0.060912_on_Pois539.X.060612.it1000.ms100gamttlcnt_1_.05FixS0.061002a.sort2.fits',
               '/AstroCode/EMC2/Bayes-Image-Analysis_dvd_060818/do_emc2c1_HlfSquishICSPionBremss539.0.060912_on_Pois539.X.060612.it1000.ms100gamttlcnt_1_.05FixS0.061002a.wrongconf.fits',
               '/AstroCode/EMC2/Bayes-Image-Analysis_dvd_060818/do_emc2c1_HlfSquishICSPionBremss539.0.060912_on_Pois539.X.060612.it1000.ms100gamttlcnt_1_.05FixS0.061002a.secondconf2.fits')
               ]
infile_list = [('/AstroCode/EMC2/Bayes-Image-Analysis_dvd_060818/do_emc2c1_PoisDatonPaddedIntTime539.X.060612.it1000.ms100gamttlcnt_1_.05FitS0.060819a.allmovies.fits',
                '/AstroCode/EMC2/Bayes-Image-Analysis_dvd_060818/do_emc2c1_PoisDatonPaddedIntTime539.X.060612.it1000.ms100gamttlcnt_1_.05FitS0.060819a.sort2.fits',
                '/AstroCode/EMC2/Bayes-Image-Analysis_dvd_060818/do_emc2c1_PoisDatonPaddedIntTime539.X.060612.it1000.ms100gamttlcnt_1_.05FitS0.060819a.wrongconf.fits',
                '/AstroCode/EMC2/Bayes-Image-Analysis_dvd_060818/do_emc2c1_PoisDatonPaddedIntTime539.X.060612.it1000.ms100gamttlcnt_1_.05FitS0.060819a.secondconf2.fits')]

infile_list = [('/AstroCode/EMC2/Bayes-Image-Analysis_dvd_060818/do_emc2c1_ModelDataPaddedIntTime539.0.060529_on_Nu3SumPoisDatonPaddedIntTime133.0.070905.it4000.ms100gamttlcnt_1_.05FitS0.070905bcd.chopmovies.fits',
                '/AstroCode/EMC2/Bayes-Image-Analysis_dvd_060818/do_emc2c1_ModelDataPaddedIntTime539.0.060529_on_Nu3SumPoisDatonPaddedIntTime133.0.070905.it4000.ms100gamttlcnt_1_.05FitS0.070905bcd.sort2.fits',
                '/AstroCode/EMC2/Bayes-Image-Analysis_dvd_060818/do_emc2c1_ModelDataPaddedIntTime539.0.060529_on_Nu3SumPoisDatonPaddedIntTime133.0.070905.it4000.ms100gamttlcnt_1_.05FitS0.070905bcd.wrongconf.fits',
                '/AstroCode/EMC2/Bayes-Image-Analysis_dvd_060818/do_emc2c1_ModelDataPaddedIntTime539.0.060529_on_Nu3SumPoisDatonPaddedIntTime133.0.070905.it4000.ms100gamttlcnt_1_.05FitS0.070905bcd.secondconf2.fits')]

infile_list = [('/AstroCode/EMC2/Bayes-Image-Analysis_dvd_060818/do_emc2c1_ModelDataPaddedIntTime539.0.060529_on_PoisDatonPaddedIntTime539.X.060612.it5000.ms100gamttlcnt_1_.05FitS0.All.chopmovies.fits',
                   '/AstroCode/EMC2/Bayes-Image-Analysis_dvd_060818/do_emc2c1_ModelDataPaddedIntTime539.0.060529_on_PoisDatonPaddedIntTime539.X.060612.it5000.ms100gamttlcnt_1_.05FitS0.All.sort2.fits',
                   '/AstroCode/EMC2/Bayes-Image-Analysis_dvd_060818/do_emc2c1_ModelDataPaddedIntTime539.0.060529_on_PoisDatonPaddedIntTime539.X.060612.it5000.ms100gamttlcnt_1_.05FitS0.All.wrongconf.fits',
                  '/AstroCode/EMC2/Bayes-Image-Analysis_dvd_060818/do_emc2c1_ModelDataPaddedIntTime539.0.060529_on_PoisDatonPaddedIntTime539.X.060612.it5000.ms100gamttlcnt_1_.05FitS0.All.secondconf2.fits')]

num_burn_in = 0

for nametuple in infile_list:
    print ' File names:\n',nametuple, '\n'

# "Wrong",or "Overly Simple" Method:
    tst = SortMovieMatrix(nametuple[0],num_burn_in)

    outHDU = pyfits.PrimaryHDU(data=tst.data,header=tst.old_header)
    outHDU.header.add_history('Sorted by Pixel Intensities')
    outHDU.writeto(nametuple[1])
    print 'Sorted Movie Fits file successfully written \n \n'

    tstconfbands = OverlySimpleImageConfBands(outHDU,nametuple[2])

# Now here is the new-fangled way:
    Limits = [.01, .5, .99]
    movieMCImageHDULst = pyfits.open(nametuple[0])
    print movieMCImageHDULst[0].header
    print movieMCImageHDULst[0].data[0][0][0]
    (naxis3,naxis2,naxis1) = movieMCImageHDULst[0].data.shape
    movieMCImageAfterBurninData = movieMCImageHDULst[0].data[num_burn_in:naxis3]
    outHDU = pyfits.PrimaryHDU(data=movieMCImageAfterBurninData,IntensConfidences=Limits)
    tstconfbands = SecondSimpleImageConfBands(outHDU,nametuple[3],IntensConfidences=Limits)

# End!!

    
