Newer
Older
import numpy as np
import h5py
from util.util import get_grid_values_all
def acspo_validate(oper_file, cspp_file):
h5f_oper = h5py.File(oper_file, 'r')
h5f_cspp = h5py.File(cspp_file, 'r')
lon_cspp = get_grid_values_all(h5f_cspp, 'lon')
lat_cspp = get_grid_values_all(h5f_cspp, 'lat')
print('cspp shape: ', lat_cspp.shape)
c_idx = lat_cspp.shape[1] // 2
cntr_lon_cspp = lon_cspp[:, c_idx]
cntr_lat_cspp = lat_cspp[:, c_idx]
sst_cspp = get_grid_values_all(h5f_cspp, 'sea_surface_temperature')[0, ]
l2p_flags_cspp = get_grid_values_all(h5f_cspp, 'l2p_flags')[0, ]
lon_oper = get_grid_values_all(h5f_oper, 'lon')
lat_oper = get_grid_values_all(h5f_oper, 'lat')
cntr_lon_oper = lon_oper[:, c_idx]
cntr_lat_oper = lat_oper[:, c_idx]
print('oper shape: ', lat_oper.shape)
sst_oper = get_grid_values_all(h5f_oper, 'sea_surface_temperature')[0, ]
l2p_flags_oper = get_grid_values_all(h5f_oper, 'l2p_flags')[0, ]
# generate a ndarray of boolean
cspp_clear = (l2p_flags_cspp & (1 << 15)) != 0
oper_clear = (l2p_flags_oper & (1 << 15)) != 0
idxs_lat = np.isin(cntr_lat_oper, cntr_lat_cspp, assume_unique=True)
idxs_lon = np.isin(cntr_lon_oper, cntr_lon_cspp, assume_unique=True)
start_idx_oper = -1
stop_idx_oper = -1
start_idx_cspp = -1
stop_idx_cspp = -1
for k in range(len(cntr_lat_oper)):
c_a = np.isclose(cntr_lat_oper[k], cntr_lat_cspp)
if np.size(np.nonzero(c_a)[0]) == 1:
if start_idx_oper == -1:
start_idx_oper = k
start_idx_cspp = np.nonzero(c_a)[0][0]
else:
stop_idx_oper = k
stop_idx_cspp = np.nonzero(c_a)[0][0]
print(start_idx_oper, stop_idx_oper)
print(start_idx_cspp, stop_idx_cspp)