# -*- coding: utf-8 -*-
"""
Created on Fri Sep 11 16:22:41 2015

@author: kervella
"""
import pyfits as pyfits
import numpy as np

class Darkdata:

    def __init__(self, filename):
        # open fits file
        self.filename = filename
        gravi_dark=pyfits.open(filename, mode='readonly')

        # Main FITS header
        self.header = gravi_dark[0].header
        
        for hdu in gravi_dark :
            if hdu.name=='IMAGING_DATA_SC' :
                h = hdu.header
                self.ncol_sc= h['NAXIS1']
                self.ncol_sc= h['NAXIS2']
            if hdu.name=='IMAGING_DATA_FT' :
                h = hdu.header
                self.nregion_ft= h['TFIELDS']-1
                self.nwave_ft= 5

        # Image of the dark of the SC detector
        
        self.darkimage_sc = gravi_dark['IMAGING_DATA_SC'].data.squeeze() # squeeze to remove the spurious dimension
        self.dark_exptime_sc = gravi_dark['IMAGING_DATA_SC'].header['EXPTIME']

        for hdu in gravi_dark :
            if hdu.name=='IMAGING_ERR_SC' :
                self.darkerror_sc = np.sqrt(gravi_dark['IMAGING_ERR_SC'].data.squeeze())

        darktable_ft = np.zeros([self.nregion_ft,self.nwave_ft],dtype='d')
        dark_ft = gravi_dark['IMAGING_DATA_FT'].data
        for output in range(1,self.nregion_ft+1):
            darktable_ft[output-1,:] = dark_ft.field('DATA'+str(output))[0].reshape(1,self.nwave_ft)
        self.darktable_ft = darktable_ft

        for hdu in gravi_dark : # the ERR tables contain the variance
            if hdu.name=='IMAGING_ERR_FT' :
                darkerror_ft = np.zeros([self.nregion_ft,self.nwave_ft],dtype='d')
                dark_ft = gravi_dark['IMAGING_ERR_FT'].data
                for output in range(1,self.nregion_ft+1):
                    darkerror_ft[output-1,:] = np.sqrt(np.abs(dark_ft.field('DATA'+str(output))[0].reshape(1,self.nwave_ft)))
                self.darkerror_ft = darkerror_ft