# -*- coding: utf-8 -*-
from functools import lru_cache
import copy
# Dictionary of Commonly Used FITS Keywords
#
# This data dictionary contains FITS keywords that have been widely used
# within the astronomical community. It is recommended that these
# keywords only be used as defined here.
#
# Resource: http://heasarc.gsfc.nasa.gov/docs/fcg/common_dict.html
#
FITS_keywords_HEASARC = {
# -- HIFI, see HCSS-18735',
'BAND': 'Band',
# -- HERSCHEL-HSC-DOC-0662 Herschel Pointing Product Specification',
'RADESYS': 'raDecSys',
'AIRMASS': 'airMass',
'APERTURE': 'aperture',
'CHECKSUM': 'checksum',
'CHECKVER': 'checksumVersion',
'CONFIGUR': 'softwareConfiguration',
'CDELT1': 'cdelt1',
'CDELT2': 'cdelt2',
'CDELT3': 'cdelt3',
'CDELT4': 'cdelt4',
'CROTA1': 'crota1',
'CROTA2': 'crota2',
'CROTA3': 'crota3',
'CROTA4': 'crota4',
'CRPIX1': 'crpix1',
'CRPIX2': 'crpix2',
'CRPIX3': 'crpix3',
'CRPIX4': 'crpix4',
'CRVAL1': 'crval1',
'CRVAL2': 'crval2',
'CRVAL3': 'crval3',
'CRVAL4': 'crval4',
'CTYPE1': 'ctype1',
'CTYPE2': 'ctype2',
'CTYPE3': 'ctype3',
'CTYPE4': 'ctype4',
'DATAMODE': 'preProcessorDataMode',
'DATASUM': 'checksumData',
'DATE-END': 'endDate',
'DEC': 'declination',
'DEC_NOM': 'declinationNominal',
'DEC_OBJ': 'declinationObserved',
'DEC_PNT': 'declinationPointing',
'DEC_SCX': 'declinationSpacecraftX',
'DEC_SCY': 'declinationSpacecraftY',
'DEC_SCZ': 'declinationSpacecraftZ',
'DETNAM': 'detectorName',
'ELAPTIME': 'observationDuration',
'EXPOSURE': 'exposureTime',
'EXPTIME': 'exposureTime',
'FILENAME': 'fileName',
'FILETYPE': 'fileType',
'FILTER': 'filter',
# -- FILTERn': '',
'GRATING': 'grating',
# -- GRATINGn': '',
# -- GRPIDn': '',
# -- GRPLCn': '',
# -- GRPNAME': '',
# -- HDUCLASS': '',
# -- HDUCLASn': '',
# -- HDUDOC': '',
# -- HDULEVEL': '',
# -- HDUNAME': '',
# -- HDUVER': '',
# -- HDUVERS': '',
# -- HIERARCH': '',
# -- INHERIT': '',
'LATITUDE': 'geographicLatitude',
'LIVETIME': 'correctedExposureTime',
'MOONANGL': 'moonObservationAngle',
# -- NEXTEND': '',
'OBJNAME': 'objectIauName',
'OBS_ID': 'observationId',
'OBS_MODE': 'observationInstrumentMode',
'ONTIME': 'observationIntegrationTime',
'ORIENTAT': 'positionAngleAxisY',
'PA_PNT': 'positionAnglePointing',
'PROGRAM': 'program', # softwareTaskName',
'RA': 'rightAscension',
'RA_NOM': 'rightAscensionNominal',
'RA_OBJ': 'rightAscensionObserved',
'RA_PNT': 'rightAscensionPointing',
'RA_SCX': 'rightAscensionSpacecraftX',
'RA_SCY': 'rightAscensionSpacecraftY',
'RA_SCZ': 'rightAscensionSpacecraftZ',
'ROOTNAME': 'fileRootName',
'SATURATE': 'dataSaturationValue',
'SUNANGLE': 'sunObservationAngle',
# -- TDBINn': '',
# -- TDMAXn': '',
# -- TDMINn': '',
'TELAPSE': 'duration',
'TIME-END': 'endTime',
'TIME-OBS': 'startTime',
'TITLE': 'title',
# -- TLMAXn': '',
# -- TLMINn': '',
# -- TSORTKEY': '',
# -- WAVELN': '',
'WAVELNTH': 'wavelnth',
'WAVEUNIT': 'waveunit',
}
# FITS keywords that are part of the FITS Standard definition:
# Definition of the Flexible Image Transport System (FITS)
# Version 4.0 (13 August 2018): Latest language-edited version
# July 22, 2016
# http://archive.stsci.edu/fits/fits_standard/
#
FITS_keywords_Standard = {
'AUTHOR': 'author',
'CREATOR': 'creator',
'DATE': 'creationDate',
'DATE-AVG': 'averageDate',
'DATE-BEG': 'startDate',
'DATE-END': 'endDate',
'DATE-OBS': 'startDate',
'EQUINOX': 'equinox',
'INSTRUME': 'instrument',
'OBJECT': 'object',
'OBSERVER': 'observer',
'REFERENC': 'reference',
'TELESCOP': 'telescope',
}
# Dictionary of commonly used HCSS keywords that follow a numbering pattern
# e.g. OBSID123': 'obsid123, PROP1': 'proposal1
FITS_keywords_Numbered = {
'OBSID': 'obsid',
'PROP': 'proposal',
'CUNIT': 'cunit',
'CONSNAM': 'constraintName',
'CONSTYP': 'constraintType',
'CONSINF': 'constraintInfo',
'CONS_ST': 'timeConstraintStart',
'CONS_EN': 'timeConstraintEnd',
'YARRAY': 'yArray',
'ZARRAY': 'zArray',
'PROCOI': 'propCoI',
'PERTNAM': 'perturberName',
'PERTGM': 'perturberGM',
'CALTBC': 'calTableComment',
# -- HCSS-19602 Deconvolution task',
'LOF': 'loFreq',
'NBD': 'num_bad_chan_in_scan',
'BSC': 'bad_scan',
'POBS_': 'photObsid',
}
FITS_keywords_2 = {
'APID': 'apid',
'CHANGLOG': 'changelog',
'DEC': 'dec',
'DEC_NOM': 'decNominal',
'DEC_OBJ': 'decObject',
'DELTAPIX': 'deltaPix',
'DESC': 'description',
'DETECTOR': 'arrayName',
'END_WL': 'endWavelength',
'ERROR': 'error',
'EXP_TEXT': 'explanatoryText',
'FINETIME': 'fineTime',
'FORMATV': 'formatVersion',
'OBJTYPE': 'objectType',
'OBS_ID': 'obsid',
'OBS_MODE': 'obsMode',
'OBSSTATE': 'obsState',
'ODNUMBER': 'odNumber',
'OFF_POS': 'offPosFlag',
'ONSRCTIM': 'onSourceTime',
'ONTARF': 'onTargetFlag',
'ORIGIN': 'origin',
}
FITS_KEYWORDS = copy.copy(FITS_keywords_Standard)
FITS_KEYWORDS.update(FITS_keywords_HEASARC)
FITS_KEYWORDS.update(FITS_keywords_Numbered)
FITS_KEYWORDS.update(FITS_keywords_2)
# Gives Parameter name from a FITS keyword
Param_Names = dict((v, k) for k, v in FITS_KEYWORDS.items())
EXTRA_KWDS = None
[docs]@lru_cache(maxsize=256)
def getFitsKw(name, ndigits=-1, extra=None):
""" Returns the FITS keyword for a name.
If `name` ends with a digit, split `name` to a digital part consists if all digits on the right, and a "non-digital part" on the left. Take `ndigits` continuoud digits, counting from right, to form the "numeric-part". The "non-digital part", or the `name` if not endibg with digits, get the pre-translation according to:
1. Look up in the `Param_Names` table (inverse `FITS_KEYWORDS` table, if fails,
2. try the `extra` dictionary if provided. if fails,
3. take key value
If `name` ends with a digit, append the "numeric-part", 0-padded or truncated to `ndigits`, to the first `8 - ndigits` (maximum) of characters from pre-transition, uppercased, to form the result; Iff `ndigits` is -1, it is deactivated.
else take a maximum of 8 characters from pre-transition. uppercased, to form the resukt.
:name: the name of e.g. a parameter.
:ndigits: how many digits (right to left) to take maximum if `name` ends with digits. default -1 (deactivated). Raises `ValueError` if more than 7.
:extra: tuple of `(fits_kw, parameter_name)` tuples to provide more look-up dictionary that override values from the default one.
:returns: FITS keyword.
"""
if ndigits > 7:
raise ValueError(
'Cannot allow %d digits in FITS keywords (max 7).' % ndigits)
lname = len(name)
if extra is None:
extra = EXTRA_KWDS
elif not issubclass(extra.__class__, (tuple)) or\
(extra and not issubclass(extra[0].__class__, tuple)):
raise TypeError(
'"extra" must be a tuple of a seriese (param:fitsKw) tuples.')
#reverse_extradict = dict((v, k) for k, v in extra) if extra else {}
extradict = dict(extra) if extra else {}
non_digital = name.rstrip('0123456789')
lnondigi = len(non_digital)
lnumerics = lname - lnondigi
endswith_digit = lnumerics > 0
if endswith_digit:
# has trailing digits
numerics = name[lnondigi:]
if ndigits != -1:
# if lnumerics > ndigits, take the last ndigits
# else if lnumerics < ndigits, pad (ndigits-lnumerics) '0's to the left of `numerics`
numeric_part = numerics[-ndigits:] if lnumerics > ndigits else numerics if lnumerics == ndigits else '0'*(
ndigits-lnumerics)+numerics
else:
numeric_part = numerics
lnpart = len(numeric_part)
key = non_digital
else:
key = name
if extra and key in extradict:
pre_translation = extradict[key]
else:
pre_translation = Param_Names.get(key, key)
if endswith_digit:
return pre_translation[:8-lnpart].upper() + numeric_part
else:
return pre_translation[:8].upper()
##########################
######## NOT USED ########
##########################
FITS_keywords_HCSS = {
# Dictionary of commonly used HCSS keywords
#
'ACMSMODE': 'acmsMode',
'ACTION': 'action',
'ACTIVSTR': 'activeStrId',
'ANALYST': 'dataAnalyst',
'AOR': 'aorLabel',
'AOT': 'aot',
'APID': 'apid',
'AVERAGIN': 'averaging',
'BAND': 'band',
'BASEMOD': 'baselineModel',
'BASEPAR': 'baselineParams',
'BBCOUNT': 'bbCount',
'BBID': 'bbid',
'BBTNAME': 'bbTypeName',
'BBTYPE': 'bbType',
'BIASVOLT': 'biasVoltage',
'BITPOS': 'bitPos',
'CALFILE': 'calFileId',
'CALFILEV': 'calFileVersion',
'CALVERS': 'calVersion',
'CAMERA': 'camera',
'CAMMODEL': 'cameraModel',
'CD1_1': 'cd1_1',
'CD1_2': 'cd1_2',
'CD1_3': 'cd1_3',
'CD2_1': 'cd2_1',
'CD2_2': 'cd2_2',
'CD2_3': 'cd2_3',
'CD3_1': 'cd3_1',
'CD3_2': 'cd3_2',
'CD3_3': 'cd3_3',
'CHANGLOG': 'changelog',
'CHOPPLAT': 'chopperPlateau',
'CH_STAT': 'status',
'CONVELF': 'constVelFlag',
'CONVFACT': 'conversionFactor',
'CUSMODE': 'cusMode',
'DEC': 'dec',
'DEC_NOM': 'decNominal',
'DEC_OBJ': 'decObject',
'DELTAPIX': 'deltaPix',
'DESC': 'description',
'DETECTOR': 'arrayName',
'END_WL': 'endWavelength',
'ERROR': 'error',
'EXP_TEXT': 'explanatoryText',
'FINETIME': 'fineTime',
'FORMATV': 'formatVersion',
'GYROPQI': 'gyroPropQualIdx',
'INSTMODE': 'instMode',
'INTERPM': 'interpMethod',
'JIGGLEID': 'jiggleId',
'KEY_WAVE': 'keyWavelength',
'LEVEL': 'level',
'MAX_WAVE': 'maxWavelength',
'MIN_WAVE': 'minWavelength',
'MISSIONC': 'missionConfig',
'MODELNAM': 'modelName',
'NAIFID': 'naifId',
'NCHOPCYC': 'numChopCyc',
'NHIFSAA': 'numHifiSaa',
'NJIGGPOS': 'numJigglePos',
'NNODCYC': 'numNodCyc',
'NODCYDEN': 'nodCycleNum',
'NPACSSAA': 'numPacsSaa',
'NRASTCOL': 'numRasterCol',
'NRASTLIN': 'numRasterLines',
'NSCANLIN': 'numScanLines',
'NSPECTRA': 'numSpectra',
'NSPIRESA': 'numSpireSaa',
'OBJTYPE': 'objectType',
'OBS_ID': 'obsid',
'OBS_MODE': 'obsMode',
'OBSSTATE': 'obsState',
'ODNUMBER': 'odNumber',
'OFF_POS': 'offPosFlag',
'ONSRCTIM': 'onSourceTime',
'ONTARF': 'onTargetFlag',
'ORIGIN': 'origin',
'OUTFIELD': 'outOfFieldFlag',
'PC1_1': 'pc1_1',
'PC1_2': 'pc1_2',
'PC1_3': 'pc1_3',
'PC2_1': 'pc2_1',
'PC2_2': 'pc2_2',
'PC2_3': 'pc2_3',
'PC3_1': 'pc3_1',
'PC3_2': 'pc3_2',
'PC3_3': 'pc3_3',
'PCAVEATS': 'proCaveats',
'PIX_ROW': 'pixelRow',
'PIX_STAT': 'status',
'PMRA': 'pmRA',
'PMDEC': 'pmDEC',
'POINTMOD': 'pointingMode',
'POSANGLE': 'posAngle',
'PROCMODE': 'processingMode',
'PRODNOTE': 'productNotes',
'PROPOSAL': 'proposal',
'Q_FLAG': 'qualityFlag',
'RASTCOL': 'rasterColumnNum',
'RASTLINE': 'rasterLineNum',
'RA': 'ra',
'RADESYS': 'raDeSys',
'RA_ERR': 'raErr',
'RA_NOM': 'raNominal',
'RA_OBJ': 'raObject',
'READOUTS': 'readouts',
'REFEREN': 'references',
'REFPIXEL': 'refPixel',
'ROLL': 'roll',
'SAA': 'saa',
'SATURATE': 'saturation',
'SAT_SIGN': 'satValuesSigned',
'SAT_UNSG': 'satValuesUnsigned',
'SCANLINE': 'scanLineNum',
'SED_VER': 'sedVersion',
'SERENDIP': 'serendipityFlag',
'SIAM_ID': 'siamId',
'SKY_RES': 'skyResolution',
'SLEWFLAG': 'slewFlag',
'SLEWTIME': 'slewTime',
'SLICENUM': 'sliceNumber',
'SOURCE': 'source',
'SPEC_NUM': 'specNum',
'SPEC_RES': 'spectralResolution',
'SRC_DETC': 'sourceDetector',
'SRC_SMEC': 'sourceSmec',
'SRCFILE': 'sourceFile',
'START_WL': 'startWavelength',
'STATUS': 'state',
'STR_I_ST': 'strInterlacingStatus',
'STR_Q_ID': 'strQualIdx',
'SUBINST': 'subinstrumentId',
'SUBSYS': 'subsystem',
'TEMPERAT': 'temperature',
'THRESHOL': 'calThreshold',
'TYPE': 'type',
'VARIABLE': 'variability',
'VELDEF': 'velocityDefinition',
'VERSION': 'version',
'VER_NOTE': 'versionNotes',
'VFRAME': 'radialVelocity',
'WAVE_ID': 'wavelengthId',
'WAVEDESC': 'wavedescription',
'WAVELNTH': 'wavelength',
'WCS_REF': 'wcsReference',
'WCS_TYPE': 'wcsType',
'WHEELPOS': 'wheelPos',
'ZERO_OFF': 'zeroPointOffset',
# -- ',
# -- clean FITS TODO move',
# -- HCSS-18608 ',
'CALBLKNO': 'blockNumber',
'LINECENT': 'lWave',
'LINES': 'lines',
'QUERYTME': 'queryTime',
'QURYTMST': 'queryTimeAsString',
'RANGEREP': 'repeatRange',
'RASSTEPL': 'lineStep',
'WAVEDENS': 'density',
# -- HCSS-18735',
'LFREQMAX': 'obsFreqLsbMax',
'LFREQMIN': 'obsFreqLsbMin',
'LOFREQ': 'loFrequency',
'LODOPPAV': 'loFreqAvg',
'UFREQMIN': 'obsFreqUsbMin',
'UFREQMAX': 'obsFreqUsbMax',
# -- HCSS-19017',
'SPECSYS': 'freqFrame',
# -- HCSS-18514 HERSCHEL-HSC-DOC-0816 Herschel Auxiliary Products Specification',
# -- Mission timeline summary product (auxMtls}',
'PSFVER': 'psfVersion',
'POSVER': 'posVersion',
'EPOSVER': 'eposVersion',
# -- Events log product data eventsLogData',
'PKT_TYPE': 'packetType',
'VC': 'virtualChannel',
# -- Observation request data ObsRequestData',
'OBSREQID': 'obsRequestId',
'OBREQVER': 'obsRequestVersion',
'TARGET': 'targetName',
'TARGTYPE': 'targetType',
'SUB_INST': 'subinstrument',
'CUS_MODE': 'observingMode',
'TIME_EST': 'timeEstimate',
'OVERHEAD': 'overhead',
'CHOP_ANG': 'chopperAngle',
'CHOPAVO1': 'chopperAvoidAngle1',
'CHOPAVO2': 'chopperAvoidAngle2',
'MAPAVOI1': 'mapAvoidAngle1',
'MAPAVOI2': 'mapAvoidAngle2',
'TSLEWMIN': 'timeSlewMin',
'TIH': 'timeInitialHold',
'TFH': 'timeFinalHold',
'APER_ID': 'apertureId',
'Y_OFFSET': 'yOffset',
'Z_OFFSET': 'zOffset',
'FIX_FRAM': 'fixedFrame',
'PATT': 'pattAngle',
'TP': 'timePointing',
'D1': 'patternD1',
'D2': 'patternD2',
'K_OFF': 'kOff',
'TOP': 'timeOffPointing',
'RA_OFF': 'raOff',
'DEC_OFF': 'decOff',
'SCANRATE': 'scanRate',
'NUM_NODS': 'numberNods',
'CHOPTHRO': 'chopperThrow',
'PATTNOD': 'pattNodAngle',
'TPA': 'timePointingA',
'TPB': 'timePointingB',
'TLOADMIN': 'timeLoadMin',
'NLOAD': 'numLoad',
'THOLD': 'timeHold',
'NHOLD': 'numHold',
'NRPEAT': 'numRepeat',
'TREPMIN': 'timeRepeatMin',
'NCYCLES': 'numCyckes',
'XRPEAT': 'xRepeat',
'PATTX': 'pattAngleX',
'NUMLINEX': 'numLinesX',
'D1X': 'patternD1X',
'D2X': 'patternD2X',
'NHOLDX': 'numHoldX',
'START_B': 'startAtb',
# -- Proposal data ProposalData',
'PROPNUID': 'proposalNumId',
'PROPVER': 'propVersion',
'PROPCAT': 'propCategory',
'PROPSCAT': 'propScienceCategory',
'PROPTITL': 'propTitle',
'PROP_PI': 'propPI',
'PROPCOMM': 'proposerComment',
'REQTIME': 'requestedTime',
'TIMPRIO1': 'timeAllocPriority1',
'TIMPRIO2': 'timeAllocPriority2',
'TECHEVAL': 'technicalEvaluation',
'TECEVALC': 'technicalEvalComment',
# -- Monitoring Data from CCUA MonitorCCUA (and Monitoring Data from CCUB MonitorCCUB}',
'RAW_SPID': 'rawPacketSpid',
# -- SSO Horizons Ephemerides',
'SSO_NAME': 'ssoName',
'SSONAMSR': 'ssoNameSource',
'CEN_NAM': 'centerBodyName',
'CENSINAM': 'centerSiteName',
'CENGLONG': 'centerGeodeticLong',
'CENGLAT': 'centerGeodeticLat',
'CENGALT': 'centerGeodeticAlt',
'CENCLONG': 'centerCylindricLong',
'CENCXY': 'centerCylindricXY',
'CENCZ': 'centerCylindricZ',
'CENRADII': 'centerRadii',
'PERNASRC': 'perturberNameSource',
'OUTUNITS': 'outputUnits',
'REFFRAME': 'referenceFrame',
'OUTTYPE': 'outputType',
'COOSYSTM': 'coordinateSystem',
'ELEMDATE': 'elementsDate',
'ELEM_EC': 'elementEC',
'ELEM_QR': 'elementQR',
'ELEM_IN': 'elementIN',
'ELEM_OM': 'elementOM',
'ELEM_W': 'elementW',
'ELEM_TP': 'elementTP',
'ELEM_N': 'elementN',
'ELEM_MA': 'elementMA',
'ELEM_TA': 'elementTA',
'ELEM_A': 'elementA',
'ELEM_AD': 'elementAD',
'ELEM_PER': 'elementPER',
'SSO_RAD': 'ssoRadius',
'SSO_GM': 'ssoGM',
'AST_BV': 'asteroidColourBV',
'AST_H': 'asteroidH',
'AST_G': 'asteroidG',
'ASTROTPE': 'asteroidRotPeriod',
'AST_ALB': 'asteroridAlbedo',
'ASTSTYPE': 'asteroidSpectralType',
'COM_M1': 'cometM1',
'COM_M2': 'cometM2',
'COM_K1': 'cometK1',
'COM_K2': 'cometK2',
'COM_PHCO': 'cometPhaseCoeff',
'COM_A1': 'cometA1',
'COM_A2': 'cometA2',
'COM_A3': 'cometA3',
'COM_DT': 'cometDT',
# -- ACMS TM Product (auxAcmsTM}',
'G1RATBIA': 'Gyr1RateBias',
'G1RATSCA': 'Gyr1RateScale',
'G123OI11': 'Gyr123OrientInv11',
'G123OI12': 'Gyr123OrientInv12',
'G123OI13': 'Gyr123OrientInv13',
'G123OI21': 'Gyr123OrientInv21',
'G123OI22': 'Gyr123OrientInv22',
'G123OI23': 'Gyr123OrientInv23',
'G123OI31': 'Gyr123OrientInv31',
'G123OI32': 'Gyr123OrientInv32',
'G123OI33': 'Gyr123OrientInv33',
'G124OI11': 'Gyr124OrientInv11',
'G124OI12': 'Gyr124OrientInv12',
'G124OI13': 'Gyr124OrientInv13',
'G124OI21': 'Gyr124OrientInv21',
'G124OI22': 'Gyr124OrientInv22',
'G124OI23': 'Gyr124OrientInv23',
'G124OI31': 'Gyr124OrientInv31',
'G124OI32': 'Gyr124OrientInv32',
'G124OI33': 'Gyr124OrientInv33',
'G134OI11': 'Gyr134OrientInv11',
'G134OI12': 'Gyr134OrientInv12',
'G134OI13': 'Gyr134OrientInv13',
'G134OI21': 'Gyr134OrientInv21',
'G134OI22': 'Gyr134OrientInv22',
'G134OI23': 'Gyr134OrientInv23',
'G134OI31': 'Gyr134OrientInv31',
'G134OI32': 'Gyr134OrientInv32',
'G134OI33': 'Gyr134OrientInv33',
'G2RATBIA': 'Gyr2RateBias',
'G2RATSCA': 'Gyr2RateScale',
'G234OI11': 'Gyr234OrientInv11',
'G234OI12': 'Gyr234OrientInv12',
'G234OI13': 'Gyr234OrientInv13',
'G234OI21': 'Gyr234OrientInv21',
'G234OI22': 'Gyr234OrientInv22',
'G234OI23': 'Gyr234OrientInv23',
'G234OI31': 'Gyr234OrientInv31',
'G234OI32': 'Gyr234OrientInv32',
'G234OI33': 'Gyr234OrientInv33',
'G3RATBIA': 'Gyr3RateBias',
'G3RATSCA': 'Gyr3RateScale',
'G4RATBIA': 'Gyr4RateBias',
'G4RATSCA': 'Gyr4RateScale',
'SCMATM11': 'HScmAttMan_11',
'SCMATM12': 'HScmAttMan_12',
'SCMATM13': 'HScmAttMan_13',
'SCMATM14': 'HScmAttMan_14',
'SCMATM21': 'HScmAttMan_21',
'SCMATM22': 'HScmAttMan_22',
'SCMATM23': 'HScmAttMan_23',
'SCMATM24': 'HScmAttMan_24',
'SCMATM31': 'HScmAttMan_31',
'SCMATM32': 'HScmAttMan_32',
'SCMATM33': 'HScmAttMan_33',
'SCMATM34': 'HScmAttMan_34',
'SCMATM41': 'HScmAttMan_41',
'SCMATM42': 'HScmAttMan_42',
'SCMATM43': 'HScmAttMan_43',
'SCMATM44': 'HScmAttMan_44',
'SCMATP11': 'HScmAttPoi_11',
'SCMATP12': 'HScmAttPoi_12',
'SCMATP13': 'HScmAttPoi_13',
'SCMATP14': 'HScmAttPoi_14',
'SCMATP21': 'HScmAttPoi_21',
'SCMATP22': 'HScmAttPoi_22',
'SCMATP23': 'HScmAttPoi_23',
'SCMATP24': 'HScmAttPoi_24',
'SCMATP31': 'HScmAttPoi_31',
'SCMATP32': 'HScmAttPoi_32',
'SCMATP33': 'HScmAttPoi_33',
'SCMATP34': 'HScmAttPoi_34',
'SCMATP41': 'HScmAttPoi_41',
'SCMATP42': 'HScmAttPoi_42',
'SCMATP43': 'HScmAttPoi_43',
'SCMATP44': 'HScmAttPoi_44',
'SCDRMA11': 'HScmDrifMan_11',
'SCDRMA12': 'HScmDrifMan_12',
'SCDRMA13': 'HScmDrifMan_13',
'SCDRMA14': 'HScmDrifMan_14',
'SCDRMA21': 'HScmDrifMan_21',
'SCDRMA22': 'HScmDrifMan_22',
'SCDRMA23': 'HScmDrifMan_23',
'SCDRMA24': 'HScmDrifMan_24',
'SCDRMA31': 'HScmDrifMan_31',
'SCDRMA32': 'HScmDrifMan_32',
'SCDRMA33': 'HScmDrifMan_33',
'SCDRMA34': 'HScmDrifMan_34',
'SCDRPO11': 'HScmDrifPoin_11',
'SCDRPO12': 'HScmDrifPoin_12',
'SCDRPO13': 'HScmDrifPoin_13',
'SCDRPO14': 'HScmDrifPoin_14',
'SCDRPO21': 'HScmDrifPoin_21',
'SCDRPO22': 'HScmDrifPoin_22',
'SCDRPO23': 'HScmDrifPoin_23',
'SCDRPO24': 'HScmDrifPoin_24',
'SCDRPO31': 'HScmDrifPoin_31',
'SCDRPO32': 'HScmDrifPoin_32',
'SCDRPO33': 'HScmDrifPoin_33',
'SCDRPO34': 'HScmDrifPoin_34',
'SCDRC101': 'HScmDriftrck101',
'SCDRC102': 'HScmDriftrck102',
'SCDRC103': 'HScmDriftrck103',
'SCDRC104': 'HScmDriftrck104',
'SCDRC105': 'HScmDriftrck105',
'SCDRC106': 'HScmDriftrck106',
'SCDRC107': 'HScmDriftrck107',
'SCDRC108': 'HScmDriftrck108',
'SCDRC109': 'HScmDriftrck109',
'SCDRC110': 'HScmDriftrck110',
'SCDRC111': 'HScmDriftrck111',
'SCDRC201': 'HScmDriftrck201',
'SCDRC202': 'HScmDriftrck202',
'SCDRC203': 'HScmDriftrck203',
'SCDRC204': 'HScmDriftrck204',
'SCDRC205': 'HScmDriftrck205',
'SCDRC206': 'HScmDriftrck206',
'SCDRC207': 'HScmDriftrck207',
'SCDRC208': 'HScmDriftrck208',
'SCDRC209': 'HScmDriftrck209',
'SCDRC210': 'HScmDriftrck210',
'SCDRC211': 'HScmDriftrck211',
'SCDRC301': 'HScmDriftrck301',
'SCDRC302': 'HScmDriftrck302',
'SCDRC303': 'HScmDriftrck303',
'SCDRC304': 'HScmDriftrck304',
'SCDRC305': 'HScmDriftrck305',
'SCDRC306': 'HScmDriftrck306',
'SCDRC307': 'HScmDriftrck307',
'SCDRC308': 'HScmDriftrck308',
'SCDRC309': 'HScmDriftrck309',
'SCDRC310': 'HScmDriftrck310',
'SCDRC311': 'HScmDriftrck311',
'GYMEADEL': 'HGyrMeasDelay',
'STROUDEL': 'HStrOutputDelay',
# -- Orbit info Common Metadata',
'CENTNAME': 'centerName',
# -- Orbit info TableDataset',
'INTERPDG': 'interpDegree',
# -- Pointing info TableDataset',
'RSLINNUM': 'rasterLineNum',
'RSCOLNUM': 'rasterColumnNum',
'SCLINNUM': 'scanLineNum',
'XSCANNUM': 'crossScanNum',
'CUSPTNUM': 'customMapPointNum',
'NOD_NUM': 'nodCycleNum',
'ABPOSID': 'abPosId',
'POINTID': 'pointModeId',
'SEREN_FL': 'serendipityFlag',
'STR_USE': 'strInUse',
# -- HCSS-20112 Gyro Quality Indicators',
'GYR_QUAL': 'gyroAttQuality',
'PROBTHRE': 'probThreshold',
'GYR_COV': 'gyroAttCoverage',
'PROB_BAD': 'probBad',
'COVTHRE': 'coverageThresh',
'GYR_SUSP': 'gyroAttSuspicious',
# -- SIAM product common metadata',
'ACTSTRID': 'activeStrId',
'NSPIRSAA': 'nSpireSaa',
'NHIFISAA': 'nHifiSaa',
# -- SIAM matrices - Array dataset',
'DATE-VAL': 'validityStart',
# -- Calibrated detectors accumulation data CalAccumData',
'PROTONE1': 'protonE1',
'PROTONE2': 'protonE2',
'PROTONE3': 'protonE3',
'PROTONE4': 'protonE4',
'PROTONE': 'protonE5',
'ELECT_E1': 'electronE1',
'ELECT_E2': 'electronE2',
'ELECT_E3': 'electronE3',
'ELECT_E4': 'electronE4',
# -- HCSS-18984 HIFI',
'LOFRQMIN': 'loFreqMin',
'LOFRQMAX': 'loFreqMax',
'FREQMIN': 'obsFreqMin',
'FREQMAX': 'obsFreqMax',
'LOFRQSTA': 'loFrequencyStart',
'LOFRQEND': 'loFrequencyEnd',
# -- HCSS-19274 HIFI',
'IS-WBSH': 'wbsHscience',
'IS-WBSV': 'wbsVscience',
'IS-HRSH': 'hrsHscience',
'IS-HRSV': 'hrsVscience',
'REDUNDCY': 'redundancy',
'FREQ_THR': 'fsThrow',
'NOISMAXU': 'noiseMaxUsb',
'NOISMINU': 'noiseMinUsb',
'NOISMAXL': 'noiseMaxLsb',
'NOISMINL': 'noiseMinLsb',
'NOISMIND': 'noiseDSBMin',
'NOISMAXD': 'noiseDSBMax',
'NOISMINS': 'noiseSSBMin',
'NOISMAXS': 'noiseSSBMax',
'SAAMEAN': 'solarAspectAngleMean',
'SAARMS': 'solarAspectAngleRms',
# -- HCSS-19347 HIFI',
'BACKEND': 'backend',
# -- HCSS-19350 HIFI',
'NSMINWID': 'noiseMinWidth',
'NSMAXWID': 'noiseMaxWidth',
'TMBREFFQ': 'tmbReference',
'NSREFFRQ': 'noiseRefFrequency',
'TOTNSEFF': 'totNoiseEfficiency',
'DRFTNSCT': 'driftNoiseContrib',
# -- HCSS-19348',
'ORBITFIL': 'orbitEphemerisSourceFile',
# -- HCSS-19360',
'SYSSRC': 'redshiftFrame',
# -- HCSS-19449',
'MIXER': 'mixer',
'AGEOM': 'aGeom',
# -- HCSS-19358',
'TEMPSCAL': 'temperatureScale',
# -- HCSS-19578',
'ETAA': 'apertureEfficiency',
'ETAL': 'forwardEff',
'ETALCAL': 'forwardEfficiency',
'ETAMB': 'beamEff',
'ETAMBCAL': 'mainBeamEfficiency',
'HPBW': 'hpbw',
# -- HCSS-19682',
'RMSMAXU': 'rmsMaxUsb',
'RMSMINU': 'rmsMinUsb',
'RMSMAXL': 'rmsMaxLsb',
'RMSMINL': 'rmsMinLsb',
'RMSMAXS': 'rmsSSBMax',
'RMSMINS': 'rmsSSBMin',
'RMSMAXD': 'rmsDSBMax',
'RMSMIND': 'rmsDSBMin',
# -- HCSS-19882',
'RMSNATU': 'rmsNativeUsb',
'RMSNATL': 'rmsNativeLsb',
'RMSNATS': 'rmsSSBNative',
'RMSNATD': 'rmsDSBNative',
# -- HCSS-20388 HCSS-20389',
'NSRATIHV': 'rmsNoiseHV',
'NOISRATI': 'rmsNoise',
# -- HCSS-20733',
'WCSNAME': 'wcsName',
# -- HCSS-20497',
'LOTHRDOP': 'LoThrow',
'LO_THR': 'LoThrow_measured',
'MIXCURH': 'MJC_Hor',
'MIXCURV': 'MJC_Ver',
'OBSWPATC': 'OBS-patch',
'OBSWREVI': 'OBS-revision',
'OBSWVERS': 'OBS-version',
# Note that BBNUMBER is in CLASS too',
'BBNUMBER': 'bbnumber',
'CBBTEMP': 'cbbTemp',
'HBBTEMP': 'hbbTemp',
'FREQRES': 'resolution_resampled',
'CRDER1': 'raError',
'CRDER2': 'decError',
'TCRD1': 'longitudeError',
'TCRD2': 'latitudeError',
'LSBGAIN': 'lsbGain',
'LSBGAIN0': 'lsbGain_0',
'LSBGAIN1': 'lsbGain_1',
'LSBGAIN2': 'lsbGain_2',
'LSBGAIN3': 'lsbGain_3',
'USBGAIN': 'usbGain',
'USBGAIN0': 'usbGain_0',
'USBGAIN1': 'usbGain_1',
'USBGAIN2': 'usbGain_2',
'USBGAIN3': 'usbGain_3',
'INTEGTIM': 'integrationTime',
'ISFOLDED': 'isFolded',
'SIDEBAND': 'sideband',
'SUBBAND': 'subband',
'SUBLEN1': 'subbandlength_1',
'SUBLEN2': 'subbandlength_2',
'SUBLEN3': 'subbandlength_3',
'SUBLEN4': 'subbandlength_4',
'SUBSTA1': 'subbandstart_1',
'SUBSTA2': 'subbandstart_2',
'SUBSTA3': 'subbandstart_3',
'SUBSTA4': 'subbandstart_4',
'MEDTSYS': 'tsys_median',
'HSOSSBVX': 'velocity_hso_1',
'HSOSSBVY': 'velocity_hso_2',
'HSOSSBVZ': 'velocity_hso_3',
'POSANGER': 'posAngleError',
# -- Quality flags mapping',
'BADCOORD': 'qflag_BADCOORD_p',
# -- Fri Jan 22 15:31:00 CET 2010',
'ADCLATCH': 'qflag_ADCLATCH_p',
'BSMMVSCN': 'qflag_BSMMVSCN_p',
'CCPOSUNC': 'qflag_CCPOSUNC_p',
'CCPOSUNV': 'qflag_CCPOSUNC_p_v',
'BATHTEMP': 'qflag_BATHTEMP_p',
'BATHTEMV': 'qflag_BATHTEMP_p_v',
'SLWBATHT': 'qflag_SLWBATHT_p',
'SLWBATHV': 'qflag_SLWBATHT_p_v',
'SSWBATHT': 'qflag_SSWBATHT_p',
'SSWBATHV': 'qflag_SSWBATHT_p_v',
'SCALTEMP': 'qflag_SCALTEMP_p',
'SCALTEMV': 'qflag_SCALTEMP_p_v',
'CAL2TEMP': 'qflag_CAL2TEMP_p',
'CAL2TEMV': 'qflag_CAL2TEMP_p_v',
'CAL4TEMP': 'qflag_CAL4TEMP_p',
'CAL4TEMV': 'qflag_CAL4TEMP_p_v',
'TEL1TEMP': 'qflag_TEL1TEMP_p',
'TEL1TEMV': 'qflag_TEL1TEMP_p_v',
'TEL2TEMP': 'qflag_TEL2TEMP_p',
'TEL2TEMV': 'qflag_TEL2TEMP_p_v',
'TEL3TEMP': 'qflag_TEL3TEMP_p',
'TEL3TEMV': 'qflag_TEL3TEMP_p_v',
'DDROPPED': 'qflag_DDROPPED_p',
'DDROPPEV': 'qflag_DDROPPED_p_v',
'TLINESNR': 'qflag_TLINESNR_p',
'TLINESNV': 'qflag_TLINESNR_p_v',
'DFLUXPLW': 'qflag_DFLUXPLW_p',
'DFLUXPLV': 'qflag_DFLUXPLW_p_v',
'DFLUXPMW': 'qflag_DFLUXPMW_p',
'DFLUXPMV': 'qflag_DFLUXPMW_p_v',
'DFLUXPSW': 'qflag_DFLUXPSW_p',
'DFLUXPSV': 'qflag_DFLUXPSW_p_v',
'MPLWFAIL': 'qflag_MPLWFAIL_p',
'MPMWFAIL': 'qflag_MPMWFAIL_p',
'MPSWFAIL': 'qflag_MPSWFAIL_p',
'MPLWMAXI': 'qflag_MPLWMAXI_p',
'MPMWMAXI': 'qflag_MPMWMAXI_p',
'MPSWMAXI': 'qflag_MPSWMAXI_p',
'DLATMWLW': 'qflag_DLATMWLW_p',
'DLATMWLV': 'qflag_DLATMWLW_p_v',
'DLATSWLW': 'qflag_DLATSWLW_p',
'DLATSWLV': 'qflag_DLATSWLW_p_v',
'DLATSWMW': 'qflag_DLATSWMW_p',
'DLATSWMV': 'qflag_DLATSWMW_p_v',
'DLONMWLW': 'qflag_DLONMWLW_p',
'DLONMWLV': 'qflag_DLONMWLW_p_v',
'DLONSWLW': 'qflag_DLONSWLW_p',
'DLONSWLV': 'qflag_DLONSWLW_p_v',
'DLONSWMW': 'qflag_DLONSWMW_p',
'DLONSWMV': 'qflag_DLONSWMW_p_v',
'MFAILPLW': 'qflag_MFAILPLW_p',
'MFAILPLV': 'qflag_MFAILPLW_p_v',
'MFAILPMW': 'qflag_MFAILPMW_p',
'MFAILPMV': 'qflag_MFAILPMW_p_v',
'MFAILPSW': 'qflag_MFAILPSW_p',
'MFAILPSV': 'qflag_MFAILPSW_p_v',
'MISFRING': 'qflag_MISFRING_p',
'MISFRINV': 'qflag_MISFRING_p_v',
'NFITSPLW': 'qflag_NFITSPLW_p',
'NFITSPMW': 'qflag_NFITSPMW_p',
'NFITSPSW': 'qflag_NFITSPSW_p',
'PLWVOLK3': 'qflag_PLWVOLK3_p',
'PLWVOLKV': 'qflag_PLWVOLK3_p_v',
'PMWVOLK3': 'qflag_PMWVOLK3_p',
'PMWVOLKV': 'qflag_PMWVOLK3_p_v',
'PSWVOLK3': 'qflag_PSWVOLK3_p',
'PSWVOLKV': 'qflag_PSWVOLK3_p_v',
'SLWVOLK3': 'qflag_SLWVOLK3_p',
'SLWVOLKV': 'qflag_SLWVOLK3_p_v',
'SSWVOLK3': 'qflag_SSWVOLK3_p',
'SSWVOLKV': 'qflag_SSWVOLK3_p_v',
'BSMCHPSL': 'qflag_BSMCHPSL_p',
'BSMCHPSV': 'qflag_BSMCHPSL_p_v',
'BSMJGGSL': 'qflag_BSMJGGSL_p',
'BSMJGGSV': 'qflag_BSMJGGSL_p_v',
'SLWCLIPN': 'qflag_SLWCLIPN_p',
'SLWCLIPV': 'qflag_SLWCLIPN_p_v',
'SSWCLIPN': 'qflag_SSWCLIPN_p',
'SSWCLIPV': 'qflag_SSWCLIPN_p_v',
'NMISSPOS': 'qflag_NMISSPOS_p',
'NMISSPOV': 'qflag_NMISSPOS_p_v',
'SLWGLITN': 'qflag_SLWGLITN_p',
'SLWGLITV': 'qflag_SLWGLITN_p_v',
'SSWGLITN': 'qflag_SSWGLITN_p',
'SSWGLITV': 'qflag_SSWGLITN_p_v',
'SLWPHASE': 'qflag_SLWPHASE_p',
'SLWPHASV': 'qflag_SLWPHASE_p_v',
'SSWPHASE': 'qflag_SSWPHASE_p',
'SSWPHASV': 'qflag_SSWPHASE_p_v',
'FDIFFPLW': 'qflag_FDIFFPLW_p',
'FDIFFPLV': 'qflag_FDIFFPLW_p_v',
'FDIFFPMW': 'qflag_FDIFFPMW_p',
'FDIFFPMV': 'qflag_FDIFFPMW_p_v',
'FDIFFPSW': 'qflag_FDIFFPSW_p',
'FDIFFPSV': 'qflag_FDIFFPSW_p_v',
'PLWNEGFL': 'qflag_PLWNEGFL_p',
'PMWNEGFL': 'qflag_PMWNEGFL_p',
'PSWNEGFL': 'qflag_PSWNEGFL_p',
'DPOSPLWC': 'qflag_DPOSPLWC_p',
'DPOSPLWV': 'qflag_DPOSPLWC_p_v',
'DPOSPMWC': 'qflag_DPOSPMWC_p',
'DPOSPMWV': 'qflag_DPOSPMWC_p_v',
'DPOSPSWC': 'qflag_DPOSPSWC_p',
'DPOSPSWV': 'qflag_DPOSPSWC_p_v',
'DPOSMWLW': 'qflag_DPOSMWLW_p',
'DPOSMWLV': 'qflag_DPOSMWLW_p_v',
'DPOSSWLW': 'qflag_DPOSSWLW_p',
'DPOSSWLV': 'qflag_DPOSSWLW_p_v',
'DPOSSWMW': 'qflag_DPOSSWMW_p',
'DPOSSWMV': 'qflag_DPOSSWMW_p_v',
'HTHERPLW': 'qflag_HTHERPLW_p',
'HTHERPLV': 'qflag_HTHERPLW_p_v',
'HTHERPMW': 'qflag_HTHERPMW_p',
'HTHERPMV': 'qflag_HTHERPMW_p_v',
'HTHERPSW': 'qflag_HTHERPSW_p',
'HTHERPSV': 'qflag_HTHERPSW_p_v',
'HTHERSLW': 'qflag_HTHERSLW_p',
'HTHERSLV': 'qflag_HTHERSLW_p_v',
'HTHERSSW': 'qflag_HTHERSSW_p',
'HTHERSSV': 'qflag_HTHERSSW_p_v',
'INVTIMES': 'qflag_INVTIMES_p',
'INVTIMEV': 'qflag_INVTIMES_p_v',
'JOUTPLW': 'qflag_JOUTPLW_p',
'JOUTPLV': 'qflag_JOUTPLW_p_v',
'JOUTPMW': 'qflag_JOUTPMW_p',
'JOUTPMV': 'qflag_JOUTPMW_p_v',
'JOUTPSW': 'qflag_JOUTPSW_p',
'JOUTPSV': 'qflag_JOUTPSW_p_v',
'NOUTPLW': 'qflag_NOUTPLW_p',
'NOUTPLV': 'qflag_NOUTPLW_p_v',
'NOUTPMW': 'qflag_NOUTPMW_p',
'NOUTPMV': 'qflag_NOUTPMW_p_v',
'NOUTPSW': 'qflag_NOUTPSW_p',
'NOUTPSV': 'qflag_NOUTPSW_p_v',
'PLWGL1L': 'qflag_PLWGL1L_p',
'PLWGL1V': 'qflag_PLWGL1L_p_v',
'PMWGL1L': 'qflag_PMWGL1L_p',
'PMWGL1V': 'qflag_PMWGL1L_p_v',
'PSWGL1L': 'qflag_PSWGL1L_p',
'PSWGL1V': 'qflag_PSWGL1L_p_v',
'PLWGL2L': 'qflag_PLWGL2L_p',
'PLWGL2V': 'qflag_PLWGL2L_p_v',
'PMWGL2L': 'qflag_PMWGL2L_p',
'PMWGL2V': 'qflag_PMWGL2L_p_v',
'PSWGL2L': 'qflag_PSWGL2L_p',
'PSWGL2V': 'qflag_PSWGL2L_p_v',
'PLWOOCAL': 'qflag_PLWOOCAL_p',
'PLWOOCAV': 'qflag_PLWOOCAL_p_v',
'PMWOOCAL': 'qflag_PMWOOCAL_p',
'PMWOOCAV': 'qflag_PMWOOCAL_p_v',
'PSWOOCAL': 'qflag_PSWOOCAL_p',
'PSWOOCAV': 'qflag_PSWOOCAL_p_v',
'SLWOOCAL': 'qflag_SLWOOCAL_p',
'SLWOOCAV': 'qflag_SLWOOCAL_p_v',
'SSWOOCAL': 'qflag_SSWOOCAL_p',
'SSWOOCAV': 'qflag_SSWOOCAL_p_v',
'SLWRAT1L': 'qflag_SLWRAT1L_p',
'SLWRAT1V': 'qflag_SLWRAT1L_p_v',
'SSWRAT1L': 'qflag_SSWRAT1L_p',
'SSWRAT1V': 'qflag_SSWRAT1L_p_v',
'SLWRAT2L': 'qflag_SLWRAT2L_p',
'SLWRAT2V': 'qflag_SLWRAT2L_p_v',
'SSWRAT2L': 'qflag_SSWRAT2L_p',
'SSWRAT2V': 'qflag_SSWRAT2L_p_v',
'SLWIDENT': 'qflag_SLWIDENT_p',
'SLWIDENV': 'qflag_SLWIDENT_p_v',
'SSWIDENT': 'qflag_SSWIDENT_p',
'SSWIDENV': 'qflag_SSWIDENT_p_v',
'SLWDIFFR': 'qflag_SLWDIFFR_p',
'SLWDIFFV': 'qflag_SLWDIFFR_p_v',
'SSWDIFFR': 'qflag_SSWDIFFR_p',
'SSWDIFFV': 'qflag_SSWDIFFR_p_v',
'SLWOUTLR': 'qflag_SLWOUTLR_p',
'SLWOUTLV': 'qflag_SLWOUTLR_p_v',
'SSWOUTLR': 'qflag_SSWOUTLR_p',
'SSWOUTLV': 'qflag_SSWOUTLR_p_v',
'RATTRUNC': 'qflag_RATTRUNC_p',
'RATTRUNV': 'qflag_RATTRUNC_p_v',
'RATTRPLW': 'qflag_RATTRPLW_p',
'RATTRPLV': 'qflag_RATTRPLW_p_v',
'RATTRPMW': 'qflag_RATTRPMW_p',
'RATTRPMV': 'qflag_RATTRPMW_p_v',
'RATTRPSW': 'qflag_RATTRPSW_p',
'RATTRPSV': 'qflag_RATTRPSW_p_v',
'RATTRSLW': 'qflag_RATTRSLW_p',
'RATTRSLV': 'qflag_RATTRSLW_p_v',
'RATTRSSW': 'qflag_RATTRSSW_p',
'RATTRSSV': 'qflag_RATTRSSW_p_v',
'PHASEWRP': 'qflag_PHASEWRP_p',
'PHASEWRV': 'qflag_PHASEWRP_p_v',
'RETSPLIN': 'qflag_RETSPLIN_p',
'SCANEXTR': 'qflag_SCANEXTR_p',
'SCANEXTV': 'qflag_SCANEXTR_p_v',
'SMECTEMP': 'qflag_SMECTEMP_p',
'SMECTEMV': 'qflag_SMECTEMP_p_v',
'AVGNGPSU': 'qflag_AVGNGPSU_p',
'AVGNGPSV': 'qflag_AVGNGPSU_p_v',
'AVNODPSU': 'qflag_AVNODPSU_p',
'AVNODPSV': 'qflag_AVNODPSU_p_v',
'NODPSU': 'qflag_NODPSU_p',
'NODPSV': 'qflag_NODPSU_p_v',
'AVGSPEED': 'qflag_AVGSPEED_p',
'AVGSPEEV': 'qflag_AVGSPEED_p_v',
'STDSPEED': 'qflag_STDSPEED_p',
'STDSPEEV': 'qflag_STDSPEED_p_v',
'WRBSESLW': 'qflag_WRBSESLW_p',
'WRBSESLV': 'qflag_WRBSESLW_p_v',
'WRBSESSW': 'qflag_WRBSESSW_p',
'WRBSESSV': 'qflag_WRBSESSW_p_v',
'BPSPUBUF': 'qflag_BPSPUBUF_p',
'BPSPUBUV': 'qflag_BPSPUBUF_p_v',
'BPSPUMIS': 'qflag_BPSPUMIS_p',
'BPSPUMIV': 'qflag_BPSPUMIS_p_v',
'BPSPUFAI': 'qflag_BPSPUFAI_p',
'BPSPUFAV': 'qflag_BPSPUFAI_p_v',
'RPSPUBUF': 'qflag_RPSPUBUF_p',
'RPSPUBUV': 'qflag_RPSPUBUF_p_v',
'RPSPUMIS': 'qflag_RPSPUMIS_p',
'RPSPUMIV': 'qflag_RPSPUMIS_p_v',
'RPSPUFAI': 'qflag_RPSPUFAI_p',
'RPSPUFAV': 'qflag_RPSPUFAI_p_v',
'BPSCISAT': 'qflag_BPSCISAT_p',
'BPSCISAV': 'qflag_BPSCISAT_p_v',
'RPSCISAT': 'qflag_RPSCISAT_p',
'RPSCISAV': 'qflag_RPSCISAT_p_v',
'BPCALSAT': 'qflag_BPCALSAT_p',
'BPCALSAV': 'qflag_BPCALSAT_p_v',
'RPCALSAT': 'qflag_RPCALSAT_p',
'RPCALSAV': 'qflag_RPCALSAT_p_v',
'BPSCGLIT': 'qflag_BPSCGLIT_p',
'BPSCGLIV': 'qflag_BPSCGLIT_p_v',
'RPSCGLIT': 'qflag_RPSCGLIT_p',
'RPSCGLIV': 'qflag_RPSCGLIT_p_v',
'BPCAGLIT': 'qflag_BPCAGLIT_p',
'BPCAGLIV': 'qflag_BPCAGLIT_p_v',
'RPCAGLIT': 'qflag_RPCAGLIT_p',
'RPCAGLIV': 'qflag_RPCAGLIT_p_v',
'POINTACC': 'qflag_POINTACC_p',
'POINTACV': 'qflag_POINTACC_p_v',
'POINTSTA': 'qflag_POINTSTA_p',
'POINTSTV': 'qflag_POINTSTA_p_v',
'POINTOFF': 'qflag_POINTOFF_p',
'POINTOFV': 'qflag_POINTOFF_p_v',
'BPSCNUMF': 'qflag_BPSCNUMF_p',
'BPSCNUMV': 'qflag_BPSCNUMF_p_v',
'BPSCRMSF': 'qflag_BPSCRMSF_p',
'BPSCRMSV': 'qflag_BPSCRMSF_p_v',
'BPSCVALF': 'qflag_BPSCVALF_p',
'BPSCVALV': 'qflag_BPSCVALF_p_v',
'BPSCVRMF': 'qflag_BPSCVRMF_p',
'BPSCVRMV': 'qflag_BPSCVRMF_p_v',
'RPSCNUMF': 'qflag_RPSCNUMF_p',
'RPSCNUMV': 'qflag_RPSCNUMF_p_v',
'RPSCRMSF': 'qflag_RPSCRMSF_p',
'RPSCRMSV': 'qflag_RPSCRMSF_p_v',
'RPSCVALF': 'qflag_RPSCVALF_p',
'RPSCVALV': 'qflag_RPSCVALF_p_v',
'RPSCVRMF': 'qflag_RPSCVRMF_p',
'RPSCVRMV': 'qflag_RPSCVRMF_p_v',
'BPCANUMF': 'qflag_BPCANUMF_p',
'BPCANUMV': 'qflag_BPCANUMF_p_v',
'BPCARMSF': 'qflag_BPCARMSF_p',
'BPCARMSV': 'qflag_BPCARMSF_p_v',
'BPCAVALF': 'qflag_BPCAVALF_p',
'BPCAVALV': 'qflag_BPCAVALF_p_v',
'BPCAVRMF': 'qflag_BPCAVRMF_p',
'BPCAVRMV': 'qflag_BPCAVRMF_p_v',
'RPCANUMF': 'qflag_RPCANUMF_p',
'RPCANUMV': 'qflag_RPCANUMF_p_v',
'RPCARMSF': 'qflag_RPCARMSF_p',
'RPCARMSV': 'qflag_RPCARMSF_p_v',
'RPCAVALF': 'qflag_RPCAVALF_p',
'RPCAVALV': 'qflag_RPCAVALF_p_v',
'RPCAVRMF': 'qflag_RPCAVRMF_p',
'RPCAVRMV': 'qflag_RPCAVRMF_p_v',
'BPVALPIX': 'qflag_BPVALPIX_p',
'BPVALPIV': 'qflag_BPVALPIX_p_v',
'RPVALPIX': 'qflag_RPVALPIX_p',
'RPVALPIV': 'qflag_RPVALPIX_p_v',
'BPOBSTRU': 'qflag_BPOBSTRU_p',
'BPOBSTRV': 'qflag_BPOBSTRU_p_v',
'RPOBSTRU': 'qflag_RPOBSTRU_p',
'RPOBSTRV': 'qflag_RPOBSTRU_p_v',
'BPSUBBCK': 'qflag_BPSUBBCK_p',
'BPSUBBCV': 'qflag_BPSUBBCK_p_v',
'RPSUBBCK': 'qflag_RPSUBBCK_p',
'RPSUBBCV': 'qflag_RPSUBBCK_p_v',
'FSPUBLUE': 'qflag_FSPUBLUE_p',
'FSPUBLUV': 'qflag_FSPUBLUE_p_v',
'FSPURED': 'qflag_FSPURED_p',
'FSPUREV': 'qflag_FSPURED_p_v',
'NOQDC': 'qflag_NOQDC_p',
'FASTQDC': 'qflag_FASTQDC_p',
'NOPOWCOR': 'qflag_NOPOWCOR_p',
'FPUMIXC': 'qflag_FPUMIXC_p',
'FPUMIXCV': 'qflag_FPUMIXCV_p',
'FPUMIXV': 'qflag_FPUMIXV_p',
'FPUMIXMC': 'qflag_FPUMIXMC_p',
'FPUMIXMR': 'qflag_FPUMIXMR_p',
'FPUCHOP': 'qflag_FPUCHOP_p',
'FPUDPLX': 'qflag_FPUDPLX_p',
'FPULNA': 'qflag_FPULNA_p',
'FPUTMPH': 'qflag_FPUTMPH_p',
'FPUTMPC': 'qflag_FPUTMPC_p',
'FPUTMPL0': 'qflag_FPUTMPL0_p',
'SPUR': 'qflag_SPUR_p',
'POINTFAL': 'qflag_POINTFAL_p',
'CHCKCOMB': 'qflag_CHCKCOMB_p',
'CHCKZERO': 'qflag_CHCKZERO_p',
'SPIKENUM': 'qflag_SPIKENUM_p',
'SPIKENUV': 'qflag_SPIKENUM_p_v',
'BADPIXEL': 'qflag_BADPIXEL_p',
'BADPIXEV': 'qflag_BADPIXEL_p_v',
'SATPIXEL': 'qflag_SATPIXEL_p',
'SATPIXEV': 'qflag_SATPIXEL_p_v',
'OBSMODE': 'qflag_OBSMODE_i',
'MAXDRIFT': 'qflag_MAXDRIFT_p',
'FREQCHEC': 'qflag_FREQCHEC_p',
'CHOPATT': 'qflag_CHOPATT_p',
'CHOPVAL': 'qflag_CHOPVAL_p',
'LOFPATT': 'qflag_LOFPATT_p',
'LOFVAL': 'qflag_LOFVAL_p',
'LOFVAV': 'qflag_LOFVAL_p_v',
'BUFFPATT': 'qflag_BUFFPATT_p',
'BUFFVAL': 'qflag_BUFFVAL_p',
'BUFFVAV': 'qflag_BUFFVAL_p_v',
'PHASCHEC': 'qflag_PHASCHEC_p',
'HOTCOLD': 'qflag_HOTCOLD_p',
'TSYSFLAG': 'qflag_TSYSFLAG_p',
'INTENCAL': 'qflag_INTENCAL_p',
'NWEIGHTS': 'qflag_NWEIGHTS_p',
'NOSUBST': 'qflag_NOSUBST_p',
'NOBASELN': 'qflag_NOBASELN_p',
'ONOFFSEQ': 'qflag_ONOFFSEQ_p',
'ONOFFLEN': 'qflag_ONOFFLEN_p',
'ONOFFPRO': 'qflag_ONOFFPRO_p',
'NOFFSUBS': 'qflag_NOFFSUBS_p',
'UNALIGHK': 'qflag_UNALIGHK_p',
'UNALIGHV': 'qflag_UNALIGHK_p_v',
'NOCHOPHK': 'qflag_NOCHOPHK_p',
'NOCHOPHV': 'qflag_NOCHOPHK_p_v',
'NOCOMMHK': 'qflag_NOCOMMHK_p',
'NOCOMMHV': 'qflag_NOCOMMHK_p_v',
'NOFREQHK': 'qflag_NOFREQHK_p',
'NOFREQHV': 'qflag_NOFREQHK_p_v',
'NOLOCOFF': 'qflag_NOLOCOFF_p',
'NOLOCOFV': 'qflag_NOLOCOFF_p_v',
'NOLOCOMA': 'qflag_NOLOCOMA_p',
'NOLOCOMV': 'qflag_NOLOCOMA_p_v',
'BBIDCORR': 'qflag_BBIDCORR_p',
'BBIDCORV': 'qflag_BBIDCORR_p_v',
'DFORDER': 'qflag_DFORDER_p',
'LESSDATA': 'qflag_LESSDATA_p',
'MOREDATA': 'qflag_MOREDATA_p',
'RTERROR': 'qflag_RTERROR_p',
'RTERROV': 'qflag_RTERROR_p_v',
'CMDFAIL': 'qflag_CMDFAIL_p',
'CMDFAIV': 'qflag_CMDFAIL_p_v',
'TMLOSSES': 'qflag_TMLOSSES_p',
'MIB': 'qflag_MIB_p',
'EVENT': 'qflag_EVENT_p',
'EXCPTION': 'qflag_EXCPTION_p',
'ALARM': 'qflag_ALARM_p',
'TCERRORS': 'qflag_TCERRORS_p',
'SPOINTIN': 'qflag_SPOINTIN_p',
'POINTING': 'qflag_POINTING_p',
'DEGLITB': 'qflag_BSSCGLIT_p',
'DEGLITBV': 'qflag_BSSCGLIT_p_v',
'DEGLITR': 'qflag_RSSCGLIT_p',
'DEGLITRV': 'qflag_RSSCGLIT_p_v',
'ANOMY70': 'qflag_DMANOG1_p',
'ANOMY70V': 'qflag_DMANOG1_p_v',
'LOWPNTS': 'qflag_SLOWSAMP_p',
'LOWPNTSV': 'qflag_SLOWSAMP_p_v',
'NUMPIXB': 'qflag_BSVALPIX_p',
'NUMPIXBV': 'qflag_BSVALPIX_p_v',
'NUMPIXRB': 'qflag_RSVALPIX_p_v',
'NUMPIXR': 'qflag_RSVALPIX_p',
'SATUR_B': 'qflag_BSSCISAT_p',
'SATUR_BV': 'qflag_BSSCISAT_p_v',
'SATUR_R': 'qflag_RSSCISAT_p',
'SATUR_RV': 'qflag_RSSCISAT_p_v',
# HCSS-20946',
'ANOMLPTG': 'qflag_ANOMLPTG_p',
'BADDATDC': 'qflag_BADDATDC_p',
'BADDATL2': 'qflag_BADDATL2_p',
'BADHCDC': 'qflag_BADHCDC_p',
'CALERR': 'qflag_CALERR_p',
'CHKSINZR': 'qflag_CHKSINZR_p',
'DARKSATR': 'qflag_DARKSATR_p',
'DECONF': 'qflag_DECONF_p',
'FPUDPLXC': 'qflag_FPUDPLXC_p',
'GYRATTSP': 'qflag_GYRATTSP_p',
'HD247194': 'qflag_HD247194_p',
'HEBHAPPL': 'qflag_HEBHAPPL_p',
'HEBVAPPL': 'qflag_HEBVAPPL_p',
'HECRZERO': 'qflag_HECRZERO_p',
'HM025193': 'qflag_HM025193_i',
'HM029191': 'qflag_HM029191_i',
'HM120191': 'qflag_HM120191_i',
'HRSHASIC': 'qflag_HRSHASIC_p',
'HRSVASIC': 'qflag_HRSVASIC_p',
'HSDFAIL': 'qflag_HSDFAIL_p',
'LOTUNING': 'qflag_LOTUNING_p',
'LOUCUR': 'qflag_LOUCUR_p',
'LOUDSB': 'qflag_LOUDSB_p',
'LOUDSB1B': 'qflag_LOUDSB1B_p',
'LRGTHROW': 'qflag_LRGTHROW_p',
'NOFRQCAL': 'qflag_NOFRQCAL_p',
'NOVELOC': 'qflag_NOVELOC_p',
'PLTFRMNG': 'qflag_PLTFRMNG_p',
'RMSHV': 'qflag_RMSHV_p',
'RMSHVVST': 'qflag_RMSHVVST_p',
'RMSNOISE': 'qflag_RMSNOISE_p',
'SCANCNT': 'qflag_SCANCNT_p',
'UNKBB': 'qflag_UNKBB_p',
'WM409565': 'qflag_WM409565_i',
'WM508565': 'qflag_WM508565_i',
'WM608565': 'qflag_WM608565_i',
'WRGFRQSC': 'qflag_WRGFRQSC_i',
'WRONGAVG': 'qflag_WRONGAVG_p',
'ZEROINCF': 'qflag_ZEROINCF_p',
# HCSS-20580, 2015-09-01',
'NRASTER': 'numPoints',
'NLINES': 'numLines',
# HCSS-21199',
'PS3_0': 'ps3_0',
'PS3_1': 'ps3_1',
'PS3_2': 'ps3_2',
# HCSS-21442',
'ETAAH': 'apertureEfficiency_H',
'ETAAV': 'apertureEfficiency_V',
'ETAMBH': 'beamEff_H',
'ETAMBV': 'beamEff_V',
'UPCONVH': 'upConvert_H',
'UPCONVV': 'upConvert_V',
'SKREFCON': 'skyRefContam',
'SKREFCOR': 'skyRefContamCorr',
'ICREATOR': 'iccCreator',
# HCSS-21442',
'REFZEROV': 'zeroVelocityReference',
'VELALGO': 'computeVelocityAlgorithm',
'AREAPIX': 'areaPixels',
'AREAAS': 'areaArcsecs',
'ROWCENT': 'regionParameter_centerRow',
'COLCENT': 'regionParameter_centerCol',
'ROWRAD': 'regionParameter_radiusRow',
'COLRAD': 'regionParameter_radiuscol',
'ROWSTART': 'regionParameter_row1',
'ROWEND': 'regionParameter_row2',
'COLSTART': 'regionParameter_col1',
'COLEND': 'regionParameter_col2',
'CDESC3': 'cdesc3',
'FLIPYX': 'flipxy',
'ATTQUATR': 'attitudeQuaternion',
'CHOP': 'Chopper',
'BB_TYPE': 'bbtype',
'NCHANNEL': 'channels',
'CMDCHOP': 'cmd_chopper',
'PRIMERED': 'prime_redundant',
'LOFMEAS': 'LoFrequency_measured',
'FRQWIDTH': 'frequencyWidth',
'FRQMONIT': 'frequency_monitor',
'LOFTHROW': 'loThrow',
'CHKCOMB': 'checkComb',
'COMBRES': 'resolution',
'RES': 'resolution',
'GAINMETH': 'gainMethod',
'LOADINT': 'loadInterval',
'BEAMUSED': 'beamUsed',
'PIXELSIZ': 'pixelSize',
'MAPSIZE': 'mapSize',
'REFPIX': 'refPixelCoordinates',
'PIXOFFS': 'pixelOffset',
'FLYANGLE': 'flyAngle',
'HPBWUSED': 'hpbwAssumed',
'MAPWIDGR': 'mapWidthGridded',
'MAPHEIGR': 'mapHeightGridded',
'MAPWIDOB': 'mapWidthObserved',
'MAPHEIOB': 'mapHeightObserved',
'HEBCORRV': 'hebCorrVApplied',
'HEBCORRH': 'hebCorrHApplied',
'NDATASET': 'count_ds',
'ERPFLAG': 'erpFlagged',
# HCSS-21520',
'GAINFLAG': 'gain_flag',
'SPURREJC': 'spur_rejection',
'STARTCOL': 'startCol',
'ENDCOL': 'endCol',
'STARTROW': 'startRow',
'ENDROW': 'endRow',
'ASPCTRAT': 'aspectRatio',
'SLITWID': 'slitWidth',
'ROWMIN': 'rowMin',
'ROWMAX': 'rowMax',
'COLMIN': 'colMin',
'COLMAX': 'colMax',
}
# Dictionary of commonly used CLASS keywords
#
FITS_keywords_CLASS = {
'MODELNAM': 'modelName',
'TEMPERAT': 'temperature',
'MAXIS': 'MAXIS',
'MAXIS1': 'MAXIS1',
'MAXIS2': 'MAXIS2',
'MAXIS3': 'MAXIS3',
'MAXIS4': 'MAXIS4',
'CTYPE1': 'CTYPE1',
'CRVAL1': 'CRVAL1',
'CDELT1': 'CDELT1',
'CRPIX1': 'CRPIX1',
'CTYPE2': 'CTYPE2',
'CRVAL2': 'CRVAL2',
'CDELT2': 'CDELT2',
'CRPIX2': 'CRPIX2',
'CTYPE3': 'CTYPE3',
'CRVAL3': 'CRVAL3',
'CDELT3': 'CDELT3',
'CRPIX3': 'CRPIX3',
'CTYPE4': 'CTYPE4',
'CRVAL4': 'CRVAL4',
'CDELT4': 'CDELT4',
'CRPIX4': 'CRPIX4',
'BANDWID': 'BANDWID',
'RESTFREQ': 'RESTFREQ',
'IMAGFREQ': 'IMAGFREQ',
'LOFREQ': 'LOFREQ',
'VELOCITY': 'VELOCITY',
'DELTAV': 'DELTAV',
'BLANK': 'BLANK',
'OBSID': 'OBSID',
'APID': 'APID',
'BBID': 'BBID',
'BBTYPE': 'BBTYPE',
'BBNUMBER': 'BBNUMBER',
'SEQNUMBE': 'SEQNUMBE',
'BEAMEFF': 'BEAMEFF',
'FORWEFF': 'FORWEFF',
'APEREFF': 'APEREFF',
'ETAL': 'ETAL',
'ETAFSS': 'ETAFSS',
'ANTGAIN': 'ANTGAIN',
'BMAJ': 'BMAJ',
'BMIN': 'BMIN',
'BPA': 'BPA',
'GAINIMAG': 'GAINIMAG',
'TAU': 'TAU',
'TAUIMAGE': 'TAUIMAGE',
'TAUZENIT': 'TAUZENIT',
'MH2O': 'MH2O',
'HUMIDITY': 'HUMIDITY',
'DEWPOINT': 'DEWPOINT',
'PRESSURE': 'PRESSURE',
'TOUTSIDE': 'TOUTSIDE',
'WINDSPEE': 'WINDSPEE',
'WINDDIRE': 'WINDDIRE',
'SCAN': 'SCAN',
'SUBSCAN': 'SUBSCAN',
'TSYS': 'TSYS',
'OBSTIME': 'OBSTIME',
'EXPOSURE': 'EXPOSURE',
'DATE-OBS': 'DATE-OBS',
'DATE-RED': 'DATE-RED',
'OBJECT': 'OBJECT',
'LINE': 'LINE',
'MOLECULE': 'MOLECULE',
'TRANSITI': 'TRANSITI',
'TELESCOP': 'TELESCOP',
'NPHASE': 'NPHASE',
'DELTAF1': 'DELTAF1',
'PTIME1': 'PTIME1',
'WEIGHT1': 'WEIGHT1',
'DELTAF2': 'DELTAF2',
'PTIME2': 'PTIME2',
'WEIGHT2': 'WEIGHT2',
'THOT': 'THOT',
'TCOLD': 'TCOLD',
'OBSERVER': 'OBSERVER',
'PROJID': 'PROJID',
'OBSMODE': 'OBSMODE',
'TEMPSCAL': 'TEMPSCAL',
'TCAL': 'TCAL',
'TRX': 'TRX',
'TIMESYS': 'TIMESYS',
'SITELONG': 'SITELONG',
'SITELAT': 'SITELAT',
'SITEELEV': 'SITEELEV',
'DATAMIN': 'DATAMIN',
'DATAMAX': 'DATAMAX'
}