#!/usr/bin/env python
# encoding: utf-8
"""
configuration file for CSPP ATMS SDR

export A='truth/GATMO_npp_d20111108_t2111516_e2119513_b00163_c20111109031951217277_noaa_ops.h5'
export ASLICE='0 12'
export B='work/GATMO_npp_d20111108_t2111516_e2112233_b00163_c20111117005333460964_ssec_dev.h5'
export BSLICE='12 24'
COLLECTION=GATMO glance -d -p report -c glance_atms_sdr_cfg.py reportGen $A $B

A='truth/SATMS_npp_d20111108_t2111516_e2119513_b00163_c20111109031951217643_noaa_ops.h5'
B='work/SATMS_npp_d20111108_t2111516_e2112233_b00163_c20111117005333406835_ssec_dev.h5'
COLLECTION=SATMS glance -d -p report -c glance_atms_sdr_cfg.py reportGen $A $B

"""

import os
import glance.filters as filters

# general settings to control how reports are created
settings = {}
settings['useThreadsToControlMemory'] = True
settings['shouldIncludeImages'] = True
#settings['useSharedRangeForOriginal'] = True
settings['doFork'] = False

# info on the latitude and longitude variables that will be used
lat_lon_info = {}
lat_lon_info['lon_lat_epsilon'] = 0.0001

truthslice = lambda data: data[:12]
def abslice(data, env_name):
    start,end = [int(x) for x in os.environ[env_name].split()]
    return data[start:end]

aslice = lambda data: abslice(data, 'ASLICE')
bslice = lambda data: abslice(data, 'BSLICE')

# per variable defaults
defaultValues = {'data_filter_function_a': aslice, 'data_filter_function_b': bslice}

def varmint(path):
    variable_name = path.split('/')[-1]
    return variable_name, dict( variable_name = path )

h5GATMO = [
    "All_Data/ATMS-SDR-GEO_All/BeamLatitude",
    "All_Data/ATMS-SDR-GEO_All/BeamLongitude",
    "All_Data/ATMS-SDR-GEO_All/Height",
    "All_Data/ATMS-SDR-GEO_All/Latitude",
    "All_Data/ATMS-SDR-GEO_All/Longitude",
    "All_Data/ATMS-SDR-GEO_All/MidTime",
    "All_Data/ATMS-SDR-GEO_All/QF1_ATMSSDRGEO",
    "All_Data/ATMS-SDR-GEO_All/SCAttitude",
    "All_Data/ATMS-SDR-GEO_All/SCPosition",
    "All_Data/ATMS-SDR-GEO_All/SCVelocity",
    "All_Data/ATMS-SDR-GEO_All/SatelliteAzimuthAngle",
    "All_Data/ATMS-SDR-GEO_All/SatelliteRange",
    "All_Data/ATMS-SDR-GEO_All/SatelliteZenithAngle",
    "All_Data/ATMS-SDR-GEO_All/SolarAzimuthAngle",
    "All_Data/ATMS-SDR-GEO_All/SolarZenithAngle",
    "All_Data/ATMS-SDR-GEO_All/StartTime"
    ]


h5SATMS = [ 
    'All_Data/ATMS-SDR_All/BeamTime',
    'All_Data/ATMS-SDR_All/BrightnessTemperature',
    'All_Data/ATMS-SDR_All/BrightnessTemperatureFactors',
    'All_Data/ATMS-SDR_All/GainCalibration',
    'All_Data/ATMS-SDR_All/InstrumentMode',
    'All_Data/ATMS-SDR_All/NEdTCold',
    'All_Data/ATMS-SDR_All/NEdTWarm',
    'All_Data/ATMS-SDR_All/QF10_GRAN_HEALTHSTATUS',
    'All_Data/ATMS-SDR_All/QF11_GRAN_QUADRATICCORRECTION',
    'All_Data/ATMS-SDR_All/QF12_SCAN_KAVPRTCONVERR',
    'All_Data/ATMS-SDR_All/QF13_SCAN_WGPRTCONVERR',
    'All_Data/ATMS-SDR_All/QF14_SCAN_SHELFPRTCONVERR',
    'All_Data/ATMS-SDR_All/QF15_SCAN_KAVPRTTEMPLIMIT',
    'All_Data/ATMS-SDR_All/QF16_SCAN_WGPRTTEMPLIMIT',
    'All_Data/ATMS-SDR_All/QF17_SCAN_KAVPRTTEMPCONSISTENCY',
    'All_Data/ATMS-SDR_All/QF18_SCAN_WGPRTTEMPCONSISTENCY',
    'All_Data/ATMS-SDR_All/QF19_SCAN_ATMSSDR',
    'All_Data/ATMS-SDR_All/QF1_GRAN_HEALTHSTATUS',
    'All_Data/ATMS-SDR_All/QF20_ATMSSDR',
    'All_Data/ATMS-SDR_All/QF21_ATMSSDR',
    'All_Data/ATMS-SDR_All/QF22_ATMSSDR',
    'All_Data/ATMS-SDR_All/QF2_GRAN_HEALTHSTATUS',
    'All_Data/ATMS-SDR_All/QF3_GRAN_HEALTHSTATUS',
    'All_Data/ATMS-SDR_All/QF4_GRAN_HEALTHSTATUS',
    'All_Data/ATMS-SDR_All/QF5_GRAN_HEALTHSTATUS',
    'All_Data/ATMS-SDR_All/QF6_GRAN_HEALTHSTATUS',
    'All_Data/ATMS-SDR_All/QF7_GRAN_HEALTHSTATUS',
    'All_Data/ATMS-SDR_All/QF8_GRAN_HEALTHSTATUS',
    'All_Data/ATMS-SDR_All/QF9_GRAN_HEALTHSTATUS' 
    ]

h5SCRIS = """All_Data/CrIS-SDR_All/DS_SpectralStability
All_Data/CrIS-SDR_All/DS_Symmetry
All_Data/CrIS-SDR_All/DS_WindowSize
All_Data/CrIS-SDR_All/ES_ImaginaryLW
All_Data/CrIS-SDR_All/ES_ImaginaryMW
All_Data/CrIS-SDR_All/ES_ImaginarySW
All_Data/CrIS-SDR_All/ES_NEdNLW
All_Data/CrIS-SDR_All/ES_NEdNMW
All_Data/CrIS-SDR_All/ES_NEdNSW
All_Data/CrIS-SDR_All/ES_RDRImpulseNoise
All_Data/CrIS-SDR_All/ES_RealLW
All_Data/CrIS-SDR_All/ES_RealMW
All_Data/CrIS-SDR_All/ES_RealSW
All_Data/CrIS-SDR_All/ES_ZPDFringeCount
All_Data/CrIS-SDR_All/ES_ZPDMagnitude
All_Data/CrIS-SDR_All/ICT_SpectralStability
All_Data/CrIS-SDR_All/ICT_TemperatureConsistency
All_Data/CrIS-SDR_All/ICT_TemperatureStability
All_Data/CrIS-SDR_All/ICT_WindowSize
All_Data/CrIS-SDR_All/MeasuredLaserWavelength
All_Data/CrIS-SDR_All/MonitoredLaserWavelength
All_Data/CrIS-SDR_All/NumberOfValidPRTTemps
All_Data/CrIS-SDR_All/QF1_SCAN_CRISSDR
All_Data/CrIS-SDR_All/QF2_CRISSDR
All_Data/CrIS-SDR_All/QF3_CRISSDR
All_Data/CrIS-SDR_All/QF4_CRISSDR
All_Data/CrIS-SDR_All/ResamplingLaserWavelength
All_Data/CrIS-SDR_All/SDRFringeCount""".split('\n')

h5GCRSO = """All_Data/CrIS-SDR-GEO_All
All_Data/CrIS-SDR-GEO_All/FORTime
All_Data/CrIS-SDR-GEO_All/Height
All_Data/CrIS-SDR-GEO_All/Latitude
All_Data/CrIS-SDR-GEO_All/Longitude
All_Data/CrIS-SDR-GEO_All/MidTime
All_Data/CrIS-SDR-GEO_All/PadByte1
All_Data/CrIS-SDR-GEO_All/QF1_CRISSDRGEO
All_Data/CrIS-SDR-GEO_All/SCAttitude
All_Data/CrIS-SDR-GEO_All/SCPosition
All_Data/CrIS-SDR-GEO_All/SCVelocity
All_Data/CrIS-SDR-GEO_All/SatelliteAzimuthAngle
All_Data/CrIS-SDR-GEO_All/SatelliteRange
All_Data/CrIS-SDR-GEO_All/SatelliteZenithAngle
All_Data/CrIS-SDR-GEO_All/SolarAzimuthAngle
All_Data/CrIS-SDR-GEO_All/SolarZenithAngle
All_Data/CrIS-SDR-GEO_All/StartTime""".split('\n')

COLL = 'h5%s' % os.environ.get('COLLECTION', None)
if COLL is not None:
    listOfVariables = globals()[COLL]
else:
    listOfVariables = os.environ.get('VARIABLES').split()

setOfVariables = dict( varmint(path) for path in listOfVariables )