1:45 PM 11/12/2025 ���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!
Warning: Undefined variable $authorization in C:\xampp\htdocs\demo\fi.php on line 57

Warning: Undefined variable $translation in C:\xampp\htdocs\demo\fi.php on line 118

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\demo\fi.php on line 119

Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\xampp\htdocs\demo\fi.php on line 120

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 247

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 248

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 249

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 251

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 252
#!/usr/bin/env python3 import numpy as np import matplotlib.pyplot as plt import scipy import pandas as pd import glob import os import sys import argparse from osgeo import gdal from scipy import stats from pathlib import Path class OpenTif: """ a Class that stores the band array and metadata of a Gtiff file.""" def __init__(self, filename): self.ds = gdal.Open(filename) self.basename = os.path.splitext(os.path.basename(filename))[0] self.band = self.ds.GetRasterBand(1) self.data = self.band.ReadAsArray() self.xsize = self.ds.RasterXSize self.ysize = self.ds.RasterYSize self.left = self.ds.GetGeoTransform()[0] self.top = self.ds.GetGeoTransform()[3] self.xres = self.ds.GetGeoTransform()[1] self.yres = self.ds.GetGeoTransform()[5] self.right = self.left + self.xsize * self.xres self.bottom = self.top + self.ysize * self.yres self.projection = self.ds.GetProjection() pix_lin, pix_col = np.indices((self.ds.RasterYSize, self.ds.RasterXSize)) self.lat, self.lon = self.top + self.yres*pix_lin, self.left+self.xres*pix_col if __name__ == "__main__": # parse frame name as argument parser = argparse.ArgumentParser(description="Detect coregistration error") parser.add_argument("frame", help="frame name") args = parser.parse_args() frame = args.frame track = str(int(frame[0:3])) input_dir = "/gws/ssde/j25a/nceo_geohazards/vol1/public/LiCSAR_products/{}/{}/interferograms/".format(track, frame) output_dir = frame Path(frame).mkdir(parents=True, exist_ok=True) Path(frame+"/png").mkdir(parents=True, exist_ok=True) stats_file = "{}/{}_middle_column_stats.txt".format(frame, frame) if os.path.exists(stats_file): os.remove(stats_file) with open(stats_file, "a") as f: f.write("Frame Pair Slope R_squares Abs_slope\n") for unw in glob.glob(input_dir+"*/*.geo.unw.tif"): tif=OpenTif(unw) pair = unw.split('/')[-1][:17] print(pair, frame) fig, ax=plt.subplots(1,2, figsize=(6, 3)) ax[0].imshow(tif.data, vmin = np.nanpercentile(tif.data, 0.5), vmax = np.nanpercentile(tif.data, 99.5)) ax[0].plot([tif.xsize // 2,tif.xsize // 2], [0, tif.ysize+1]) ax[0].set_title(pair) middle_column = tif.data[:, tif.xsize // 2] middle_column_latitudes = tif.lat[:, tif.xsize // 2] ax[1].plot(middle_column_latitudes, middle_column) non_nan_mask = ~np.isnan(middle_column) slope, intercept, r_value, p_value, std_err = stats.linregress(middle_column_latitudes[non_nan_mask], middle_column[non_nan_mask]) ax[1].annotate("Phase = {:.2f} latitude + {:.2f} \n$R^2$ = {:.3f}".format(slope, intercept, r_value**2), xy=(0.05, 0.965), xycoords='axes fraction', ha='left', va='top', zorder=10) ax[1].plot(middle_column_latitudes, middle_column_latitudes*slope+intercept) ax[1].set_xlabel("Latitude") ax[1].set_ylabel("Phase / mm") ax[1].set_title("Middle Column") plt.tight_layout() plt.savefig("{}/png/{}_middle_column_{}.png".format(frame, frame, pair), dpi=500) plt.close() del tif, middle_column, middle_column_latitudes, non_nan_mask f.write("{} {} {} {} {}\n".format(frame, pair, slope, r_value**2, abs(slope))) f.close() # read text file into pandas DataFrame df = pd.read_csv("{}/{}_middle_column_stats.txt".format(frame, frame), sep=" ") plt.hist2d(df["Abs_slope"], df["R_squares"], bins=20, cmin=1) plt.title(frame) plt.xlabel("|slope|") plt.ylabel("R^2") plt.xlim(0,100) plt.ylim(0,1) plt.savefig("{}/{}_middle_column_hist2d.png".format(frame, frame)) plt.close() df['Epoch1'] = df['Pair'].str[:8] df['date1'] = pd.to_datetime(df['Epoch1'], format='%Y%m%d') fig, axes = plt.subplots(2) df.plot.scatter(x='date1', y='Abs_slope', c='R_squares', colormap='viridis', ax=axes[0]) df.plot.scatter(x='date1', y='R_squares', c='Abs_slope', colormap='viridis', ax=axes[1]) axes[0].set_ylim(0, 100) axes[1].set_ylim(0, 1) axes[0].set_xlabel("") plt.suptitle(frame) plt.savefig("{}/{}_scatter.png".format(frame, frame)) plt.close()