Commit 8b1f082a83ee7817e4eaeebc1ae74ae3cd1459db

Authored by hitier
1 parent 3b520446
Exists in rhitier-dev and in 1 other branch DEV

Change read_var to return array of numpy type

Showing 2 changed files with 15 additions and 24 deletions   Show diff stats
tests/BackendTests.py
@@ -5,9 +5,10 @@ import unittest @@ -5,9 +5,10 @@ import unittest
5 from datetime import datetime as ddatetime, datetime 5 from datetime import datetime as ddatetime, datetime
6 from pprint import pprint 6 from pprint import pprint
7 7
  8 +import numpy.ma.core
8 from netCDF4 import Dataset 9 from netCDF4 import Dataset
9 10
10 -from web.run import retrieve_amda_netcdf, get_data_for_target, _sta_sto, _read_var 11 +from web.run import retrieve_amda_netcdf, get_data_for_target, _sta_sto, _read_var, default_nc_keys
11 12
12 FILE_DATE_FMT = "%Y-%m-%d %H:%M:%S" 13 FILE_DATE_FMT = "%Y-%m-%d %H:%M:%S"
13 14
@@ -72,21 +73,11 @@ class AmdaTestCase(BaseTestCase): @@ -72,21 +73,11 @@ class AmdaTestCase(BaseTestCase):
72 self.assertIsInstance(s0, datetime) 73 self.assertIsInstance(s0, datetime)
73 self.assertIsInstance(s1, datetime) 74 self.assertIsInstance(s1, datetime)
74 75
75 - def test_read_nc(self): 76 + def test_var_read_nc_float32(self):
76 SCRIPT_PATH = os.path.dirname(__file__) 77 SCRIPT_PATH = os.path.dirname(__file__)
77 PROJECT_DIR = os.path.abspath(os.path.join(SCRIPT_PATH, os.pardir)) 78 PROJECT_DIR = os.path.abspath(os.path.join(SCRIPT_PATH, os.pardir))
78 local_netc_file = os.path.join(PROJECT_DIR,'tests-resources', 'amda-irap-omp-eu-ddservice-base-data-omni-hour-omni202107010-nc') 79 local_netc_file = os.path.join(PROJECT_DIR,'tests-resources', 'amda-irap-omp-eu-ddservice-base-data-omni-hour-omni202107010-nc')
79 cdf_handle = Dataset(local_netc_file, "r", format="NETCDF4") 80 cdf_handle = Dataset(local_netc_file, "r", format="NETCDF4")
80 - default_nc_keys = {  
81 - 'hee': 'HEE',  
82 - 'vtot': 'V',  
83 - 'magn': 'B',  
84 - 'temp': 'T',  
85 - 'dens': 'N',  
86 - 'pdyn': 'P_dyn',  
87 - 'atse': 'Delta_angle',  
88 - }  
89 nc_keys = default_nc_keys.copy() 81 nc_keys = default_nc_keys.copy()
90 data_v = _read_var(cdf_handle, nc_keys, 'vtot') 82 data_v = _read_var(cdf_handle, nc_keys, 'vtot')
91 - pprint(data_v)  
92 - pprint(data_v[0]) 83 + self.assertIsInstance(data_v[0], numpy.float32)
@@ -332,6 +332,16 @@ def datetime_from_list(time_list): @@ -332,6 +332,16 @@ def datetime_from_list(time_list):
332 "%Y%j%H%M%S%f" 332 "%Y%j%H%M%S%f"
333 ) 333 )
334 334
  335 +# Override these using the model configuration in config.yml
  336 +default_nc_keys = {
  337 + 'hee': 'HEE',
  338 + 'vtot': 'V',
  339 + 'magn': 'B',
  340 + 'temp': 'T',
  341 + 'dens': 'N',
  342 + 'pdyn': 'P_dyn',
  343 + 'atse': 'Delta_angle',
  344 +}
335 345
336 def _sta_sto(_cnf, _sta, _sto): 346 def _sta_sto(_cnf, _sta, _sto):
337 if 'started_at' in _cnf: 347 if 'started_at' in _cnf:
@@ -349,7 +359,7 @@ def _sta_sto(_cnf, _sta, _sto): @@ -349,7 +359,7 @@ def _sta_sto(_cnf, _sta, _sto):
349 359
350 def _read_var(_nc, _keys, _key, mandatory=False): 360 def _read_var(_nc, _keys, _key, mandatory=False):
351 try: 361 try:
352 - return _nc.variables[_keys[_key]] 362 + return _nc.variables[_keys[_key]][:]
353 except KeyError: 363 except KeyError:
354 pass 364 pass
355 if mandatory: 365 if mandatory:
@@ -673,16 +683,6 @@ def get_data_for_target(target_config, input_slug, @@ -673,16 +683,6 @@ def get_data_for_target(target_config, input_slug,
673 # abort(500, "Invalid orbit configuration for '%s' : %s" 683 # abort(500, "Invalid orbit configuration for '%s' : %s"
674 # % (target_config['slug'], str(e))) 684 # % (target_config['slug'], str(e)))
675 685
676 - # Override these using the model configuration in config.yml  
677 - default_nc_keys = {  
678 - 'hee': 'HEE',  
679 - 'vtot': 'V',  
680 - 'magn': 'B',  
681 - 'temp': 'T',  
682 - 'dens': 'N',  
683 - 'pdyn': 'P_dyn',  
684 - 'atse': 'Delta_angle',  
685 - }  
686 686
687 precision = "%Y-%m-%dT%H" # model and orbits times are only equal-ish 687 precision = "%Y-%m-%dT%H" # model and orbits times are only equal-ish
688 orbit_data = {} # keys are datetime as str, values arrays of XY 688 orbit_data = {} # keys are datetime as str, values arrays of XY