def test_obs_ncobsplatform_hfradars_plot(): # Load platform obs = NcObsPlatform(NCFILE_OBS_HFRADARS, name='hfradars') # Bathymetry bathy = get_bathy() # Plots figs = obs.plot(variables=['locations', 'u'], full3d=False, full2d=True, size=30, bathy=bathy, map_margin=0.05) return figs
def test_obs_ncobsplatform_profiles_plot(): # Load platform obs = NcObsPlatform(NCFILE_OBS_PROFILES, name='profiles') # Bathymetry bathy = get_bathy() # Plots figs = obs.plot(variables=['locations', 'temp'], full3d=True, full2d=True, size=40, bathy=bathy, map_margin=0.05, surf=True, zonal_sections=[47.4], lat_interval_width=0.35) return figs
def test_arm_arm_init(): # Load ensemble ens = Ensemble.from_file(ENS_NCFILE, checkvars=True, logger=LOGGER) # Load observations obs0 = NcObsPlatform(NCFILE_OBS_HFRADARS) obs1 = NcObsPlatform(NCFILE_OBS_PROFILES) obs2 = NcObsPlatform(NCFILE_OBS_SATSST) obsmanager = ObsManager([obs0, obs1, obs2]) # Bathymetry bathy = get_bathy()[::2, ::2] # Init ARM arm = ARM(ens, obsmanager, syncnorms=True, bathy=bathy) # Checks assert_allclose(arm.obsmanager[2].norms + arm.obsmanager[1].norms[:1], arm.ens.norms[arm.ens.varnames.index('temp')]) return arm
def test_obs_obsmanager_init_surf(): # Load and stack surface obs obs_surf0 = NcObsPlatform(NCFILE_OBS_SURF, lon=(-7, -5), varnames=['temp'], norms=0.2, name='surf_west') obs_surf1 = NcObsPlatform(NCFILE_OBS_SURF, lon=(-5, 0), varnames=['temp', 'sal'], norms=[0.2, 0.1], name='surf_east') # Setup manager manager = ObsManager([obs_surf0, obs_surf1]) # Checks stacked = manager.stacked_data assert_allclose(stacked, [1., 2.5, 1.5, 4., 1.5, 4.]) assert_allclose(manager.lons, [-5.8, -5.7, -4.6, -2.8]) assert_allclose(manager.lats, [48.1, 47.5, 47.4, 47.3]) assert manager.varnames == ['temp', 'sal'] model_specs = manager.get_model_specs() assert sorted(model_specs.keys()) == ['depths', 'lat', 'lon', 'varnames'] assert model_specs['varnames'] == ['temp', 'sal'] assert model_specs['depths']['temp'] == ('surf', ) assert_allclose(model_specs['lat'][:2], (47.3, 48.1)) assert_allclose(model_specs['lon'][:2], (-5.8, -2.8)) # Renorm by name manager.set_named_norms(temp=0.1) assert manager.stacked_data[0] == 2 * stacked[0] CACHE['manager_surf'] = manager return manager
def test_obs_ncobsplatform_surf(): # Load and stack obs obs = NcObsPlatform(NCFILE_OBS_SURF, logger=LOGGER, lat=(45, 47.8), norms=[0.2, 0.1]) stacked = obs.stacked_data.copy() assert obs.lons.shape == (3, ) assert obs.ns == 6 assert obs.ndim == 1 assert_allclose(obs.means, [0, 0], atol=1e-7) assert obs.depths == 'surf' assert_allclose(stacked, [2.5, 1.5, 4., 1., 1.5, 4.]) # Named norms notnormed = obs.set_named_norms(temp=0.1) assert obs.norms == [0.1, 0.1] assert_allclose(obs.stacked_data[:3], 2 * stacked[:3]) assert_allclose(obs.stacked_data[3:], stacked[3:]) obs.set_named_norms(temp=0.2) # Interpolate model f = DS(NCFILE_MANGA0, 'mars', level=obs.depths, logger_level='error') temp = f('temp') sal = f('sal') f.close() temp.id += '_surf' sal.id += '_surf' otemp = obs.project_model(temp) osal = obs.project_model(sal) otem_true = [12.97311556, 12.91558515, 10.58179214] assert_allclose(otemp[0], otem_true) # Stack model otemp[:] -= 11.5 osal[:] -= 35.5 stacked_data = obs.restack([otemp, osal]) assert stacked_data.shape == (6, 15) assert_allclose(stacked_data[:3, 0] * obs.norms[0] + 11.5, otem_true) return obs
def test_obs_ncobsplatform_surf_gridded(): # Load and stack obs obs = NcObsPlatform(NCFILE_OBS_HFRADARS) stacked = obs.stacked_data.copy() assert stacked.ndim == 1
def test_obs_ncobsplatform_xylocsa(): # Load platform obs = NcObsPlatform(NCFILE_OBS_PROFILES, name='profiles') # Orig lons_orig = obs.lons.copy() lats_orig = obs.lats.copy() # Init output saout = obs.xylocsa_init_pert_output() assert saout.shape == (4, len(lons_orig)) # Loop on indices for i in obs.xylocsa_get_pert_indices_iter(): # X # - activate obs.xylocsa_activate_pert('+x', i) assert abs(obs.lons - lons_orig).ptp() > 0.0001 # - deactivate obs.xylocsa_deactivate_pert() assert_allclose(obs.lons, lons_orig) # Y # - activate obs.xylocsa_activate_pert('+y', i) assert abs(obs.lats - lats_orig).ptp() > 0.0001 # - deactivate obs.xylocsa_deactivate_pert() assert_allclose(obs.lats, lats_orig) return