From b6440006f28c2b7cfb7d591899bf36569f5fd421 Mon Sep 17 00:00:00 2001
From: tomrink <rink@ssec.wisc.edu>
Date: Sat, 31 Oct 2020 13:26:03 -0500
Subject: [PATCH] snapshot...

---
 modules/aeolus/aeolus_amv.py | 50 ++++++++++++++++++++++++++++++++++--
 1 file changed, 48 insertions(+), 2 deletions(-)

diff --git a/modules/aeolus/aeolus_amv.py b/modules/aeolus/aeolus_amv.py
index c3c6c264..327d5eeb 100644
--- a/modules/aeolus/aeolus_amv.py
+++ b/modules/aeolus/aeolus_amv.py
@@ -634,8 +634,8 @@ def subset_by_time(match_file, dt_str_0, dt_str_1, amv_var_names):
 
     amvs = np.zeros((n_times, mx_namvs, nvars))
     profs = np.zeros((n_times, mx_nlevs, npvars))
-    amvs.fill(np.nan)
-    profs.fill(np.nan)
+    amvs.fill(-999.0)
+    profs.fill(-999.0)
 
     accum_prf = prf_idx_start
     accum_amv = amv_idx_start
@@ -671,3 +671,49 @@ def subset_by_time(match_file, dt_str_0, dt_str_1, amv_var_names):
     return prof_da, amvs_da, prof_locs_da
 
 
+def analyze(prof_da, amvs_da, prof_locs_da):
+    # sort amvs by distance to profile
+    dst = amvs_da.sel(num_params='dist_to_prof')
+    s_i = np.argsort(dst, axis=1)
+    s_i = s_i.values
+    for k in range(amvs_da.shape[0]):
+        amvs_da[k] = amvs_da[k, s_i[k]]
+
+    # sort profiles by level highest to lowest
+    top = prof_da.sel(num_params='layer_top')
+    s_i = np.argsort(top, axis=1)
+    s_i = s_i.values
+    for k in range(prof_da.shape[0]):
+        prof_da[k] = prof_da[k, s_i[k, ::-1]]
+
+    one_lyr = prof_locs_da.sel(space='num_levels') == 1
+    dst = amvs_da.sel(num_params='dist_to_prof')
+    close = np.logical_and(dst > 0.0, dst < 5.0)
+
+    # compare for one cloud layer profile
+
+    one_lyr_profs = prof_da[one_lyr]
+    one_lyr_amvs = amvs_da[one_lyr]
+
+    hgt_vld = one_lyr_amvs.sel(num_params='H_3D') > 0
+    hgt_vld = hgt_vld.values
+    has_vld = hgt_vld.sum(1) > 0
+
+    one_lyr_amvs = one_lyr_amvs[has_vld]
+    one_lyr_profs = one_lyr_profs[has_vld]
+
+    # compare profile highest cloud layer top to closest within 5km
+    dst = one_lyr_amvs.sel(num_params='dist_to_prof')
+    close = (np.logical_and(dst > 0.0, dst < 2.0)).values
+    close = close.sum(1) > 0
+
+    one_lyr_amvs = one_lyr_amvs[close]
+    one_lyr_profs = one_lyr_profs[close]
+
+    for k in range(one_lyr_profs.shape[0]):
+        dst = one_lyr_amvs[k, :, 2]
+        b = np.logical_and(dst > 0.0, dst < 2.0)
+        diffs = one_lyr_amvs[k, b, 0] - one_lyr_profs[k, 0, 1]
+        print(diffs.values, one_lyr_amvs[k, b, 2].values)
+
+    return one_lyr_profs, one_lyr_amvs
-- 
GitLab