From 6b569a8c11a526756d75f26a448cd4ca11ff26ea Mon Sep 17 00:00:00 2001
From: Narayana Rao Bhogapurapu <narayanarao.bhogapurapu@gmail.com>
Date: Sat, 12 Oct 2024 17:50:42 -0700
Subject: [PATCH] added progress bar

---
 environments/ich-env-win.yml                 |  73 +++++++++++++++++++
 src/ich/__pycache__/algo.cpython-310.pyc     | Bin 0 -> 6822 bytes
 src/ich/__pycache__/args_in.cpython-310.pyc  | Bin 0 -> 5238 bytes
 src/ich/__pycache__/plotting.cpython-310.pyc | Bin 0 -> 3114 bytes
 src/ich/__pycache__/rst_io.cpython-310.pyc   | Bin 0 -> 1807 bytes
 src/ich/__pycache__/utils.cpython-310.pyc    | Bin 0 -> 2947 bytes
 src/ich/algo.py                              |  46 ++++++++----
 7 files changed, 105 insertions(+), 14 deletions(-)
 create mode 100644 environments/ich-env-win.yml
 create mode 100644 src/ich/__pycache__/algo.cpython-310.pyc
 create mode 100644 src/ich/__pycache__/args_in.cpython-310.pyc
 create mode 100644 src/ich/__pycache__/plotting.cpython-310.pyc
 create mode 100644 src/ich/__pycache__/rst_io.cpython-310.pyc
 create mode 100644 src/ich/__pycache__/utils.cpython-310.pyc

diff --git a/environments/ich-env-win.yml b/environments/ich-env-win.yml
new file mode 100644
index 0000000..c4775e9
--- /dev/null
+++ b/environments/ich-env-win.yml
@@ -0,0 +1,73 @@
+name: ich-env
+channels:
+  - conda-forge
+  - defaults
+dependencies:
+  - blosc=1.21.6
+  - bzip2=1.0.8
+  - ca-certificates=2024.9.24
+  - freexl=2.0.0
+  - gdal=3.9.2
+  - geos=3.13.0
+  - geotiff=1.7.3
+  - intel-openmp=2024.2.1
+  - krb5=1.21.3
+  - lerc=4.0.0
+  - libarchive=3.7.4
+  - libblas=3.9.0
+  - libcblas=3.9.0
+  - libcurl=8.10.1
+  - libdeflate=1.22
+  - libexpat=2.6.3
+  - libffi=3.4.4
+  - libgdal-core=3.9.2
+  - libhwloc=2.11.1
+  - libiconv=1.17
+  - libjpeg-turbo=3.0.0
+  - libkml=1.3.0
+  - liblapack=3.9.0
+  - libpng=1.6.44
+  - librttopo=1.1.0
+  - libspatialite=5.1.0
+  - libsqlite=3.46.1
+  - libssh2=1.11.0
+  - libtiff=4.7.0
+  - libwebp-base=1.4.0
+  - libxml2=2.12.7
+  - libzlib=1.3.1
+  - lz4-c=1.9.4
+  - lzo=2.10
+  - minizip=4.0.6
+  - mkl=2024.1.0
+  - numpy=2.1.2
+  - openssl=3.3.2
+  - pcre2=10.44
+  - pip=24.2
+  - proj=9.5.0
+  - pthreads-win32=2.9.1
+  - python=3.10.15
+  - python_abi=3.10
+  - setuptools=75.1.0
+  - snappy=1.2.1
+  - sqlite=3.45.3
+  - tbb=2021.13.0
+  - tk=8.6.13
+  - tzdata=2024b
+  - ucrt=10.0.22621.0
+  - uriparser=0.9.8
+  - vc=14.40
+  - vc14_runtime=14.40.33810
+  - vs2015_runtime=14.40.33810
+  - wheel=0.44.0
+  - xerces-c=3.2.5
+  - xz=5.4.6
+  - zlib=1.3.1
+  - zstd=1.5.6
+  - pip:
+      - colorama==0.4.6
+      - empatches==0.2.3
+      - packaging==24.1
+      - python-dateutil==2.9.0.post0
+      - pytz==2024.2
+      - six==1.16.0
+prefix: C:\Users\nbhogapurapu\.conda\envs\ich-env
diff --git a/src/ich/__pycache__/algo.cpython-310.pyc b/src/ich/__pycache__/algo.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..0535df8f8f579b7ed10090f39bb9b9ff9fdff371
GIT binary patch
literal 6822
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
Y2YX^%qbtJzTNUf7HDR@^kE(C~Csagz)Bpeg

literal 0
HcmV?d00001

diff --git a/src/ich/__pycache__/args_in.cpython-310.pyc b/src/ich/__pycache__/args_in.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..28a51a332587afa620a45f2625518e47917a22bf
GIT binary patch
literal 5238
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

literal 0
HcmV?d00001

diff --git a/src/ich/__pycache__/plotting.cpython-310.pyc b/src/ich/__pycache__/plotting.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..18e6f194e092817b5c38a3f9c23a05a84bf490af
GIT binary patch
literal 3114
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

literal 0
HcmV?d00001

diff --git a/src/ich/__pycache__/rst_io.cpython-310.pyc b/src/ich/__pycache__/rst_io.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..2518670d4097a85851354dd8f474301d7307a88e
GIT binary patch
literal 1807
zcmb_d&2Aev5Z+&Dz54M_oZlv?8lXT`phn^ZDB?CnQp<4zxN=~-DL@EVP`k85o4eeS
zR9qYDTd#cwxwkw(k9~zc0MT1dd4--jq}oJ54!v|2ocU(B9Fg<QP`uTO9e9p@{hj<)
zcbq?sG5>gAJcc3v0FgP!$=u9iE^@8*kY}}ze5(T#SRJC!>KdwB9iau#K8y1PYPcpw
zz?yjrwJi2nJ6}Xg7Kdy(UqLGt*Vv_e6|GuaXP5IU=!(S=yP97^*DPLO*Yg|bhQ%@a
zAis%jTHIi_@>}SZ#ZB<vMz;aCvi467`Y>C}mOyv1<!lA?N13<pbT6HK5pN2D70Eih
z=p2kEogPU$>z{Y-J=l0~cVqowXZ`N_{WyM%Cu+>aMyHPjKE(w{9>0e4IQ_1xgHeVV
z=msqm5hZ635KJ%4K`!*U$T6d5#uYPK2r?2xO0e25DLF~7Oooi7$HsFh$HyeWKN6XM
z3oATiW?3{6G|RvQ9H<{M6SqG5u_ATNHvV}6&_0Y!7_tLGIa9ZCF5Gjsa;HEXAg}VK
z{)KbyS3ab`>%TSux`8mX>tMGeg>G#VwTC4f=4)JJy0J%a_C!7raQ1GXgG0)Q_A;r1
zp_%rv5U(7u3hV#c+1wa>Cy9`QVmRg_TuuaxL64`CoD@n9wyFANG91uCVv!tj$b?G9
zgpS5)AVoT$>3AT(MfqBJsw3bgONO+#2C-!XB6edpasyXf0V6d>{r54mX4s=w0PN8{
zIIv&2N8Z3Y56(mILDhn<R@IJz%BjLC$UNm7g(D~Pe}NkPxprQ!>eE`~PwN+uIM)Fy
z0&C%o6`O=we<OqV(`E$`t=+nCpyC`zYuMM}_5nRS6iwJl*FRg@-2L|X-q!y9qu$oj
zohJudXALlW&o&Qs_a3dEMQCU1#n#TFhlW{RD#{D_s%<$DEr_5)ImRW?i@;1z(3il>
zX&>iA*Jkyr8{55u<SFA=-Cx&>`$TOMejsomA;-C0_Ku?kUpyE5h@|GHEa7uz8)kb%
zrh?j?h_=~5{Jo%x*doyJQ#O&~O`ML&t4J)tGzw2lfugz~hdlsd*{lgt&Y(;LKaskY
z*?prrpD6RGEtr|OY`$GMG4T^c4{w7hS3txb@a^4n+wjKTlH2q|7u@gh4!78hcLm_T
zc%Qz*`$hP_@a^|eu+@L@%+f8c!#2dnMwq5}|BO)4pTWf38CU1e_$kbF@927xWIRn0
z9bqvlv5?SoTxwsQN*$eGQP5%p$yF4}AS@<1G>li2x>iC{VyV3{(;=55!e^}=%9NI;
z!t{(@&ao;PSBws!&kTZPGwqj5>G<uuFn7v33xHEDqzH|_VS}zog_RUF<5`i%G{+;d
zHc^zV*{T(WAAL11S)w>+$5hERd&ik;?Vd1QtCwei=5A220DfWqszk#G)A5#mVe&JV
mS({^9LeZBw&nAp~Wv(=N2Snh0Qd{zx?wfZGM_yEGF8&SWJKcx?

literal 0
HcmV?d00001

diff --git a/src/ich/__pycache__/utils.cpython-310.pyc b/src/ich/__pycache__/utils.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..eb73f28196990210072efb2325d07b429e471dad
GIT binary patch
literal 2947
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

literal 0
HcmV?d00001

diff --git a/src/ich/algo.py b/src/ich/algo.py
index f457595..bca2d9b 100644
--- a/src/ich/algo.py
+++ b/src/ich/algo.py
@@ -146,10 +146,10 @@ def arc_sinc_vectorized(x, c_param):
     # Clip the result to ensure non-negative values
     return np.clip(y, 0, None)
 
-def cal_(cor, gedi, htl, htg):
+def cal_(temp_cor, temp_gedi, htl, htg):
     try:
-        temp_cor = cor.copy()
-        temp_gedi = gedi.copy()
+        # temp_cor = cor.copy()
+        # temp_gedi = gedi.copy()
         nn = np.count_nonzero(~np.isnan(temp_cor))
         result = []
 
@@ -243,7 +243,18 @@ def process_block(i, j, cohArray, lidarArray, initial_ws, htl, htg, parm_):
         lidarBlock = lidarArray[start_i:end_i, start_j:end_j]
         cohBlock = cohArray[start_i:end_i, start_j:end_j]
 
-        if np.isfinite(lidarBlock).any() and np.count_nonzero(~np.isnan(lidarBlock)) > 1:
+        if np.count_nonzero(~np.isnan(cohBlock)) <5:
+            count = np.count_nonzero(~np.isnan(lidarBlock))
+            s_parm = 0
+            c_parm = 0
+            rmse_parm = 0
+            ht = np.zeros(cohBlock.shape)
+            # print(lidarBlock.shape)
+            return start_i, end_i, start_j, end_j, s_parm, c_parm, rmse_parm, ht, count
+        
+        # elif (np.isfinite(lidarBlock).any() and np.count_nonzero(~np.isnan(lidarBlock)) > 1) or max(lidarBlock.shape)>512:
+        elif (np.isfinite(lidarBlock).any() and np.count_nonzero(~np.isnan(lidarBlock)) > 1) or max(lidarBlock.shape)>512:
+
             parm = cal_(cohBlock, lidarBlock, htl, htg)
             mask = np.where(~np.isnan(lidarBlock), 1, 0)
 
@@ -263,7 +274,7 @@ def process_block(i, j, cohArray, lidarArray, initial_ws, htl, htg, parm_):
             gama = cohBlock / parm[1]
             ht = arc_sinc(gama, parm[2]) * mask
             # ht = arc_sinc_fast(gama, parm[2]) * mask
-
+            # print(lidarBlock.shape)
             return start_i, end_i, start_j, end_j, s_parm, c_parm, rmse_parm, ht, count
         else:
             S += 2
@@ -286,20 +297,27 @@ def dynamicWindow(cohArray, lidarArray, initial_ws, htl, htg):
 
     parm_ = [0, 0, 0, 0, 0]
 
-    num_workers = min(16, os.cpu_count())
+    num_workers = os.cpu_count()-1
 
+    futures = []
     with ProcessPoolExecutor(max_workers=num_workers) as executor:
-        futures = []
         for i in range(0, rows, initial_ws):
             for j in range(0, cols, initial_ws):
                 futures.append(executor.submit(process_block, i, j, cohArray, lidarArray, initial_ws, htl, htg, parm_))
 
-        for future in as_completed(futures):
-            start_i, end_i, start_j, end_j, s_p, c_p, r_p, ht, cnt = future.result()
-            s_parm[start_i:end_i, start_j:end_j] = s_p
-            c_parm[start_i:end_i, start_j:end_j] = c_p
-            rmse_parm[start_i:end_i, start_j:end_j] = r_p
-            ht_[start_i:end_i, start_j:end_j] = ht
-            count[start_i:end_i, start_j:end_j] = cnt
+        # Initialize the progress bar with the total number of futures
+        with tqdm(total=len(futures)) as pbar:
+            completed_jobs = 0
+            for future in as_completed(futures):
+                start_i, end_i, start_j, end_j, s_p, c_p, r_p, ht, cnt = future.result()
+                s_parm[start_i:end_i, start_j:end_j] = s_p
+                c_parm[start_i:end_i, start_j:end_j] = c_p
+                rmse_parm[start_i:end_i, start_j:end_j] = r_p
+                ht_[start_i:end_i, start_j:end_j] = ht
+                count[start_i:end_i, start_j:end_j] = cnt
+
+                completed_jobs += 1
+                if completed_jobs % 100 == 0:  # Update every 100 jobs
+                    pbar.update(100)
 
     return s_parm, c_parm, rmse_parm, ht_, count
-- 
GitLab