From 97212be8753519884bea789315e715c16c37bffe Mon Sep 17 00:00:00 2001
From: rink <rink@ssec.wisc.edu>
Date: Wed, 23 Sep 2020 16:45:50 -0500
Subject: [PATCH] use numpy logical funcs to remove inefficient for loop
 counter

---
 modules/util/sss1day_FMB_py3.py | 30 +++++++++---------------------
 1 file changed, 9 insertions(+), 21 deletions(-)

diff --git a/modules/util/sss1day_FMB_py3.py b/modules/util/sss1day_FMB_py3.py
index fcc9fc86..88e21cd3 100644
--- a/modules/util/sss1day_FMB_py3.py
+++ b/modules/util/sss1day_FMB_py3.py
@@ -1,4 +1,5 @@
 import os
+import numpy
 
 # Import CODA definitions
 	# Older dates
@@ -8,7 +9,7 @@ os.putenv('CODA_DEFINITION', '/data/Personal/stevew/AEOLUS/CODA/share/coda/defin
 	# Newer dates
 #os.putenv('CODA_DEFINITION', '/home/huiliu/CODA/share/coda/definitions/AEOLUS-20190611.codadef')
 
-from numpy import vstack, zeros, linspace, where
+from numpy import vstack, zeros, linspace, where, logical_and
 
 import sys
 #   Tell python scripts where to find CODA (next import coda) --------
@@ -161,29 +162,20 @@ for n, filename in enumerate(files):
      min = timestep.strftime('%M')
      sec = timestep.strftime('%S')	#klukens
 
-     totlevs = 0
-     for m in range(nlevm):
-       if rid[i, m] > 0:
-         if mie_err[i, m] < wind_err_thresh:
-          if mie_valid[i, m] > 0.0:
-           totlevs = totlevs + 1
+     totlevs = numpy.sum(logical_and(mie_valid[i, :] > 0, logical_and(rid[i, :] > 0, mie_err[i, :] < wind_err_thresh)))
 
      if totlevs > 0:
       if typ_id[i] == 1:
 #     cloudy type Mie winds
 
-       # print >>f60, yyyy, mm, dd, hh, min, sec, '%7.2f %7.2f %2i' %(float(lonrid[i]), float(latrid[i]), int(totlevs))
-       print(yyyy, mm, dd, hh, min, sec, '%7.2f %7.2f %2i' %(float(lonrid[i]), float(latrid[i]), int(totlevs)), file=f60)
+       print(yyyy, mm, dd, hh, min, sec, '%7.2f %7.2f %2i' % (float(lonrid[i]), float(latrid[i]), int(totlevs)), file=f60)
 
        for m in range(nlevm):
 #       keep consistent with the lines of totlevs above !!!
         if rid[i, m] > 0:
          if mie_err[i, m] < wind_err_thresh:
           if mie_valid[i, m] > 0.0:
-           # print >>f60, '%2i %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f' %(int(m+1), \
-           #  mie_hhh[i,m], mie_hht[i,m], mie_hhb[i,m], mie_err[i,m], \
-           #  mie_azimuth[i,m], mie_wind[i,m], mie_length[i,m])
-           print('%2i %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f' %(int(m+1),
+           print('%2i %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f' % (int(m+1),
              mie_hhh[i,m], mie_hht[i,m], mie_hhb[i,m], mie_err[i,m],
              mie_azimuth[i,m], mie_wind[i,m], mie_length[i,m]), file=f60)
 
@@ -275,25 +267,21 @@ for n, filename in enumerate(files):
          if ray_valid[i, m] > 0.0:
           totlevs = totlevs + 1
 
+     totlevs = numpy.sum(logical_and(ray_valid[i, :] > 0, logical_and(rid[i, :] > 0, ray_err[i, :] < wind_err_thresh)))
+
 #  for clear sky Rayleigh winds ----------
      if totlevs > 0:
       if typ_id[i] == 2:
 
-       # print >>f66, yyyy, mm, dd, hh, min, sec, '%7.2f %7.2f %2i' %(float(lonrid[i]), float(latrid[i]), int(totlevs))
-       print(yyyy, mm, dd, hh, min, sec, '%7.2f %7.2f %2i' %(float(lonrid[i]), float(latrid[i]), int(totlevs)), file=f66)
+       print(yyyy, mm, dd, hh, min, sec, '%7.2f %7.2f %2i' % (float(lonrid[i]), float(latrid[i]), int(totlevs)), file=f66)
 
        for m in range(nlev):
 #       keep consistent with the lines of totlevs above !!!
         if rid[i, m] > 0:
           if ray_err[i,m] < wind_err_thresh:
            if ray_valid[i, m] > 0.0:
-            # print >>f66, '%2i %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f' \
-            #   %(int(m+1), ray_hhh[i,m], ray_hht[i,m], ray_hhb[i,m],\
-            #   ray_err[i,m], ray_azimuth[i,m], ray_wind[i,m],\
-            #   ref_temp[i,m]*0.01, ref_pppp[i,m], wind_sens_T[i,m],\
-            #   wind_sens_P[i,m], ray_sratio [i,m], ray_length[i,m])
             print('%2i %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f'
-              %(int(m+1), ray_hhh[i,m], ray_hht[i,m], ray_hhb[i,m],
+              % (int(m+1), ray_hhh[i,m], ray_hht[i,m], ray_hhb[i,m],
               ray_err[i,m], ray_azimuth[i,m], ray_wind[i,m],
               ref_temp[i,m]*0.01, ref_pppp[i,m], wind_sens_T[i,m],
               wind_sens_P[i,m], ray_sratio [i,m], ray_length[i,m]), file=f66)
-- 
GitLab