From 314640e441c15bf2dd1cfda7404b528557ceb9f7 Mon Sep 17 00:00:00 2001
From: Kelvin Rodriguez <kelvinrr@icloud.com>
Date: Fri, 14 Apr 2017 12:13:09 -0700
Subject: [PATCH] moved the location of tes numpy utils

---
 plio/io/__init__.py          | 405 -----------------------------------
 plio/io/io_tes.py            |   7 +-
 plio/io/tests/test_io_tes.py |   3 +-
 3 files changed, 5 insertions(+), 410 deletions(-)

diff --git a/plio/io/__init__.py b/plio/io/__init__.py
index bb74ab8..e69de29 100644
--- a/plio/io/__init__.py
+++ b/plio/io/__init__.py
@@ -1,405 +0,0 @@
-def tes2numpy(msb_type, num_bytes, nelems=1):
-    """
-    Converts a MSB data type to a numpy datatype
-
-    """
-    valid_bytes = {
-        'MSB_UNSIGNED_INTEGER': [1,2,4,8,16,32,64],
-        'MSB_INTEGER': [1,2,4,8,16,32,64],
-        'IEEE_REAL': [1,2,4,8,16,32,64],
-        'CHARACTER': range(1,128),
-        'MSB_BIT_STRING': range(1,128)
-    }
-
-    msb_bit_string_type = [('byte{}'.format(i), '>u1') for i in range(num_bytes)]
-
-    dtype_map = {
-        'MSB_UNSIGNED_INTEGER': '>u{}'.format(num_bytes),
-        'MSB_INTEGER': '>i{}'.format(num_bytes),
-        'IEEE_REAL': '>f{}'.format(num_bytes),
-        'CHARACTER': 'a{}'.format(num_bytes),
-        'MSB_BIT_STRING': msb_bit_string_type
-    }
-
-    if num_bytes not in valid_bytes[msb_type] and nelems == 1:
-        raise Exception('invalid byte ({}) count for type ({})'.format(num_bytes, msb_type))
-
-    if nelems > 1:
-        # Must be an array
-        return [('elem{}'.format(i), dtype_map[msb_type]) for i in range(nelems)]
-
-
-    return dtype_map[msb_type]
-
-
-tes_dtype_map = {'ATM': [('sclk_time', '>u4'),
-  ('srf_pressure', '>u2'),
-  ('nadir_pt',
-   [('elem0', '>u2'),
-    ('elem1', '>u2'),
-    ('elem2', '>u2'),
-    ('elem3', '>u2'),
-    ('elem4', '>u2'),
-    ('elem5', '>u2'),
-    ('elem6', '>u2'),
-    ('elem7', '>u2'),
-    ('elem8', '>u2'),
-    ('elem9', '>u2'),
-    ('elem10', '>u2'),
-    ('elem11', '>u2'),
-    ('elem12', '>u2'),
-    ('elem13', '>u2'),
-    ('elem14', '>u2'),
-    ('elem15', '>u2'),
-    ('elem16', '>u2'),
-    ('elem17', '>u2'),
-    ('elem18', '>u2'),
-    ('elem19', '>u2'),
-    ('elem20', '>u2'),
-    ('elem21', '>u2'),
-    ('elem22', '>u2'),
-    ('elem23', '>u2'),
-    ('elem24', '>u2'),
-    ('elem25', '>u2'),
-    ('elem26', '>u2'),
-    ('elem27', '>u2'),
-    ('elem28', '>u2'),
-    ('elem29', '>u2'),
-    ('elem30', '>u2'),
-    ('elem31', '>u2'),
-    ('elem32', '>u2'),
-    ('elem33', '>u2'),
-    ('elem34', '>u2'),
-    ('elem35', '>u2'),
-    ('elem36', '>u2'),
-    ('elem37', '>u2')]),
-  ('co2_cont_temp', '>u2'),
-  ('srf_temp_est', '>u2'),
-  ('rms_pt', '>f4'),
-  ('best_fit_opacities',
-   [('elem0', '>i2'),
-    ('elem1', '>i2'),
-    ('elem2', '>i2'),
-    ('elem3', '>i2'),
-    ('elem4', '>i2'),
-    ('elem5', '>i2'),
-    ('elem6', '>i2'),
-    ('elem7', '>i2'),
-    ('elem8', '>i2')]),
-  ('rms_opacities', '>f4'),
-  ('co2_dw_flux', '>f4'),
-  ('total_dw_flux', '>f4'),
-  ('quality', [('byte0', '>u1'), ('byte1', '>u1')]),
-  ('srf_radiance', '>i4'),
-  ('version_id', 'a4')],
- 'BOL': [('sclk_time', '>u4'),
-  ('detector', '>u1'),
-  ('tic_count', '>u1'),
-  ('vbol', '>i2'),
-  ('tbol', '>i2'),
-  ('cal_vbol', '>f4'),
-  ('lambert_alb', '>f4'),
-  ('ti_bol', '>f4'),
-  ('brightness_temp_bol', '>u2'),
-  ('vbol_version_id', 'a2'),
-  ('tbol_version_id', 'a2'),
-  ('quality', [('byte0', '>u1'), ('byte1', '>u1')])],
- 'GEO': [('sclk_time', '>u4'),
-  ('detector', '>u1'),
-  ('longitude', '>u2'),
-  ('latitude', '>i2'),
-  ('phase', '>u2'),
-  ('emission', '>u2'),
-  ('incidence', '>u2'),
-  ('planetary_phase', '>u2'),
-  ('heliocentric_lon', '>u2'),
-  ('sub_sc_lon', '>u2'),
-  ('sub_sc_lat', '>i2'),
-  ('sub_solar_lon', '>u2'),
-  ('sub_solar_lat', '>i2'),
-  ('target_distance', '>u2'),
-  ('height', '>u2'),
-  ('altitude', '>u2'),
-  ('local_time', '>u2'),
-  ('solar_distance', '>u2'),
-  ('angular_semidiameter', '>u2'),
-  ('version_id', 'a4')],
- 'IFG': [('sclk_time', '>u4'), ('detector', '>u1'), ('ifgm', '>i4')],
- 'OBS': [('sclk_time', '>u4'),
-  ('orbit', '>u2'),
-  ('ock', '>u2'),
-  ('ick', '>u4'),
-  ('tic', '>u1'),
-  ('pnt_angle', '>i2'),
-  ('pnt_imc', '>u1'),
-  ('pnt_view', 'a1'),
-  ('scan_len', 'a1'),
-  ('pckt_type', 'a1'),
-  ('schedule_type', 'a1'),
-  ('spc_gain', 'a1'),
-  ('vbol_gain', 'a1'),
-  ('tbol_gain', 'a1'),
-  ('comp_pp', '>u1'),
-  ('det_mask', '>u1'),
-  ('class',
-   [('byte0', '>u1'), ('byte1', '>u1'), ('byte2', '>u1'), ('byte3', '>u1')]),
-  ('quality',
-   [('byte0', '>u1'), ('byte1', '>u1'), ('byte2', '>u1'), ('byte3', '>u1')]),
-  ('temps',
-   [('elem0', '>u2'), ('elem1', '>u2'), ('elem2', '>u2'), ('elem3', '>u2')]),
-  ('ffti', '>u1')],
- 'POS': [('sclk_time', '>u4'),
-  ('et', '>f8'),
-  ('pos', [('elem0', '>f4'), ('elem1', '>f4'), ('elem2', '>f4')]),
-  ('sun', [('elem0', '>f4'), ('elem1', '>f4'), ('elem2', '>f4')]),
-  ('quat',
-   [('elem0', '>f4'), ('elem1', '>f4'), ('elem2', '>f4'), ('elem3', '>f4')]),
-  ('id', [('elem0', 'a1'), ('elem1', 'a1')])],
- 'RAD': [('sclk_time', '>u4'),
-  ('detector', '>u1'),
-  ('spectral_mask', '>u1'),
-  ('cmode', '>u2'),
-  ('raw_rad', '>i4'),
-  ('cal_rad', '>i4'),
-  ('tdet', '>u2'),
-  ('target_temp', '>u2'),
-  ('ti_spc', '>f4'),
-  ('version_id', 'a4'),
-  ('quality',
-   [('byte0', '>u1'), ('byte1', '>u1'), ('byte2', '>u1'), ('byte3', '>u1')])],
- 'TLM': [('sclk_time', '>u4'),
-  ('aux_temps',
-   [('elem0', '>u2'),
-    ('elem1', '>u2'),
-    ('elem2', '>u2'),
-    ('elem3', '>u2'),
-    ('elem4', '>u2'),
-    ('elem5', '>u2'),
-    ('elem6', '>u2'),
-    ('elem7', '>u2'),
-    ('elem8', '>u2'),
-    ('elem9', '>u2'),
-    ('elem10', '>u2'),
-    ('elem11', '>u2')]),
-  ('ifgm_max',
-   [('elem0', '>i2'),
-    ('elem1', '>i2'),
-    ('elem2', '>i2'),
-    ('elem3', '>i2'),
-    ('elem4', '>i2'),
-    ('elem5', '>i2')]),
-  ('ifgm_min',
-   [('elem0', '>i2'),
-    ('elem1', '>i2'),
-    ('elem2', '>i2'),
-    ('elem3', '>i2'),
-    ('elem4', '>i2'),
-    ('elem5', '>i2')]),
-  ('dsp_log',
-   [('elem0', '>u2'),
-    ('elem1', '>u2'),
-    ('elem2', '>u2'),
-    ('elem3', '>u2'),
-    ('elem4', '>u2'),
-    ('elem5', '>u2')]),
-  ('V1', '>i1'),
-  ('V2', '>i1'),
-  ('V3', '>i1'),
-  ('V4', '>i1'),
-  ('V5', '>i1'),
-  ('V6', '>i1'),
-  ('V7', '>i1'),
-  ('V8', '>i1'),
-  ('V9', '>i1'),
-  ('V10', '>i1'),
-  ('V11', '>i1'),
-  ('V12', '>i1'),
-  ('V13', '>i1'),
-  ('V14', '>i1'),
-  ('V15', '>i1'),
-  ('V16', '>i1'),
-  ('V17', '>i1'),
-  ('V18', '>i1'),
-  ('V19', '>i1'),
-  ('V20', '>i1'),
-  ('neon_lamp', '>u1'),
-  ('neon_gain', 'a1'),
-  ('neon_amp', '>i1'),
-  ('neon_zpd', '>u2'),
-  ('ifgm_zpd',
-   [('elem0', '>u2'),
-    ('elem1', '>u2'),
-    ('elem2', '>u2'),
-    ('elem3', '>u2'),
-    ('elem4', '>u2'),
-    ('elem5', '>u2')]),
-  ('ifgm_end',
-   [('elem0', '>u2'),
-    ('elem1', '>u2'),
-    ('elem2', '>u2'),
-    ('elem3', '>u2'),
-    ('elem4', '>u2'),
-    ('elem5', '>u2')])]}
-
-tes_columns = {'ATM': ['sclk_time',
-  'srf_pressure',
-  'nadir_pt',
-  'co2_cont_temp',
-  'srf_temp_est',
-  'rms_pt',
-  'best_fit_opacities',
-  'rms_opacities',
-  'co2_dw_flux',
-  'total_dw_flux',
-  'quality',
-  'srf_radiance',
-  'version_id'],
- 'BOL': ['sclk_time',
-  'detector',
-  'tic_count',
-  'vbol',
-  'tbol',
-  'cal_vbol',
-  'lambert_alb',
-  'ti_bol',
-  'brightness_temp_bol',
-  'vbol_version_id',
-  'tbol_version_id',
-  'quality'],
- 'GEO': ['sclk_time',
-  'detector',
-  'longitude',
-  'latitude',
-  'phase',
-  'emission',
-  'incidence',
-  'planetary_phase',
-  'heliocentric_lon',
-  'sub_sc_lon',
-  'sub_sc_lat',
-  'sub_solar_lon',
-  'sub_solar_lat',
-  'target_distance',
-  'height',
-  'altitude',
-  'local_time',
-  'solar_distance',
-  'angular_semidiameter',
-  'version_id'],
- 'IFG': ['sclk_time', 'detector', 'ifgm'],
- 'OBS': ['sclk_time',
-  'orbit',
-  'ock',
-  'ick',
-  'tic',
-  'pnt_angle',
-  'pnt_imc',
-  'pnt_view',
-  'scan_len',
-  'pckt_type',
-  'schedule_type',
-  'spc_gain',
-  'vbol_gain',
-  'tbol_gain',
-  'comp_pp',
-  'det_mask',
-  'class',
-  'quality',
-  'temps',
-  'ffti'],
- 'POS': ['sclk_time', 'et', 'pos', 'sun', 'quat', 'id'],
- 'RAD': ['sclk_time',
-  'detector',
-  'spectral_mask',
-  'cmode',
-  'raw_rad',
-  'cal_rad',
-  'tdet',
-  'target_temp',
-  'ti_spc',
-  'version_id',
-  'quality'],
- 'TLM': ['sclk_time',
-  'aux_temps',
-  'ifgm_max',
-  'ifgm_min',
-  'dsp_log',
-  'V1',
-  'V2',
-  'V3',
-  'V4',
-  'V5',
-  'V6',
-  'V7',
-  'V8',
-  'V9',
-  'V10',
-  'V11',
-  'V12',
-  'V13',
-  'V14',
-  'V15',
-  'V16',
-  'V17',
-  'V18',
-  'V19',
-  'V20',
-  'neon_lamp',
-  'neon_gain',
-  'neon_amp',
-  'neon_zpd',
-  'ifgm_zpd',
-  'ifgm_end']}
-
-tes_scaling_factors = {'ATM': {'best_fit_opacities': 0.001,
-  'co2_cont_temp': 0.01,
-  'nadir_pt': 0.01,
-  'srf_pressure': 0.001,
-  'srf_temp_est': 0.01},
- 'BOL': {'brightness_temp_bol': 0.01,
-  'tbol': 0.000152587890625,
-  'vbol': 0.000152587890625},
- 'CMP': {},
- 'GEO': {'angular_semidiameter': 0.01,
-  'emission': 0.01,
-  'height': 0.01,
-  'heliocentric_lon': 0.01,
-  'incidence': 0.01,
-  'latitude': 0.01,
-  'local_time': 0.001,
-  'longitude': 0.01,
-  'phase': 0.01,
-  'planetary_phase': 0.01,
-  'solar_distance': 10000,
-  'sub_sc_lat': 0.01,
-  'sub_sc_lon': 0.01,
-  'sub_solar_lat': 0.01,
-  'sub_solar_lon': 0.01},
- 'IFG': {},
- 'OBS': {'pnt_angle': 0.046875, 'temps': 0.01},
- 'PCT': {},
- 'POS': {},
- 'RAD': {'target_temp': 0.01, 'tdet': 0.01},
- 'TLM': {'V1': 3.90625,
-  'V10': -0.15625,
-  'V11': 0.0976055,
-  'V12': -0.0985813,
-  'V13': 0.976562,
-  'V14': 0.0648437,
-  'V15': 0.045727,
-  'V16': 0.0480992,
-  'V17': 0.0478277,
-  'V18': 0.0488039,
-  'V19': 0.141966,
-  'V2': 1.95312,
-  'V20': -0.149688,
-  'V3': 0.278906,
-  'V4': 0.278906,
-  'V5': 4.45312,
-  'V6': 0.652344,
-  'V7': 0.119457,
-  'V8': -0.103067,
-  'V9': 0.15576,
-  'aux_temps': 0.01,
-  'ifgm_max': 0.000152587890625,
-  'ifgm_min': 0.000152587890625}}
diff --git a/plio/io/io_tes.py b/plio/io/io_tes.py
index e7a77b8..66a6cd1 100644
--- a/plio/io/io_tes.py
+++ b/plio/io/io_tes.py
@@ -8,10 +8,9 @@ import json
 
 from plio.io.io_json import read_json
 
-from plio.io import tes_dtype_map
-from plio.io import tes_columns
-from plio.io import tes_scaling_factors
-from plio.io import tes2numpy
+from plio.utils._tes2numpy import tes_dtype_map
+from plio.utils._tes2numpy import tes_columns
+from plio.utils._tes2numpy import tes_scaling_factors
 
 class Tes(object):
     """
diff --git a/plio/io/tests/test_io_tes.py b/plio/io/tests/test_io_tes.py
index 2f6f21b..7fa5d8d 100644
--- a/plio/io/tests/test_io_tes.py
+++ b/plio/io/tests/test_io_tes.py
@@ -9,7 +9,8 @@ sys.path.insert(0, os.path.abspath('..'))
 from plio.examples import get_path
 from plio.io import io_tes
 from plio.io.io_gdal import GeoDataset
-from plio.io import tes2numpy
+from plio.utils._tes2numpy import tes2numpy
+
 
 class Test_Tes_IO(unittest.TestCase):
 
-- 
GitLab