From dc4327a072df584813a22dd4235379cbe1248e99 Mon Sep 17 00:00:00 2001
From: tomrink <rink@ssec.wisc.edu>
Date: Thu, 7 Apr 2022 12:30:57 -0500
Subject: [PATCH] snapshot...

---
 modules/aeolus/aeolus_amv.py | 28 ++++++++++++++++++++--------
 1 file changed, 20 insertions(+), 8 deletions(-)

diff --git a/modules/aeolus/aeolus_amv.py b/modules/aeolus/aeolus_amv.py
index 77aa92fb..6b2ed638 100644
--- a/modules/aeolus/aeolus_amv.py
+++ b/modules/aeolus/aeolus_amv.py
@@ -4,9 +4,9 @@ import glob
 import numpy as np
 import xarray as xr
 from netCDF4 import Dataset
-from aeolus.geos_nav import GEOSNavigation, get_navigation
+from aeolus.geos_nav import get_navigation
 from aeolus.datasource import get_datasource, CLAVRx_CALIPSO, CLAVRx
-from util.util import haversine_np, LatLonTuple, GenericException
+from util.util import haversine_np, LatLonTuple, add_time_range_to_filename
 from amv.intercompare import best_fit, bin_data_by, get_press_bin_ranges, spd_dir_from_uv, uv_from_spd_dir, \
     direction_difference, run_best_fit_gfs
 import math
@@ -14,7 +14,7 @@ from metpy.units import units
 from util.gfs_reader import get_vert_profile_s
 from amv.intercompare import get_raob_dict_cdf
 from util.line_plot import do_plot
-import h5py
+import pickle
 
 
 amv_file_duration = 60  # minutes
@@ -247,7 +247,7 @@ def create_file2(filename, raob_to_amv_dct, raob_dct, amv_files):
     rootgrp.close()
 
 
-def run_best_fit_driver(amv_dir, source, raob_path, gfs_path, product_dir, product):
+def run_best_fit_driver(output_path, amv_dir, source, raob_path, gfs_path, product_dir, product):
     amv_ds = get_datasource(amv_dir, source)
     gfs_files = get_datasource(gfs_path, 'GFS')
     raob_ds = get_datasource(raob_path, 'RAOB')
@@ -263,6 +263,8 @@ def run_best_fit_driver(amv_dir, source, raob_path, gfs_path, product_dir, produ
     bfs_gfs_list = []
     prd_list = []
 
+    ts_first = None
+
     for k, raob_filename in enumerate(raob_files):
         raob_dct = get_raob_dict_cdf(raob_filename)
         keys = list(raob_dct.keys())
@@ -270,6 +272,8 @@ def run_best_fit_driver(amv_dir, source, raob_path, gfs_path, product_dir, produ
         m_d, amv_filename = match_amvs_to_raobs(raob_dct, ts, amv_ds)
         if m_d is None:
             continue
+        if ts_first is None:
+            ts_first = ts
 
         gfs_file = gfs_files.get_file(ts)[0]
         if gfs_file is None:
@@ -307,13 +311,14 @@ def run_best_fit_driver(amv_dir, source, raob_path, gfs_path, product_dir, produ
             if prd_dct is None:
                 continue
 
-        # TODO: write output file here
-        filename = None
-        create_bestfit_file('test_match.nc', m_d, raob_dct, gfs_at_raob_dct, bf_dct, prd_dct, amv_ds.get_parameters(), raob_filename, amv_filename)
+        outfile = output_path+'amv_bestfit.nc'
+        outfile = add_time_range_to_filename(outfile, ts, None)
+        create_bestfit_file(outfile, m_d, raob_dct, gfs_at_raob_dct, bf_dct, prd_dct, amv_ds.get_parameters(), raob_filename, amv_filename)
 
-        # Skip this and below if writing an output file.
         out_list.append((bf_dct, prd_dct))
 
+    ts_last = ts
+
     for tup in out_list:
         ab_dct = tup[0]
         pr_dct = tup[1]
@@ -341,6 +346,13 @@ def run_best_fit_driver(amv_dir, source, raob_path, gfs_path, product_dir, produ
         prd = np.concatenate(prd_list)
         tup = (amvs, bfs, prd, bfs_gfs, rbm)
 
+    outfile = output_path + 'amv_bestfit.pkl'
+    outfile = add_time_range_to_filename(outfile, ts_first, ts_last)
+
+    f = open(outfile, 'wb')
+    pickle.dump(tup, f)
+    f.close()
+
     return tup
 
 
-- 
GitLab