# Reader for TEMPOSO2VOLCANO product
  
import h5py
import numpy as np

class read_h5_TEMPOSO2_TRU():
    def __init__(self, infile):
        f = h5py.File(infile,'r')
        self.lat = f['/latitude'][:]
        self.lon = f['/longitude'][:]
        self.latcnr = f['/latitude_bounds'][:]
        self.loncnr = f['/longitude_bounds'][:]
        self.SZA = f['/solar_zenith_angle'][:]
        self.VZA = f['/viewing_zenith_angle'][:]
        self.RMS_fit = f['/RMS_fit'][:]
        self.flag_saturation = f['/flag_saturation'][:]
        self.SO2_TRU = f['/ColumnAmountSO2_TRU'][:]
        f.close()

class read_h5_TEMPOSO2_gridded():
    def __init__(self,infile):
        f = h5py.File(infile,'r')
        self.latcenter = f['/TEMPO_SO2_Gridded/Latitude_Center'][:]
        self.loncenter = f['/TEMPO_SO2_Gridded/Longitude_Center'][:]
        self.latedge = f['/TEMPO_SO2_Gridded/Latitude_Edge'][:]
        self.lonedge = f['/TEMPO_SO2_Gridded/Longitude_Edge'][:]
        self.SCD = f['/TEMPO_SO2_Gridded/SCD'][:]
        self.VCD = f['/TEMPO_SO2_Gridded/VCD'][:]
        f.close()

class read_h5_TEMPOSO2_VCD():
    def __init__(self,infile):
        f = h5py.File(infile,'r')
        self.AMF = f['/AMF'][:]
        self.CRF = f['/CloudRadianceFraction'][:]
        self.ECF = f['/EffectiveCloudFraction'][:]
        self.latcnr = f['/latitude_bounds'][:]
        self.loncnr = f['/longitude_bounds'][:]        
        self.RMS_fit = f['/RMS_fit'][:]
        self.SO2 = f['/SO2'][:]
        self.SO2_SCD = f['/so2_slant_column_density'][:]
        self.SZA = f['/solar_zenith_angle'][:]
        self.VZA = f['/viewing_zenith_angle'][:]
        self.Lat = f['/latitude'][:]
        self.Lon = f['/longitude'][:]
        f.close()

