From f208c287eda64643e62bc705bad388b105363f1e Mon Sep 17 00:00:00 2001 From: Anurag Date: Fri, 21 Jul 2023 13:53:49 +0200 Subject: [PATCH 1/5] patch from anurag --- README.txt | 4 +- __init__.pyc | Bin 124 -> 138 bytes __pycache__/__init__.cpython-310.pyc | Bin 0 -> 144 bytes __pycache__/__init__.cpython-311.pyc | Bin 0 -> 160 bytes __pycache__/__init__.cpython-36.pyc | Bin 0 -> 134 bytes __pycache__/__init__.cpython-37.pyc | Bin 0 -> 138 bytes __pycache__/__init__.cpython-38.pyc | Bin 0 -> 142 bytes __pycache__/__init__.cpython-39.pyc | Bin 0 -> 142 bytes bin/tsx_dump_header2doris.py | 43 +- doris_core/#referencephase.cc# | 2669 +++++++++++++++++ doris_core/Makefile | 8 +- doris_core/configure | 2 +- doris_core/constants.hh | 2 +- doris_stack/__init__.pyc | Bin 0 -> 150 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 172 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 146 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 150 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 154 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 154 bytes doris_stack/functions/ESD_functions.pyc | Bin 0 -> 8793 bytes doris_stack/functions/__init__.pyc | Bin 0 -> 160 bytes .../__pycache__/ESD_functions.cpython-36.pyc | Bin 0 -> 6776 bytes .../__pycache__/ESD_functions.cpython-37.pyc | Bin 0 -> 6769 bytes .../__pycache__/ESD_functions.cpython-38.pyc | Bin 0 -> 6800 bytes .../__pycache__/ESD_functions.cpython-39.pyc | Bin 0 -> 6786 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 156 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 160 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 164 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 164 bytes .../__pycache__/get_ramp.cpython-36.pyc | Bin 0 -> 6395 bytes .../__pycache__/get_ramp.cpython-37.pyc | Bin 0 -> 6317 bytes .../__pycache__/get_ramp.cpython-38.pyc | Bin 0 -> 6343 bytes .../__pycache__/get_ramp.cpython-39.pyc | Bin 0 -> 6343 bytes doris_stack/functions/baselines.pyc | Bin 0 -> 2953 bytes doris_stack/functions/burst_metadata.pyc | Bin 0 -> 6236 bytes doris_stack/functions/do_deramp_SLC.py | 7 +- doris_stack/functions/get_ramp.py | 27 +- doris_stack/functions/get_ramp.pyc | Bin 0 -> 7972 bytes doris_stack/functions/job.started | 0 doris_stack/functions/load_shape_unzip.py | 4 +- doris_stack/functions/load_shape_unzip.pyc | Bin 0 -> 5970 bytes doris_stack/functions/orbit_coordinates.pyc | Bin 0 -> 6446 bytes doris_stack/functions/precise_read.py | 4 +- doris_stack/functions/precise_read.pyc | Bin 0 -> 4869 bytes doris_stack/functions/resdata.pyc | Bin 0 -> 11462 bytes doris_stack/functions/swath_metadata.pyc | Bin 0 -> 6023 bytes doris_stack/functions/xml_query.pyc | Bin 0 -> 12796 bytes doris_stack/main_code/__init__.pyc | Bin 0 -> 160 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 182 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 156 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 160 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 164 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 164 bytes .../main_code/__pycache__/jobs.cpython-36.pyc | Bin 0 -> 4089 bytes .../main_code/__pycache__/jobs.cpython-37.pyc | Bin 0 -> 4093 bytes .../main_code/__pycache__/jobs.cpython-39.pyc | Bin 0 -> 4159 bytes .../__pycache__/resdata.cpython-311.pyc | Bin 0 -> 21113 bytes .../__pycache__/resdata.cpython-36.pyc | Bin 0 -> 9517 bytes .../__pycache__/resdata.cpython-37.pyc | Bin 0 -> 9354 bytes .../__pycache__/resdata.cpython-38.pyc | Bin 0 -> 9137 bytes .../__pycache__/resdata.cpython-39.pyc | Bin 0 -> 9135 bytes doris_stack/main_code/burst.pyc | Bin 0 -> 3505 bytes doris_stack/main_code/doris_main.py | 4 + doris_stack/main_code/doris_parameters.py | 1 + doris_stack/main_code/doris_sentinel_1.py | 42 +- doris_stack/main_code/doris_sentinel_1.pyc | Bin 0 -> 4433 bytes doris_stack/main_code/dorisparameters.py | 2 + doris_stack/main_code/dorisparameters.pyc | Bin 0 -> 4736 bytes doris_stack/main_code/grs_config.pyc | Bin 0 -> 1572 bytes doris_stack/main_code/grs_profile.pyc | Bin 0 -> 1310 bytes doris_stack/main_code/image.py | 1 + doris_stack/main_code/image.pyc | Bin 0 -> 3935 bytes doris_stack/main_code/jobs.py | 4 +- doris_stack/main_code/jobs.pyc | Bin 0 -> 5154 bytes doris_stack/main_code/resdata.py | 15 +- doris_stack/main_code/resdata.pyc | Bin 0 -> 11479 bytes doris_stack/main_code/single_master_stack.py | 262 +- doris_stack/main_code/single_master_stack.pyc | Bin 0 -> 82337 bytes doris_stack/main_code/stack.py | 2 +- doris_stack/main_code/stack.pyc | Bin 0 -> 23086 bytes doris_stack/main_code/swath.py | 4 + doris_stack/main_code/swath.pyc | Bin 0 -> 4438 bytes envisat_tools/Makefile | 6 +- install/INSTALL.sh | 58 + install/INSTALL.txt | 4 +- install/doris_config.xml | 10 + prepare_stack/.create_dem.py.swo | Bin 0 -> 40960 bytes prepare_stack/.create_dem.py.swp | Bin 0 -> 20480 bytes prepare_stack/__init__.pyc | Bin 0 -> 152 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 158 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 148 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 152 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 156 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 156 bytes .../create_datastack_bash.cpython-39.pyc | Bin 0 -> 2024 bytes .../__pycache__/create_dem.cpython-310.pyc | Bin 0 -> 19807 bytes .../__pycache__/create_dem.cpython-36.pyc | Bin 0 -> 20332 bytes .../__pycache__/create_dem.cpython-37.pyc | Bin 0 -> 20116 bytes .../__pycache__/create_dem.cpython-38.pyc | Bin 0 -> 20095 bytes .../__pycache__/create_dem.cpython-39.pyc | Bin 0 -> 20048 bytes .../create_doris_input_xml.cpython-39.pyc | Bin 0 -> 4319 bytes .../create_inputfiles.cpython-39.pyc | Bin 0 -> 2809 bytes .../prepare_datastack.cpython-36.pyc | Bin 0 -> 2004 bytes .../prepare_datastack.cpython-37.pyc | Bin 0 -> 1994 bytes .../prepare_datastack.cpython-39.pyc | Bin 0 -> 2013 bytes prepare_stack/create_datastack_bash.py | 20 +- prepare_stack/create_datastack_bash.pyc | Bin 0 -> 2644 bytes prepare_stack/create_dem.py | 76 +- prepare_stack/create_dem.pyc | Bin 0 -> 23388 bytes prepare_stack/create_doris_input_xml.pyc | Bin 0 -> 5378 bytes prepare_stack/create_inputfiles.py | 2 +- prepare_stack/create_inputfiles.pyc | Bin 0 -> 3683 bytes .../download_sentinel_data_orbits.py | 160 +- prepare_stack/inputfile_template.xml | 6 +- prepare_stack/prepare_datastack.py | 5 +- prepare_stack/prepare_datastack.pyc | Bin 0 -> 2641 bytes sar_tools/Makefile | 4 +- 117 files changed, 3298 insertions(+), 160 deletions(-) create mode 100644 __pycache__/__init__.cpython-310.pyc create mode 100644 __pycache__/__init__.cpython-311.pyc create mode 100644 __pycache__/__init__.cpython-36.pyc create mode 100644 __pycache__/__init__.cpython-37.pyc create mode 100644 __pycache__/__init__.cpython-38.pyc create mode 100644 __pycache__/__init__.cpython-39.pyc create mode 100755 doris_core/#referencephase.cc# create mode 100644 doris_stack/__init__.pyc create mode 100644 doris_stack/__pycache__/__init__.cpython-311.pyc create mode 100644 doris_stack/__pycache__/__init__.cpython-36.pyc create mode 100644 doris_stack/__pycache__/__init__.cpython-37.pyc create mode 100644 doris_stack/__pycache__/__init__.cpython-38.pyc create mode 100644 doris_stack/__pycache__/__init__.cpython-39.pyc create mode 100644 doris_stack/functions/ESD_functions.pyc create mode 100644 doris_stack/functions/__init__.pyc create mode 100644 doris_stack/functions/__pycache__/ESD_functions.cpython-36.pyc create mode 100644 doris_stack/functions/__pycache__/ESD_functions.cpython-37.pyc create mode 100644 doris_stack/functions/__pycache__/ESD_functions.cpython-38.pyc create mode 100644 doris_stack/functions/__pycache__/ESD_functions.cpython-39.pyc create mode 100644 doris_stack/functions/__pycache__/__init__.cpython-36.pyc create mode 100644 doris_stack/functions/__pycache__/__init__.cpython-37.pyc create mode 100644 doris_stack/functions/__pycache__/__init__.cpython-38.pyc create mode 100644 doris_stack/functions/__pycache__/__init__.cpython-39.pyc create mode 100644 doris_stack/functions/__pycache__/get_ramp.cpython-36.pyc create mode 100644 doris_stack/functions/__pycache__/get_ramp.cpython-37.pyc create mode 100644 doris_stack/functions/__pycache__/get_ramp.cpython-38.pyc create mode 100644 doris_stack/functions/__pycache__/get_ramp.cpython-39.pyc create mode 100644 doris_stack/functions/baselines.pyc create mode 100644 doris_stack/functions/burst_metadata.pyc create mode 100644 doris_stack/functions/get_ramp.pyc create mode 100644 doris_stack/functions/job.started create mode 100644 doris_stack/functions/load_shape_unzip.pyc create mode 100644 doris_stack/functions/orbit_coordinates.pyc create mode 100644 doris_stack/functions/precise_read.pyc create mode 100644 doris_stack/functions/resdata.pyc create mode 100644 doris_stack/functions/swath_metadata.pyc create mode 100644 doris_stack/functions/xml_query.pyc create mode 100644 doris_stack/main_code/__init__.pyc create mode 100644 doris_stack/main_code/__pycache__/__init__.cpython-311.pyc create mode 100644 doris_stack/main_code/__pycache__/__init__.cpython-36.pyc create mode 100644 doris_stack/main_code/__pycache__/__init__.cpython-37.pyc create mode 100644 doris_stack/main_code/__pycache__/__init__.cpython-38.pyc create mode 100644 doris_stack/main_code/__pycache__/__init__.cpython-39.pyc create mode 100644 doris_stack/main_code/__pycache__/jobs.cpython-36.pyc create mode 100644 doris_stack/main_code/__pycache__/jobs.cpython-37.pyc create mode 100644 doris_stack/main_code/__pycache__/jobs.cpython-39.pyc create mode 100644 doris_stack/main_code/__pycache__/resdata.cpython-311.pyc create mode 100644 doris_stack/main_code/__pycache__/resdata.cpython-36.pyc create mode 100644 doris_stack/main_code/__pycache__/resdata.cpython-37.pyc create mode 100644 doris_stack/main_code/__pycache__/resdata.cpython-38.pyc create mode 100644 doris_stack/main_code/__pycache__/resdata.cpython-39.pyc create mode 100644 doris_stack/main_code/burst.pyc create mode 100644 doris_stack/main_code/doris_sentinel_1.pyc create mode 100644 doris_stack/main_code/dorisparameters.pyc create mode 100644 doris_stack/main_code/grs_config.pyc create mode 100644 doris_stack/main_code/grs_profile.pyc create mode 100644 doris_stack/main_code/image.pyc create mode 100644 doris_stack/main_code/jobs.pyc create mode 100644 doris_stack/main_code/resdata.pyc create mode 100644 doris_stack/main_code/single_master_stack.pyc create mode 100644 doris_stack/main_code/stack.pyc create mode 100644 doris_stack/main_code/swath.pyc create mode 100644 install/INSTALL.sh create mode 100644 install/doris_config.xml create mode 100644 prepare_stack/.create_dem.py.swo create mode 100644 prepare_stack/.create_dem.py.swp create mode 100644 prepare_stack/__init__.pyc create mode 100644 prepare_stack/__pycache__/__init__.cpython-310.pyc create mode 100644 prepare_stack/__pycache__/__init__.cpython-36.pyc create mode 100644 prepare_stack/__pycache__/__init__.cpython-37.pyc create mode 100644 prepare_stack/__pycache__/__init__.cpython-38.pyc create mode 100644 prepare_stack/__pycache__/__init__.cpython-39.pyc create mode 100644 prepare_stack/__pycache__/create_datastack_bash.cpython-39.pyc create mode 100644 prepare_stack/__pycache__/create_dem.cpython-310.pyc create mode 100644 prepare_stack/__pycache__/create_dem.cpython-36.pyc create mode 100644 prepare_stack/__pycache__/create_dem.cpython-37.pyc create mode 100644 prepare_stack/__pycache__/create_dem.cpython-38.pyc create mode 100644 prepare_stack/__pycache__/create_dem.cpython-39.pyc create mode 100644 prepare_stack/__pycache__/create_doris_input_xml.cpython-39.pyc create mode 100644 prepare_stack/__pycache__/create_inputfiles.cpython-39.pyc create mode 100644 prepare_stack/__pycache__/prepare_datastack.cpython-36.pyc create mode 100644 prepare_stack/__pycache__/prepare_datastack.cpython-37.pyc create mode 100644 prepare_stack/__pycache__/prepare_datastack.cpython-39.pyc create mode 100644 prepare_stack/create_datastack_bash.pyc create mode 100644 prepare_stack/create_dem.pyc create mode 100644 prepare_stack/create_doris_input_xml.pyc create mode 100644 prepare_stack/create_inputfiles.pyc create mode 100644 prepare_stack/prepare_datastack.pyc diff --git a/README.txt b/README.txt index 25339a9..e43d890 100644 --- a/README.txt +++ b/README.txt @@ -16,8 +16,6 @@ The new Doris version consists of 2 parts: contain algorithms specific to processing sentinel 1 images and support parallelisation of the processing of the bursts. The functionality of these scripts can be further extended to support more sensors and modes. -Note that the python code is developed in python 2.7, so be sure you are not using python 3. - In addition, you will find a stack preparation script, to automatically download the burst you need for your Area of Interest which you defined by a shape file, automatically download the SRTM DEM associated with this area, and setup your processing structure. @@ -65,7 +63,7 @@ Run the stack preparation script Move to the prepare_stack directory: cd prepare_stack Run the python script: -python prepare_datastack_main.py +python prepare_datastack.py This code will ask you to define the different folders you created before. The script will ask you whether you want to run your code in parallel. Generally, this is recommended as it speeds up your processing speed. Note that either the diff --git a/__init__.pyc b/__init__.pyc index 783020fe7763f668a888ef11ad187b0ac0e3580e..5940c778cf58d830033891088bfe4862b99971cb 100644 GIT binary patch delta 56 zcmb>FV&q`{%*%D@!2IZm9Hy$q3=9nV8Tq-X`iXg^MTzP9F8Rr&xv6<2#rgpmE&)aP LS*gh-6GJor4_OmL delta 42 xcmeBTtl?n(%*&M{6B;>@!&F?Afq_9kBR@A)KRvamM87yct)x7$D0O0z1_1Uv49frj diff --git a/__pycache__/__init__.cpython-310.pyc b/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..26e174d20d0c966ef759f3446aa7257ff5404a47 GIT binary patch literal 144 zcmd1j<>g`kf=dVHM}z3cAOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUTJ{fzwFRQ<%f z(xSw4eV6>?(%jU%l4AXU43~hS{H)aE68)6?qRe9b`1s7c%#!$cy@JYH95%W6DWy57 Nb|AxwnScZf0|21OAfo^P literal 0 HcmV?d00001 diff --git a/__pycache__/__init__.cpython-311.pyc b/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..09c1b838d864f632e1432a346f06f8115dcc043b GIT binary patch literal 160 zcmZ3^%ge<81eXrXj|S0?K?DpiLK&agfQ;!3DGb33nv8xc8H$*I{LdiCU&i_w`MIh3 ziFu_(iRt<-`N^fZsd**E`T-d(0Y&*)smUe!Dfva2#rpB_nR%Hd@$q^EmA^P_a`RJ4 eb5iY!Sb=7MY$@gk5+9fu85ut?z=$Gdpcnu#i6yfD literal 0 HcmV?d00001 diff --git a/__pycache__/__init__.cpython-36.pyc b/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..feb7bb1ebf2828d64673457b37bf6b75e76aca28 GIT binary patch literal 134 zcmXr!<>k6`V16_M5IhDEFu(|8H~?`m3y?@*2xib^^jpbL1QJFNzl`-W@^e%56Z1-o z64Uiv@{>z*Q}arS^#d|o0*dmpQj<&cQ}T;4i}mBg`kf=dVHM}z3cAOZ#$feZ&AE@lA|DGb33nv8xc8Hzx{2;!Hqenx(7s(xZ# zX;EUjzDs^`X>Mv>NwI!FhD$(EepYI7iGE6cQD(7ze0*kJW=VX!UP0w84x8Nkl+v73 LJCI?YftUdRIjtb@ literal 0 HcmV?d00001 diff --git a/__pycache__/__init__.cpython-38.pyc b/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ba598eaf971cab280927d92119c08a3da01b0f68 GIT binary patch literal 142 zcmWIL<>g`kf=dVHM}z3cAOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUTJ{fzwFRQ<%f z(xSw4eV6>?(%jU%l4AXU43~hS{H)aE68)6?qRe9b`1s7c%#!$cy@JYH95%W6DWy57 Lb|Aw(12F>tQ;#77 literal 0 HcmV?d00001 diff --git a/__pycache__/__init__.cpython-39.pyc b/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..021c8f5875390596325374ab425889b347bd333a GIT binary patch literal 142 zcmYe~<>g`kf=dVHM}z3cAOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUTJ{fzwFRQ<%f z(xSw4eV6>?(%jU%l4AXU43~hS{H)aE68)6?qRe9b`1s7c%#!$cy@JYH95%W6DWy57 Lb|Aw(12F>tS~npN literal 0 HcmV?d00001 diff --git a/bin/tsx_dump_header2doris.py b/bin/tsx_dump_header2doris.py index bb06314..daddc2b 100755 --- a/bin/tsx_dump_header2doris.py +++ b/bin/tsx_dump_header2doris.py @@ -12,16 +12,16 @@ #import types def usage(): - print '\nUsage: python tsx_dump_header2doris.py tsx_XML_product > outputfile' - print ' where tsx_XML_product is the input filename' + print ('\nUsage: python tsx_dump_header2doris.py tsx_XML_product > outputfile') + print (' where tsx_XML_product is the input filename') # print ' outputfile is the output DORIS resultfile' try: inputFileName = sys.argv[1] -# outputFileName = sys.argv[2] -# outStream = open(outputFileName,'w') + #outputFileName = sys.argv[2] + #outStream = open(outputFileName,'w') except: - print 'Unrecognized input' + print ('Unrecognized input') usage() sys.exit(1) @@ -127,22 +127,23 @@ def hms2sec(hmsString,convertFlag='int'): dummyVar = 'DUMMY' -# outStream.write('MASTER RESULTFILE: %s\n' % outputFileName) -# outStream.write('\n') -# outStream.write('\n') -# outStream.write('Start_process_control\n') -# outStream.write('readfiles: 1\n') -# outStream.write('precise_orbits: 0\n') -# outStream.write('crop: 0\n') -# outStream.write('sim_amplitude: 0\n') -# outStream.write('master_timing: 0\n') -# outStream.write('oversample: 0\n') -# outStream.write('resample: 0\n') -# outStream.write('filt_azi: 0\n') -# outStream.write('filt_range: 0\n') -# outStream.write('NOT_USED: 0\n') -# outStream.write('End_process_control\n') -# outStream.write('\n') +#print('MASTER RESULTFILE: %s\n' % outputFileName) +print('\n') +print('\n') +print('Start_process_control') +print('readfiles: 1') +print('precise_orbits: 0') +print('crop: 0') +print('sim_amplitude: 0') +print('master_timing: 0') +print('oversample: 0') +print('resample: 0') +print('filt_azi: 0') +print('filt_range: 0') +print('NOT_USED: 0') +print('End_process_control\n') +print('\n') + print('\ntsx_dump_header2doris.py v1.0, doris software, 2009\n') print('*******************************************************************') print('*_Start_readfiles:') diff --git a/doris_core/#referencephase.cc# b/doris_core/#referencephase.cc# new file mode 100755 index 0000000..1ca207f --- /dev/null +++ b/doris_core/#referencephase.cc# @@ -0,0 +1,2669 @@ +/* + * Copyright (c) 1999-2009 Delft University of Technology, The Netherlands + * + * This file is part of Doris, the Delft o-o radar interferometric software. + * + * Doris program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Doris is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * + */ +/**************************************************************** + * $Source: /users/kampes/DEVELOP/DORIS/doris/src/RCS/referencephase.cc,v $ * + * $Revision: 3.22 $ * + * $Date: 2006/05/18 11:09:20 $ * + * $Author: kampes $ * + * * + * -computation flat earth correction. * + * -computation radarcoding dem + interpolation to (1,1) grid * + ****************************************************************/ + +#include "matrixbk.hh" +#include "orbitbk.hh" +#include "slcimage.hh" // my slc image class +#include "productinfo.hh" // my 'products' class +#include "constants.hh"#include "referencephase.hh" // proto types +#include "ioroutines.hh" // error etc. +#include "utilities.hh" // isodd; ones(), etc. +#include "coregistration.hh" // distribute points +#include "exceptions.hh" // my exceptions class + +#include // setw only for test.. +#include // system +#include // max +#ifdef WIN32 + // Jia defined this. + // Bert Kampes, 24-Aug-2005 + #include "winsock2.h" +#else + #include // ntohl byteorder x86-HP unix +#endif + +// Using A Two-Dimensional Quality Mesh Generator and Delaunay Triangulator +// from Jonathan Richard Shewchuk +// Some definition for triangulate call +#define VOID int +#define REAL double +#define ANSI_DECLARATORS +#include "triangle.h" + + + +/**************************************************************** + * flatearth * + * * + * Compute polynomial model for 'flat earth' correction. * + * fie(l,p) = sumj=0:d sumk=0:d Ajk l^j p^k (NOT bert 8sept99) * + * precise orbits are used to compute delta range for Npoints * + * after which the polynomial model is fitted (LS). * + * * + * input: * + * - inputoptions * + * - info structs * + * - platform data points * + * output: * + * - void (result to file "scratchresflat") * + * - coefficients normalized wrt. original window of master * + * * + * Bert Kampes, 09-Mar-1999 * + * Bert Kampes, 26-Oct-1999 normalization of coeff., * + * dump to logfile: var(unknowns) == diag(inv(AtA)) * + ****************************************************************/ +void flatearth( + const input_comprefpha &comprefphainput, + const input_ell &ellips, + const slcimage &master, + const slcimage &slave, + const productinfo &interferogram, + orbit &masterorbit, + orbit &slaveorbit) + { + TRACE_FUNCTION("flatearth (BK 26-Oct-1999)") + const int32 MAXITER = 10; + const real8 CRITERPOS = 1e-6; + const real8 CRITERTIM = 1e-10; + char dummyline[2*ONE27]; + + INFO << "FLATEARTH: MAXITER: " << MAXITER << "; " + << "CRITERPOS: " << CRITERPOS << " m; " + << "CRITERTIM: " << CRITERTIM << " s"; + INFO.print(); + + // ______ Normalization factors for polynomial ______ + const real8 minL = master.originalwindow.linelo; + const real8 maxL = master.originalwindow.linehi; + const real8 minP = master.originalwindow.pixlo; + const real8 maxP = master.originalwindow.pixhi; + INFO << "flatearth: polynomial normalized by factors: " + << minL << " " << maxL << " " << minP << " " << maxP + << " to [-2,2]"; + INFO.print(); + + // ______Handling of input______ + const real8 m_minpi4cdivlam = (-4.0*PI*SOL)/master.wavelength; + const real8 s_minpi4cdivlam = (-4.0*PI*SOL)/slave.wavelength; + DEBUG << "master wavelength = " << master.wavelength; + DEBUG.print(); + DEBUG << "slave wavelength = " << slave.wavelength; + DEBUG.print(); + const int32 DEGREE = comprefphainput.degree; + const int32 Nunk = Ncoeffs(DEGREE); // Number of unknowns + bool pointsrandom = true; + if (specified(comprefphainput.ifpositions)) + pointsrandom = false; // only use those points + + + + // ______ Distribute points wel distributed over win ______ + // ______ or read from ascii file ______ + // ______(i,0): line, (i,1): pixel, (i,2) flagfromdisk______ + //matrix Position; + // [FvL] for correct folding of points outside overlap window when inserted by file + matrix Position; + const uint Npoints = comprefphainput.Npoints; + register int32 i,j,k,index; + + if (pointsrandom) // no filename specified + { + Position = distributepoints(Npoints,interferogram.win); + } + else // read from file + { + Position.resize(Npoints,3); + //ifstream ifpos(comprefphainput.ifpositions, ios::in); + ifstream ifpos; + openfstream(ifpos,comprefphainput.ifpositions); + bk_assert(ifpos,comprefphainput.ifpositions,__FILE__,__LINE__); + uint ll,pp; + for (i=0; i> ll >> pp; + //Position(i,0) = uint(ll); + //Position(i,1) = uint(pp); + //Position(i,2) = uint(1); // flag from file + // [FvL] + Position(i,0) = int(ll); + Position(i,1) = int(pp); + Position(i,2) = int(1); // flag from file + ifpos.getline(dummyline,2*ONE27,'\n'); // goto next line. + } + ifpos.close(); + + // ______ Check last point ivm. EOL after last position in file ______ + if (Position(Npoints-1,0) == Position(Npoints-2,0) && + Position(Npoints-1,1) == Position(Npoints-2,1)) + { + Position(Npoints-1,0) = uint(.5*(minL + maxL) + 27); // random + Position(Npoints-1,1) = uint(.5*(minP + maxP) + 37); // random + WARNING << "refpha: there should be no EOL after last point in file: " + << comprefphainput.ifpositions; + WARNING.print(); + } + + // ______ Check if points are in overlap ______ + // ______ no check for uniqueness of points ______ + } + + matrix y(Npoints,1); // observation + matrix y_h2ph(Npoints,1); // observation, h2ph factors, added by FvL + matrix A(Npoints,Nunk); // designmatrix + + // ______Check redundancy______ + if (Npoints < Nunk) + { + PRINT_ERROR("flatearth: Number of points is smaller than parameters solved for."); + throw(input_error); + } + + + + // ======Compute delta r for all points====== + for (i=0; iSP) then S is to the right of slant line, then B perp is positive. + cn r1 = Psat_master.min(P); + cn r2 = Psat_slave.min(P); + // real8 theta = Psat_master.angle(r1); // look angle + real8 theta = P.angle(r1); // incidence angle + real8 theta_slave = P.angle(r2); // incidence angle slave + real8 Bperp = (theta > theta_slave ) ? // sign ok + sqrt(sqr(B)-sqr(Bpar)) : + -sqrt(sqr(B)-sqr(Bpar)) ; + + y_h2ph(i,0) = Bperp/(m_trange*SOL*sin(theta)); + + // ____________________________________________________________________________________ + // _____________ End added part by FvL ________________________________________________ + //_____________________________________________________________________________________ + + // ______Set up system of equations______ + // ______Order unknowns: A00 A10 A01 A20 A11 A02 A30 A21 A12 A03 for degree=3______ + // ______ normalize data [-2,2] ______ + real8 posL = normalize(line,minL,maxL); + real8 posP = normalize(pixel,minP,maxP); + index = 0; + for (j=0; j<=DEGREE; j++) + { + for (k=0; k<=j; k++) + { + A(i,index) = pow(posL,real8(j-k)) * pow(posP,real8(k)); + index++; + } + } + } + + + // ======Compute polynomial for these phases (LS)====== + // ______Compute Normalmatrix, rghthandside______ + matrix N = matTxmat(A,A); + matrix rhs = matTxmat(A,y); + matrix rhs_h2ph = matTxmat(A,y_h2ph); // Added by FvL, same A matrix can be used + + + // ______Compute solution______ + matrix Qx_hat = N; + choles(Qx_hat); // Cholesky factorisation normalmatrix + solvechol(Qx_hat,rhs); // Estimate of unknowns in rhs + solvechol(Qx_hat,rhs_h2ph); // Estimate of unknowns in rhs_h2ph, added by FvL + invertchol(Qx_hat); // Covariance matrix + + + // ______Test inverse______ + for (i=0; i .001) + { + WARNING << "Deviation quite large. Decrease degree or number of points?"; + WARNING.print(); + } + else + { + INFO.print("Deviation is OK."); + } + + // ______Some other stuff, scale is ok______ + // matrix Qy_hat = A * (matxmatT(Qx_hat,A)); + matrix y_hat = A * rhs; + matrix y_hat_h2ph = A * rhs_h2ph; // added by FvL + matrix e_hat = y - y_hat; + matrix e_hat_h2ph = y_h2ph - y_hat_h2ph; // added by FvL + + + // ______Overall model test (variance factor)______ + // ... ? + + + + + + // ______ Wrap offset ______ + // BK 30/9/99 do not do this, later absolute ref. phase is used. + // in s2h rodriguez for example. + // it does not change anything for compinterfero etc. + // rhs(0,0) = remainder(rhs(0,0),2*PI); + + + + // ______Write results to file______ + ofstream scratchlogfile("scratchlogflat", ios::out | ios::trunc); + bk_assert(scratchlogfile,"flatearth: scratchlogflat",__FILE__,__LINE__); + + scratchlogfile << "\n\n*******************************************************************" + << "\n* FLATEARTH: " + //<< "\n*_Start_" << processcontrol[pr_i_comprefpha] + << "\n*******************************************************************" + << "\nDegree_flat:\t" << DEGREE + << "\nEstimated coefficients:\n" + << "\nx_hat \tstd:\n"; + for (i=0; i= lat0file)// largest latitude at first line of file + { + ERROR << "master crop outside DEM: most North latitude: " << rad2deg(lat0file) + << " [deg]; master crop requires: " << rad2deg(phimax) + << " [deg]"; + PRINT_ERROR(ERROR.get_str()) + //throw(some_error); + } + if (lambdamax <= lon0file) + { + ERROR << "master crop outside DEM: most West longitude: " << rad2deg(lon0file) + << " [deg]; master crop window requires: " << rad2deg(lambdamax) + << " [deg]"; + PRINT_ERROR(ERROR.get_str()) + //throw(some_error); + } + if (lambdamin >= lonNfile) + { + ERROR << "master crop outside DEM: most East longitude: " << rad2deg(lonNfile) + << " [deg]; master crop window requires: " << rad2deg(lambdamin) + << " [deg]"; + PRINT_ERROR(ERROR.get_str()) + //throw(some_error); + } + + + //=================================================================== + //============ First loop: radarcode DEM ============================ + //============ (DEM geometry) ============================ + //=================================================================== + + int32 numvalid = 0;// number of good values, not NODATA in buffer + int32 numNODATA = 0;// number of NODATA values in buffer + real8 meancroppedDEM = 0.0;// to detect byte order problems, formats + real8 min_input_dem = 100000.0;// stats + real8 max_input_dem = -100000.0;// stats + + // ______ Compute buffer size radarcoding DEM______ + const real8 BUFFERMEMSIZE = generalinput.memory;// Bytes + int32 NcolsDEM = indexlambdaNDEM-indexlambda0DEM+1; + int32 NrowsDEM = indexphiNDEM-indexphi0DEM+1; + const uint32 NcolsDEMlog = NcolsDEM; // since NcolsDEM updated after getcorners() call. + const uint32 NrowsDEMlog = NrowsDEM; + const real8 Nrows_possible_DEM = BUFFERMEMSIZE / (5*8*NcolsDEM); + int32 bufferlines = int32(ceil(Nrows_possible_DEM)); // [MA] checked ok. Sinces SLC is not multilooked, see comprefdem for solution + if (bufferlines>NrowsDEM) bufferlines=NrowsDEM; + int32 numfullbuffers = NrowsDEM / bufferlines; + int32 restlines = NrowsDEM % bufferlines; + int32 extrabuffer = (restlines == 0) ? 0 : 1; + + // ______ Extra info ______ + INFO << "DEM output total pixels: " << NcolsDEM; + INFO.print(); + INFO << "DEM output total lines : " << NrowsDEM; + INFO.print(); + INFO << "Radar coding of DEM in: " << numfullbuffers << " buffers of " + << bufferlines << " lines and " << extrabuffer << " extra buffer of " + << restlines << " lines."; + INFO.print(); + + + + // ______ Open (temporary) output files ______ + // DEM heights + ofstream demofile; + openfstream(demofile,demassistinput.fodem,generalinput.overwrit); // dem_crop radarcoded + bk_assert(demofile,demassistinput.fodem,__FILE__,__LINE__); + + // master line coordinates of DEM + ofstream masterdemlineoutfile("dac_m_demline.temp", ios::out | ios::trunc); + bk_assert(masterdemlineoutfile,"dac_m_demline.temp",__FILE__,__LINE__); + + // master pixel coordinates of DEM + ofstream masterdempixeloutfile("dac_m_dempixel.temp", ios::out | ios::trunc); + bk_assert(masterdempixeloutfile,"dac_m_dempixel.temp",__FILE__,__LINE__); + + // delta line coordinates of DEM ( slave-master ) + ofstream deltademlineoutfile("dac_delta_demline.temp", ios::out | ios::trunc); + bk_assert(deltademlineoutfile,"dac_delta_demline.temp",__FILE__,__LINE__); + + // delta pixel coordinates of DEM + ofstream deltadempixeloutfile("dac_delta_dempixel.temp", ios::out | ios::trunc); + bk_assert(deltadempixeloutfile,"dac_delta_dempixel.temp",__FILE__,__LINE__); + + + + // ______ DEM loop per buffer ______ + register int32 j,i;// DEM index grid counter, register j first to ensure allocation + for (register int32 buffer=0; buffer DEM(blines,NcolsDEM); + + // ______ Extra info ______ + PROGRESS << STEP << "Buffer# [l0:lN, p0:pN]: " << buffer+1 << " [" + << indexphi0BUFFER << ": " << indexphiNBUFFER << ", " + << indexlambda0DEM << ": " << indexlambdaNDEM << "]"; + PROGRESS.print(); + + // ______ lat/lon for first pixel in matrix read from file ______ + // ______ upper is max. latitude, left is min. longitude ______ + const real8 upperleftphi = lat0file-indexphi0BUFFER*DEMdeltalat; + const real8 upperleftlambda = lon0file+indexlambda0DEM*DEMdeltalon; + + window zerooffset (0,0,0,0); + window winfromfile (indexphi0BUFFER,indexphiNBUFFER, + indexlambda0DEM,indexlambdaNDEM); + + // ______ Read in grdfile of DEM in matrix R4 (raw data, no header) _______ + // ______ added formats (BK 4-May-2001) ______ + PROGRESS << STEP << "Reading crop of DEM for buffer: " << buffer+1; + PROGRESS.print(); + DEBUG.print("Reading input DEM into real4 matrix (buffer)."); + switch (demassistinput.iformatflag) + { + // ______ Read as short BE, then convert to host order ______ + case FORMATI2_BIGENDIAN: + { + matrix DEMi2(blines,NcolsDEM); + readfile(DEMi2,demassistinput.firefdem,numberoflatpixels,winfromfile,zerooffset); + for (int32 iii=0; iii DEMi2(blines,NcolsDEM); + readfile(DEMi2,demassistinput.firefdem,numberoflatpixels,winfromfile,zerooffset); + for (int32 iii=0; iii DEMr8(blines,NcolsDEM); + readfile(DEMr8,demassistinput.firefdem,numberoflatpixels,winfromfile,zerooffset); + for (int32 iii=0; iiimax_dem_buffer) max_dem_buffer=DEM(i,j);// stats + } + else + { + numNODATA++; + } + }//loop dem for stats + }//loop dem for stats + min_input_dem = min(min_input_dem,min_dem_buffer);//global stats + max_input_dem = max(max_input_dem,max_dem_buffer);//global stats + + + // ====== Radarcoding DEM ============================== + // ______ DEM contains values from leftupper with ______ + // ______ spacing (DEMdeltalat,DEMdeltalon) ______ + // ______ Transform DEM to l,p,refphase ______ + PROGRESS.print("Converting DEM to radar system for this buffer."); + const int32 NpointsDEM = DEM.size(); + const int32 NpixelsDEM = DEM.pixels(); + // ______ Extra info ______ + INFO << "Number of points in DEM: " + << NpointsDEM; + INFO.print(); + + matrix masterDEMline(DEM.lines(),DEM.pixels()); + matrix masterDEMpixel(DEM.lines(),DEM.pixels()); + matrix deltaDEMline(DEM.lines(),DEM.pixels()); + matrix deltaDEMpixel(DEM.lines(),DEM.pixels()); + + // --- Loop DEM --- + real8 phi,lambda,height,m_l,m_p,s_l,s_p; + + + phi = upperleftphi; + for (i=0; i Nlinesml) bufferlines=Nlinesml; + numfullbuffers = Nlinesml / bufferlines; + restlines = Nlinesml % bufferlines; // the number of lines in extra buffer + extrabuffer = (restlines == 0) ? 0 : 1; + + // ______ Extra info ______ + INFO << "Interpolation in: " << numfullbuffers << " buffers of " + << bufferlines << " lines and " << extrabuffer << " extra buffer of " + << restlines << " lines."; + INFO.print(); + + + // ______ Open output files ______ + ofstream deltalineofile("dac_delta_line.raw", ios::out | ios::trunc); + bk_assert(deltalineofile,"dac_delta_line.raw",__FILE__,__LINE__); + + ofstream deltapixelofile("dac_delta_pixel.raw", ios::out | ios::trunc); + bk_assert(deltapixelofile,"dac_delta_pixel.raw",__FILE__,__LINE__); + + // if request for height in radar coordinates l,p + ofstream refdemheiofile; + if (outputrefdemhei==true) + { + openfstream(refdemheiofile,demassistinput.forefdemhei,generalinput.overwrit); + bk_assert(refdemheiofile,demassistinput.forefdemhei,__FILE__,__LINE__); + } + + // ______ interpolation loop per buffer ______ + for (register int32 buffer = 0; buffer < numfullbuffers + extrabuffer; ++buffer) + { + + // Determine indices for buffer + const int32 blines = (buffer == numfullbuffers) ? restlines : bufferlines; + const real8 firstline_buffer = veryfirstline+buffer*bufferlines; + const real8 lastline_buffer = firstline_buffer+blines-1; + + // ______ Extra info ______ + PROGRESS << STEP << "Interpolation buffer: " << buffer+1 << "of" << numfullbuffers + extrabuffer << " [l0:lN, p0:pN]: " << " [" + << firstline_buffer << ": " << lastline_buffer << ", " + << firstpixel << ": " << lastpixel << "]"; + PROGRESS.print(); + + // Get corners of buffer + real8 phimin_az; + real8 phimax_az; + real8 lambdamin_az; + real8 lambdamax_az; + getcorners(firstline_buffer,lastline_buffer, + firstpixel,lastpixel, + extralat,extralong,phimax,lambdamin, + DEMdeltalat,DEMdeltalon,NrowsDEM,NcolsDEM, + ellips,master,masterorbit,phimin_az,phimax_az,lambdamin_az,lambdamax, + indexphi0DEM,indexphiNDEM,indexlambda0DEM,indexlambdaNDEM); + + window zerooffset (0,0,0,0); + window winfromfile (indexphi0DEM,indexphiNDEM, + indexlambda0DEM,indexlambdaNDEM); + const int32 NrowsDEM_buffer = indexphiNDEM-indexphi0DEM+1; + const int32 NcolsDEM_buffer = indexlambdaNDEM-indexlambda0DEM+1; + + PROGRESS << STEP << "Reading input for interpolation buffer: " << buffer+1 << "of" << numfullbuffers + extrabuffer; + PROGRESS.print(); + + // read x,y + matrix DEMline_buffer(NrowsDEM_buffer,NcolsDEM_buffer); + matrix DEMpixel_buffer(NrowsDEM_buffer,NcolsDEM_buffer); + + readfile(DEMline_buffer,"dac_m_demline.temp",NrowsDEM,winfromfile,zerooffset); + readfile(DEMpixel_buffer,"dac_m_dempixel.temp",NrowsDEM,winfromfile,zerooffset); + + // read z (multiple, number can easily be increased, e.g. simulated intensity) + int32 Nz = 2; //number of z + matrix input_buffer(NrowsDEM_buffer *Nz ,NcolsDEM_buffer); + matrix temp_input_buffer(NrowsDEM_buffer,NcolsDEM_buffer); + if (outputrefdemhei==true) + { + Nz += 1; + input_buffer.resize(NrowsDEM_buffer *Nz ,NcolsDEM_buffer); + } + + readfile(temp_input_buffer,"dac_delta_demline.temp",NrowsDEM,winfromfile,zerooffset); + input_buffer.setdata(0, 0, temp_input_buffer); + readfile(temp_input_buffer,"dac_delta_dempixel.temp",NrowsDEM,winfromfile,zerooffset); + input_buffer.setdata(NrowsDEM_buffer, 0, temp_input_buffer); + Nz = 2; + if (outputrefdemhei==true) + { + Nz += 1; + /// i would like to use real4, test later on + matrix dem_input(NrowsDEM_buffer,NcolsDEM_buffer); + readfile(dem_input,demassistinput.fodem,NrowsDEM,winfromfile,zerooffset); + for (register int32 i =0 ; i < NrowsDEM_buffer ; i ++) + for(register int32 j = 0; j < NcolsDEM_buffer; j++) + temp_input_buffer(i,j) = real8(dem_input(i,j)); + input_buffer.setdata(NrowsDEM_buffer * (Nz-1), 0, temp_input_buffer); + } + + // initialize output array + Nz = 2; + matrix output_buffer(blines * Nz, Npixelsml); + if (outputrefdemhei==true) + { + Nz += 1; + output_buffer.resize(blines * Nz, Npixelsml); + } + + // interpolation + griddatalinear(DEMline_buffer,DEMpixel_buffer,input_buffer, + firstline_buffer,lastline_buffer,firstpixel,lastpixel, + 1,1,r_az_ratio,0,NODATA,output_buffer); + + deltalineofile << output_buffer(window(0, blines - 1, 0, Npixelsml -1 )); + deltapixelofile << output_buffer(window(blines , 2 * blines - 1, 0, Npixelsml -1 )); + Nz = 2; + if (outputrefdemhei==true) + { + Nz += 1; + refdemheiofile << output_buffer(window((Nz-1) * blines,Nz * blines - 1, 0, Npixelsml -1 )); + } + + DEMline_buffer.resize(1,1); + DEMpixel_buffer.resize(1,1); + input_buffer.resize(1,1); + temp_input_buffer.resize(1,1); + output_buffer.resize(1,1); + + } // end loop azimuth direction + + INFO << "Closing output files"; + INFO.print(); + + deltalineofile.close(); + deltapixelofile.close(); + if (outputrefdemhei==true) // Radarcoded DEM + refdemheiofile.close(); + + //=================================================================== + //============ End second loop: interpolation ============= + //============ (radar geometry) ============= + //=================================================================== + + + //=================================================================== + //============ Determine inverse transformation ============= + //============ (slave corners only, needed for overlap) ============= + //=================================================================== + + real8 line, pixel; + real8 deltaline_slave00,deltapixel_slave00, + deltaline_slave0N,deltapixel_slave0N, + deltaline_slaveN0,deltapixel_slaveN0, + deltaline_slaveNN,deltapixel_slaveNN; + real8 phimin_az,phimax_az,lambdamin_az,lambdamax_az; + + + for (register int16 corner = 0 ; corner < 4 ; corner ++) + { + + PROGRESS << "Radarcoding slave corner: " << corner+1; + PROGRESS.print(); + + switch (corner) + { + case 0: + { + line=slave.currentwindow.linelo; + pixel=slave.currentwindow.pixlo; + break; + } + case 1: + { + line=slave.currentwindow.linelo; + pixel=slave.currentwindow.pixhi; + break; + } + case 2: + { + line=slave.currentwindow.linehi; + pixel=slave.currentwindow.pixlo; + break; + } + case 3: + { + line=slave.currentwindow.linehi; + pixel=slave.currentwindow.pixhi; + break; + } + default: + PRINT_ERROR("totally impossible, checked input."); + + } + + //use getcorners with line,line,pixel,pixel for single point + getcorners(line,line,pixel,pixel, + extralat,extralong,lat0file,lon0file, + DEMdeltalat,DEMdeltalon,numberoflatpixels,numberoflonpixels, + ellips,slave,slaveorbit, + phimin_az,phimax_az,lambdamin_az,lambdamax, + indexphi0DEM,indexphiNDEM,indexlambda0DEM,indexlambdaNDEM); + + + NcolsDEM = indexlambdaNDEM-indexlambda0DEM+1; + NrowsDEM = indexphiNDEM-indexphi0DEM+1; + const real8 upperleftphi = lat0file-indexphi0DEM*DEMdeltalat; + const real8 upperleftlambda = lon0file+indexlambda0DEM*DEMdeltalon; + + window zerooffset (0,0,0,0); + window winfromfile (indexphi0DEM,indexphiNDEM, + indexlambda0DEM,indexlambdaNDEM); + + + // ______ Read in DEM in matrix R4 (raw data, no header) _______ + + matrix DEM(NrowsDEM,NcolsDEM); + + switch (demassistinput.iformatflag) + { + // ______ Read as short BE, then convert to host order ______ + case FORMATI2_BIGENDIAN: + { + matrix DEMi2(NrowsDEM,NcolsDEM); + readfile(DEMi2,demassistinput.firefdem,numberoflatpixels,winfromfile,zerooffset); + for (int32 iii=0; iii DEMi2(NrowsDEM,NcolsDEM); + readfile(DEMi2,demassistinput.firefdem,numberoflatpixels,winfromfile,zerooffset); + for (int32 iii=0; iii DEMr8(NrowsDEM,NcolsDEM); + readfile(DEMr8,demassistinput.firefdem,numberoflatpixels,winfromfile,zerooffset); + for (int32 iii=0; iii slaveDEMline(DEM.lines(),DEM.pixels()); + matrix slaveDEMpixel(DEM.lines(),DEM.pixels()); + matrix deltaDEMline(DEM.lines(),DEM.pixels()); + matrix deltaDEMpixel(DEM.lines(),DEM.pixels()); + + // --- Loop DEM --- + real8 phi,lambda,height,m_l,m_p,s_l,s_p; + + + phi = upperleftphi; + for (i=0; i input_buffer(DEM.lines()*2,DEM.pixels()); + input_buffer.setdata(0, 0, deltaDEMline); + input_buffer.setdata(DEM.lines(), 0, deltaDEMpixel); + + matrix output_buffer(2,1); + + griddatalinear(slaveDEMline,slaveDEMpixel,input_buffer, + line,line,pixel,pixel, + 1,1,r_az_ratio,0,NODATA,output_buffer); + + switch (corner) + { + case 0: + { + deltaline_slave00 = output_buffer(0,0); + deltapixel_slave00 = output_buffer(1,0); + INFO << "Deltaline_slave00: " << deltaline_slave00; + INFO.print(); + INFO << "Deltapixel_slave00: " << deltapixel_slave00; + INFO.print(); + break; + } + case 1: + { + deltaline_slave0N = output_buffer(0,0); + deltapixel_slave0N = output_buffer(1,0); + INFO << "Deltaline_slave0N: " << deltaline_slave0N; + INFO.print(); + INFO << "Deltapixel_slave0N: " << deltapixel_slave0N; + INFO.print(); + break; + } + case 2: + { + deltaline_slaveN0 = output_buffer(0,0); + deltapixel_slaveN0 = output_buffer(1,0); + INFO << "Deltaline_slaveN0: " << deltaline_slaveN0; + INFO.print(); + INFO << "Deltapixel_slaveN0: " << deltapixel_slaveN0; + INFO.print(); + break; + } + case 3: + { + deltaline_slaveNN = output_buffer(0,0); + deltapixel_slaveNN = output_buffer(1,0); + INFO << "Deltaline_slaveNN: " << deltaline_slaveNN; + INFO.print(); + INFO << "Deltapixel_slaveNN: " << deltapixel_slaveNN; + INFO.print(); + break; + } + default: + PRINT_ERROR("totally impossible, checked input."); + + } + + } + + //=================================================================== + //============ End determine inverse transformation ============= + //============ (slave corners only, needed for overlap) ============= + //=================================================================== + + + // ====== Write output information ====== + char croppeddemi[4*ONE27]; + strcpy(croppeddemi,"NO output requested"); + if (outputdemi) strcpy(croppeddemi,demassistinput.fodemi); + INFO << "Min. value of input DEM covering master: " << min_input_dem; + INFO.print(); + INFO << "Max. value of input DEM covering master: " << max_input_dem; + INFO.print(); + + ofstream scratchlogfile("scratchlogdemassist", ios::out | ios::trunc); + bk_assert(scratchlogfile,"demassist: scratchlogdemassist",__FILE__,__LINE__); + scratchlogfile + << "\n*******************************************************************" + << "\n* " << processcontrol[pr_i_demassist] + << "\n*******************************************************************" + << "\n1) DEM source file: \t" << demassistinput.firefdem + << "\nFormat: \t"; + switch (demassistinput.iformatflag) + { + case FORMATI2: + { + scratchlogfile << "SHORT SIGNED INTEGER (HOST ENDIANNESS)"; + break; + } + case FORMATI2_BIGENDIAN: + { + scratchlogfile << "SHORT SIGNED INTEGER, BIG ENDIAN"; + break; + } + case FORMATR4: + { + scratchlogfile << "REAL4 SIGNED FLOAT"; + break; + } + case FORMATR8: + { + scratchlogfile << "REAL8 SIGNED DOUBLE"; + break; + } + default: + { + scratchlogfile << "UNKNOWN? IMPOSSIBLE..."; + break; + } + } + scratchlogfile + << "\nByte order: \t" << "check it yourself..." + << "\nNumber of lines: \t" << numberoflatpixels + << "\nNumber of pixels: \t" << numberoflonpixels + << "\nResolution latitude: \t" << rad2deg(DEMdeltalat) << " [deg]" + << "\nResolution longitude: \t" << rad2deg(DEMdeltalon) << " [deg]" + << "\nMost West point in input DEM: \t" << rad2deg(lon0file) + << "\nMost East point in input DEM: \t" << rad2deg(lonNfile) + << "\nMost South point in input DEM: \t" << rad2deg(latNfile) + << "\nMost North point in input DEM: \t" << rad2deg(lat0file) + << "\nMin. value of input DEM covering master: " << min_input_dem + << "\nMax. value of input DEM covering master: " << max_input_dem + << "\n2) Output file cropped DEM: \t" << demassistinput.fodem //[FVL + << "\nFormat: \t" << "REAL4" + << "\nByte order: \t" << "(same as host)" + << "\nNumber of lines : \t" << NrowsDEMlog + << "\nNumber of pixels : \t" << NcolsDEMlog + << "\nDEM extend w/e/s/n : \t" << rad2deg(lambdamin) << "/" + << rad2deg(lambdamax) << "/" << rad2deg(phimin) << "/" << rad2deg(phimax) +// << "\nMean value: \t" << meancroppedDEM + << "\n3) Output file interpolated crop DEM: \t" << croppeddemi + << "\nFormat: \t" << "REAL4" + << "\nByte order: \t" << "(same as host)" + << "\nNumber of lines (multilooked): \t" << Nlinesml + << "\nNumber of pixels (multilooked): \t" << Npixelsml + << "\nDeltaline_slave00_dem: \t" << deltaline_slave00 + << "\nDeltapixel_slave00_dem: \t" << deltapixel_slave00 + << "\nDeltaline_slave0N_dem: \t" << deltaline_slave0N + << "\nDeltapixel_slave0N_dem: \t" << deltapixel_slave0N + << "\nDeltaline_slaveN0_dem: \t" << deltaline_slaveN0 + << "\nDeltapixel_slaveN0_dem: \t" << deltapixel_slaveN0 + << "\nDeltaline_slaveNN_dem: \t" << deltaline_slaveNN + << "\nDeltapixel_slaveNN_dem: \t" << deltapixel_slaveNN + << "\n*******************************************************************\n\n"; + scratchlogfile.close(); + + + ofstream scratchresfile("scratchresdemassist", ios::out | ios::trunc); + bk_assert(scratchresfile,"demassist: scratchresdemassist",__FILE__,__LINE__); + scratchresfile + << "\n\n*******************************************************************" + << "\n*_Start_" << processcontrol[pr_i_demassist] + << "\n*******************************************************************"; + scratchresfile + << "\nDEM source file: \t" << demassistinput.firefdem + << "\nMin. of input DEM: \t" << min_input_dem + << "\nMax. of input DEM: \t" << max_input_dem + << "\nFirst_line (w.r.t. original_master): \t" + << master.currentwindow.linelo + << "\nLast_line (w.r.t. original_master): \t" + << master.currentwindow.linehi + << "\nFirst_pixel (w.r.t. original_master): \t" + << master.currentwindow.pixlo + << "\nLast_pixel (w.r.t. original_master): \t" + << master.currentwindow.pixhi + << "\nNumber of lines: \t" << Nlinesml + << "\nNumber of pixels: \t" << Npixelsml + << "\nDeltaline_slave00_dem: \t" << deltaline_slave00 + << "\nDeltapixel_slave00_dem: \t" << deltapixel_slave00 + << "\nDeltaline_slave0N_dem: \t" << deltaline_slave0N + << "\nDeltapixel_slave0N_dem: \t" << deltapixel_slave0N + << "\nDeltaline_slaveN0_dem: \t" << deltaline_slaveN0 + << "\nDeltapixel_slaveN0_dem: \t" << deltapixel_slaveN0 + << "\nDeltaline_slaveNN_dem: \t" << deltaline_slaveNN + << "\nDeltapixel_slaveNN_dem: \t" << deltapixel_slaveNN + << "\n*******************************************************************" + << "\n* End_" << processcontrol[pr_i_demassist] << "_NORMAL" + << "\n*******************************************************************\n"; + scratchresfile.close(); + + + } // END demassist + + +/**************************************************************** + * radarcodedem (a.k.a comprefdem) * + * * + * Compute reference phase based on DEM (SRTM) * + * DEM on equiangular grid (lat/lon) assumed * + * DEM seems stored from North to South * + * * + * Freek van Leijen, 26-Sep-2007 * + ****************************************************************/ +void radarcodedem( + const input_gen &generalinput, + const input_ell &ellips, + const input_comprefdem &refdeminput, + const slcimage &master, + const slcimage &slave, + const productinfo &interferogram, + orbit &masterorbit, + orbit &slaveorbit) + { + TRACE_FUNCTION("radarcodedem (FvL 26-Sep-2007)") + + const string STEP="CRD: "; + const int32 MAXITER = 10; + const real8 CRITERPOS = 1e-6; + const real8 CRITERTIM = 1e-10; + + const real8 lat0file = refdeminput.demlatleftupper; // first pix on disk w02090 + const real8 lon0file = refdeminput.demlonleftupper; // first pix on disk + const real8 DEMdeltalat = refdeminput.demdeltalat; // in radians + const real8 DEMdeltalon = refdeminput.demdeltalon; // in radians + const int32 numberoflonpixels = refdeminput.demcols; // NCOLS on file + const int32 numberoflatpixels = refdeminput.demrows; // NROWS on file + const real8 NODATA = refdeminput.demnodata; // (BK 4 may 2001) + bool onlyrefphasetopo = !refdeminput.includerefpha; // true: phase DEM w.r.t. ellipsoid + const bool outputdemi = specified(refdeminput.fodemi); // if spec. then output + const bool outputh2ph = specified(refdeminput.foh2ph); // if spec. then output, added by FvL + const bool outputrefdemhei = specified(refdeminput.forefdemhei); + + // _____ start added by MA _____ + bool mlookedIFG = false; // true: ifg is multilooked + + int32 mlL = interferogram.multilookL; // initialize multilookfactor + int32 mlP = interferogram.multilookP; + const int32 &ifgmlL = interferogram.multilookL; // multilookfactor of interferogram + const int32 &ifgmlP = interferogram.multilookP; // multilookfactor of interferogram + if ( ifgmlL != 1 || ifgmlP != 1 ) // [MA] additional entry for Coherence comptation using refdem. + { // always do computation without multilooking + mlL = 1; // set multilookfactor for interpolation + mlP = 1; // set multilookfactor for interpolation + mlookedIFG = true; // dealing with mlooked ifg. + } + // _____ end added by MA _____ + + + + const real8 m_min4picdivlam = (-4.0*PI*SOL)/master.wavelength; + const real8 s_min4picdivlam = (-4.0*PI*SOL)/slave.wavelength; + DEBUG << "master wavelength = " << master.wavelength; + DEBUG.print(); + DEBUG << "slave wavelength = " << slave.wavelength; + DEBUG.print(); + + const real8 latNfile = lat0file-DEMdeltalat*(numberoflatpixels-1); // upper=max. lat value + const real8 lonNfile = lon0file+DEMdeltalon*(numberoflonpixels-1); // left=min. lon value + + // ______ Extra info ______ + INFO << "DEM input: w/e/s/n: \t" + << rad2deg(lon0file) << "/" << rad2deg(lonNfile) << "/" + << rad2deg(latNfile) << "/" << rad2deg(lat0file); + INFO.print(); + + // ______ Get corners of interferogram (approx) to select DEM ______ + // ______ in radians (if height were zero)______ + real8 extralat = (1.5*DEMdeltalat + deg2rad(4.0/25.0)); + real8 extralong = (1.5*DEMdeltalon + deg2rad(4.0/25.0)); + + real8 phimin; + real8 phimax; + real8 lambdamin; + real8 lambdamax; + int32 indexphi0DEM; + int32 indexphiNDEM; + int32 indexlambda0DEM; + int32 indexlambdaNDEM; + const uint &ifglinelo = interferogram.win.linelo; // [MA] win no-mlooked master coords + const uint &ifglinehi = interferogram.win.linehi; + const uint &ifgpixlo = interferogram.win.pixlo; + const uint &ifgpixhi = interferogram.win.pixhi; + + getcorners(ifglinelo,ifglinehi, + ifgpixlo,ifgpixhi, + extralat,extralong,lat0file,lon0file, + DEMdeltalat,DEMdeltalon,numberoflatpixels,numberoflonpixels, + ellips,master,masterorbit,phimin,phimax,lambdamin,lambdamax, + indexphi0DEM,indexphiNDEM,indexlambda0DEM,indexlambdaNDEM); + + // ______ Extra info ______ + INFO << "DEM input required: w/e/s/n: \t" + << rad2deg(lambdamin) << "/" << rad2deg(lambdamax) << "/" + << rad2deg(phimin) << "/" << rad2deg(phimax); + INFO.print(); + INFO << "For window (l0,lN,p0,pN): \t" + << ifglinelo << " " + << ifglinehi << " " + << ifgpixlo << " " + << ifgpixhi; + INFO.print(); + + + // ______ Check corners of DEM ______ + // check if DEM is appropriate for interferogram + // DEM should at least partially cover IFG + // note: phi is [90:-90] + if (phimax <= latNfile)// DEM is more north than IFG + { + ERROR << "IFG outside DEM: most South latitude: " << rad2deg(latNfile) + << " [deg]; IFG requires: " << rad2deg(phimax) + << " [deg]"; + PRINT_ERROR(ERROR.get_str()) + throw(some_error); + } + // DEM is more south than IFG + if (phimin >= lat0file)// largest latitude at first line of file + { + ERROR << "IFG outside DEM: most North latitude: " << rad2deg(lat0file) + << " [deg]; IFG requires: " << rad2deg(phimax) + << " [deg]"; + PRINT_ERROR(ERROR.get_str()) + throw(some_error); + } + if (lambdamax <= lon0file) + { + ERROR << "IFG outside DEM: most West longitude: " << rad2deg(lon0file) + << " [deg]; IFG window requires: " << rad2deg(lambdamax) + << " [deg]"; + PRINT_ERROR(ERROR.get_str()) + throw(some_error); + } + if (lambdamin >= lonNfile) + { + ERROR << "IFG outside DEM: most East longitude: " << rad2deg(lonNfile) + << " [deg]; IFG window requires: " << rad2deg(lambdamin) + << " [deg]"; + PRINT_ERROR(ERROR.get_str()) + throw(some_error); + } + + + //=================================================================== + //============ First loop: radarcode DEM ============================ + //============ (DEM geometry) ============================ + //=================================================================== + + int32 numvalid = 0;// number of good values, not NODATA in buffer + int32 numNODATA = 0;// number of NODATA values in buffer + real8 meancroppedDEM = 0.0;// to detect byte order problems, formats + real8 min_input_dem = 100000.0;// stats + real8 max_input_dem = -100000.0;// stats + + // ______ Compute buffer size radarcoding DEM______ + const real8 BUFFERMEMSIZE = generalinput.memory;// Bytes + const int32 NcolsDEM = indexlambdaNDEM-indexlambda0DEM+1; + const int32 NrowsDEM = indexphiNDEM-indexphi0DEM+1; + const real8 Nrows_possible_DEM = BUFFERMEMSIZE / (5*8*NcolsDEM); + int32 bufferlines = int32(ceil(Nrows_possible_DEM)); + INFO << "Possible max. buffer lines: " << bufferlines << " for " << BUFFERMEMSIZE << " memory size."; + INFO.print(); + if (bufferlines>NrowsDEM) bufferlines=NrowsDEM; + int32 numfullbuffers = NrowsDEM / bufferlines; + int32 restlines = NrowsDEM % bufferlines; + int32 extrabuffer = (restlines == 0) ? 0 : 1; + + // ______ Extra info ______ + INFO << "DEM output total pixels: " << NcolsDEM; + INFO.print(); + INFO << "DEM output total lines : " << NrowsDEM; + INFO.print(); + INFO << "Radar coding of DEM in: " << numfullbuffers << " buffers of " + << bufferlines << " lines and " << extrabuffer << " extra buffer of " + << restlines << " lines."; + INFO.print(); + + + + // ______ Open (temporary) output files ______ + // DEM heights + INFO< DEM(blines,NcolsDEM); + + // ______ Extra info ______ + PROGRESS << STEP << "Buffer# [l0:lN, p0:pN]: " << buffer+1 << " [" + << indexphi0BUFFER << ": " << indexphiNBUFFER << ", " + << indexlambda0DEM << ": " << indexlambdaNDEM << "]"; + PROGRESS.print(); + + // ______ lat/lon for first pixel in matrix read from file ______ + // ______ upper is max. latitude, left is min. longitude ______ + const real8 upperleftphi = lat0file-indexphi0BUFFER*DEMdeltalat; + const real8 upperleftlambda = lon0file+indexlambda0DEM*DEMdeltalon; + + window zerooffset (0,0,0,0); + window winfromfile (indexphi0BUFFER,indexphiNBUFFER, + indexlambda0DEM,indexlambdaNDEM); + + // ______ Read in grdfile of DEM in matrix R4 (raw data, no header) _______ + // ______ added formats (BK 4-May-2001) ______ + PROGRESS << STEP << "Reading crop of DEM for buffer: " << buffer+1; + PROGRESS.print(); + DEBUG.print("Reading input DEM into real4 matrix (buffer)."); + INFO<< "file info: name: " << refdeminput.firefdem <<", nof flat pixels, " << numberoflatpixels << endl; + INFO<< "file info, Format : " << refdeminput.iformatflag< DEMi2(blines,NcolsDEM); + readfile(DEMi2,refdeminput.firefdem,numberoflatpixels,winfromfile,zerooffset); + for (int32 iii=0; iii DEMi2(blines,NcolsDEM); + readfile(DEMi2,refdeminput.firefdem,numberoflatpixels,winfromfile,zerooffset); + for (int32 iii=0; iii DEMr8(blines,NcolsDEM); + readfile(DEMr8,refdeminput.firefdem,numberoflatpixels,winfromfile,zerooffset); + for (int32 iii=0; iiimax_dem_buffer) max_dem_buffer=DEM(i,j);// stats + } + else + { + numNODATA++; + } + }//loop dem for stats + }//loop dem for stats + min_input_dem = min(min_input_dem,min_dem_buffer);//global stats + max_input_dem = max(max_input_dem,max_dem_buffer);//global stats + + + // ====== Radarcoding DEM ============================== + // ______ DEM contains values from leftupper with ______ + // ______ spacing (DEMdeltalat,DEMdeltalon) ______ + // ______ Transform DEM to l,p,refphase ______ + PROGRESS.print("Converting DEM to radar system for this buffer."); + const int32 NpointsDEM = DEM.size(); + const int32 NpixelsDEM = DEM.pixels(); + // ______ Extra info ______ + INFO << "Number of points in DEM: " + << NpointsDEM; + INFO.print(); + + matrix masterDEMline(DEM.lines(),DEM.pixels()); + matrix masterDEMpixel(DEM.lines(),DEM.pixels()); + matrix ref_phase_array(DEM.lines(),DEM.pixels()); + matrix h2ph_array(DEM.lines(),DEM.pixels()); + + // --- Loop DEM --- + cn P; + real8 phi,lambda,height,l,p,ref_phase; + + + phi = upperleftphi; + for (i=0; i theta_slave ) ? // sign ok + sqrt(sqr(B)-sqr(Bpar)) : + -sqrt(sqr(B)-sqr(Bpar)) ; + + h2ph_array(i,j) = Bperp/(t_range_master*SOL*sin(theta)); +} + + + if (onlyrefphasetopo) // do not include flat earth phase + { + lp2xyz(l,p,ellips, // h==0 + master, masterorbit, + P,MAXITER,CRITERPOS); // P returned + + real8 t_range_flatearth,t_azi_dummy; + + xyz2t(t_azi_dummy,t_range_flatearth, + slave,slaveorbit, + P,MAXITER,CRITERTIM); // P on h=0 + ref_phase = s_min4picdivlam*t_range_flatearth- + s_min4picdivlam*t_range_slave; + } + else // include flatearth, ref.pha = phi_topo+phi_flatearth + { + ref_phase = + m_min4picdivlam*master.pix2tr(p)- + s_min4picdivlam*t_range_slave; + } + + ref_phase_array(i,j) = ref_phase; + + lambda += DEMdeltalon; + } // loop DEM pixels + + // ______ update latitude of next line ______ + phi -= DEMdeltalat; // upper left is max. value + } // loop DEM lines + + + // Write results to output files + PROGRESS << STEP << "Writing radar coded DEM to file, buffer: " << buffer+1 << " of " << numfullbuffers + extrabuffer ; + PROGRESS.print(); + + demofile << DEM; + masterdemlineoutfile << masterDEMline; + masterdempixeloutfile << masterDEMpixel; + demrefphaseoutfile << ref_phase_array; +if (outputh2ph==true) + demh2phoutfile << h2ph_array; + + masterDEMline.resize(1,1); //deallocate + masterDEMpixel.resize(1,1); //deallocate + DEM.resize(1,1); //deallocate + ref_phase_array(1,1); //deallocate + h2ph_array(1,1); //deallocate + } // buffer loop + + demofile.close(); + masterdemlineoutfile.close(); + masterdempixeloutfile.close(); + demrefphaseoutfile.close(); +if (outputh2ph==true) + demh2phoutfile.close(); + + + //=================================================================== + //============ End first loop: radarcode DEM ======================== + //============ (DEM geometry) ============================ + //=================================================================== + + + //=================================================================== + //============ Second loop: interpolation ============= + //============ (radar geometry) ============= + //=================================================================== + + INFO << STEP << "Start interpolation..."; + INFO.print(); + + // ______ Line/pixel of first point in original master coordinates ______ + // ______ maybe this should be changed to be x+(ml/2) ?? but depends on + // ______ definition of range_to_first_bin is to center or start.. + // Bert Kampes, 08-Apr-2005: chose center by adding ml/2 + const int32 Nlinesml = interferogram.win.lines() / mlL; // ifg lines when mlL = 1 (no multilooking) + const int32 Npixelsml = interferogram.win.pixels() / mlP; + const int32 ifgNlinesml = interferogram.win.lines() / ifgmlL; // for the result file when mlL != 1 + const int32 ifgNpixelsml = interferogram.win.pixels() / ifgmlP; + const real8 offset = 0; + +//cerr << "xNFO: linesnoml: " << Nlinesml << " pixnoml: " << Npixelsml << endl; +//cerr << "xNFO: ifglinesml: " << ifgNlinesml << " ifgpixml: " << ifgNpixelsml << endl; + + const real8 veryfirstline = real8(ifglinelo) + (real8(mlL)-1.0)/2.0; + const real8 verylastline = veryfirstline + real8((Nlinesml-1)*mlL); + const real8 firstpixel = real8(ifgpixlo) + (real8(mlP)-1.0)/2.0; + const real8 lastpixel = firstpixel + real8((Npixelsml-1)*mlP); + +//cerr << "xNFO: vl0:vlN " << veryfirstline << ":" << verylastline << " p1:pN " << firstpixel << ":" << lastpixel << endl; + + //Determine range-azimuth spacing ratio, needed for proper triangulation + cn P1, P2 , P3, P4; + lp2xyz(veryfirstline,firstpixel,ellips,master,masterorbit, + P1,MAXITER,CRITERPOS); + lp2xyz(veryfirstline,lastpixel,ellips,master,masterorbit, + P2,MAXITER,CRITERPOS); + lp2xyz(verylastline,firstpixel,ellips,master,masterorbit, + P3,MAXITER,CRITERPOS); + lp2xyz(verylastline,lastpixel,ellips,master,masterorbit, + P4,MAXITER,CRITERPOS); + + const real8 r_spacing = ( (P1.min(P2)).norm() + (P3.min(P4)).norm() ) / 2 /(lastpixel - firstpixel) ; + const real8 az_spacing = ( (P1.min(P3)).norm() + (P2.min(P4)).norm() ) /2 /(verylastline - veryfirstline); + const real8 r_az_ratio = r_spacing/az_spacing; + + INFO << "Interferogram azimuth spacing: " << az_spacing; + INFO.print(); + INFO << "Interferogram range spacing: " << r_spacing; + INFO.print(); + INFO << "Range-azimuth spacing ratio: " << r_az_ratio; + INFO.print(); + + // ______ Compute buffer size interpolation______ + const real8 Nlinesml_possible = BUFFERMEMSIZE / (6*8*Npixelsml); + bufferlines = int32(ceil(Nlinesml_possible)); // initialized + + if ( mlookedIFG == true) // if ifg is multilooked by a factor + { + bufferlines = int32( floor(Nlinesml_possible/ifgmlL) * ifgmlL ); // [HB] Hermann provided the fix: + // Successive bufferlines must have a size which is multiple of multilooking factor + // unless data can fit completely to an initial single buffer. + // Extra buffer will scale correctly and rounding due to multilooking + // will yield correct number lines for the output file. + // Ex: floor(2097/25)*2 + floor(1578/25) = 229 lines (wrong) (bufferlines/mlL)*Nbuffers+extrabufferlines/mlL + } // Ex: floor(2075/25)*25*2 + floor(1622/25) = 230 lines (correct) + else // no-multilooking + { + bufferlines = int32( floor(Nlinesml_possible) ); // [MA] instead of ceil, prefered floor to use less mem + } + if (bufferlines > Nlinesml) bufferlines=Nlinesml; // if bufferlines > Nlines then shrink bufferlines to Nlines, no extra buffer requested. + INFO << "Possible max. buffer lines: " << bufferlines << " for " << BUFFERMEMSIZE << " memory size."; + INFO.print(); + numfullbuffers = Nlinesml / bufferlines; + restlines = Nlinesml % bufferlines; // the number of lines in extra buffer + extrabuffer = (restlines == 0) ? 0 : 1; + + // ______ Extra info ______ + INFO << "Interpolation in: " << numfullbuffers << " buffers of " + << bufferlines << " lines and " << extrabuffer << " extra buffer of " + << restlines << " lines."; + INFO.print(); + +INFO << "OutputFile forefdem: "<< refdeminput.forefdem; +INFO.print(); + // ______ Open output files ______ + ofstream refdemofile; // refdem phase + openfstream(refdemofile,refdeminput.forefdem,generalinput.overwrit); + bk_assert(refdemofile,refdeminput.forefdem,__FILE__,__LINE__); + + // _____ start added by MA _____ + ofstream refdemofilenoML; // [MA] refdem phase no-multilooked + { // local scope practice + string fname = string(refdeminput.forefdem) + ".noML"; // new name as m_s_refdemphase.raw.noML + if ( mlookedIFG == true) // if ifg is multilooked by a factor + { + openfstream(refdemofilenoML,fname.c_str(),generalinput.overwrit); + bk_assert(refdemofilenoML,fname.c_str(),__FILE__,__LINE__); + } + else // no-multilooking + { + if(!remove(fname.c_str())) // when success report removed. + { + WARNING << "Removed existing " << fname << "file."; + WARNING.print(); + } + } + } + // _____ end added by MA _____ + + // if request for height in radar coordinates l,p + ofstream refdemheiofile;// Radarcoded DEM (Z.Perski) + if (outputrefdemhei==true) + { + INFO << "OutputFile forefdemhei: "<< refdeminput.forefdemhei; + INFO.print(); + + openfstream(refdemheiofile,refdeminput.forefdemhei,generalinput.overwrit); + bk_assert(refdemheiofile,refdeminput.forefdemhei,__FILE__,__LINE__); + } + + // if request for h2ph in radar coordinates l,p + ofstream h2phofile; + if (outputh2ph==true) + { + openfstream(h2phofile,refdeminput.foh2ph,generalinput.overwrit); + bk_assert(h2phofile,refdeminput.foh2ph,__FILE__,__LINE__); + } + + // ______ interpolation loop per buffer ______ + for (register int32 buffer = 0; buffer < numfullbuffers + extrabuffer; ++buffer) + { + + // Determine indices for buffer + const int32 blines = (buffer == numfullbuffers) ? restlines : bufferlines; + const real8 firstline_buffer = veryfirstline+buffer*bufferlines*mlL; + const real8 lastline_buffer = firstline_buffer+(blines-1)*mlL; + + // ______ Extra info ______ + PROGRESS << STEP << "Interpolation buffer: " << buffer+1 << "of" << numfullbuffers + extrabuffer << " [l0:lN, p0:pN]: " << " [" + << firstline_buffer << ": " << lastline_buffer << ", " + << firstpixel << ": " << lastpixel << "]"; + PROGRESS.print(); + + // Get corners of buffer + real8 phimin_az; + real8 phimax_az; + real8 lambdamin_az; + real8 lambdamax_az; + getcorners(firstline_buffer+offset,lastline_buffer+offset, + firstpixel+offset,lastpixel+offset, + extralat,extralong,phimax,lambdamin, + DEMdeltalat,DEMdeltalon,NrowsDEM,NcolsDEM, + ellips,master,masterorbit,phimin_az,phimax_az,lambdamin_az,lambdamax, + indexphi0DEM,indexphiNDEM,indexlambda0DEM,indexlambdaNDEM); + + window zerooffset (0,0,0,0); + window winfromfile (indexphi0DEM,indexphiNDEM, + indexlambda0DEM,indexlambdaNDEM); + const int32 NrowsDEM_buffer = indexphiNDEM-indexphi0DEM+1; + const int32 NcolsDEM_buffer = indexlambdaNDEM-indexlambda0DEM+1; + + PROGRESS << STEP << "Reading input for interpolation buffer: " << buffer+1 << "of" << numfullbuffers + extrabuffer; + PROGRESS.print(); + + // read x,y + matrix DEMline_buffer(NrowsDEM_buffer,NcolsDEM_buffer); + matrix DEMpixel_buffer(NrowsDEM_buffer,NcolsDEM_buffer); + + readfile(DEMline_buffer,"crd_m_demline.temp",NrowsDEM,winfromfile,zerooffset); + readfile(DEMpixel_buffer,"crd_m_dempixel.temp",NrowsDEM,winfromfile,zerooffset); + + // read z (multiple, number can easily be increased, e.g. simulated intensity) + int32 Nz = 1; //number of z + matrix input_buffer(NrowsDEM_buffer *Nz ,NcolsDEM_buffer); + matrix temp_input_buffer(NrowsDEM_buffer,NcolsDEM_buffer); + if (outputrefdemhei==true) + { + Nz += 1; + input_buffer.resize(NrowsDEM_buffer *Nz ,NcolsDEM_buffer); + } + if (outputh2ph==true) + { + Nz += 1; + input_buffer.resize(NrowsDEM_buffer *Nz ,NcolsDEM_buffer); + } + + readfile(temp_input_buffer,"crd_dem_refphase.temp",NrowsDEM,winfromfile,zerooffset); + input_buffer.setdata(0, 0, temp_input_buffer); + Nz = 1; + if (outputrefdemhei==true) + { + Nz += 1; + /// i would like to use real4, test later on + matrix dem_input(NrowsDEM_buffer,NcolsDEM_buffer); + readfile(dem_input,refdeminput.fodem,NrowsDEM,winfromfile,zerooffset); + for (register int32 i =0 ; i < NrowsDEM_buffer ; i ++) + for(register int32 j = 0; j < NcolsDEM_buffer; j++) + temp_input_buffer(i,j) = real8(dem_input(i,j)); + input_buffer.setdata(NrowsDEM_buffer * (Nz-1), 0, temp_input_buffer); + } + if (outputh2ph==true) + { + Nz += 1; + readfile(temp_input_buffer,"crd_dem_h2ph.temp",NrowsDEM,winfromfile,zerooffset); + input_buffer.setdata(NrowsDEM_buffer * (Nz-1) , 0, temp_input_buffer); + } + + // initialize output array + Nz = 1; + matrix output_buffer(blines * Nz, Npixelsml); + + if (outputrefdemhei==true) + { + Nz += 1; + output_buffer.resize(blines * Nz, Npixelsml); + } + if (outputh2ph==true) + { + Nz += 1; + output_buffer.resize(blines * Nz, Npixelsml); + } + + + // interpolation + griddatalinear(DEMline_buffer,DEMpixel_buffer,input_buffer, + firstline_buffer,lastline_buffer,firstpixel,lastpixel, + mlL,mlP,r_az_ratio,offset,NODATA,output_buffer); + + + //MA multilooking will start here. + //MA cast all output files to type real4 + matrix output_layer(blines,Npixelsml); + + Nz = 1; // matrix 3rd dimension counter, 1 --> PHASE + + for (register int32 i =0 ; i < blines ; i++) + for(register int32 j = 0; j < Npixelsml; j++) + output_layer(i,j) = real4(output_buffer(i,j)); // real8 --> real4 + // convert_type(output_buffer,output_layer); // TODO MA, should replace above 3 lines but this one doesn't work properly yet + + cerr << "refphase: blines: " << blines << " Npixelsml " << Npixelsml << endl; + INFO << "size buffer: lines: " << output_layer.lines()<< ", " << output_layer.pixels() < real4 + //refdemheiofile << output_layer; // output reference dem heights + (mlookedIFG == true) ? refdemheiofile << multilook(output_layer, ifgmlL, ifgmlP) // [MA] + : refdemheiofile << output_layer ; + //refdemheiofile << output_buffer(window((Nz-1) * blines,Nz * blines - 1, 0, Npixelsml -1 )); + } + if (outputh2ph==true) + { + Nz += 1; + for (register int32 i = blines * (Nz-1) ; i < blines * Nz ; i++) + for(register int32 j = 0; j < Npixelsml; j++) + output_layer(i-(blines * (Nz-1)),j) = real4(output_buffer(i,j)); // real8 --> real4 + //h2phofile << output_layer; // output h2ph matrix + (mlookedIFG == true) ? h2phofile << multilook(output_layer, ifgmlL, ifgmlP) // [MA] + : h2phofile << output_layer; + //h2phofile << output_buffer(window((Nz-1) * blines,Nz * blines - 1, 0, Npixelsml -1 )); + } + + DEMline_buffer.resize(1,1); // deallocate + DEMpixel_buffer.resize(1,1); + input_buffer.resize(1,1); + temp_input_buffer.resize(1,1); + output_buffer.resize(1,1); + + } // end loop azimuth direction + + INFO << "Closing output files"; + INFO.print(); + + refdemofile.close(); // has the same multilook as interferrogram + if (mlookedIFG==true) + refdemofilenoML.close(); // [MA] if interferogram is mlooked then this is + // generated as non-multilooked for coherence estimation. + if (outputrefdemhei==true) // For Zbigniew Perski + refdemheiofile.close(); + if (outputh2ph==true) + h2phofile.close(); + + //=================================================================== + //============ End second loop: interpolation ============= + //============ (radar geometry) ============= + //=================================================================== + + // === Clean up temporary outfiles === [MA] + + if (remove("crd_m_demline.temp")) // remove files + WARNING.print("code 101: could not remove file: crd_m_demline.temp."); + if (remove("crd_m_dempixel.temp")) + WARNING.print("code 101: could not remove file: crd_m_dempixel.temp."); + if (remove("crd_dem_refphase.temp")) + WARNING.print("code 101: could not remove file: crd_dem_refphase.temp."); + if ( outputh2ph==true && remove("crd_dem_h2ph.temp")) // output available + WARNING.print("code 101: could not remove file: crd_dem_h2ph.temp."); + + // === Clean up Done. === + + // ====== Write output information ====== + char croppeddemi[4*ONE27]; + strcpy(croppeddemi,"NO output requested"); + if (outputdemi) strcpy(croppeddemi,refdeminput.fodemi); + INFO << "Min. value of input DEM covering interferogram: " << min_input_dem; + INFO.print(); + INFO << "Max. value of input DEM covering interferogram: " << max_input_dem; + INFO.print(); + + ofstream scratchlogfile("scratchlogcomprefdem", ios::out | ios::trunc); + bk_assert(scratchlogfile,"comprefdem: scratchlogcomprefdem",__FILE__,__LINE__); + scratchlogfile + << "\n*******************************************************************" + << "\n* " << processcontrol[pr_i_comprefdem] + << "\n*******************************************************************" + << "\n1) DEM source file: \t" << refdeminput.firefdem + << "\nFormat: \t"; + switch (refdeminput.iformatflag) + { + case FORMATI2: + { + scratchlogfile << "SHORT SIGNED INTEGER (HOST ENDIANNESS)"; + break; + } + case FORMATI2_BIGENDIAN: + { + scratchlogfile << "SHORT SIGNED INTEGER, BIG ENDIAN"; + break; + } + case FORMATR4: + { + scratchlogfile << "REAL4 SIGNED FLOAT"; + break; + } + case FORMATR8: + { + scratchlogfile << "REAL8 SIGNED DOUBLE"; + break; + } + default: + { + scratchlogfile << "UNKNOWN? IMPOSSIBLE..."; + break; + } + } + scratchlogfile + << "\nByte order: \t" << "check it yourself..." + << "\nNumber of lines: \t" << numberoflatpixels + << "\nNumber of pixels: \t" << numberoflonpixels + << "\nResolution latitude: \t" << rad2deg(DEMdeltalat) << " [deg]" + << "\nResolution longitude: \t" << rad2deg(DEMdeltalon) << " [deg]" + << "\nMost West point in input DEM: \t" << rad2deg(lon0file) + << "\nMost East point in input DEM: \t" << rad2deg(lonNfile) + << "\nMost South point in input DEM: \t" << rad2deg(latNfile) + << "\nMost North point in input DEM: \t" << rad2deg(lat0file) + << "\nMin. value of input DEM covering interferogram: " << min_input_dem + << "\nMax. value of input DEM covering interferogram: " << max_input_dem + << "\n2) Output file cropped DEM: \t" << refdeminput.fodem //[FVL + << "\nFormat: \t" << "REAL4" + << "\nByte order: \t" << "(same as host)" + << "\nNumber of lines (multilooked): \t" << NcolsDEM + << "\nNumber of pixels (multilooked): \t" << NrowsDEM + << "\nDEM extend w/e/s/n : \t" << rad2deg(lambdamin) << "/" + << rad2deg(lambdamax) << "/" << rad2deg(phimin) << "/" << rad2deg(phimax) +// << "\nMean value: \t" << meancroppedDEM + << "\n3) Output file interpolated crop DEM: \t" << croppeddemi + << "\nFormat: \t" << "REAL4" + << "\nByte order: \t" << "(same as host)" + << "\n4) Output file synthetic phase: \t" << refdeminput.forefdem + << "\nFormat: \t" << "REAL4" + << "\nByte order: \t" << "(same as host)" + << "\nNumber of lines (multilooked): \t" << ifgNlinesml + << "\nNumber of pixels (multilooked): \t" << ifgNpixelsml + +// this is not correct, only stats per buffer... +// << "\n\n----- Other STATS -----" +// << "\nTotal points in cropped DEM: \t" << numpoints +// << "\nNumber of valid points in DEM: \t" << numvalid +// << " (" << 100*numvalid/numpoints << "%)" +// << "\nNumber of NODATA points in DEM: \t" << numNODATA +// << " (" << 100*numNODATA/numpoints << "%)" +// << "\nMean height in meters at valid points:\t" << meancroppedDEM + << "\n*******************************************************************\n\n"; + scratchlogfile.close(); + + + ofstream scratchresfile("scratchrescomprefdem", ios::out | ios::trunc); + bk_assert(scratchresfile,"comprefdem: scratchrescomprefdem",__FILE__,__LINE__); + scratchresfile + << "\n\n*******************************************************************" + << "\n*_Start_" << processcontrol[pr_i_comprefdem] + << "\n*******************************************************************"; + if (onlyrefphasetopo==true) scratchresfile // [don] + << "\nInclude_flatearth: \tNo"; + else scratchresfile + << "\nInclude_flatearth: \tYes"; + scratchresfile + << "\nDEM source file: \t" << refdeminput.firefdem + << "\nMin. of input DEM: \t" << min_input_dem + << "\nMax. of input DEM: \t" << max_input_dem + << "\nData_output_file: \t" << refdeminput.forefdem + << "\nData_output_format: \t" << "real4" + << "\nFirst_line (w.r.t. original_master): \t" + << interferogram.win.linelo + << "\nLast_line (w.r.t. original_master): \t" + << interferogram.win.linehi + << "\nFirst_pixel (w.r.t. original_master): \t" + << interferogram.win.pixlo + << "\nLast_pixel (w.r.t. original_master): \t" + << interferogram.win.pixhi + << "\nMultilookfactor_azimuth_direction: \t" << ifgmlL + << "\nMultilookfactor_range_direction: \t" << ifgmlP + << "\nNumber of lines (multilooked): \t" << ifgNlinesml + << "\nNumber of pixels (multilooked): \t" << ifgNpixelsml + << "\n*******************************************************************" + << "\n* End_" << processcontrol[pr_i_comprefdem] << "_NORMAL" + << "\n*******************************************************************\n"; + scratchresfile.close(); + + + } // END radarcodedem + + +/**************************************************************** + * getcorners * + * * + * Get corners of window (approx) to select DEM in radians (if * + * height were zero) * + * * + * Implementation: * + * 1) calculate phi, lambda of corners * + * 2) select the extreme values * + * 3) add extra overlap * + * 4) determine the indices in the file * + * * + * Freek van Leijen, 07-AUG-2006 * + * * + ****************************************************************/ +void getcorners( + const real8 &l0, // master.currentwindow.linelo + const real8 &lN, // master.currentwindow. + const real8 &p0, // master.currentwindow. + const real8 &pN, // master.currentwindow. + const real8 &extralat, // + const real8 &extralong, // + const real8 &lat0, // lat0file + const real8 &long0, // lon0file + const real8 &DEMdeltalat, // + const real8 &DEMdeltalong, // + const int32 &Nlatpixels, // numberoflatpixels + const int32 &Nlongpixels, // numberoflonpixels + const input_ell &ellips, + const slcimage &master, + orbit &masterorbit, + real8 &phimin, + real8 &phimax, + real8 &lambdamin, + real8 &lambdamax, + int32 &indexphi0DEM, // returned + int32 &indexphiNDEM, // returned + int32 &indexlambda0DEM, // returned + int32 &indexlambdaNDEM) // returned + { + TRACE_FUNCTION("getcorners (FvL 07-AUG-2006)") + + DEBUG << "(getcorners) l0 :" << l0; + DEBUG.print(); + DEBUG << "(getcorners) lN :" << lN; + DEBUG.print(); + DEBUG << "(getcorners) p0 :" << p0; + DEBUG.print(); + DEBUG << "(getcorners) pN :" << pN; + DEBUG.print(); + DEBUG << "(getcorners) extralat :" << extralat; + DEBUG.print(); + DEBUG << "(getcorners) extralong :" << extralong; + DEBUG.print(); + DEBUG << "(getcorners) lat0 :" << lat0; + DEBUG.print(); + DEBUG << "(getcorners) long0 :" << long0; + DEBUG.print(); + DEBUG << "(getcorners) DEMdeltalat :" << DEMdeltalat; + DEBUG.print(); + DEBUG << "(getcorners) DEMdeltalong :" << DEMdeltalong; + DEBUG.print(); + DEBUG << "(getcorners) Total Nlatpixels :" << Nlatpixels; + DEBUG.print(); + DEBUG << "(getcorners) Total Nlongpixels :" << Nlongpixels; + DEBUG.print(); + + real8 phi; + real8 lambda; + real8 height; + lp2ell(l0,p0, + ellips, master, masterorbit, + phi, lambda, height); // returned + real8 phil0p0 = phi; + real8 lambdal0p0 = lambda; + + lp2ell(lN,p0, + ellips, master, masterorbit, + phi, lambda, height); // returned + real8 philNp0 = phi; + real8 lambdalNp0 = lambda; + + lp2ell(lN,pN, + ellips, master, masterorbit, + phi, lambda, height); // returned + real8 philNpN = phi; + real8 lambdalNpN = lambda; + + lp2ell(l0,pN, + ellips, master, masterorbit, + phi, lambda, height); // returned + real8 phil0pN = phi; + real8 lambdal0pN = lambda; + + // ______ Select DEM values based on rectangle outside l,p border ______ + phimin = min(min(min(phil0p0,philNp0),philNpN),phil0pN); + phimax = max(max(max(phil0p0,philNp0),philNpN),phil0pN); + lambdamin = min(min(min(lambdal0p0,lambdalNp0),lambdalNpN),lambdal0pN); + lambdamax = max(max(max(lambdal0p0,lambdalNp0),lambdalNpN),lambdal0pN); + + // ______ a little bit extra at edges to be sure ______ + // TODO this should change based on ascending or descending [MA] + phimin -= extralat; + phimax += extralat; + lambdamax += extralong; + lambdamin -= extralong; + + DEBUG << "(getcorners) phimin :" << phimin; + DEBUG.print(); + DEBUG << "(getcorners) phimax :" << phimax; + DEBUG.print(); + DEBUG << "(getcorners) lambdamin :" << lambdamin; + DEBUG.print(); + DEBUG << "(getcorners) lambdamax :" << lambdamax; + DEBUG.print(); + + // ______ Get indices of DEM needed ______ + // ______ Index boundary: [0:numberofx-1] ______ + + indexphi0DEM = int32(floor((lat0-phimax)/DEMdeltalat)); + if (indexphi0DEM < 0) + { + WARNING << "(getcorners) indexphi0DEM: " << indexphi0DEM; WARNING.print(); + indexphi0DEM=0; // default start at first + WARNING.print("DEM does not cover entire interferogram."); + WARNING.print("input DEM should be extended to the North."); + } + indexphiNDEM = int32(ceil((lat0-phimin)/DEMdeltalat)); + if (indexphiNDEM > Nlatpixels-1) + { + WARNING << "(getcorners) indexphiNDEM: " << indexphiNDEM; WARNING.print(); + indexphiNDEM=Nlatpixels-1; + WARNING.print("DEM does not cover entire interferogram."); + WARNING.print("input DEM should be extended to the South."); + } + indexlambda0DEM = int32(floor((lambdamin-long0)/DEMdeltalong)); + if (indexlambda0DEM < 0) + { + WARNING << "(getcorners) indexlambda0DEM: " << indexlambda0DEM; WARNING.print(); + indexlambda0DEM=0; // default start at first + WARNING.print("DEM does not cover entire interferogram."); + WARNING.print("input DEM should be extended to the West."); + } + indexlambdaNDEM = int32(ceil((lambdamax-long0)/DEMdeltalong)); + if (indexlambdaNDEM > Nlongpixels-1) + { + WARNING << "(getcorners) indexlambdaNDEM: " << indexlambdaNDEM; WARNING.print(); + indexlambdaNDEM=Nlongpixels-1; + WARNING.print("DEM does not cover entire interferogram."); + WARNING.print("input DEM should be extended to the East."); + } + + DEBUG << "(getcorners) indexphi0DEM :" << indexphi0DEM; + DEBUG.print(); + DEBUG << "(getcorners) indexphiNDEM :" << indexphiNDEM; + DEBUG.print(); + DEBUG << "(getcorners) indexlambda0DEM :" << indexlambda0DEM; + DEBUG.print(); + DEBUG << "(getcorners) indexlambdaNDEM :" << indexlambdaNDEM; + DEBUG.print(); + + + } // END getcorners + + +/**************************************************************** + * griddatalinear (naming after Matlab function) * + * * + * Implementation after GMT function triangulate.c * + ****************************************************************/ + void griddatalinear( + const matrix &x_in, + const matrix &y_in, + const matrix &z_in, + const real8 &x_min, + const real8 &x_max, + const real8 &y_min, + const real8 &y_max, + const int32 &x_inc, + const int32 &y_inc, + const real8 &r_az_ratio, + const real8 &offset, + const real8 &NODATA, + matrix &grd + ) +{ + TRACE_FUNCTION("griddatalinear (LG&FvL 13-AUG-2006)") + + INFO << "griddataLinear interpolation."; + INFO.print(); + + int32 i, j, k, ij, p, i_min, i_max, j_min, j_max; + int32 n, nx, ny, zLoops, zLoop, zBlockSize,indexFirstPoint,zInterpolateBlockSize; + real8 vx[4], vy[4], xkj, xlj, ykj, ylj, zj, zk, zl, zlj, zkj, xp, yp; + real8 f, *a = NULL , *b = NULL , *c = NULL ; // linear interpolation parameters + struct triangulateio In, Out, vorOut; + + + // Initialize variables + + n = zBlockSize = x_in.size(); // block size of x and y coordination + + /* How many groups of z value should be interpolated */ + if (( z_in.size() % zBlockSize ) != 0) + { + INFO << "The input of the DEM buffer and z is not the same..."; + INFO.print(); + return; + } + else + zLoops = z_in.size()/x_in.size(); + + a = new real8[zLoops]; + b = new real8[zLoops]; + c = new real8[zLoops]; + if (a == NULL || b == NULL || c == NULL) + { + ERROR << "Memory ERROR in source file: " << __FILE__ + << " at line: " << __LINE__; + PRINT_ERROR(ERROR.get_str()); + throw(memory_error); + } + + nx = grd.lines()/zLoops; + ny = grd.pixels(); + zInterpolateBlockSize = grd.size()/zLoops; + + /* Set everything to 0 and NULL */ + memset ((void *)&In, 0, sizeof (struct triangulateio)); + memset ((void *)&Out, 0, sizeof (struct triangulateio)); + memset ((void *)&vorOut, 0, sizeof (struct triangulateio)); + + /* Allocate memory for input points */ + In.numberofpoints = n ; + In.pointlist = new real8 [2 * n]; + + /* Copy x,y points to In structure array */ + + for (i = j = 0; i < n; i++) + { + In.pointlist[j++] = *(x_in[0] + i); + In.pointlist[j++] = (*(y_in[0] + i)) * r_az_ratio ; + // to eliminate the effect of difference in range and azimuth spacing; + } + + /* Call Jonathan Shewchuk's triangulate algorithm. This is 64-bit safe since + * all the structures use 4-byte ints (longs are used internally). */ + + triangulate ("zIQB", &In, &Out, &vorOut); + //triangulate ("zIBV", &In, &Out, &vorOut); // [MA] for verbosing + + int32 *link = Out.trianglelist; /* List of node numbers to return via link */ + int32 np = Out.numberoftriangles; + + for (k = ij = 0; k < np; k++) + { + DEBUG << "k of np, ij: " << k << " of " << np << ", :" << ij; + DEBUG.print(); + //Store the Index of the first Point of this triangle. + indexFirstPoint = ij; + + vx[0] = vx[3] = *(x_in[0] + link[ij]); vy[0] = vy[3] = *(y_in[0] + link[ij]); ij++; + vx[1] = *(x_in[0] + link[ij]); vy[1] = *(y_in[0]+link[ij]); ij++; + vx[2] = *(x_in[0] + link[ij]); vy[2] = *(y_in[0]+link[ij]); ij++; + + if ( vx[0] == NODATA || vx[1] == NODATA || vx[2] == NODATA ) continue; + if ( vy[0] == NODATA || vy[1] == NODATA || vy[2] == NODATA ) continue; + + /* Compute grid indices the current triangle may cover.*/ + xp = min (min (vx[0], vx[1]), vx[2]); i_min = x_to_i (xp, x_min, x_inc, offset, nx); + //INFO << "xp: " << xp; + //INFO.print(); + xp = max (max (vx[0], vx[1]), vx[2]); i_max = x_to_i (xp, x_min, x_inc, offset, nx); + //INFO << "xp: " << xp; + //INFO.print(); + yp = min (min (vy[0], vy[1]), vy[2]); j_min = y_to_j (yp, y_min, y_inc, offset, ny); + //INFO << "yp: " << yp; + //INFO.print(); + yp = max (max (vy[0], vy[1]), vy[2]); j_max = y_to_j (yp, y_min, y_inc, offset, ny); + //INFO << "yp: " << yp; + //INFO.print(); + /* Adjustments for triangles outside -R region. */ + /* Triangle to the left or right. */ + if ((i_max < 0) || (i_min >= nx)) continue; + /* Triangle Above or below */ + if ((j_max < 0) || (j_min >= ny)) continue; + /* Triangle covers boundary, left or right. */ + if (i_min < 0) i_min = 0; if (i_max >= nx) i_max = nx - 1; + /* Triangle covers boundary, top or bottom. */ + if (j_min < 0) j_min = 0; if (j_max >= ny) j_max = ny - 1; + // for (kk = 0; kk ((x - xt[0]) * ( yt[2] - yt[0])) ? 1:-1; + int iRet1 = ((xt[0] - xt[1]) * (y - yt[1])) > ((x - xt[1]) * ( yt[0] - yt[1])) ? 1:-1; + int iRet2 = ((xt[1] - xt[2]) * (y - yt[2])) > ((x - xt[2]) * ( yt[1] - yt[2])) ? 1:-1; + + if ((iRet0 >0 && iRet1 > 0 && iRet2 > 0 ) || (iRet0 <0 && iRet1 < 0 && iRet2 < 0 )) + return 1; + else + return 0; + +} //END pointintriangle + diff --git a/doris_core/Makefile b/doris_core/Makefile index fa1307c..ce7b593 100644 --- a/doris_core/Makefile +++ b/doris_core/Makefile @@ -43,8 +43,8 @@ SHELL = /bin/sh ### Specify compiler/installation directory ### -INSTALLDIR = /data/src/Doris_s1_git/bin -CC = g++ +INSTALLDIR = /usr/local/bin +CC = g++-5 SCRIPTSDIR = ../bin ### Define statements controlling compilation ### @@ -93,7 +93,7 @@ CFLAGS = $(CFLAGSOPT) ### Library locations flag ### ### -lcl : used for veclib ### -lm : used for fftw -LFLAGS = -L/lib64 -lfftw3f -lm +LFLAGS = -L/usr/lib/x86_64-linux-gnu -lfftw3f -lm ##################################################### @@ -121,7 +121,7 @@ SWOBJS = $(SWSRCS:.cc=.o) SCRIPTS = helpdoris \ baseline.doris.sh \ baseline.doris.csh \ - construct_dem.sh \ +# construct_dem.sh \ coregpm.doris \ doris* \ heightamb \ diff --git a/doris_core/configure b/doris_core/configure index 0835c10..b18c51d 100755 --- a/doris_core/configure +++ b/doris_core/configure @@ -622,7 +622,7 @@ SWOBJS = \$(SWSRCS:.cc=.o) SCRIPTS = helpdoris \ baseline.doris.sh \ baseline.doris.csh \ - construct_dem.sh \ +# construct_dem.sh \ coregpm.doris \ doris* \ heightamb \ diff --git a/doris_core/constants.hh b/doris_core/constants.hh index 007ac38..7b3a682 100755 --- a/doris_core/constants.hh +++ b/doris_core/constants.hh @@ -227,7 +227,7 @@ const int16 ONE27 = 127; // doris memory for buffer operations const uint32 MEMORY_DEF = 500; // default memory (~500MB), unit Mbits [MA] -const uint32 MEMORY_MAX = 12000; // maximum memory (~12GB) +const uint32 MEMORY_MAX = 60000; // maximum memory (~12GB) // ______ Handy for software, IDs have to be enumerated (used in loop) ______ const int16 LOGID = 1; // general identifier for log diff --git a/doris_stack/__init__.pyc b/doris_stack/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fa05d9da244c083e904428d3690281c51a00a711 GIT binary patch literal 150 zcmZSn%*&N`Hz+2V0SXv_v;zPO2TqreYvw0052SB830| literal 0 HcmV?d00001 diff --git a/doris_stack/__pycache__/__init__.cpython-311.pyc b/doris_stack/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b995df74c1b16c91f60089fa51f2beb17d1baaa4 GIT binary patch literal 172 zcmZ3^%ge<81bKIZVnFm`5CH>>P{wCAAY(d13PUi1CZpdkt|8x+F;1dl-k3@`#24nSPY0whuxf*CX!{Z=v*frJsnFMIur{M=Oi#Jtj? z#B_a^{N&Qy)Vz{n{eTRYfTH}Y)Z`NVl>DO1Vh9;uT#}fatsftsnU`4-AFo$Xd5gm) RH$SB`C)EyQa4`@w006C1B%c5P literal 0 HcmV?d00001 diff --git a/doris_stack/__pycache__/__init__.cpython-37.pyc b/doris_stack/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2b4e15a04434abd3bd864aebca2fc570bbe45c19 GIT binary patch literal 150 zcmZ?b<>g`kg1oyyF(CReh=2h`Aj1KOi&=m~3PUi1CZpdg`kg1oyyF(CReh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6vWKO;XkRX;JW zv?wuM-z7h}G&eP`q*y;7!zG|7KPxr4L_a0JD6<$s#ut|)CTHu%$7kkcmc+;F6;$5h Su*uC&Da}c>0~!1oh#3IVcO^jp literal 0 HcmV?d00001 diff --git a/doris_stack/__pycache__/__init__.cpython-39.pyc b/doris_stack/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..77f194bbfc6b0375f4b03a761605d2f197ccd0b0 GIT binary patch literal 154 zcmYe~<>g`kg1oyyF(CReh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6vWKO;XkRX;JW zv?wuM-z7h}G&eP`q*y;7!zG|7KPxr4L_a0JD6<$s#ut|)CTHu%$7kkcmc+;F6;$5h Su*uC&Da}c>0~!1oh#3IcuO&?Y literal 0 HcmV?d00001 diff --git a/doris_stack/functions/ESD_functions.pyc b/doris_stack/functions/ESD_functions.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f6140b220dfd2b06142a6062f5df8ef51d99fa3e GIT binary patch literal 8793 zcmcIq&u<&Y6`t9ZC6S_jnzSg#vE|rlXg85#C2*1=sDoH_Q#4T3l@TS1)6JS(N-L2| zYIhk+23er6g91e_MNdV67U-e976o!CP_!tD+erOx*($n&xAOqpCK>kB@R(-5Xb%WwJE6=D0aOv4ef&e;@@gTqnfa|Sg}|gN3rE6ZsaxF$z=By1DfV`!$UJ{$2it`i zK`y9nL9K^MT(X|pRsN{ovV z-#IivoHZXRe+TO2C>9DYuwhm{t-90wCFVu?TBe2Bs=uU@^`$3xA`jRtvtedC_SS}W zjX8x?0lXxsynWB#&~GDGdutb=)*^Mb3sc~sz@cQ0I7S@Q*2F~7k zWd_H1H9(;t3?~{EP;Gc|TqTMBc<^7xH>QF3V$;rg1$8yB8`lkCCa#<0L3Z6{tJZ0t zX}E-yMZAjQ(srxqU-H6EJ1z{o*yf)Yk zTfNcpl4Ohn`~c@48=Yg|(EO z!*6T{QP!qR$M*xBlCuLkgm%wlS@_MHKCy!1Z;tR`SG*uc69|#q=hHrcZ z>JU)1AkrV`6?On!;vRM^RR^xyLX`TJMcnA+gd!LZYln3MvVi1pcJLsuT8z4@ZNLzv z$q*nB>w@+veN05<2?lT_aFJ#FbZs@y>WA#1vV9pvOTzB0VcoiB7-p7UfVZF$J1ABHQNn;|H_M|vvaGpn~9FMTTvna zcmT$sf1g}+zJR72VFPuXKWsY}@srv#wIU)k{bti^3*3DW__qzD#Z*pYI7``(>s|w> zMsO1gxqPKU!w`&Vd&#y-L=%)CBoNx8M6k_(hH2Bugsu9U;D}`;8fyfVShl8?h;kGV ziy|^Mc3!|RqdNr%bk+c`BWU2)d#w0lRvZCuZ|w>KoW`umF6d|U*Y%5fP8Y0~^fLZl zvZq0NQBPY{x}Q0G`>1gb6hH>d%7l6I0F3z_4t7QZXv_mC3|(SHh6OzwS{N2*bh9lA?0K8xN z=p&^gl9Hh9W}e|PVr5_=AOseJSQhax0^Q!UL|%xA5Cho&GN9u)b_7+T8xV{{gh&&8 zB4Gvy3Md69nE)A8tWM299+Tvlyoj;YWxRFY$`8@pLFxA-aT-+o~I5rnmvk zm~}!%(eOUT0WD=@xV7e7m%Uw~){ocXk7GJM2HBrlP_O%uA69+FAMq&^$|~xzmDhRe z34LClNz04YWqrZe{sMUVw!ebI(zkQi(`U4OoG+LitQ#jB!9N5Uqb6Ofen1y>%rKRWfUd(MrZYNp9j4ESq?t_8^gt49A2>5d{gG4d!V~{kqtZLB z!cs;=F8E6g1`>hNSk;W$9Z}IAH7ecX>8gt=d@}3QD*78U!r@MgJWh#bk02ba>9lo1 zg1ti8nkUS4=hIeMb@2fWL%>&*PM{c4Jt#k?>Um%nPt>YIALOi{co1mCi|8<^2JLRK za(gLSN|qK|ouu7CQqc6a{0s3JFue(&li>YRc+U0(i4A@V7pD_R4`aFjrnL@&2iNft z@&wHF-0P9Q*MU_XELIrdbP~Vz?BW}DE>!5$oi|tz`5YpxQ$$grQ8{ZYzRAL2vCiTK z3c(Tq7y&Ust^p_-V8e=?cgfoaBheax3vsoNT84-uIdN{1n^_US2bkH%tNZ2Ytl;N-12c5+jbB3{NT-2xc3GE^ zRHfx`%Nj*2ltU86?<~L8l%A4rNpHO%|NeZnN(g@%-##p!#l9YeML@{|Ln0WuTxSu5 z`hmpg!(s_w6M^X%q9h3qXl}45z!H)Wzzj?sh+&vU4>J)R`%JUKg!v%}a7KggOOneb zN}9`frdj`eXRFB)*H|?`j3Skmcv_6Ql~i^@9&0}n~~uFiUYkM z#c%^`G2nzceMn^^x&xK8Y2kzZ(z zAJ)pH-lA9x%y3bN7X3Ocs&|&o8KY<=Q>ti;r3=9rYPb#!5eDGGePT)wRV?+M5-|u) zAPjSz`BW)j@19j0)qM(jpW_dc7(CNr@4V`Q0L9L$x(%Pt6#IUkFDZGUEmLl)= zQmavm`BJ0W+BUH&spbxV4pg$2fY2*9rE)85d@Rx4c^w7RMqK2Dh%k+Vu$gu^IX=8e1kU@lHLg02zqcexg-2>rwNc%svXD-n4sZT=m?A}e;+l; zAfUOMP!yIjaPZQ_6#u%pAdSTV8do^*jN&Ni*~MWy^uNx)tupBe>RT}!II}^AL z0!hd6p^jx)bIK-88F!*V4R4OPIoxH__U;7D4l*U?c7d#QHS)}_cgJLGxE}?H3h=5F zR7M^~7q{7IBtfHv+nhded5FkZLsFd~8Xq9j5lIANQS-JRY;7m8D6!$tZ_9M8dL4H) zqP*<5D^bW}4IJd^hgp-E`{z(4ehYMeZrbc;t`>cLT7cEm3%x$bC zcd{r?+T@r;FtLnl7W~;W`lPj>m-HF^vNdIGJ$LQY-~W2$MZ0{Eg(3ztskrki>x?$r?JDQ5A@sjH~7ZQZ*G9=#2iM$%}Vc6WCDs z!HUWYWlFUr2^->&u9V9**3R^B0 zLQwF??oX<{U#krR_k-Oso6>*cr5=(pc!Uz2W}1Zs%Q$Ir^O{AtzZJ_5JI#QIDKDWV zK@;db0BPvoCs*Z7wE(QKSppL;SXx_nAuSf{MO#g8-+?a5!6MBIY~&bm+p8L^y%D7^ zYVg`BcA8{tkdg51@0-^>loEtai=9O63N6L?E{peBNZ!H8lkF6HW%Bm6>&G<#l~pO< z7O6pPUyyPIP=*&wcn`**(t=u{06bd;j;eCcCB4u=&1X8Urs^l=l@=wY z>$~J9m*%GCl@#j-WVi$rrflFa8ftUdRjw>fB literal 0 HcmV?d00001 diff --git a/doris_stack/functions/__pycache__/ESD_functions.cpython-36.pyc b/doris_stack/functions/__pycache__/ESD_functions.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f1f3c1985401e94dbf63bde8b04663325919f3da GIT binary patch literal 6776 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 AkpKVy literal 0 HcmV?d00001 diff --git a/doris_stack/functions/__pycache__/ESD_functions.cpython-37.pyc b/doris_stack/functions/__pycache__/ESD_functions.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..26d5b93acaa0a950670f47120c73496d5a538bbd GIT binary patch literal 6769 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 HdawT*<$-<2 literal 0 HcmV?d00001 diff --git a/doris_stack/functions/__pycache__/ESD_functions.cpython-38.pyc b/doris_stack/functions/__pycache__/ESD_functions.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..75dd8581e66c100fa58761072615d5b40cd30a1c GIT binary patch literal 6800 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 J-i_eB{{>JIdw2i< literal 0 HcmV?d00001 diff --git a/doris_stack/functions/__pycache__/__init__.cpython-36.pyc b/doris_stack/functions/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7a8c9754da510f447e660ece3e95990ea7d39872 GIT binary patch literal 156 zcmXr!<>k6`V16_M5IhDEFu(|8H~?`m3y?@*2xib^^jpbL1QJFNzdZFb@^e%56Z1-o z64Uiv@{>z*Q}arS^#d|o0*dmpQj<&cQ}T;4iy>ruaYg`kf=dVHM}z3cAOZ#$feZ&AE@lA|DGb33nv8xc8Hzx{2;!Hgenx(7s(xZ# zX;EUjzDs^`X>Mv>NwI!FhD$(EepYI7iGE6cQD!lOj4v)pOwQI%E6qzT$;{6y){l?R d%*!l^kJl@xyv1RYo1apelWGUD;xiC4006y1DboM| literal 0 HcmV?d00001 diff --git a/doris_stack/functions/__pycache__/__init__.cpython-38.pyc b/doris_stack/functions/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7268d2c207336732ce921a24238d238657192bd5 GIT binary patch literal 164 zcmWIL<>g`kf=dVHM}z3cAOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUS~{fzwFRQ<%f z(xSw4eV6>?(%jU%l4AXU43~hS{H)aE68)6?qRe6l8DCtIn4GPjR+^Vwl9``ZtREkr dnU`4-AFo$Xd5gm)H$SB`C)EyQ#b+R9007v>DdqqG literal 0 HcmV?d00001 diff --git a/doris_stack/functions/__pycache__/__init__.cpython-39.pyc b/doris_stack/functions/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f62e4547d21ca63d6f979f60f2d8c359b5935e7c GIT binary patch literal 164 zcmYe~<>g`kf=dVHM}z3cAOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUS~{fzwFRQ<%f z(xSw4eV6>?(%jU%l4AXU43~hS{H)aE68)6?qRe6l8DCtIn4GPjR+^Vwl9``ZtREkr dnU`4-AFo$Xd5gm)H$SB`C)EyQ#b+R9007{3De?dS literal 0 HcmV?d00001 diff --git a/doris_stack/functions/__pycache__/get_ramp.cpython-36.pyc b/doris_stack/functions/__pycache__/get_ramp.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ec5c0c8fd7b8124b8bcd34f0af35fb55e4aa49c7 GIT binary patch literal 6395 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 PP1X-e#rRig)tLV)_sqv0 literal 0 HcmV?d00001 diff --git a/doris_stack/functions/__pycache__/get_ramp.cpython-37.pyc b/doris_stack/functions/__pycache__/get_ramp.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..80cc6ffffaf3a804934d183464a7d287766eeece GIT binary patch literal 6317 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 EKbxh^f&c&j literal 0 HcmV?d00001 diff --git a/doris_stack/functions/__pycache__/get_ramp.cpython-38.pyc b/doris_stack/functions/__pycache__/get_ramp.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a073dfdf017f3b7e1169fafafdd4cabfd461aa56 GIT binary patch literal 6343 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 D^;FCG literal 0 HcmV?d00001 diff --git a/doris_stack/functions/__pycache__/get_ramp.cpython-39.pyc b/doris_stack/functions/__pycache__/get_ramp.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8c07f79e6d98e95e5d79e0fd9db9c772da489eb3 GIT binary patch literal 6343 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 Cd&-6Y literal 0 HcmV?d00001 diff --git a/doris_stack/functions/baselines.pyc b/doris_stack/functions/baselines.pyc new file mode 100644 index 0000000000000000000000000000000000000000..48f46858bae5261abfa6564b6062fee855140b23 GIT binary patch literal 2953 zcmcIm&2ke*5boKPWJ~@xSVGu<41uUp*anJ9xX#D|0fMHx~~94OVI8ObZ}kGwMi ziIPrEo+FpMLN1*040)BDQXG=6dnH4vlH4Ng&Q8zt&(~k~j^zKoRQc`KpT2L?^i#m| zbKEw=pm8aRh>p(ZijKV5x=%;G%sq+<6c_2JNQ!NIib@pE(a~Hk!^b=w&Cl%0bW|o? zAYCL~B0Wbxz*B`oJ#Ee-Z1^WWkDCfp$8tOEk2+yw@|8KP92mPFxWHC0zjx>E{hd2^ zam~cfa?xRv+C>bTxEFALiQBf3;=7+ETWo*fsb4sT_;zjUWLYRplDK>iN1()beL?A zQfi7sRt3qoZb3XRPSL;^T-GP^*CNRu*kkzqx~1sdK^*xi4zsV0l$mTA1m zswlvTN7=hs^hK^mL(fwU`U84dtumS@a> zF3iutFLU@Qc%ZGbE^2bVzcSmeAh}f$H2|X2d&OFJan^$R_+&Z0s)eF4N zuqPMELBN^)8XCQ?Je_dzVSC@`Rmkl3pXdPWl4ri@@rQ0k29A@<+Y5#rUO# zulzkWlqE@Z`o=pPb_F-8aaBkVsu4kQcqBPgX;Nd)|Au51@EYk2s_QCl^yzq=#x-WH zGP zE1vnF{~LPlGfk5^O)mczdJg#!D`=?IX?&RhYmnO@y+!&8>8t$moT-93{lh^AC6?!iNYoahQt$voa zjkWeZ7QfC70|)(fI*7Dby)+P#S0-~t-);=7XgdO0$=tv*P`WzRCJw$_^Q09AqcR zjzOo6@eW6_j)xgK$B=o_PSZ?V%P!MS#~Rn@r@&zanGN3~>q zLd{zk#HUWP(6;)4JC>kn?nq=tCB?Fm+v^}p!laukupn8qk5OU?-eVk0TYSPx95CtU zF;Ghv#^%%eqL^?#OyuhzI*}Z0%4Kyv*1(@cGl{mZL!io0ILPAs4d~7x=&MKV&0GFG z%;5$8*SseGXFIrnLCTj5VxZ#wIH>X(vu2M6E{yWN=c87V+s)r%Np3d|!lczswVY<4 qGLViw_=Mfu;(^nAPvZZke8|u=- zVsDt~qKHbOSrU6C(`P_LBcfRrdu8)HD56o(tcbk|o`=LAh1eSt!7vk-L{MU4Tm&Ob zT&6*Hs%1DA{tJKAA}BqKCTbn59CzL_jo%d+MS7IfVx6|!B;617R@EZy5}Lr%Qin}x zIMm;fYR%JLkFlLZokkM-)Q6%%Bdy}A;G)n%99rT>Ax*+coYmU zH3({msbNqhrba-OnHmLEVQMU=E`b_n-sPOS0xBP70>fB{!c{o3rIykD>c9Id>p^r% zlOy+@ngI3U$|0RuQqo#o^P%{R9C?My7rPCX$UT*I^aTa(fGr1msZd=JfRX}WP?Ecn{!u`}sJBpSwPPEO^OJs6=b@Tbt zTu!XbC)-a}f74}g27H_SDN2&nq}d81Ov*EJeA=!o@-He)XBw^OBEGK)0!YORi@pcw9f^xzCVtB=r#LZvWfmCt>~ z3O+eGhA;hcUT-7D$ZMq5k4R_U`jpPd>ba9aW)#I7W%{5%Zj%UG08(gM)UP0dK{1#0 z9TJZ+-f+$<8D5d~u*JK&*bbx%K6rina?T$;#joW2u~U3(oXigV=<{Vf=ac=OkJw(B zKH2Z_vDq>{+3)eO?-~eELFgg};VRDn6JGo7hBz4#SnWdu3gLm|-4OatiW!K%FNik} ztdn8!Klg51C#62~Q!tOv4~yCE5GNzz-H14Z55u$`hb0kAcb9Pn(}8Eu7$&9H10*;p zvpq0Tl5*xKPp#ZtNX#AD=^qNz9|fzN^`t4z!iTb$I~?UISn2bQCJ#wA`HOv;L;k?X zM@E&h>|^mLz9WKb*?*%bPAVe!g!8Va9ej!&M*AJaSQ~n}4r_SA>e7>Kp0K9$bOW=; za*dvu)1QjjoZvsAG0MyKnV3s!MRE)jy37%Ivq#=Cr134DLbU{y zWe)f~Gti1jf0BJ+IA8WS_o4k2Yd^@TpXbyspf7MnJw$cc(sal?<*F68oBJ|#!#I$~ zSQjC@_OV*P?{+&<(sg7D=Q5R6cO#W=+A{V#cGX9DZsW|kYd?Ftpy?3u-iFP#KG=3P zLOcmQjb_J}v2@YsRJu_TH$vSGWXNa!)H%6_VIbDCxuhMrev-!UF1kRNo)w0C9`w3L z=QU`4eFH@22bjBP^sei=PueqnfwXVvi=@3_bLk|;4U$$X!fdlxy1T$bidNWqn#rgfk`M{ok_Hh2i!}*=sd|iDC!A3}@QY$=`QErkTmR)_dySl(f zR5s#jBI|XY+}f&}N}vQRvpm&_Gp6fc>ctJo?&%o}bgGk)(Kzh-a&1`=n!~S+FJnYC z55~7T#Ubj}UG(0-Q3^w*ZSq*2;a$BMkyeem>skdzgs#^v?uRt(+Spk9>cpv)!Je z+wK4R&l!RlMvrt=r~@(L5CJDdI#X3*Zjv@V&5vQzYsgKckm4e+WlCRCcWIIecapFX z##lkVrjYJ7Z63u7)l=pj)u&DMY*~{h0D4}t#bjzovb4UlhDf9-P-Jx+&s=4dPWiW$ zv<#x96=hC@dP$WmZn4imlzcJz>PxokDcxyFhYJ}2ZP=-E9uR6gI>63lBTd}0h@)Cj zsM%biI5aI!A8^3-Jtbog7cPRF4*N9%%79iJ3VjfkD!5Gh82bqUY<5o_!Jtd9*P$~- zQ!qkJHoL`wOM#{V>fHl`6I}7mGUH+Qr`n`FEnBy181SIIeqfN3Ee~;)@aY4icyih} zh$~h=>7}lNr4G@E;$?vNE7n+X(wekpPk)M!t;g1N>soQjnkr6PvrM1WXzf-J$(3@Q1B_GDUs-R6<_req6|QsU3dow#u6m3fCX?jAS7A@5jJo`CPxpm4YDx>F>KUI#3 zb+b)G`B6)~Bi>k4`rM?gfzwURR>9``A9#d#+A}pf+B-B22|$6?%@e4 zm3H;0mezF5rb6p-Rb5b@pxY*bC^==MTXwsKZd_>Stk%uk7}w)`z_WTZ zD7*DuwJPl|hi>T(*TW~ExR9cbI&@Y!wDFuZY93HSFq$i@pR{Ams!i|Mn4v{=)~R_$ zT4XSmN7*V-X{CkoQ&fJcmdAYDP!hO`6Ts9w25%XIDmfoftO}f-dgjPN>Ire+MfD@E z^MPw2)n$`sX z{R0Hu<^}Cuysg8&H-*e13Z(>P40VO-0v=G$pq4%0bq5~m1#yA`VdN-XJ-K-^K=OgE z9CfKD$2~0TZweypm-^)+xg7U)V;}eCUVq%&vi@8Nv6)d*smkC@g1N+_^q^mfeB7y0 zI&JZ$&5sX<5W7Q{ABWxsIaCT9dhO;Aj&rV2LpKByqN>@u_K{>BWty5Av?DgmE4cBwM!ROB~C@7dcL(2;+nVCo!=SnOn+?ctJc&ji!60k!EMM zx_d1gv`6bFL%4lerIhKqOyPC-7*33Fu`&<7sjM9fow+qLXPloT7c92X0!< zZBikvxEVRj@{1LQb?9YCCUaq^9U(mJ}q;5d3`-va?TGq`>YRDe&r$g440bV{Ce)<`Ig{xJM^FI=sMP33#_e zYJpCsa1P{rQEt>C(^j^hGUO7e^OKO}=J86iyG-f=xhoButE84hiHqc}ff@?)HyZqP zzw>5Y60=y;n?hF09GUzEjpxa&l3HQuXUx1Tysyy79I30ke@X2z>{y_~o20IhVo5N_ z^M^3FjW56B#UdVWk@-h`52@AtEx9icYd~(3xgJ(5ZZwcP?6Atx3V4^y;~Kcy0M{mY z-6NCMkedzU?McXeGQX`M(6iF$ok_^MWd2k`-fAH0q;9cB>b9(Rymqai(r$yyH}#{t z&7=1w`EHU4T9u_xyAu7~Nyq~-w`$0}2J*d0$U`zaH3XJbT;3P$5E5wTGojM!12WHR z`27a{{Yj1=lKEW?fg>u8A5B7jK;|zsK7P%s*@3dIS9A^}hR*%+;yN zF&oXJ$CC>Dkj#@B0;g6wenx7O6nn5y;0YO110OWNtyjVp*7|-<=Jz!mZm#%#QNbtp zZj^I1AS(0a8Y1hLsEfWLtOS6|b>#-VRbm*3G*-wr%gcLeXOQZMWy^*m%F&mYn^^xTZ z@(hTBVzdRTT#L$SS)_1V!4YfmCA`YxynL>WxJ#rPFP#C}D$BMO+8vkXXccEsIV&)? z5u|b-idIGp;Lm+7;&H_I14G-=#$y1nD8u$pRS<&_Loh>#Qx#1+c z*wF>PTv*Po6bi)FsCAPZ3-h!*&_)-jmXj!f2hK5gFv?w)m*o-XIGf8iUQbS$QE_aN zq4)zCY_EWX-~YWt)_#K9NWKQKd+ZAvu>^6O{xv-7-P0cxDW{cWUo?^E@+~ON%Y6}N zozI8D#AQD|EcdJw2!gR!S{-rtBKB2XY$!xY=XucTqVZW1agd@F#_}Zu#4a1?7)d)A zMxc;*!s;CEjI%+quf69FG?*6p*wd__M#Ye8-lN#O>Y1dTAiSwQ`P^k7j2<9|;;cwZ zNj7X*hLuaDC4c4lnJ{yG{KAZUy7+RHDw7uUMUo?t*cy9`)`5rc3+v4qRbcK$)?ENW z={)v&YgK8^UkACZhPK+e>5beA7jHyqriilem&w)G7vI=aVn)?3u9Izsd|Q>AOM z@>2WJeWr1kfPA$FMDOrrrS)VlU|lB8v2@BxT+;=j4Srown{E)j$5ajr1pY@?Xb81C zePf6o0KdjkWzwJ)`tFjjz<5JFLcaXL<7=HG5wV#OV=7r^{xFgf$E@Ifc3R@mBYyKS zFQ=tkP2%(@`YAJGwx>ge-A}UEpJTUiP!9A)QjAa|8(U>M8eqiRjb{g2&rErUs^3uj z2by2GFQi8sgCr}E=}Ons>RUm)xjua12gIo0)Ujm9zC+Gz|;CjK5ti4bueih0MPj3r7 zIK^L?M9O|i)(Y==3dJKm|HVd5FI%NBpM2^enbx^rGO;A6!xSn74Xx|{ItL&7) p#g+8B2jALaxdWAZoO)vJ|HZNLP2rIb=qEfnEf>vPu;_ng{tZF*B(4Ae literal 0 HcmV?d00001 diff --git a/doris_stack/main_code/dorisparameters.py b/doris_stack/main_code/dorisparameters.py index ba8cadc..0429a64 100644 --- a/doris_stack/main_code/dorisparameters.py +++ b/doris_stack/main_code/dorisparameters.py @@ -80,6 +80,8 @@ def __init__(self, stack_path): self.do_calc_coordinates = self._settings_compare('.do_calc_coordinates', 'yes') self.do_multilooking = self._settings_compare('.do_multilooking', 'yes') self.do_unwrap = self._settings_compare('.do_unwrap', 'yes') + + #self.do_oversample = self._settings_compare('.do_oversample', 'yes') # # used in Jobs # diff --git a/doris_stack/main_code/dorisparameters.pyc b/doris_stack/main_code/dorisparameters.pyc new file mode 100644 index 0000000000000000000000000000000000000000..850e25929389c71c7ba3bd12684cd333de594c7a GIT binary patch literal 4736 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 literal 0 HcmV?d00001 diff --git a/doris_stack/main_code/grs_profile.pyc b/doris_stack/main_code/grs_profile.pyc new file mode 100644 index 0000000000000000000000000000000000000000..278c24b977751e3ad310203af684bc49a5a748ff GIT binary patch literal 1310 zcmcJN&2H2%6os#ocKSn0B{n0$CJQ1(YSpl=5JFIiE}*J1s}>OphG5@9r60S-q(nhM-n#)*{x49LwxWZ` zlFX(@?EB?g*v(Blw2&vtc!x6*a@^ocUpeDdQG;Q^GiDF@mOTIt_tiNPB$lJRE$abP zW30`m=01VY1q}FGLwL=63p18xh~<%bs)w=1*%Nl96gXP&6;jdS( v{`(EeXpH@{45MIUH0($=xCNNMve`QR{lfcp<9qUa=)wzL3-4-6Z3TY-GN%>i literal 0 HcmV?d00001 diff --git a/doris_stack/main_code/image.py b/doris_stack/main_code/image.py index a3b3402..d24f848 100644 --- a/doris_stack/main_code/image.py +++ b/doris_stack/main_code/image.py @@ -6,6 +6,7 @@ import copy from doris.doris_stack.main_code.swath import SwathMeta +#from swath import SwathMeta class ImageMeta(object): diff --git a/doris_stack/main_code/image.pyc b/doris_stack/main_code/image.pyc new file mode 100644 index 0000000000000000000000000000000000000000..75f2fb2aeaf32a0a8e5aeafe677eb95ed8e60121 GIT binary patch literal 3935 zcmcguO^+ML5v`sfx#TYQL$YH@kP=Y>Y*U6sDpq_`1b?ihtdQiG|6m~hB>%t{-*U?>mmCuyd9P-MYruwY8;>|sMg zUW=THe6_Pgk=y+y#3%p7=TYB)EIR16Uqr>h=eCG+^xJ8)Z#i1%#yy{)xrgX1w5m0U zp$1NG$Ugd}yoNHRVl8qcAt7b3aEL4CXVC5t7O(+2T`;*MYB7-{w$jm?RqLq zvtqd(xbSE?DOS#gaa8#!p`XG-ta9fR4$~zLM%idA>l6PFqcG`M~9>1{djYwl)EAZGAGU?@}GC;hc2&-!xGIOC~Ag9oBD8Y|JwpBCNx zp6JtB^r@V*7(#y%edE6T5ioHIKJ92|cEXiR@^6xlH zEx)6dWN-Zxd)rj(ZG)53>uM>8U6w;%^1#3!V?3V~9&b`ubXjFmg(J)N1T?XdtxAm)+@zOwI3Jr%@4%D6$>%nsF?D_Q^sXEY1baXi*8d}+Tb7Nq_fcX zed=2&2POyu*sV%0UXx459aX;TRo3WwxKX%Ds+-p3(33p#D&uU_#!+;* zh~Rsqk1a~^1fwF!Qhnu98@YLI`9MYlL`Ezl^)8zG1v=o)(>LV=0A%zqp-#Uu&lGI8 z71T>;*VowR{({}$j)JOFj^HiK^wH#8-lro5+}pRQJ(}hBKjJY|0YS^Zg9H70{=6KO zf6ot+F4mGYbb&t2JD|3*NdzEJ^Ymb+UT#O(eww_p@%z2GOVa&bZ1QT`oeS+lp34x~Q%0tVHbzVWxA4KD5r<%e0x;n(WqdNM2kGm=VfYt5KWvdh{! z0H;8}&B{loqG^P)p15n~=$~{l?q2f2!T4=H{gz3hoI<+0g1ica#x44{B7pbh3|y?4 z7W?4YY7(`ZPNJ;qp@_YN^uxr8`VVQhB{4z<>*AG36se1PAz-@hZ;Y63{&yybF)BY~ zS?DC@i53pHP;Z0$@3baTn30+bAkmos}NPm50t z^Jq3hf!XI}H7f=8NqvS+;S8J0twgazFRWMB>!=dv9OJ>qICz9sBA3@PEw5u%(XJuH zHxcg3{+hY!T?BG1n?CQZiiaU>8HRf2Fq~%be1c(c84RUYeoczf&u*a9xu9`C`_X@n zmTvi1-|1fOu9s%NftlbPc0}laFSOvC7U6^MmEwa%DLzosmqDWL-enoDhx|WoqZYnb S+Vs8;RUIR>YxL`FH2w#~1tNt2 literal 0 HcmV?d00001 diff --git a/doris_stack/main_code/jobs.py b/doris_stack/main_code/jobs.py index 828fab9..bdb74ef 100644 --- a/doris_stack/main_code/jobs.py +++ b/doris_stack/main_code/jobs.py @@ -109,11 +109,11 @@ def run(self, job_list): self._start_jobs() while len(self.jobs_active): if(self.verbose): - print time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime()) + "jobs busy" + print(time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime()) + "jobs busy") time.sleep(self.between_sleep_time) self._check_active_jobs() self._start_jobs() if (self.verbose): - print time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime()) + "jobs finished" + print(time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime()) + "jobs finished") time.sleep(self.end_sleep_time) self._cleanup_flag_dir() diff --git a/doris_stack/main_code/jobs.pyc b/doris_stack/main_code/jobs.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eed84aac5597c116adef65212339f0dde779d469 GIT binary patch literal 5154 zcmcIo>24gy5$@TG+7&O!vS|5G8i?tvVTm+sIB*C%mzhKgY(^Lg5G+6$3}qIvDu0|m`H|N!@&ZAS=kPn^1@ZvN_thLE4f~(D%c-rd?y2s&tJ(eU+UVa8{}Dv0 z{&eyCYdrP?fEa(CN|k!r;+}fyskoy|M@@iq)nAqRTB$FecDeL$+{0_h|L{3*ME_VE z*_O8l!f)}|0KkAN7yx$oCfJZgN0464_-S9oJ)sO#+!tg;#REaEsdz<@p^C2wGE(tS zkn74n9FMrsTM*~*%xE4%M`>uSE|hsWP>%!7m z?Z6-lPm*kz>3o?TnX-LxQWlxa3%d(!beP9FEAqq@rPY(761ubP0TSSsj)1K~2eal5y1yV!B}y#_txp?? z$npa1vdkMT|0#_x%gJqMk*s(D!{LlB$qbI2Eii19fko}1zc6lA#CEUYNDuax`Celd zd&%7|u8I&Kicbg6XAGHd0M0yhrWB&odCGOvyvq>(x+3<}Sx093g!8_d4`e8i!xb4` zYi5Ts6v)|;3`fHDx|**x%hnqH>uQPvVE2s%*=&#-Ocb2D$wYBD=DF=(01%x43~u*+ zC{Ce6C|p~_aO%Q5DV8=py{L!UfA$asaFWJHTKCZL67*@UPsDGX0YtA3Cr}6DR{-6$ z3#V~%K3776N)^@(@G~`Tk;F2?-%XI>qD*YS{F51HO6yiYtk2`NE-he!3K$&$yuhtt zt{DVnQ8;%Klq2K5GA0jfYRn>_=eTu{O&(t)F*h$lH6{i16Ra_%*rT?T=K%mab(=Yu_&WCpcqR^f;H*Hr%K!gfJpzS6@Cno5@3G^ zY5UX8VuIVveM+EALk@K!`-ocQb@y5Froj@-#aTfJO-d zq*fOMw}9K%091GAz3L6Ujr#iraDF3JDL!pP&<3#a9M#HGTfhQDg^Ul!Ty&6dxu8A} zx;AQHJSNqD72ryQqL&1y5CesGD56z}ihLB`-65znp04`h3xj2+2%W z)o79YibcJF-GV4JNE3@zR<^H|tUbgu9h(nNC$jzu2m%7$e}`_OQ{kJ%#ZqV#y=zILT&4T+?iufs4QA5>`2}0@tBI`=x zh*>;9-C>19Ed2sQOI@h0q&ljErxCUM2MAIdZ7!9+GCpko8j>0ZJq8J)=cT7k{zY$Q zMHb5bvu~Q*(qm762`qhy7+g_vbOX}d-vP-Zq3Q=lYJQ#J$XG-xutgMggll_>YlXte zbrKr_mw>j>5;)qd7vo)6ZwvMkpXF3n&2QB2d&eKwxsE0}NC1?WP|PH$&zEdN4e58r ztf*q0EXk{))deLrxz8D&t|uW~hB;Ksxka%!kMwAUNcZ32Qtl@Onr5gQ;-G4XtMtH^ z{d)uwNDN?U8N$T^#k&eIaTYcjV8SxYl2! z^#`!vg``PI#fIMkp<$$V@M?{UUQuv4AtCP(L$IQYI{7nI#IY3D^6!EVR5_`$0+K|P z4X_$ng@*mZ1C$vO<)(oAKqHdHs<1p~e*8YH3Od;R^9R@=oqUI#Tr-5-y0Al@IULi} z_7tGKPIa%j1YW)+u#J}cZCwm_nL9GgwJdIV+BdNKc6d*3 z$9nrnZ-1$`AM9;^vA2Dw-+Lb)@lr;dK3bx%vgXLB@!Nwjdue~0fH}#3li=qBI|P!f zB&}!+rFXNgoJgNSubpOsiXwP#@L4qcPYG5Deg<$}uKd?I#Pg$f>U1?+)F$|`6hZYy z@Wf4TgxoUp?h3YEV`HAI?(KPf2?EE~EC}#FfMv=dV>SrlA_@YZO}x*3wo;8~ic(b> zS2QK!{sy#j(FFVPZX%30=|L=0$Y5jO4L67VVGqyBa4>vjc&keDtjWFxkOEK~@unm1 XUfIb+kDpYU`z0G+>77=+)z1F`7s{wZ literal 0 HcmV?d00001 diff --git a/doris_stack/main_code/resdata.py b/doris_stack/main_code/resdata.py index cd28c96..ebc0648 100644 --- a/doris_stack/main_code/resdata.py +++ b/doris_stack/main_code/resdata.py @@ -76,7 +76,7 @@ def meta_reader(self): temp[name] = [line] except: - print 'Error occurred at line: ' + line + print('Error occurred at line: ' + line) def process_reader(self,processes = ''): # This function reads random processes based on standard buildup of processes in res files. @@ -84,7 +84,7 @@ def process_reader(self,processes = ''): # If loc is true, it will only return the locations where different processes start. if not processes: - processes = self.process_control.keys() + processes = list(self.process_control.keys()) processes.append('leader_datapoints') process = '' @@ -171,10 +171,9 @@ def process_reader(self,processes = ''): row += 1 except: - print 'Error occurred at line: ' + line + print('Error occurred at line: ' + line) def process_spacing(self,process=''): - spacing = 0 table_spacing = [0,0,0,0,0,0,0] @@ -283,10 +282,10 @@ def write(self,new_filename=''): elif process == 'coarse_orbits': # the coarse orbits output is different from the others. if 'Control point' in line_key: # Special case coarse orbits... f.write((line_key + ' =').ljust(spacing[0]) + str(self.processes[process][line_key]) + '\n') - elif not isinstance(data[line_key], basestring): # Another special case + elif not isinstance(data[line_key], str): # Another special case f.write(line_key.ljust(spacing_row[0]) + (data[line_key][0]).ljust(spacing_row[1]) + data[line_key][1].ljust(spacing_row[2]) + ' '.join(data[line_key][2:]) + '\n') - elif isinstance(data[line_key], basestring): # Handle as in normal cases + elif isinstance(data[line_key], str): # Handle as in normal cases f.write((line_key + ':').ljust(spacing[0]) + str(self.processes[process][line_key]) + '\n') else: # If it consists out of two parts f.write((line_key + ':').ljust(spacing[0]) + str(self.processes[process][line_key]) + '\n') @@ -301,7 +300,7 @@ def write(self,new_filename=''): def insert(self,data,process,variable=''): # This function inserts a variable or a process which does not exist at the moment - processes = self.process_control.keys() + processes = list(self.process_control.keys()) processes.extend(['header','leader_datapoints']) if process not in processes: @@ -401,4 +400,4 @@ def request(self,process,variable=''): warnings.warn('This variable does not exist: ' + str(variable)) return - return data \ No newline at end of file + return data diff --git a/doris_stack/main_code/resdata.pyc b/doris_stack/main_code/resdata.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3ef0fed5c08241619a884bb40ac710f89804239b GIT binary patch literal 11479 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 M5c>kj7^3R_FEfbbt^fc4 literal 0 HcmV?d00001 diff --git a/doris_stack/main_code/single_master_stack.py b/doris_stack/main_code/single_master_stack.py index 11f49bc..2c33084 100644 --- a/doris_stack/main_code/single_master_stack.py +++ b/doris_stack/main_code/single_master_stack.py @@ -1,4 +1,4 @@ -import os +import os, sys import numpy as np from datetime import datetime from collections import OrderedDict @@ -77,7 +77,7 @@ def processing_read(self): folders = next(os.walk(self.folder))[1] folders = [fold for fold in folders if len(fold) == 8] - + print(folders) self.stack = dict() for fold in folders: @@ -97,7 +97,7 @@ def processing_read(self): for burst in bursts: burst_name = swath + '_' + burst self.stack[s_date][burst_name] = dict() - + self.read_res() def remove_finished(self, step='unwrap'): @@ -152,7 +152,7 @@ def initialize(self, path='',cascade=False): # Copy data files m_source = self.burst_path(key=burst, date=self.master_date, dat_type='slave', full_path=True) m_dest = self.burst_path(key=burst, date=date, dat_type='master', full_path=True) - + #print(m_source, m_dest) #Added and commented by Anurag on 1st Nov and 12th Nov. respectively if not os.path.exists(m_dest): os.symlink(m_source, m_dest) @@ -381,6 +381,76 @@ def correct_coarse_correlation(self): self.fake_master_steps(step='coarse_correl', burst_proc=False) + def oversample(self, master=True): + # Oversample slave and masters and slaves of bursts. + + if len(self.coreg_dates) == 0: + return + self.read_res(dates=self.coreg_dates) + + job_list1 = [] + job_list2 = [] + + # Oversample slaves + bursts = self.stack[self.coreg_dates[0]].keys() + for date in self.coreg_dates: + for burst in bursts: + path = self.burst_path(date, burst, full_path=True) + #slave_file = self.burst_path(key=burst, dat_type='slave', full_path=False) + #slave_deramped = self.burst_path(key=burst, dat_type='slave_deramped', full_path=False) + #print(self.stack) + if self.stack[date][burst]['slave'].process_control['oversample'] != '1': + path = self.burst_path(date, burst, full_path=True) + command1 = self.doris_path + ' ' + os.path.join(self.input_files, 'input.oversample') + + job_list2.append({"path": path, "command": command1}) + + if not self.parallel: + os.chdir(path) + # Resample + os.system(command1) + + #Oversample master + date = self.master_date + + for burst in bursts: + path = self.burst_path(date, burst, full_path=True) + #master_file = self.burst_path(key=burst, dat_type='slave', full_path=False) + master_ovs = self.burst_path(key=burst, dat_type='slave_ovs', full_path=False) + #if self.stack[date][burst]['slave'].process_control['oversample'] != '1': + if not os.path.exists(os.path.join(path, master_ovs)) or not master: + path = self.burst_path(date, burst, full_path=True) + command1 = self.doris_path + ' ' + os.path.join(self.input_files, 'input.oversample') + + job_list1.append({"path": path, "command": command1}) + + if not self.parallel: + os.chdir(path) + # Resample + os.system(command1) + + if self.parallel: + jobs = Jobs(self.nr_of_jobs, self.doris_parameters) + jobs.run(job_list1) + jobs.run(job_list2) + + + # Create links for master if needed. + for burst in bursts: + master_file = self.burst_path(key=burst, date=date, dat_type='slave_ovs', full_path=True) + + for date_slave in self.coreg_dates: + slave_file = self.burst_path(key=burst, date=date_slave, dat_type='master_ovs', full_path=True) + #print(slave_file) + if not os.path.exists(slave_file): + os.symlink(master_file, slave_file) + + + #self.update_res(dates=self.coreg_dates) + + + + def deramp(self, master=True): # Deramp slave and masters and slaves of bursts. @@ -398,7 +468,9 @@ def deramp(self, master=True): for burst in bursts: path = self.burst_path(date, burst, full_path=True) slave_file = self.burst_path(key=burst, dat_type='slave', full_path=False) + #slave_file = self.burst_path(key=burst, dat_type='slave_ovs', full_path=False) slave_deramped = self.burst_path(key=burst, dat_type='slave_deramped', full_path=False) + #slave_deramped = self.burst_path(key=burst, dat_type='slave_ovs_deramped', full_path=False) if not os.path.exists(os.path.join(path, slave_deramped)): command2 = 'python ' + os.path.join(self.function_path, 'do_deramp_SLC.py') + ' ' + slave_file + ' slave.res' @@ -409,6 +481,8 @@ def deramp(self, master=True): if self.stack[date][burst]['slave'].processes['crop']['Data_output_file'] != os.path.basename(slave_deramped): self.stack[date][burst]['slave'].processes['crop']['Data_output_file'] = os.path.basename(slave_deramped) + #if self.stack[date][burst]['slave'].processes['oversample']['Data_output_file'] != os.path.basename(slave_deramped): + #self.stack[date][burst]['slave'].processes['oversample']['Data_output_file'] = os.path.basename(slave_deramped) if self.stack[date][burst]['slave'].processes['readfiles']['deramp'] != '1': self.stack[date][burst]['slave'].processes['readfiles']['deramp'] = '1' if self.stack[date][burst]['master'].processes['readfiles']['reramp'] != '0': @@ -420,7 +494,9 @@ def deramp(self, master=True): for burst in bursts: path = self.burst_path(date, burst, full_path=True) master_file = self.burst_path(key=burst, dat_type='slave', full_path=False) + #master_file = self.burst_path(key=burst, dat_type='slave_ovs', full_path=False) master_deramped = self.burst_path(key=burst, dat_type='slave_deramped', full_path=False) + #master_deramped = self.burst_path(key=burst, dat_type='slave_ovs_deramped', full_path=False) if not os.path.exists(os.path.join(path, master_deramped)) or not master: command1 = 'python ' + os.path.join(self.function_path, 'do_deramp_SLC.py') + ' ' + master_file + ' slave.res' @@ -437,9 +513,11 @@ def deramp(self, master=True): # Create links for master if needed. for burst in bursts: master_file = self.burst_path(key=burst, date=date, dat_type='slave_deramped', full_path=True) + #master_file = self.burst_path(key=burst, date=date, dat_type='slave_ovs_deramped', full_path=True) for date_slave in self.coreg_dates: slave_file = self.burst_path(key=burst, date=date_slave, dat_type='master_deramped', full_path=True) + #slave_file = self.burst_path(key=burst, date=date_slave, dat_type='master_ovs_deramped', full_path=True) if not os.path.exists(slave_file): os.symlink(master_file, slave_file) if self.stack[date_slave][burst]['master'].processes['crop']['Data_output_file'] != os.path.basename(slave_file): @@ -719,6 +797,9 @@ def fake_fine_coreg(self): for date in self.coreg_dates: for burst in self.stack[date].keys(): # Insert fake coregistration + #print('annnnnnnnnnnnnnnuuuuuuu', date, burst)#inserted by Anurag on 2019-07-15 + #print(date) + #print(burst) if not self.stack[date][burst]['ifgs'].process_control['fine_coreg'] == '1': self.stack[date][burst]['ifgs'].insert(coreg,'fine_coreg') @@ -853,7 +934,7 @@ def dac_full_swath(self): self.fake_master_steps(step='dem_assist', burst_proc=False) - def resample(self, type=''): + def resample(self, type='', concatenate=False, ras=False, overwrite=False): # Resample slave bursts if len(self.coreg_dates) == 0: @@ -881,7 +962,56 @@ def resample(self, type=''): jobs.run(jobList1) jobs.run(jobList2) + + #Added by Anurag to concatenate slave_rsmp.raw files from multiple bursts + self.read_res(dates=self.coreg_dates) + + if concatenate == True: + rsmp_name = 'slave_rsmp.raw' + self.concatenate(rsmp_name, rsmp_name, dt=np.dtype('complex64'), overwrite=overwrite, master=False) + + for date in self.coreg_dates: + if self.full_swath[date]['slave'].process_control['resample'] != '1' or overwrite is True: + # Add res file information + no_lines = self.full_swath[date]['master'].processes['readfiles']['Number_of_lines_original'] + no_pixels = self.full_swath[date]['master'].processes['readfiles']['Number_of_pixels_original'] + line_0 = self.full_swath[date]['master'].processes['readfiles']['First_line (w.r.t. output_image)'] + line_1 = self.full_swath[date]['master'].processes['readfiles']['Last_line (w.r.t. output_image)'] + pix_0 = self.full_swath[date]['master'].processes['readfiles']['First_pixel (w.r.t. output_image)'] + pix_1 = self.full_swath[date]['master'].processes['readfiles']['Last_pixel (w.r.t. output_image)'] + + burst = self.stack[date].keys()[0] + print(self.stack[date][burst]) + res = copy.deepcopy(self.stack[date][burst]['slave'].processes['resample']) + + res['First_line (w.r.t. original_master)'] = line_0 + res['Last_line (w.r.t. original_master)'] = line_1 + res['First_pixel (w.r.t. original_master)'] = pix_0 + res['Last_pixel (w.r.t. original_master)'] = pix_1 + res['Number of lines (multilooked)'] = no_lines + res['Number of pixels (multilooked)'] = no_pixels + + self.full_swath[date]['slave'].insert(res, 'resample') + + path = self.image_path(date) + os.chdir(path) + # Finally show preview based on cpxfiddle + if ras: + pixels = self.full_swath[date]['master'].processes['readfiles']['Number_of_pixels_original'] + + if not os.path.exists('slave_rs_mag.ras') or overwrite: + mag = ' -w ' + pixels + ' -e 0.3 -s 1.0 -q mag -o sunraster -b -c gray -M 1/1 -f cr4 -l1 ' \ + '-p1 -P' + pixels + ' ' + rsmp_name + ' > slave_rs_mag.ras' + os.system(self.cpxfiddle + mag) + + + self.update_res(dates=self.coreg_dates) + + #self.fake_master_steps(step='resample', network=False, full_swath=concatenate) + + + def reramp(self, type=''): # This function reramps the radar data. If master is True, we assume that there is still an original master file # Which means that it is not needed to reramp that one. If master is false, only the slave is reramped. @@ -928,6 +1058,88 @@ def reramp(self, type=''): self.update_res(dates=self.coreg_dates) self.fake_master_steps(step='resample') + + + def oversample_1(self, type=''): + # Resample slave bursts + + if len(self.coreg_dates) == 0: + return + + jobList1 = [] + jobList2 = [] + + for date in self.coreg_dates: + for burst in self.stack[date].keys(): + + if self.stack[date][burst]['slave'].process_control['oversample'] != '1': + path = self.burst_path(date, burst, full_path=True) + #res = self.stack[date][burst]['slave'] + #print(res.processes['crop']) + #Resample to crop pe cipkaaya + self.stack[date][burst]['slave'].update(self.stack[date][burst]['slave'].processes['resample']['Data_output_file'], 'crop', variable='Data_output_file') + self.stack[date][burst]['slave'].update(self.stack[date][burst]['slave'].processes['resample']['Data_output_format'], 'crop', variable='Data_output_format') + self.stack[date][burst]['slave'].update(self.stack[date][burst]['slave'].processes['resample']['First_line (w.r.t. original_master)'], 'crop', variable='First_line (w.r.t. original_image)') + self.stack[date][burst]['slave'].update(self.stack[date][burst]['slave'].processes['resample']['Last_line (w.r.t. original_master)'], 'crop', variable='Last_line (w.r.t. original_image)') + self.stack[date][burst]['slave'].update(self.stack[date][burst]['slave'].processes['resample']['First_pixel (w.r.t. original_master)'], 'crop', variable='First_pixel (w.r.t. original_image)') + self.stack[date][burst]['slave'].update(self.stack[date][burst]['slave'].processes['resample']['Last_pixel (w.r.t. original_master)'], 'crop', variable='Last_pixel (w.r.t. original_image)') + #print(res.processes['crop']) + #self.update_res() + #oversample kiya + #self.stack[date][burst]['slave'].write(new_filename = 'slave.res') + #print(self.stack[date][burst]['slave'].processes) + #import sys + #sys.exit() + command1 = self.doris_path + ' ' + os.path.join(self.input_files, 'input.oversample') + command2 = self.doris_path + ' ' + os.path.join(self.input_files, 'input_m.oversample') + + jobList1.append({"path": path, "command": command1}) + jobList2.append({"path": path, "command": command2}) + + if not self.parallel: + os.chdir(path) + # oVERSAMPLE + os.system(command1) + os.system(command2) + #resample pe oversample ko chipkaaya + self.update_res() + if self.parallel: + jobs = Jobs(self.nr_of_jobs, self.doris_parameters) + + jobs.run(jobList1) + jobs.run(jobList2) + self.read_res() + + for date in self.coreg_dates: + for burst in self.stack[date].keys(): + if self.stack[date][burst]['slave'].process_control['oversample'] == '1': + #res = self.stack[date][burst]['slave'] + self.stack[date][burst]['slave'].update(self.stack[date][burst]['slave'].processes['oversample']['Data_output_file'], 'resample', variable='Data_output_file') + self.stack[date][burst]['slave'].update(self.stack[date][burst]['slave'].processes['oversample']['Data_output_format'], 'resample', variable='Data_output_format') + self.stack[date][burst]['slave'].update(self.stack[date][burst]['slave'].processes['oversample']['First_line (w.r.t. ovs_image)'], 'resample', variable='First_line (w.r.t. original_master)') + self.stack[date][burst]['slave'].update(self.stack[date][burst]['slave'].processes['oversample']['Last_line (w.r.t. ovs_image)'], 'resample', variable='Last_line (w.r.t. original_master)') + self.stack[date][burst]['slave'].update(self.stack[date][burst]['slave'].processes['oversample']['First_pixel (w.r.t. ovs_image)'], 'resample', variable='First_pixel (w.r.t. original_master)') + self.stack[date][burst]['slave'].update(self.stack[date][burst]['slave'].processes['oversample']['Last_pixel (w.r.t. ovs_image)'], 'resample', variable='Last_pixel (w.r.t. original_master)') + + #self.stack[date][burst]['slave'].write(new_filename = 'slave.res') + + self.update_res() + ##resample pe oversample ko chipkaaya + #res.update(res.processes['oversample']['Data_output_file'], 'resample', variable='Data_output_file') + #res.update(res.processes['oversample']['Data_output_format'], 'resample', variable='Data_output_format') + #res.update(res.processes['oversample']['First_line (w.r.t. ovs_image)'], 'resample', variable='First_line (w.r.t. original_master)') + #res.update(res.processes['oversample']['Last_line (w.r.t. ovs_image)'], 'resample', variable='Last_line (w.r.t. original_master)') + #res.update(res.processes['oversample']['First_pixel (w.r.t. ovs_image)'], 'resample', variable='First_pixel (w.r.t. original_master)') + #res.update(res.processes['oversample']['Last_pixel (w.r.t. ovs_image)'], 'resample', variable='Last_pixel (w.r.t. original_master)') + ##interferogram banaaya + ## + + ##print(res.processes['readfiles']) + #res.write(new_filename = 'slave_test_1.res') + + + + def fake_master_resample(self): # This script fakes a resample step for the master file (this is of course not really needed) @@ -967,8 +1179,12 @@ def fake_master_resample(self): lines = int(burst_res[date][burst]['slave'].processes['readfiles']['Last_line (w.r.t. output_image)']) - \ int(burst_res[date][burst]['slave'].processes['readfiles']['First_line (w.r.t. output_image)']) + 1 pixels = int(burst_res[date][burst]['slave'].processes['readfiles']['Last_pixel (w.r.t. output_image)']) - \ - int(burst_res[date][burst]['slave'].processes['readfiles']['First_pixel (w.r.t. output_image)']) + 1 + int(burst_res[date][burst]['slave'].processes['readfiles']['First_pixel (w.r.t. output_image)']) + 1 dtype = np.dtype([('re', np.int16), ('im', np.int16)]) + + print('resample_dat '+ resample_dat) + print('slave_deramped_dat '+ slave_deramped_dat) + if not os.path.exists(resample_dat): resample = np.memmap(resample_dat, dtype='complex64', mode='w+', shape=(lines, pixels)) @@ -983,7 +1199,12 @@ def fake_master_resample(self): np.int16).astype(np.float32).view(np.complex64) resample_reramped[:, :] = slc_ramped_dat resample_reramped.flush() - + + + rsmp_name = 'slave_rsmp.raw' + self.concatenate(rsmp_name, rsmp_name, dt=np.dtype('complex64'), overwrite=True, master=True) + + self.update_res(dates=[date], image_stack=image_res, burst_stack=burst_res) def fake_master_steps(self, step='subtr_refdem', network=True, burst_proc=True, full_swath=True): @@ -998,8 +1219,8 @@ def fake_master_steps(self, step='subtr_refdem', network=True, burst_proc=True, if not step in steps: print('Step ' + step + ' does not exist in processing') - return - elif step == 'resample': + #return + if step == 'resample': self.fake_master_resample() return @@ -1604,6 +1825,7 @@ def compref_dem(self, network=False): for date in self.coreg_dates: job_list1 = [] for burst in self.stack[date].keys(): + print(date, burst) if self.stack[date][burst]['ifgs'].process_control['comp_refdem'] != '1': path = self.burst_path(date, burst, full_path=True) command1 = self.doris_path + ' ' + os.path.join(self.input_files, 'input.comprefdem') @@ -1612,6 +1834,7 @@ def compref_dem(self, network=False): os.chdir(path) os.system(command1) if (self.parallel): + #print(command1) jobs = Jobs(self.nr_of_jobs, self.doris_parameters) jobs.run(job_list1) @@ -1651,6 +1874,7 @@ def ref_dem(self,concatenate=True, overwrite=False, network=False, ras=False): if concatenate == True: self.concatenate('cint_srd.raw', 'cint_srd.raw', dt=np.dtype('complex64'), overwrite=overwrite) + self.concatenate('h2ph_srd.raw', 'h2ph_srd.raw', dt=np.dtype('float32'), overwrite=overwrite)#dt changed from cpx64 to float32 on 10-05-2021. for date in self.coreg_dates: @@ -1692,15 +1916,15 @@ def ref_dem(self,concatenate=True, overwrite=False, network=False, ras=False): pixels = self.full_swath[date]['master'].processes['readfiles']['Number_of_pixels_original'] if not os.path.exists('interferogram_srd_mag.ras') or overwrite: - mag = ' -w ' + pixels + ' -e 0.3 -s 1.0 -q mag -o sunraster -b -c gray -M 20/5 -f cr4 -l1 ' \ + mag = ' -w ' + pixels + ' -e 0.3 -s 1.0 -q mag -o sunraster -b -c gray -M 8/2 -f cr4 -l1 ' \ '-p1 -P' + pixels + ' cint_srd.raw > interferogram_srd_mag.ras' os.system(self.cpxfiddle + mag) if not os.path.exists('interferogram_srd_mix.ras') or overwrite: - mix = ' -w ' + pixels + ' -e 0.3 -s 1.2 -q mixed -o sunraster -b -c jet -M 20/5 -f cr4 -l1 ' \ + mix = ' -w ' + pixels + ' -e 0.3 -s 1.2 -q mixed -o sunraster -b -c jet -M 8/2 -f cr4 -l1 ' \ '-p1 -P' + pixels + ' cint_srd.raw > interferogram_srd_mix.ras' os.system(self.cpxfiddle + mix) if not os.path.exists('interferogram_srd_pha.ras') or overwrite: - pha = ' -w ' + pixels + ' -q phase -o sunraster -b -c jet -M 20/5 -f cr4 -l1 ' \ + pha = ' -w ' + pixels + ' -q phase -o sunraster -b -c jet -M 8/2 -f cr4 -l1 ' \ '-p1 -P' + pixels + ' cint_srd.raw > interferogram_srd_pha.ras' os.system(self.cpxfiddle + pha) @@ -2015,16 +2239,21 @@ def calc_coordinates(self, createdem=True): if not os.path.exists(link_dem): os.symlink(dat_dem, link_dem) - def concatenate(self, burst_file, master_file, dt=np.dtype(np.float32), overwrite=False, dates=[], multilooked='False', res_type='master'): + def concatenate(self, burst_file, master_file, dt=np.dtype(np.float32), overwrite=False, dates=[], multilooked='False', res_type='master', master=False): # Concatenate all burst to a single full swath product. If burst_file = 'master' then the input master files are read... # This function also accepts cpxint16 datatype + # dt: 28-04-2021: master kwarg added to concatenate the master images, if needed if not dates: dates = self.stack.keys() + if master: + dates.append(self.master_date) job_list1 = [] for date in dates: path = self.image_path(date) + #print(path) + #continue final_path = os.path.join(path, master_file) if not os.path.exists(final_path) or overwrite == True: @@ -2035,6 +2264,7 @@ def concatenate(self, burst_file, master_file, dt=np.dtype(np.float32), overwrit if not self.parallel: os.chdir(path) os.system(command1) + #sys.exit() if self.parallel: jobs = Jobs(self.nr_of_jobs, self.doris_parameters) jobs.run(job_list1) @@ -2152,6 +2382,12 @@ def burst_path(self, date='', key='', file_path='', stack_folder=False, dat_type file_path = dat_type + file_path + '.raw' elif dat_type == 'master_deramped' or dat_type == 'slave_deramped': file_path = dat_type[:-9] + file_path + '_deramped.raw' + elif dat_type == 'master_ovs' or dat_type == 'slave_ovs': + #file_path = dat_type[:-4] + file_path + '_ovs.raw' + file_path = dat_type + '.raw' + elif dat_type == 'master_ovs_deramped' or dat_type == 'slave_ovs_deramped': + #file_path = dat_type[:-4] + file_path + '_ovs.raw' + file_path = dat_type + '.raw' if full_path is True: if len(date) == 10: diff --git a/doris_stack/main_code/single_master_stack.pyc b/doris_stack/main_code/single_master_stack.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fb9eea066c9a78fd29f905b70cb3f3edb36a6813 GIT binary patch literal 82337 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

K2TpWE|@nq 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 PQTTKzrUe;{z6bsXAn>t+ literal 0 HcmV?d00001 diff --git a/doris_stack/main_code/stack.py b/doris_stack/main_code/stack.py index f7a2101..fe2940e 100644 --- a/doris_stack/main_code/stack.py +++ b/doris_stack/main_code/stack.py @@ -140,7 +140,7 @@ def search_files(self, track_dir): images = list() top_dir = next(os.walk(track_dir)) - + print(top_dir[1]) for data in top_dir[2]: if data.endswith('.zip'): images.append(os.path.join(track_dir, data)) diff --git a/doris_stack/main_code/stack.pyc b/doris_stack/main_code/stack.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2114211194a4eee9cc507b591e26fd65e30a9449 GIT binary patch literal 23086 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 literal 0 HcmV?d00001 diff --git a/doris_stack/main_code/swath.py b/doris_stack/main_code/swath.py index 6db92e3..ccc35d0 100644 --- a/doris_stack/main_code/swath.py +++ b/doris_stack/main_code/swath.py @@ -7,6 +7,10 @@ from doris.doris_stack.main_code.burst import BurstMeta from doris.doris_stack.functions.swath_metadata import burst_coverage, swath_coverage, swath_precise +#from ..functions.xml_query import xml_query +#from burst import BurstMeta +#from ..functions.swath_metadata import burst_coverage, swath_coverage, swath_precise + class SwathMeta(object): # Class which stores and gathers information of a swath in a sentinel dataset diff --git a/doris_stack/main_code/swath.pyc b/doris_stack/main_code/swath.pyc new file mode 100644 index 0000000000000000000000000000000000000000..01a9ee75f51d77795eaf4cffcf95ff38b3f0172a GIT binary patch literal 4438 zcmcInTXP&o6+S(C)5?-9OSWa%21Zn%)~-at3523ZrE*aSMG-}eQjnjtjwIl7$ ztfzZr*(E*M72t^~egV($mgoEeil_V)-Y6*ezSBD^83Mf6lJ;!(>C>mX&*eKuwZAUT z_dnkGv?tS_8ouAc$L1gj{)`MoMn?9G7|sJ32C^6E8pbu*tLeBV!@7(bve)o(bs08g z)RMiHjOJu-PDX9nYh$e;>AdufBu#lL@ryS;~ZID#>Y;OhJkOTbHA zna79Ue1wfa_eD-bx@vO{aI#Sjj`9Oo+7IfLaHASDt3j(8%vFPSHJGoqUyzf!EZE0# z(vXGn_i|$N%Pq*kB3<#s`+8TU{@|s47EG6Gx(pj1T#|z&?u8+q1ahiZApf$QG%2)o z?-e<1(L)qnt_IlCl#>?sK&bqRB zA#O!}Ez_|3945XYTR0ql_IGCbunU};WKMo7g6Kbi*>B2WOUgf05|>m0Yjjl|?|WNL z+j7#DWJ!|Cvi=*9!={v97_ydS4Jr-;&i~C?SbkE|H-BO9W@>BvS8WnJt4)Guv^9AC zRGS2NDX!<5tDgrrovVKDwdvkuMGk9H{xLYywn}aG z%fLZKHB4pxQpLuV%0SaAUZ<|)s;uF(1^c(^=3qBw>~g*~b-=Z1x8Ibk%DR_JuFE>_ z^8HG3?ODk+pDt6SoM^J{c5WfJwj*Yl{SnB{FpX^*j?3aGOVTjS+#oH(n2co7bKw|h z5Ef+!)CuD}36t1i5lnj(ySJ)YnAtEd9)=T}CXQ(w=Xv2`mle6YfawUQOv-eW=B~%I zXVNpvU&F`V1i=mOU6xbivJoFMzcddNMt2qFwmT4#4)-ZyY$?Ucnq+H;#pQD)ZDt_9j1ZjRzC2RbI{rlR7;_>m>v zzOkR?>G8OH^M{yNUZCl(Fc?I0nCW!}M;^xpb`z|fVi-faJ|AXrA@H@>&$GvA@-j@6 z<@;fh_T$OWg`K0L+fj>ZXqH!%zGgQtRv-@Z$>=^D@_&@vy`3#!OLmcjzRjr3z6A0S z+%T-v6#cND4O1K1K`|L7;r%o$@^n3eoY?PzyyyK-Z^P*`XNO6FO}s>UoLQIs0~IOz zJBS|fOl(j;#8tRglx1qiMV@SQ>d+qXermMn5=ToQTCvmu(Pi?M$y)<)e1}#stA)vz zDx9V9K%00b&tlW9`rCSbGX(zK9v&$N3|b zQ?+DRSL(tL_oQa-(@p9M+hMlpf=!40=-Ze@*GTvt-AI#hqZ)xHgVE*5jFG-xol7&; zu}?Lws*>lJPRkLX7!9}weTs80VQ@aID+bo!+ zVB7qnxr`A%ubU;afzJ)_7tIV|`096g%7-B6IRG*TTH!n%!aC$=&HWVBx@sgG3doGF zGF?<>Kxj+p96Oo{l^AakJ`!CaxlTf_MGWDHXc65YA;v|wKor8Fmod^PK#DNdyvf0o z=V@(*2E)Ir8Nq8>CY1!s=DO+eaLP(bPi*n>av&exzNHo?J))XLBFUA0{ zg3_ejYS=G^37`=Yb_`BGL+K&FOxL@9y^3$2r*zH7AN*YNV&}v6JSx!$-gDpJ=$jyZ zfnJJUC*gu>Vp?`_wHM<5F121fJb0Ii;;$^qJI^q)AjEvw1AZooe_=(Tae0&dZSGQ-ItrPh)KG>CdQ zXWfe`cS)DdvC%9;1|2nI&auG&ySlw9SXS1GQsgvsuE>K!`IROx0dia2tKkq&jvWh9 z{5Ts;+~A{Zl6}1&FAofmPgR d!>jLjab{A7z2RN-CXcps{t{|4YPGr5`WJ0mut@*_ literal 0 HcmV?d00001 diff --git a/envisat_tools/Makefile b/envisat_tools/Makefile index 9126dff..089c66f 100755 --- a/envisat_tools/Makefile +++ b/envisat_tools/Makefile @@ -17,12 +17,12 @@ ### Check if you agree with the options below (install_dir OK?) ### then simply type: "make install" SHELL = /bin/sh -CC = gcc +CC = g++ #CFLAGS = -O3 #CFLAGS = -m32 # for 64-bit systems, it requires compatibility lib32, no need for epr_api v2.2 LFLAGS = -lm -INSTALL_DIR = /home/gertmulder/bin/doris/doris_v5_wu_branch - +# INSTALL_DIR = /home/gertmulder/bin/doris/doris_v5_wu_branch +INSTALL_DIR = /usr/local/bin ############################################################# diff --git a/install/INSTALL.sh b/install/INSTALL.sh new file mode 100644 index 0000000..4926375 --- /dev/null +++ b/install/INSTALL.sh @@ -0,0 +1,58 @@ +cd ../doris_core +sudo apt-get install tcsh +./configure +make +make install + +# -------------------------------------------- +# - COMPILATION OF THE DORIS CORE ------------ +# -------------------------------------------- +cd ../doris_core +# 8. Read the README file +./configure #(creates "Makefile") # requires tcsh shell to run, to install type "" at shell prompt sudo apt-get install + #tcsh on Ubuntu platform. + #( +answer the questions about libraries, etc.) +make # (compiles the software) +make install # (installs doris and bin scripts) + + +#-------------------------------------------- +# - COMPILATION OF DORIS UTILITIES ----------- +# -------------------------------------------- +cd ../sartools +make +# 14. Review/edit the Makefile if this does not work +# (for example if you do not want to use GNU gcc/g++ as compiler) +make install # (installs in /usr/local/bin unless you edit the Makefile) + + +cd ../envisat_tools # on 64-bit system requires libc-dev-i386 library ex: "sudo apt-get install libc-dev-i386" +make +# 18. Review/edit the Makefile if this does not work +# (for example if you do not want to use gcc as compiler) +make install + +# -------------------------------------------- +# - INSTALLATION OF Doris - python part +# -------------------------------------------- + +# To use the Doris Python scripts you will need to install the following Python packages: +# - numpy, scipy (for calculations) +# - matplotlib (visualization) +# - requests (data download) +# - gdal, gdal-dev, shapely, fiona, pyproj, fastkml, osr (GIS) + + +# After installation of the python packages you have to make a link to the doris_core, cpxfiddle and snaphu executables. +# You can do so by executing the install script, but you will have to create user accounts first to be able to download +# Sentinel-1 and SRTM DEMs. + +# 25. create an account for the downloading of SRTM DEMs at +# https://urs.earthdata.nasa.gov/users/new +# 26. create an account for downloading Sentinel data at +# https://urs.earthdata.nasa.gov/users/new/ + +# move to the install directory +cd ../install +python init_cfg.py +# and fill in the different paths and user accounts diff --git a/install/INSTALL.txt b/install/INSTALL.txt index 7a4797b..dde1fae 100755 --- a/install/INSTALL.txt +++ b/install/INSTALL.txt @@ -35,8 +35,8 @@ There are 5 components in this distribution (doris v5.0beta). -------------------------------------------- 7. cd ../doris_core 8. Read the README file -9. ./configure (creates "Makefile") # requires tcsh shell to run, to install type "sudo apt-get install - tcsh" at shell prompt on Ubuntu platform. +9. ./configure (creates "Makefile") # requires tcsh shell to run, to install type "" at shell prompt sudo apt-get install + tcshon Ubuntu platform. ( +answer the questions about libraries, etc.) 10. make (compiles the software) 11. make install (installs doris and bin scripts) diff --git a/install/doris_config.xml b/install/doris_config.xml new file mode 100644 index 0000000..50c7006 --- /dev/null +++ b/install/doris_config.xml @@ -0,0 +1,10 @@ + + /home/anurag/Documents/PhDProject/doris + /usr/local/bin/doris + /usr/local/bin/cpxfiddle + /usr/local/bin/snaphu + annie123 + Annie@123 + annie123 + Annie123 + diff --git a/prepare_stack/.create_dem.py.swo b/prepare_stack/.create_dem.py.swo new file mode 100644 index 0000000000000000000000000000000000000000..a545ef669780111c328862a3405bb2f26c597d1f GIT binary patch literal 40960 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 NJC-~A_Stmd{{hlu43_`^ literal 0 HcmV?d00001 diff --git a/prepare_stack/.create_dem.py.swp b/prepare_stack/.create_dem.py.swp new file mode 100644 index 0000000000000000000000000000000000000000..2615618a4d54bfe4dd192ee0353bc02ccba248c6 GIT binary patch literal 20480 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 literal 0 HcmV?d00001 diff --git a/prepare_stack/__pycache__/__init__.cpython-310.pyc b/prepare_stack/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b5c312aedbf83600181b003b834cf629241985f5 GIT binary patch literal 158 zcmd1j<>g`kg3AZyM}z3cAOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUS?{fzwFRQ<%f z(xSw4eV6>?(%jU%l4AXU43~hS{H)aE68)6?qRe9bf}+%d#G=&r;*!MVZ2kE7%)HE! b_;|g7%3B;Zx%nxjIjMFaql=k<1PcQI)Ji5r literal 0 HcmV?d00001 diff --git a/prepare_stack/__pycache__/__init__.cpython-36.pyc b/prepare_stack/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e8488178b32d9834f008301ec79bc2726e378db3 GIT binary patch literal 148 zcmXr!<>k73V16_M5IhDEFu(|8H~?`m3y?@*2xib^^jpbL1QJFNzZ~^5@^e%56Z1-o z64Uiv@{>z*Q}arS^#d|o0*dmpQj<&cQ}T;4i}eeNQVSA`QsawD5|gv_g`kg3AZyM}z3cAOZ#$feZ&AE@lA|DGb33nv8xc8Hzx{2;!Hcenx(7s(xZ# zX;EUjzDs^`X>Mv>NwI!FhD$(EepYI7iGE6cQD(7zK~ZW!Vo_>*aYg`kg3AZyM}z3cAOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUS?{fzwFRQ<%f z(xSw4eV6>?(%jU%l4AXU43~hS{H)aE68)6?qRe9bf}+%d#G=&r;*!MVZ2kE7%)HE! Z_;|g7%3B;Zx%nxjIjMFaqdx;N0|0tpCZzxX literal 0 HcmV?d00001 diff --git a/prepare_stack/__pycache__/__init__.cpython-39.pyc b/prepare_stack/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3777e2f497fb58924d7a7d05a5ac8a571045b7f0 GIT binary patch literal 156 zcmYe~<>g`kg3AZyM}z3cAOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUS?{fzwFRQ<%f z(xSw4eV6>?(%jU%l4AXU43~hS{H)aE68)6?qRe9bf}+%d#G=&r;*!MVZ2kE7%)HE! Z_;|g7%3B;Zx%nxjIjMFaqdx;N0|0@rCb0kj literal 0 HcmV?d00001 diff --git a/prepare_stack/__pycache__/create_datastack_bash.cpython-39.pyc b/prepare_stack/__pycache__/create_datastack_bash.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f267583c71c379ed191354aac5bc6028f979d27b GIT binary patch literal 2024 zcmah~&2Hm15GEfg|#pA?M?e90rbKAt?PnZs<-Ip+9A(S#;<; zhnn|6P(*Qzy!wwPgdmJ2nx|v*1EPd#?-A9Q@lNwv6u(7B`rj}H4MQoLg+S*y)cgqu zhCED>M<}M`J@PcFQ62s|HDHF8uwHT&6zoNik3$URcSW{keF-&}Bq;)WJp3Jm&~p}# zxCW>ax5L3Wov=ZWOnGoIc$J3J2}_E6a5{c<%F|0076Y2{C?8~;WdUb?UIgKhbcyFgNv$FE z!dPJWQM@2Cy=cwbmA=3;qcY~^0?k@gYu=$`fiJCDyB?Lz7iR(cU!ZvpSbwr0vMr+ttJ!^E zHGA~ah4zuP{2$+%$^MebXDf~mGkJ2KiHh3;9#%2mqo042<$WgW$bY~@U5YP;yh6LmZAa1W9wD%g77;GK~_^rV&qq2@~z$JXbiRno$HB;0yBl zOc;=za?oC|f~RRA^ih;hp%?5L+G)lTVO;U3V8RIF6by}UJW1)%2A6rrv+FE2N@L2n z=*k)VWyer~7bYADV?YU@%5te85-qnH`MdTyJThdemm31{w|pOBIaPaM`~Gj! zAg(pM1-$ry6ssqvZpkHZ`8>3ts#nU?Oidw2Z4S>Z5|1I`eb`OL`mbXqpQSSyctb&= g+rapiv~Q*7^1V`X{Fggnep|ErPHuVa6K|7$0j#7L!vFvP literal 0 HcmV?d00001 diff --git a/prepare_stack/__pycache__/create_dem.cpython-310.pyc b/prepare_stack/__pycache__/create_dem.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d1b625c460e1cee78dd2535a38c13c63d2340ebe GIT binary patch literal 19807 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 PG30=BjBoNg`tSXJjGslb literal 0 HcmV?d00001 diff --git a/prepare_stack/__pycache__/create_dem.cpython-36.pyc b/prepare_stack/__pycache__/create_dem.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ed2a88742c485542ffb57d0f5e66df7b6342500d GIT binary patch literal 20332 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 literal 0 HcmV?d00001 diff --git a/prepare_stack/__pycache__/create_dem.cpython-37.pyc b/prepare_stack/__pycache__/create_dem.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a035ba30690e1e2c1beddc3fd38074b7d7cd91d2 GIT binary patch literal 20116 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 LZy}d{|M&j`7prC= literal 0 HcmV?d00001 diff --git a/prepare_stack/__pycache__/create_dem.cpython-39.pyc b/prepare_stack/__pycache__/create_dem.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..215879be2d0a4ecf97a633554005b74956821d7e GIT binary patch literal 20048 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 Y&FmvghXh43Qp0YM#?Aq|l>htx0r9bXu>b%7 literal 0 HcmV?d00001 diff --git a/prepare_stack/__pycache__/create_doris_input_xml.cpython-39.pyc b/prepare_stack/__pycache__/create_doris_input_xml.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..04514b70c818796c4457e59b09fa9aecd40c6fb2 GIT binary patch literal 4319 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 aVXVB%Ar*Yy#Ni9w>V-~a6J#Cej`bg;=sLLo literal 0 HcmV?d00001 diff --git a/prepare_stack/__pycache__/prepare_datastack.cpython-37.pyc b/prepare_stack/__pycache__/prepare_datastack.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b44a28874d33d7974358be50c04b882650f74360 GIT binary patch literal 1994 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 literal 0 HcmV?d00001 diff --git a/prepare_stack/create_datastack_bash.py b/prepare_stack/create_datastack_bash.py index 52d58f9..3113004 100644 --- a/prepare_stack/create_datastack_bash.py +++ b/prepare_stack/create_datastack_bash.py @@ -18,7 +18,6 @@ def create(self, stack_folder, root_folder, nodes): settings = tree.getroot() source_path = settings.find('.source_path').text - python_path = os.path.dirname(source_path) doris_folder = os.path.dirname(settings.find('.doris_path').text) cpxfiddle_folder = os.path.dirname(settings.find('.cpxfiddle_path').text) snaphu_folder = os.path.dirname(settings.find('.snaphu_path').text) @@ -34,7 +33,7 @@ def create(self, stack_folder, root_folder, nodes): f.write('\n') f.write('#PBS -l nodes=1:ppn=' + nodes + ' \n') f.write('\n') - f.write('source_path=' + python_path + '\n') + f.write('source_path=' + source_path + '\n') f.write('export PYTHONPATH=$source_path:$PYTHONPATH \n') f.write('export PATH=' + doris_folder + ':' + cpxfiddle_folder + ':' + snaphu_folder + ':' + '$PATH \n') f.write('python ' + doris_run_script + ' -p ' + processing + ' \n') @@ -42,7 +41,7 @@ def create(self, stack_folder, root_folder, nodes): f.close() # make sure the file is executable - os.chmod(file_path, 0744) + os.chmod(file_path, 0o744) # Also create a download and dem creation bash script. file_path = os.path.join(stack_folder, 'create_dem.sh') @@ -53,27 +52,26 @@ def create(self, stack_folder, root_folder, nodes): f.write('#!/bin/bash \n') f.write('\n') - f.write('source_path=' + python_path + '\n') + f.write('source_path=' + source_path + '\n') f.write('export PYTHONPATH=$source_path:$PYTHONPATH \n') f.write('python ' + doris_run_script + ' ' + processing + ' SRTM3 \n') f.close() # make sure the file is executable - os.chmod(file_path, 0744) + os.chmod(file_path, 0o744) file_path = os.path.join(stack_folder, 'download_sentinel.sh') f = open(file_path, 'w') - - f.write('#!/bin/bash \n') - f.write('\n') - - f.write('source_path=' + python_path + '\n') + f.write('source_path=' + source_path + '\n') f.write('export PYTHONPATH=$source_path:$PYTHONPATH \n') doris_run_script = os.path.join(source_path, 'prepare_stack', 'download_sentinel_data_orbits.py') processing = stack_folder + f.write('#!/bin/bash \n') + f.write('\n') + f.write('python ' + doris_run_script + ' ' + processing + ' \n') f.close() # make sure the file is executable - os.chmod(file_path, 0744) \ No newline at end of file + os.chmod(file_path, 0o744) diff --git a/prepare_stack/create_datastack_bash.pyc b/prepare_stack/create_datastack_bash.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e618217c8e688669c04aaa5f8e2d0c10f886324f GIT binary patch literal 2644 zcmcguU2fY(5FV2H|FK**s@ zU>A^{+@2N6o3-D6`}Ic;vX6!T-{Pab z!a?BAfB@iZGdEyn!pwrR0tgdi5hex*3w{B(0(gB^B86e6fXe<~_&L=zoIXpWtL2HS zrki~XB%k1;?&2VE2Q&j@=FB7$G_hbX?3l>*NO=7`BPFtr;=>M6PdhjOPc<==3??aw z=;{>?y=gR;JvUq=?s@NddOnMrLiLVa7>^|;3J(1e&#fgmFL^?{l z-cLP`9dLxJT_!kV^rajBtSe~Tas1HNjzgX*!V88+I9m7=@nOVIEC3BKRVg}lW}Wnt_e#_R*A9ILDykf2T|r_BPUY^Q2~M2(0Bn>P10Iz!Lk9f28cTC zXk?2-av z#FI|!>Zz&|Ar<2_9mB2{Uru}>f=nh=3f*|RNR_rwDAnQf-BnXft>pr%`vyZ-aXoka z5FrSunj0?Bupuzz!RNiPANHt6*fm9VYU&P-5BeuV`!KLWQayfh6vyE)Hw=^_L^&^x z)gvUx%Q#B3-G4oL`NL`dyV1+zgPhFK!8IeZuvQ>ZcHl^r(ar(sq6p2gX-%Wh<`!xn z#FNYxx!J{W&KbFXiwR< zF}R~TQ8M;incK@=ZckcDP`+v9cI?I3Bsm$Ga}_irPZ5Js4O`E z91sFJ(WIK%N*1A`yu^<+U&nD0c~U6^@S(2B5<*GKi=oq%4CZ5_YP5`oxnta?uh}+R z<~^fiHjSpy&Yp+HzFD)jt+vrJ_j0^_1F0rbSu*38MCEsn>|Uly!IGeh*>Nz93#yO- z)z{z)9In0R+5h^cFu?tQ3YZUG$*Ni%S`8?1x{U)CN*AkC%I=Fm((B2HiiL`asaz>J h&VY{!#Wfn!3k=);kPdN(zfObt4Zn8L&@gt)zX6raND2S| literal 0 HcmV?d00001 diff --git a/prepare_stack/create_dem.py b/prepare_stack/create_dem.py index f8334d2..faa62f4 100644 --- a/prepare_stack/create_dem.py +++ b/prepare_stack/create_dem.py @@ -13,10 +13,10 @@ # Description srtm q data: https://lpdaac.usgs.gov/node/505 import numpy as np -import gdal -import gdalconst -import osr -from HTMLParser import HTMLParser +from osgeo import gdal +from osgeo import gdalconst +from osgeo import osr +from html.parser import HTMLParser import pickle import requests import os @@ -68,16 +68,17 @@ def create(self, shape_filename='', out_file='' ,var_file='', resample='regular_ except: print('Not possible to create DEM grid.') return - + # Now add the rounding and borders to add the sides of our image # Please use rounding as a n/60 part of a degree (so 1/15 , 1/10 or 1/20 of a degree for example..) latlim = [np.floor((latlim[0] - border) / rounding) * rounding, np.ceil((latlim[1] + border) / rounding) * rounding] lonlim = [np.floor((lonlim[0] - border) / rounding) * rounding, np.ceil((lonlim[1] + border) / rounding) * rounding] - + # First download needed .hgt files. Quality is either 1, 3 or 30. If possible the files are downloaded. Otherwise # we fall back to lower quality. This is done using the elevation package tiles, q_tiles, tiles_30 = self._download_dem_files(latlim, lonlim, quality, data_folder, password=password, username=username) - + print(tiles, q_tiles, tiles_30) + #sys.exit() # Then create the final grid. This depends on the needed data type and possible resampling... if quality == 'SRTM1': pixel_degree = 3600 @@ -262,7 +263,7 @@ def _download_dem_files(self, latlim, lonlim, quality, data_folder, username='', else: print('You should specify a username and password to download SRTM data. ') return - + filelist = self._srtm_listing(data_folder, username=username, password=password) outfiles = [] q_files = [] @@ -436,7 +437,7 @@ def _kml_shp_2_bb(self, filename): latlim = [min(lat), max(lat)] lonlim = [min(lon), max(lon)] else: - print 'format not recognized! Pleas creat either a .kml or .shp file.' + print('format not recognized! Pleas creat either a .kml or .shp file.') return [] return latlim, lonlim @@ -456,18 +457,27 @@ def _add_egm96(self, dem_tiff, egm_tiff, data_folder): if not os.path.exists(egm_source_tiff): if not os.path.exists(filename): # Download egm96 file - command = 'wget http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/binary/WW15MGH.DAC -O ' + filename + #command = 'wget http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/binary/WW15MGH.DAC -O ' + filename + command = 'wget https://github.com/anurag-kulshrestha/geoinformatics/raw/master/WW15MGH.DAC -O ' + filename os.system(command) # Get georeference latlim = [-90.125, 90.125] - lonlim = [-0.125, 359.875] + #lonlim = [-0.125, 359.875] + lonlim = [-179.125, 180.875] dlat = 0.25 dlon = 0.25 egm_data = self._create_georeference(latlim, lonlim, dlat, dlon, 'float32', egm_source_tiff) # Load data - egm96 = np.fromfile(filename, dtype='>i2').reshape((721, 1440)).astype('float32') + shp = (721, 1440) + egm96 = np.fromfile(filename, dtype='>i2').reshape(shp).astype('float32') + #Patch to flip the array to Aus on the right and South America on the left + egm96_flipped = np.empty(egm96.shape) + + egm96_flipped[:, :shp[1]//2] = egm96[:, shp[1]//2 :] + egm96_flipped[:, shp[1]//2:] = egm96[:, :shp[1]//2 ] + egm96 = egm96_flipped # Save as geotiff egm_data.GetRasterBand(1).WriteArray(egm96 / 100) @@ -480,7 +490,8 @@ def _add_egm96(self, dem_tiff, egm_tiff, data_folder): gdal.ReprojectImage(egm_source, egm_data, None, None, gdalconst.GRA_Bilinear) egm_data = None - dem_new = dem_tiff + '.new' + dem_new = dem_tiff + '_new.tiff'# patch by anurag on 16-06-2021 + #dem_new = dem_tiff + '.new' # Finally open original dataset and subtract command = 'gdal_calc.py -A ' + dem_tiff + ' -B ' + egm_tiff + ' --outfile=' + dem_new + ' --calc="A+B"' @@ -504,7 +515,7 @@ def _output_doris_inputfiles(self, dem_tiff, out_file, var_file): output_txt = out_file + '.doris_inputfile' output_var = var_file - output_var = open(output_var, 'w') + output_var = open(output_var, 'wb') txtfile = open(output_txt, 'w') dem_var = dict() @@ -559,38 +570,43 @@ def _output_doris_inputfiles(self, dem_tiff, out_file, var_file): def _srtm_listing(self, data_folder, username, password): # This script makes a list of all the available 1,3 and 30 arc second datafiles. # This makes it easier to detect whether files do or don't exist. - + data_file = os.path.join(data_folder, 'filelist') if os.path.exists(data_file): dat = open(data_file, 'r') filelist = pickle.load(dat) dat.close() return filelist + #******************************************************* + #Patch by Anurag + server = "https://e4ftl01.cr.usgs.gov" - server = "http://e4ftl01.cr.usgs.gov" - - folders = 'SRTM/SRTMGL1.003/2000.02.11/', 'SRTM/SRTMGL3.003/2000.02.11/', 'SRTM/SRTMGL30.002/2000.02.11/' - keys = ['SRTM1', 'SRTM3', 'SRTM30'] + folders = 'MEASURES/SRTMGL1.003/2000.02.11/SRTMGL1_page_1.html', 'MEASURES/SRTMGL1.003/2000.02.11/SRTMGL1_page_2.html', 'MEASURES/SRTMGL1.003/2000.02.11/SRTMGL1_page_3.html', 'MEASURES/SRTMGL1.003/2000.02.11/SRTMGL1_page_4.html','MEASURES/SRTMGL1.003/2000.02.11/SRTMGL1_page_5.html' , 'MEASURES/SRTMGL1.003/2000.02.11/SRTMGL1_page_6.html', 'MEASURES/SRTMGL3.003/2000.02.11/', 'MEASURES/SRTMGL30.002/2000.02.11/' + keys = ['SRTM1','SRTM1','SRTM1','SRTM1','SRTM1','SRTM1', 'SRTM3', 'SRTM30'] + #******************************************************* filelist = dict() filelist['SRTM1'] = dict() filelist['SRTM3'] = dict() filelist['SRTM30'] = dict() - + #print('aaya') for folder, key_value in zip(folders, keys): - - conn = requests.get(server + '/' + folder, auth=(username, password)) + print(server+'/'+folder) + conn = requests.get(server + '/' + folder)#, auth=(username, password)) + if conn.status_code == 200: - print "status200 received ok" + print("status200 received ok") else: - print "an error occurred during connection" + print("an error occurred during connection") data = conn.text parser = parseHTMLDirectoryListing() parser.feed(data) files = parser.getDirListing() - + if key_value == 'SRTM1' or key_value == 'SRTM3': - files = [f for f in files if f.endswith('hgt.zip')] + #files = [f for f in files if f.endswith('hgt.zip')] + files_com = [f for f in files if f.endswith('hgt.zip')] + files = [f.split('/')[-1] for f in files_com] north = [int(filename[1:3]) for filename in files] east = [int(filename[4:7]) for filename in files] for i in [i for i, filename in enumerate(files) if filename[0] == 'S']: @@ -606,12 +622,12 @@ def _srtm_listing(self, data_folder, username, password): for i in [i for i, filename in enumerate(files) if filename[0] == 'w']: east[i] = east[i] * -1 - for filename, n, e in zip(files, north, east): + for filename, n, e in zip(files_com, north, east): if not str(n) in filelist[key_value]: filelist[key_value][str(n)] = dict() - filelist[key_value][str(n)][str(e)] = server + '/' + folder + filename + filelist[key_value][str(n)][str(e)] = filename#server + '/' + folder + filename - file_list = open(os.path.join(data_folder, 'filelist'), 'w') + file_list = open(os.path.join(data_folder, 'filelist'), 'wb') pickle.dump(filelist, file_list) file_list.close() @@ -727,7 +743,7 @@ def handle_endtag(self, tag): def handle_data(self, data): if self.inTitle: self.title = data - print "title=%s" % data + print("title=%s" % data) if "Index of" in self.title: # print "it is an index!!!!" self.isDirListing = True diff --git a/prepare_stack/create_dem.pyc b/prepare_stack/create_dem.pyc new file mode 100644 index 0000000000000000000000000000000000000000..86d004636d69532b7b858b7474f217b62c5d7476 GIT binary patch literal 23388 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 p8w3^Up9}dAt!(eyroJmHmAm#O|M|K* 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 uw2ROHuH{px(vsU9n-o82gT{eJ=Oaq0vB literal 0 HcmV?d00001 diff --git a/prepare_stack/create_inputfiles.py b/prepare_stack/create_inputfiles.py index 5247141..c8ea78f 100644 --- a/prepare_stack/create_inputfiles.py +++ b/prepare_stack/create_inputfiles.py @@ -31,7 +31,7 @@ def __init__(self, dem_info ,settings_table, sensor): self.xml_data = settings.find('.' + sensor) self.header_data = self.xml_data.find('.header_settings') - dem_info = open(dem_info, 'r') + dem_info = open(dem_info, 'rb') self.dem_var = pickle.load(dem_info) self.inputfilenames = ['coarsecorr', 'coarseorb', 'coherence', 'coherence_network', 'comprefdem', 'comprefpha', 'coregpm', diff --git a/prepare_stack/create_inputfiles.pyc b/prepare_stack/create_inputfiles.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a36ec337efc904e9909230e45ee2fa1169b65e6f GIT binary patch literal 3683 zcmcgu&2Ah;5U!rJ*WUGR{1f7}BL_A}NGk<)5g~v?$ge|`i(`!~MHr&dc&5D`dv|6% z-Np{GPv$w`zzK2Y0vrghfW(cb-~r&Pnwj+`BvCHOXr`yTy1J@=zOSlF|J190{{H=! z0p(8#{~P$sO%x$sMLnV&MLP~{lnTihZHyK5aoQNC(4i2L5`9Z_LiEK(nMba*#$hG; z7te~FLG^a3eXH-qgMIsX)YE3@R-yA2KJzXLO|+rdJdAC?u#yU#J5nk9z^%L18pD8q zi!wg(fxr11g_U_9Idr1vc#Mw5cnz4`@i-lg(+=z@Ix0~E-A6UeQ84719oTKn8b!WsK zbg+>F6&isgN48(wyMTl=9-J)^CS;;xad)K<|IBz|gikff=t44X;1 znYXres^dW0S?SALUaajwlJ4dP`h!$&g}Oi59Blj84K|aM7DbrK|@wsojQvDN98PLpoxX9H7h{QjV)?G(Dr{-#ZHhof!w$j7`NAEf?3d_ZLM zR@Aet8ak|l;?BBd*bR8mxo4XuiM5Op%qf(a9`<`)=v!YL=6fe?)=CCC7EgmH*u|t+ z)=T_Q%wdh**M4fxKo~KU;aqO7msitdM+X+dG&1j9 zX}{mTd`nxugCoSAXwO(b*zE*DMa(8&fN2jNi9Zjr$a>xq&u4+1s%ceo=G8g;=bUr$ z=Q7~U=0oS*zKzfPhT`yNCLU8sXvLIsX!+rH^cDDnw?wuiGy@C4tDJ)97!#_26EcEH z3LC;UkPj?wfG^C|V-RxK118MO6B_TVSQzFlFYK0s@pw0n7?ak8z zAr+s&is4fBr7a{nFuc%q$M9M^tM2{Vch=TiW?qXSfaMT<6Aj!q@pmtoI%040|r`w4GzY|4znT;y&KxpqCik;(54lv5bj7JV9?O=^+AG zCc+>Cp~tY4Q!Ox>({BW|G7EbsD3*FY_6a-848fihuMU8`_1XG45lCPo^|rI9rc3A5 zd}%=~l!n2cbp>{R;VcgSP(Z@+!(UV$>LqpUI%II@2Qr3ynX$fK#J;6NL9c zHXMnQ_X>@*7AK1pL1oT6VPudoEEZx0O~e~;foaHLIZH`>4u=sZNyAL77^Y99+37T; zT{X;~we|a}&F4NvttS`_`t>rcm)9jjWbhZ)e|R$;IkJD^XwA>3#qg?uT3m zfjNo9$bjz0sJsR;xlEzY@EMLwRH`F>pH&s7>@2DKYDwKy7t{@W*PXf}q~a|a#_}e% zjn6}P1nvlaa{(|Y*v2t{0DvUU3q)d-2Jk(q3igS{({iDZI{b;__wvIZiVGUTe?=(z zYvH_FfPrT+B}5i{6lUvBxXZNnwuP18^%+nY4Os_MO{R?t8Bcg7qbR0_hKL%tqzP@a zk&R;6u!mRRiAiKr7kF~KUNKFSLGxabNt;;!3!9sdnv#Q?$iX@4V&Jj6fn$a}(a8hbk-B0m*CNDDJUPHHg z9fiyd_Zs&GORjRkSQ1W*z?;*Sdzp)y+>7rO-%;F4aIuchoM&gHS#?P*sJg@GuB(e` z2DQ6DbawmVZSW)udY;@}J+GgH`#tS>?mOsnuW-Rc5xb}Jm)a}Kb1obbgGbJ(T&>Jh zW-E=%JI6134h3$gZOzxf_MM*QaJJ4@LMEt4<>ETh first day for downloads (default one month before now) [yyyymmdd] + # end_day > last day for downloads (default today) + # + + # string is the field we enter as url + string = '' + #add platform-name + string = string + ' AND ' + 'platformname:'+'Sentinel-1' + + if sensor_mode: + string = string + ' AND ' + 'sensoroperationalmode:' + sensor_mode + if product: + string = string + ' AND ' + 'producttype:' + product + if level: + string = string + ' AND ' + level + if orbit_direction: + string = string + ' AND ' + 'orbitdirection:' + orbit_direction + if track: + string = string + ' AND ' + 'relativeorbitnumber:' + track + if start_day: + start = datetime.datetime.strptime(start_day, '%Y-%m-%d').strftime('%Y-%m-%d') + else: + start = (datetime.datetime.now() - datetime.timedelta(days=350)).strftime('%Y-%m-%d') + if end_day: + end = datetime.datetime.strptime(end_day, '%Y-%m-%d').strftime('%Y-%m-%d') + else: + end = datetime.datetime.now().strftime('%Y-%m-%d') + if polarisation: + string = string + ' AND ' + 'polarisationmode:' + polarisation + if ROI: + shape_str = load_shape_info(ROI) + string = string + ' AND footprint:"Intersects(POLYGON(' + shape_str + '))"' + + date_string = 'beginPosition:[' + start + 'T00:00:00.000Z TO ' + end + 'T23:59:59.999Z] AND endPosition:[' + start + 'T00:00:00.000Z TO ' + end + 'T23:59:59.999Z]' + string = string + ' AND ' + date_string + + # Finally we do the query to get the search result. + string = string[5:] #+ '&rows=100' + #url = 'https://scihub.copernicus.eu/dhus/search?q=' + urllib.quote_plus(string) + url = 'https://scihub.copernicus.eu/gnss/search?q=' + urllib.quote_plus(string)# check for new orbit data downloading + #url = 'https://scihub.copernicus.eu/gnss/search?q=' + string + #url = url+'&start=100&rows=100'# + #TODO: automate swwitching between pages + print(url) + + print('Requesting available products: ' + url) + request = urllib2.Request(url) + base64string = base64.b64encode('%s:%s' % (user, password)) + request.add_header("Authorization", "Basic %s" % base64string) + # connect to server. Hopefully this works at once + gcontext = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) + try: + dat = urllib2.urlopen(request, context=gcontext) + except: + print('not possible to connect this time') + return [], [], [] + + html_dat = '' + for line in dat: + #print(line) + html_dat = html_dat + line + + parser = etree.HTMLParser() + tree = etree.fromstring(html_dat, parser) + products = [data for data in tree.iter(tag='entry')] + links = [data.find('link').attrib for data in tree.iter(tag='entry')] + dates = [data.findall('date')[1].text for data in tree.iter(tag='entry')] + + print('Following products will be downloaded') + for link in links: + print(link) + + return products, links, dates def load_shape_info(shapefile): # This script converts .kml, .shp and .txt files to the right format. If multiple shapes are available the script @@ -115,7 +193,7 @@ def load_shape_info(shapefile): st = st + str(p[0]) + ' ' + str(p[1]) + ',' st = st[:-1] + ')' else: - print 'format not recognized! Pleas creat either a .kml or .shp file.' + print('format not recognized! Pleas creat either a .kml or .shp file.') return [] return st @@ -128,7 +206,7 @@ def sentinel_check_validity(products=[], destination_folder='', user='', passwor invalid_files = [] if not products: - print 'Nothing to check' + print('Nothing to check') return for product in products: @@ -183,7 +261,7 @@ def sentinel_download(products=[], xml_only=False, destination_folder='', proje # Download the files which are found by the sentinel_available script. if not products: - print 'No files to download' + print('No files to download') return wget_base = 'wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 --continue --tries=20 --no-check-certificate --user=' + user + ' --password=' + password + ' ' @@ -285,6 +363,28 @@ def sentinel_download(products=[], xml_only=False, destination_folder='', proje os.system('rm ' + xml_dir) os.system('rm ' + xml_project) +def sentinel_orbit_gnss_download(products=[], xml_only=False, destination_folder='', project_folder='', user='', password=''): + # Download the files which are found by the sentinel_available script. + + if not products: + print('No files to download') + return + + wget_base = 'wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 --continue --tries=20 --no-check-certificate --user=' + user + ' --password=' + password + ' ' + + for product in products: + date = str(product.findall('date')[1].text) + date = datetime.datetime.strptime(date[:19], '%Y-%m-%dT%H:%M:%S') + + url = str('"'+product.findall('link')[0].attrib['href'][:-6]+ urllib.quote_plus('$value') +'"') + name = str(product.find('title').text) + #print(url) + wget_data = wget_base + url + ' -O ' + destination_folder+'/'+name + print('download url is:' + wget_data) + os.system(wget_data) + #sys.exit() + + def sentinel_quality_check(filename, uuid, user, password): # Check whether the zip files can be unpacked or not. This is part of the download procedure. @@ -297,7 +397,7 @@ def sentinel_quality_check(filename, uuid, user, password): try: dat = urllib2.urlopen(request) except: - print 'not possible to connect this time' + print('not possible to connect this time') return False html_dat = '' @@ -318,6 +418,9 @@ def sentinel_quality_check(filename, uuid, user, password): else: return False +def download_orbits_1(start_date, end_date, pages=30, precise_folder='', restituted_folder =''): + pass + def download_orbits(start_date, end_date, pages=30, precise_folder='', restituted_folder =''): # This script downloads all orbits files from the precise orbits website, when pages is set to a very high number. # By default only the first page for the last two days (restituted) is checked. @@ -332,9 +435,11 @@ def download_orbits(start_date, end_date, pages=30, precise_folder='', restitute if precise_folder: for i in range(pages_poe): # First extract the orbitfiles from the page. - + url = 'https://qc.sentinel1.eo.esa.int/aux_poeorb/?page=' + str(i + 1) - gcontext = ssl.SSLContext(ssl.PROTOCOL_TLSv1) + #url = 'https://qc.sentinel1.eo.esa.int/aux_poeorb/?validity_start='+2015+'&page=' + str(i + 1) + + gcontext = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) try: page = urllib2.urlopen(url, context=gcontext) except TypeError: @@ -342,24 +447,28 @@ def download_orbits(start_date, end_date, pages=30, precise_folder='', restitute html = page.read().split('\n') orb_files = [] - + for line in html: if re.search('', line): if re.search('EOF', line): dat = re.search('(.*)', line) orb_files.append(dat.group(1)) - + if not last_precise: last_precise = orb_files[0] for orb in orb_files: # Download the orbit files filename = os.path.join(precise_folder, orb) - + if int(orb[42:50]) + 1 <= end_num and int(orb[42:50]) + 1 >= start_num: - url = 'https://qc.sentinel1.eo.esa.int/aux_poeorb/' + orb + #url = 'https://qc.sentinel1.eo.esa.int/aux_poeorb/' + orb + url = 'http://aux.sentinel1.eo.esa.int/POEORB/'+orb[25:29]+'/'+orb[29:31]+'/'+orb[31:33]+'/'+orb+'.EOF' + #http://aux.sentinel1.eo.esa.int/POEORB/2019/02/26/S1B_OPER_AUX_POEORB_OPOD_20190226T110623_V20190205T225942_20190207T005942.EOF if not os.path.exists(filename): try: + #print(url, filename) + #sys.exit() urllib.urlretrieve(url, filename, context=gcontext) except TypeError: urllib.urlretrieve(url, filename) @@ -445,6 +554,7 @@ def download_orbits(start_date, end_date, pages=30, precise_folder='', restitute level = 'L1' sensor_mode = 'IW' product = 'SLC' + orbit_precice_product = 'AUX_POEORB' # user settings xml_name = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) @@ -454,13 +564,12 @@ def download_orbits(start_date, end_date, pages=30, precise_folder='', restitute settings = tree.getroot() user = settings.find('.scihub_username').text password = settings.find('.scihub_password').text - - products, links, dates = sentinel_available(start_day=start_date, end_day=end_date, ROI=ROI, - polarisation=polarisation, sensor_mode=sensor_mode, track=track, - orbit_direction='', level=level, product=product,user=user, - password=password) - - sentinel_download(products, destination_folder=archive_folder, user=user, password=password) + #products, links, dates = sentinel_available(start_day=start_date, end_day=end_date, ROI=ROI, + #polarisation=polarisation, sensor_mode=sensor_mode, track=track, + #orbit_direction='', level=level, product=product,user=user, + #password=password) + + #sentinel_download(products, destination_folder=archive_folder, user=user, password=password) precise_folder = os.path.join(orbit_folder, 'precise') if not os.path.exists(precise_folder): @@ -468,5 +577,10 @@ def download_orbits(start_date, end_date, pages=30, precise_folder='', restitute restituted_folder = os.path.join(orbit_folder, 'restituted') if not os.path.exists(restituted_folder): os.makedirs(restituted_folder) - - download_orbits(start_date, end_date, pages=100, precise_folder=precise_folder, restituted_folder=restituted_folder) + + products_orbits, links_orbits, dates_orbits = sentinel_available_gnss(start_day=start_date, end_day=end_date,product=orbit_precice_product, user = 'gnssguest', password = 'gnssguest') + + sentinel_orbit_gnss_download(products_orbits, destination_folder=precise_folder, user = 'gnssguest', password = 'gnssguest') + #download_orbits(start_date, end_date, pages=300, precise_folder=precise_folder, restituted_folder=restituted_folder) + + #download_orbits_1(start_date, end_date, pages=300, precise_folder=precise_folder, restituted_folder=restituted_folder) diff --git a/prepare_stack/inputfile_template.xml b/prepare_stack/inputfile_template.xml index 5866a5f..a779ae3 100644 --- a/prepare_stack/inputfile_template.xml +++ b/prepare_stack/inputfile_template.xml @@ -1,5 +1,7 @@ - + sentinel-1 Settings for the headers @@ -49,7 +51,7 @@ OFF refdem.raw dem_radar.raw - h2ph_srd.raw + h2ph_srd.raw master_slave.crd diff --git a/prepare_stack/prepare_datastack.py b/prepare_stack/prepare_datastack.py index e414b80..bb2088c 100644 --- a/prepare_stack/prepare_datastack.py +++ b/prepare_stack/prepare_datastack.py @@ -42,12 +42,13 @@ def prepare(self, inputfile): srtm_password = settings_doris.find('.usgs_password').text dem_out = os.path.join(doris_input_xml.get_value('dem_folder'), 'dem.raw') dem_var = dem_out + '.var' - + #print('1') dem = CreateDem() + if doris_input_xml.get_value('generate_dem'.lower())=='yes': dem.create(doris_input_xml.get_value('shape_file_path'), dem_out, dem_var, resample=None, doris_input=True, rounding=0.1, border=1.5, - data_folder=doris_input_xml.get_value('dem_processing_folder'), quality='SRTM3', + data_folder=doris_input_xml.get_value('dem_processing_folder'), quality='SRTM1', password=srtm_password, username=srtm_username) ## Then create the inputfiles diff --git a/prepare_stack/prepare_datastack.pyc b/prepare_stack/prepare_datastack.pyc new file mode 100644 index 0000000000000000000000000000000000000000..75fa031c8312b904b5da96330df8df8238644668 GIT binary patch literal 2641 zcmcImUvC>l5TCvC|JbpUCM{_o5)}_tMQ!?s6j9W=NFWhKmq-*#)%D_CJLlXV_jcVR z()lTT36S_8d>1|d@4WB^Gqb)+gevhu9p8FxW_I>Be>d)*oz@>;{{ChH>yL}SU*n^% zaFO^G5CM!W?LZ_Tc3|v)Aejr13vmU;75iR+s0win#x?t1g{Tg31I7*ej<%XGZ^3*6 z#%+)_P#u^GkahS8;0EBw@g^O3(r@75;otZ<>I)=I6PFj63XB@5*s^*h>)T|pG~a}g z(pGY>l#J3W)GU4#M^@M>h0gm2__e1Ea>Rx_~?hYD2xI^1%itH zBTOP(@J{*;iYKI8JTGWd1s7C5;d77r_y!gN3ABo)mPLI19WKN3G*-hPS!Tg(I7%nW zSS3aekIzTPSvpq}GnC}caAD#4jJ14|1^U6_+EDm>KTJa7`}fH{Ap|j@pDlcL@L`Ov zkz)XI0XG6x?3KjTg_#R07p~qw?!xHxD_B*)2$(xCcMGBdIlfjwR%mmMt3!l-#0s_l zP!n$-0e*j2TP@Aki+v^0p!B0*`;~ZL4Q>!#6%1EWUM11026+wUZ7QQx9r8NNJ5*RG zns36YQE(asr&%0S`oX8j7WuJiLEZwn0S{IiV7hFyUHIFEd5<_~T6W;Vf$Ue2BXg@z z*d!6|&o@AJxrusU?t$C_xeXGD9gw?)@_n}R0OUs?_aJYAdbU7&+Eh zdxWubD_yI-FJ^L|m9eothE*5L4#CPdAxE!V2Hhb9;@>9TXAAXK=*lj6f9tNzf3I-p z6EcUUX+oUz53tmZ%m%I@wW&X)J~dT*=lV4+Qc}g-h-D4?(=?JQGj-mEiczGgQ@H{B zNt#T<+2AUU^d>R~OFh&6QmZTpVs(eL2(-RTGl^xwXRNJivWiCzvfz@Nbnq_7OdFXq zm8cA7j8A|F*fm1!;;%jr7K)+!i@=<7e`QJs@gh>}n+3)mT4B0OWSGomzx+&}-=3Ko znmI!-Dw`pNpTC~jo!Ga9ySvE7qy0sePL$TTzmO2*x62?3%{9mF#5?`|DW6n2Nj+Z% zftsGtP`G`g5GeY^A){buoGf9Yq9;$;+9XA1`n1QR31MhSwV^r1?h4L7^E6C& zBF~iZ-v!Z9v6c8jhBjsROR3=W1!uYpnQuer^8qhUc^6JzZ8gzamZpY}orZ~I!l*0b z;qk!AQF@70L2xE~8L-MxnkXhtv!(KA1bdXbJ`FmL3XQRr(cpyM$(N6H#7J$;X|5Ja zvlAV(Pz0Irvx3PKmI=*cLp6vlU_h}9EsOT(%*16?nvzqP;v*^9>C%)m7NSR2ogwTc zVqH`Lr5Mp#6r`sysSy^1EkcUkTJ^(SEmVo?8)%OZe1Qv8+fG+>#AETfdnmf1Ew=IR zK(w5uvoAhHdRO$^1Mx)E#Gdn5^r^DemlVa=_c^A%AE$DO_3C?+V($=_TSu7spD#*} zfY4>gbD-ul-9ELuw~q@$vSmi|z!o9pWzD-y57(Tb_9@h3}@nalIyj>P*6_i#6)XY~I8d-Guf#z{N0Y5Iz5 Nn&xI(^wxjd&Og*LX_Wu~ literal 0 HcmV?d00001 diff --git a/sar_tools/Makefile b/sar_tools/Makefile index fb3e1de..891ec63 100644 --- a/sar_tools/Makefile +++ b/sar_tools/Makefile @@ -22,8 +22,8 @@ SHELL = /bin/sh ### Installdirdef should exist! -#INSTALL_DIR = /usr/local/bin -INSTALL_DIR = /home/dlevelt/src/Doris_s1_git/bin +INSTALL_DIR = /usr/local/bin +#INSTALL_DIR = /home/dlevelt/src/Doris_s1_git/bin ### GCC compiler CC = g++ From ea7aa71da8b2c673c69b071fe006d19bab9e3cc9 Mon Sep 17 00:00:00 2001 From: Anurag Date: Fri, 21 Jul 2023 14:11:56 +0200 Subject: [PATCH 2/5] master --- .gitignore | 161 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..12c21bd --- /dev/null +++ b/.gitignore @@ -0,0 +1,161 @@ +### Python template +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ From a6e1c36b7d20449250aeb3165dc95906cd804922 Mon Sep 17 00:00:00 2001 From: Anurag Date: Fri, 21 Jul 2023 15:01:54 +0200 Subject: [PATCH 3/5] master --- doris_core/constants.hh | 2 +- .../main_code/.doris_sentinel_1.py.kate-swp | Bin 0 -> 61 bytes doris_stack/main_code/doris_main.py | 3 - doris_stack/main_code/doris_sentinel_1.py | 6 -- doris_stack/main_code/image.py | 1 - doris_stack/main_code/single_master_stack.py | 85 +----------------- doris_stack/main_code/stack.py | 2 +- install/doris_config.xml | 16 ++-- prepare_stack/create_dem.py | 2 +- 9 files changed, 12 insertions(+), 105 deletions(-) create mode 100644 doris_stack/main_code/.doris_sentinel_1.py.kate-swp diff --git a/doris_core/constants.hh b/doris_core/constants.hh index 7b3a682..007ac38 100755 --- a/doris_core/constants.hh +++ b/doris_core/constants.hh @@ -227,7 +227,7 @@ const int16 ONE27 = 127; // doris memory for buffer operations const uint32 MEMORY_DEF = 500; // default memory (~500MB), unit Mbits [MA] -const uint32 MEMORY_MAX = 60000; // maximum memory (~12GB) +const uint32 MEMORY_MAX = 12000; // maximum memory (~12GB) // ______ Handy for software, IDs have to be enumerated (used in loop) ______ const int16 LOGID = 1; // general identifier for log diff --git a/doris_stack/main_code/.doris_sentinel_1.py.kate-swp b/doris_stack/main_code/.doris_sentinel_1.py.kate-swp new file mode 100644 index 0000000000000000000000000000000000000000..2413b17e0943a51d1ae475728085f699883af7f9 GIT binary patch literal 61 zcmZQzU=Z?7EJ;-eE>A2_aLdd|RWQ;sU|?VnaeJQA6PC|ncsIs-P1A(*+X|(RxPya$ MGTA`P0mQ - /home/anurag/Documents/PhDProject/doris - /usr/local/bin/doris - /usr/local/bin/cpxfiddle - /usr/local/bin/snaphu - annie123 - Annie@123 - annie123 - Annie123 + + + + + + + + diff --git a/prepare_stack/create_dem.py b/prepare_stack/create_dem.py index faa62f4..69161a3 100644 --- a/prepare_stack/create_dem.py +++ b/prepare_stack/create_dem.py @@ -588,7 +588,7 @@ def _srtm_listing(self, data_folder, username, password): filelist['SRTM1'] = dict() filelist['SRTM3'] = dict() filelist['SRTM30'] = dict() - #print('aaya') + for folder, key_value in zip(folders, keys): print(server+'/'+folder) conn = requests.get(server + '/' + folder)#, auth=(username, password)) From 73e706ff4af055fec9ed353695bc349ed2f91c49 Mon Sep 17 00:00:00 2001 From: Anurag Date: Fri, 21 Jul 2023 15:10:14 +0200 Subject: [PATCH 4/5] master --- .../main_code/.doris_sentinel_1.py.kate-swp | Bin 61 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 doris_stack/main_code/.doris_sentinel_1.py.kate-swp diff --git a/doris_stack/main_code/.doris_sentinel_1.py.kate-swp b/doris_stack/main_code/.doris_sentinel_1.py.kate-swp deleted file mode 100644 index 2413b17e0943a51d1ae475728085f699883af7f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61 zcmZQzU=Z?7EJ;-eE>A2_aLdd|RWQ;sU|?VnaeJQA6PC|ncsIs-P1A(*+X|(RxPya$ MGTA`P0mQ Date: Fri, 21 Jul 2023 15:22:40 +0200 Subject: [PATCH 5/5] master --- __init__.pyc | Bin 138 -> 0 bytes __pycache__/__init__.cpython-310.pyc | Bin 144 -> 0 bytes __pycache__/__init__.cpython-311.pyc | Bin 160 -> 0 bytes __pycache__/__init__.cpython-36.pyc | Bin 134 -> 0 bytes __pycache__/__init__.cpython-37.pyc | Bin 138 -> 0 bytes __pycache__/__init__.cpython-38.pyc | Bin 142 -> 0 bytes __pycache__/__init__.cpython-39.pyc | Bin 142 -> 0 bytes doris_stack/__init__.pyc | Bin 150 -> 0 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 172 -> 0 bytes doris_stack/__pycache__/__init__.cpython-36.pyc | Bin 146 -> 0 bytes doris_stack/__pycache__/__init__.cpython-37.pyc | Bin 150 -> 0 bytes doris_stack/__pycache__/__init__.cpython-38.pyc | Bin 154 -> 0 bytes doris_stack/__pycache__/__init__.cpython-39.pyc | Bin 154 -> 0 bytes doris_stack/functions/ESD_functions.pyc | Bin 8793 -> 0 bytes doris_stack/functions/__init__.pyc | Bin 160 -> 0 bytes .../__pycache__/ESD_functions.cpython-36.pyc | Bin 6776 -> 0 bytes .../__pycache__/ESD_functions.cpython-37.pyc | Bin 6769 -> 0 bytes .../__pycache__/ESD_functions.cpython-38.pyc | Bin 6800 -> 0 bytes .../__pycache__/ESD_functions.cpython-39.pyc | Bin 6786 -> 0 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 156 -> 0 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 160 -> 0 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 164 -> 0 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 164 -> 0 bytes .../__pycache__/get_ramp.cpython-36.pyc | Bin 6395 -> 0 bytes .../__pycache__/get_ramp.cpython-37.pyc | Bin 6317 -> 0 bytes .../__pycache__/get_ramp.cpython-38.pyc | Bin 6343 -> 0 bytes .../__pycache__/get_ramp.cpython-39.pyc | Bin 6343 -> 0 bytes doris_stack/functions/baselines.pyc | Bin 2953 -> 0 bytes doris_stack/functions/burst_metadata.pyc | Bin 6236 -> 0 bytes doris_stack/functions/get_ramp.pyc | Bin 7972 -> 0 bytes doris_stack/functions/load_shape_unzip.pyc | Bin 5970 -> 0 bytes doris_stack/functions/orbit_coordinates.pyc | Bin 6446 -> 0 bytes doris_stack/functions/precise_read.pyc | Bin 4869 -> 0 bytes doris_stack/functions/resdata.pyc | Bin 11462 -> 0 bytes doris_stack/functions/swath_metadata.pyc | Bin 6023 -> 0 bytes doris_stack/functions/xml_query.pyc | Bin 12796 -> 0 bytes doris_stack/main_code/__init__.pyc | Bin 160 -> 0 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 182 -> 0 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 156 -> 0 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 160 -> 0 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 164 -> 0 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 164 -> 0 bytes .../main_code/__pycache__/jobs.cpython-36.pyc | Bin 4089 -> 0 bytes .../main_code/__pycache__/jobs.cpython-37.pyc | Bin 4093 -> 0 bytes .../main_code/__pycache__/jobs.cpython-39.pyc | Bin 4159 -> 0 bytes .../__pycache__/resdata.cpython-311.pyc | Bin 21113 -> 0 bytes .../__pycache__/resdata.cpython-36.pyc | Bin 9517 -> 0 bytes .../__pycache__/resdata.cpython-37.pyc | Bin 9354 -> 0 bytes .../__pycache__/resdata.cpython-38.pyc | Bin 9137 -> 0 bytes .../__pycache__/resdata.cpython-39.pyc | Bin 9135 -> 0 bytes doris_stack/main_code/burst.pyc | Bin 3505 -> 0 bytes doris_stack/main_code/doris_sentinel_1.pyc | Bin 4433 -> 0 bytes doris_stack/main_code/dorisparameters.pyc | Bin 4736 -> 0 bytes doris_stack/main_code/grs_config.pyc | Bin 1572 -> 0 bytes doris_stack/main_code/grs_profile.pyc | Bin 1310 -> 0 bytes doris_stack/main_code/image.pyc | Bin 3935 -> 0 bytes doris_stack/main_code/jobs.pyc | Bin 5154 -> 0 bytes doris_stack/main_code/resdata.pyc | Bin 11479 -> 0 bytes doris_stack/main_code/single_master_stack.pyc | Bin 82337 -> 0 bytes doris_stack/main_code/stack.pyc | Bin 23086 -> 0 bytes doris_stack/main_code/swath.pyc | Bin 4438 -> 0 bytes prepare_stack/__init__.pyc | Bin 152 -> 0 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 158 -> 0 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 148 -> 0 bytes .../__pycache__/__init__.cpython-37.pyc | Bin 152 -> 0 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 156 -> 0 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 156 -> 0 bytes .../create_datastack_bash.cpython-39.pyc | Bin 2024 -> 0 bytes .../__pycache__/create_dem.cpython-310.pyc | Bin 19807 -> 0 bytes .../__pycache__/create_dem.cpython-36.pyc | Bin 20332 -> 0 bytes .../__pycache__/create_dem.cpython-37.pyc | Bin 20116 -> 0 bytes .../__pycache__/create_dem.cpython-38.pyc | Bin 20095 -> 0 bytes .../__pycache__/create_dem.cpython-39.pyc | Bin 20048 -> 0 bytes .../create_doris_input_xml.cpython-39.pyc | Bin 4319 -> 0 bytes .../create_inputfiles.cpython-39.pyc | Bin 2809 -> 0 bytes .../prepare_datastack.cpython-36.pyc | Bin 2004 -> 0 bytes .../prepare_datastack.cpython-37.pyc | Bin 1994 -> 0 bytes .../prepare_datastack.cpython-39.pyc | Bin 2013 -> 0 bytes prepare_stack/create_datastack_bash.pyc | Bin 2644 -> 0 bytes prepare_stack/create_dem.pyc | Bin 23388 -> 0 bytes prepare_stack/create_doris_input_xml.pyc | Bin 5378 -> 0 bytes prepare_stack/create_inputfiles.pyc | Bin 3683 -> 0 bytes prepare_stack/prepare_datastack.pyc | Bin 2641 -> 0 bytes 83 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 __init__.pyc delete mode 100644 __pycache__/__init__.cpython-310.pyc delete mode 100644 __pycache__/__init__.cpython-311.pyc delete mode 100644 __pycache__/__init__.cpython-36.pyc delete mode 100644 __pycache__/__init__.cpython-37.pyc delete mode 100644 __pycache__/__init__.cpython-38.pyc delete mode 100644 __pycache__/__init__.cpython-39.pyc delete mode 100644 doris_stack/__init__.pyc delete mode 100644 doris_stack/__pycache__/__init__.cpython-311.pyc delete mode 100644 doris_stack/__pycache__/__init__.cpython-36.pyc delete mode 100644 doris_stack/__pycache__/__init__.cpython-37.pyc delete mode 100644 doris_stack/__pycache__/__init__.cpython-38.pyc delete mode 100644 doris_stack/__pycache__/__init__.cpython-39.pyc delete mode 100644 doris_stack/functions/ESD_functions.pyc delete mode 100644 doris_stack/functions/__init__.pyc delete mode 100644 doris_stack/functions/__pycache__/ESD_functions.cpython-36.pyc delete mode 100644 doris_stack/functions/__pycache__/ESD_functions.cpython-37.pyc delete mode 100644 doris_stack/functions/__pycache__/ESD_functions.cpython-38.pyc delete mode 100644 doris_stack/functions/__pycache__/ESD_functions.cpython-39.pyc delete mode 100644 doris_stack/functions/__pycache__/__init__.cpython-36.pyc delete mode 100644 doris_stack/functions/__pycache__/__init__.cpython-37.pyc delete mode 100644 doris_stack/functions/__pycache__/__init__.cpython-38.pyc delete mode 100644 doris_stack/functions/__pycache__/__init__.cpython-39.pyc delete mode 100644 doris_stack/functions/__pycache__/get_ramp.cpython-36.pyc delete mode 100644 doris_stack/functions/__pycache__/get_ramp.cpython-37.pyc delete mode 100644 doris_stack/functions/__pycache__/get_ramp.cpython-38.pyc delete mode 100644 doris_stack/functions/__pycache__/get_ramp.cpython-39.pyc delete mode 100644 doris_stack/functions/baselines.pyc delete mode 100644 doris_stack/functions/burst_metadata.pyc delete mode 100644 doris_stack/functions/get_ramp.pyc delete mode 100644 doris_stack/functions/load_shape_unzip.pyc delete mode 100644 doris_stack/functions/orbit_coordinates.pyc delete mode 100644 doris_stack/functions/precise_read.pyc delete mode 100644 doris_stack/functions/resdata.pyc delete mode 100644 doris_stack/functions/swath_metadata.pyc delete mode 100644 doris_stack/functions/xml_query.pyc delete mode 100644 doris_stack/main_code/__init__.pyc delete mode 100644 doris_stack/main_code/__pycache__/__init__.cpython-311.pyc delete mode 100644 doris_stack/main_code/__pycache__/__init__.cpython-36.pyc delete mode 100644 doris_stack/main_code/__pycache__/__init__.cpython-37.pyc delete mode 100644 doris_stack/main_code/__pycache__/__init__.cpython-38.pyc delete mode 100644 doris_stack/main_code/__pycache__/__init__.cpython-39.pyc delete mode 100644 doris_stack/main_code/__pycache__/jobs.cpython-36.pyc delete mode 100644 doris_stack/main_code/__pycache__/jobs.cpython-37.pyc delete mode 100644 doris_stack/main_code/__pycache__/jobs.cpython-39.pyc delete mode 100644 doris_stack/main_code/__pycache__/resdata.cpython-311.pyc delete mode 100644 doris_stack/main_code/__pycache__/resdata.cpython-36.pyc delete mode 100644 doris_stack/main_code/__pycache__/resdata.cpython-37.pyc delete mode 100644 doris_stack/main_code/__pycache__/resdata.cpython-38.pyc delete mode 100644 doris_stack/main_code/__pycache__/resdata.cpython-39.pyc delete mode 100644 doris_stack/main_code/burst.pyc delete mode 100644 doris_stack/main_code/doris_sentinel_1.pyc delete mode 100644 doris_stack/main_code/dorisparameters.pyc delete mode 100644 doris_stack/main_code/grs_config.pyc delete mode 100644 doris_stack/main_code/grs_profile.pyc delete mode 100644 doris_stack/main_code/image.pyc delete mode 100644 doris_stack/main_code/jobs.pyc delete mode 100644 doris_stack/main_code/resdata.pyc delete mode 100644 doris_stack/main_code/single_master_stack.pyc delete mode 100644 doris_stack/main_code/stack.pyc delete mode 100644 doris_stack/main_code/swath.pyc delete mode 100644 prepare_stack/__init__.pyc delete mode 100644 prepare_stack/__pycache__/__init__.cpython-310.pyc delete mode 100644 prepare_stack/__pycache__/__init__.cpython-36.pyc delete mode 100644 prepare_stack/__pycache__/__init__.cpython-37.pyc delete mode 100644 prepare_stack/__pycache__/__init__.cpython-38.pyc delete mode 100644 prepare_stack/__pycache__/__init__.cpython-39.pyc delete mode 100644 prepare_stack/__pycache__/create_datastack_bash.cpython-39.pyc delete mode 100644 prepare_stack/__pycache__/create_dem.cpython-310.pyc delete mode 100644 prepare_stack/__pycache__/create_dem.cpython-36.pyc delete mode 100644 prepare_stack/__pycache__/create_dem.cpython-37.pyc delete mode 100644 prepare_stack/__pycache__/create_dem.cpython-38.pyc delete mode 100644 prepare_stack/__pycache__/create_dem.cpython-39.pyc delete mode 100644 prepare_stack/__pycache__/create_doris_input_xml.cpython-39.pyc delete mode 100644 prepare_stack/__pycache__/create_inputfiles.cpython-39.pyc delete mode 100644 prepare_stack/__pycache__/prepare_datastack.cpython-36.pyc delete mode 100644 prepare_stack/__pycache__/prepare_datastack.cpython-37.pyc delete mode 100644 prepare_stack/__pycache__/prepare_datastack.cpython-39.pyc delete mode 100644 prepare_stack/create_datastack_bash.pyc delete mode 100644 prepare_stack/create_dem.pyc delete mode 100644 prepare_stack/create_doris_input_xml.pyc delete mode 100644 prepare_stack/create_inputfiles.pyc delete mode 100644 prepare_stack/prepare_datastack.pyc diff --git a/__init__.pyc b/__init__.pyc deleted file mode 100644 index 5940c778cf58d830033891088bfe4862b99971cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmZSn%*%D@!2IZB1}I1X8Urs^l=l@=wY z>$~J9m*%GCl@#j-WVi$rlIX%Z~*n$g`kf=dVHM}z3cAOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUTJ{fzwFRQ<%f z(xSw4eV6>?(%jU%l4AXU43~hS{H)aE68)6?qRe9b`1s7c%#!$cy@JYH95%W6DWy57 Nb|AxwnScZf0|21OAfo^P diff --git a/__pycache__/__init__.cpython-311.pyc b/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 09c1b838d864f632e1432a346f06f8115dcc043b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmZ3^%ge<81eXrXj|S0?K?DpiLK&agfQ;!3DGb33nv8xc8H$*I{LdiCU&i_w`MIh3 ziFu_(iRt<-`N^fZsd**E`T-d(0Y&*)smUe!Dfva2#rpB_nR%Hd@$q^EmA^P_a`RJ4 eb5iY!Sb=7MY$@gk5+9fu85ut?z=$Gdpcnu#i6yfD diff --git a/__pycache__/__init__.cpython-36.pyc b/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index feb7bb1ebf2828d64673457b37bf6b75e76aca28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134 zcmXr!<>k6`V16_M5IhDEFu(|8H~?`m3y?@*2xib^^jpbL1QJFNzl`-W@^e%56Z1-o z64Uiv@{>z*Q}arS^#d|o0*dmpQj<&cQ}T;4i}mBg`kf=dVHM}z3cAOZ#$feZ&AE@lA|DGb33nv8xc8Hzx{2;!Hqenx(7s(xZ# zX;EUjzDs^`X>Mv>NwI!FhD$(EepYI7iGE6cQD(7ze0*kJW=VX!UP0w84x8Nkl+v73 LJCI?YftUdRIjtb@ diff --git a/__pycache__/__init__.cpython-38.pyc b/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index ba598eaf971cab280927d92119c08a3da01b0f68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmWIL<>g`kf=dVHM}z3cAOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUTJ{fzwFRQ<%f z(xSw4eV6>?(%jU%l4AXU43~hS{H)aE68)6?qRe9b`1s7c%#!$cy@JYH95%W6DWy57 Lb|Aw(12F>tQ;#77 diff --git a/__pycache__/__init__.cpython-39.pyc b/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index 021c8f5875390596325374ab425889b347bd333a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmYe~<>g`kf=dVHM}z3cAOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUTJ{fzwFRQ<%f z(xSw4eV6>?(%jU%l4AXU43~hS{H)aE68)6?qRe9b`1s7c%#!$cy@JYH95%W6DWy57 Lb|Aw(12F>tS~npN diff --git a/doris_stack/__init__.pyc b/doris_stack/__init__.pyc deleted file mode 100644 index fa05d9da244c083e904428d3690281c51a00a711..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150 zcmZSn%*&N`Hz+2V0SXv_v;zPO2TqreYvw0052SB830| diff --git a/doris_stack/__pycache__/__init__.cpython-311.pyc b/doris_stack/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index b995df74c1b16c91f60089fa51f2beb17d1baaa4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmZ3^%ge<81bKIZVnFm`5CH>>P{wCAAY(d13PUi1CZpdkt|8x+F;1dl-k3@`#24nSPY0whuxf*CX!{Z=v*frJsnFMIur{M=Oi#Jtj? z#B_a^{N&Qy)Vz{n{eTRYfTH}Y)Z`NVl>DO1Vh9;uT#}fatsftsnU`4-AFo$Xd5gm) RH$SB`C)EyQa4`@w006C1B%c5P diff --git a/doris_stack/__pycache__/__init__.cpython-37.pyc b/doris_stack/__pycache__/__init__.cpython-37.pyc deleted file mode 100644 index 2b4e15a04434abd3bd864aebca2fc570bbe45c19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150 zcmZ?b<>g`kg1oyyF(CReh=2h`Aj1KOi&=m~3PUi1CZpdg`kg1oyyF(CReh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6vWKO;XkRX;JW zv?wuM-z7h}G&eP`q*y;7!zG|7KPxr4L_a0JD6<$s#ut|)CTHu%$7kkcmc+;F6;$5h Su*uC&Da}c>0~!1oh#3IVcO^jp diff --git a/doris_stack/__pycache__/__init__.cpython-39.pyc b/doris_stack/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index 77f194bbfc6b0375f4b03a761605d2f197ccd0b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154 zcmYe~<>g`kg1oyyF(CReh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6vWKO;XkRX;JW zv?wuM-z7h}G&eP`q*y;7!zG|7KPxr4L_a0JD6<$s#ut|)CTHu%$7kkcmc+;F6;$5h Su*uC&Da}c>0~!1oh#3IcuO&?Y diff --git a/doris_stack/functions/ESD_functions.pyc b/doris_stack/functions/ESD_functions.pyc deleted file mode 100644 index f6140b220dfd2b06142a6062f5df8ef51d99fa3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8793 zcmcIq&u<&Y6`t9ZC6S_jnzSg#vE|rlXg85#C2*1=sDoH_Q#4T3l@TS1)6JS(N-L2| zYIhk+23er6g91e_MNdV67U-e976o!CP_!tD+erOx*($n&xAOqpCK>kB@R(-5Xb%WwJE6=D0aOv4ef&e;@@gTqnfa|Sg}|gN3rE6ZsaxF$z=By1DfV`!$UJ{$2it`i zK`y9nL9K^MT(X|pRsN{ovV z-#IivoHZXRe+TO2C>9DYuwhm{t-90wCFVu?TBe2Bs=uU@^`$3xA`jRtvtedC_SS}W zjX8x?0lXxsynWB#&~GDGdutb=)*^Mb3sc~sz@cQ0I7S@Q*2F~7k zWd_H1H9(;t3?~{EP;Gc|TqTMBc<^7xH>QF3V$;rg1$8yB8`lkCCa#<0L3Z6{tJZ0t zX}E-yMZAjQ(srxqU-H6EJ1z{o*yf)Yk zTfNcpl4Ohn`~c@48=Yg|(EO z!*6T{QP!qR$M*xBlCuLkgm%wlS@_MHKCy!1Z;tR`SG*uc69|#q=hHrcZ z>JU)1AkrV`6?On!;vRM^RR^xyLX`TJMcnA+gd!LZYln3MvVi1pcJLsuT8z4@ZNLzv z$q*nB>w@+veN05<2?lT_aFJ#FbZs@y>WA#1vV9pvOTzB0VcoiB7-p7UfVZF$J1ABHQNn;|H_M|vvaGpn~9FMTTvna zcmT$sf1g}+zJR72VFPuXKWsY}@srv#wIU)k{bti^3*3DW__qzD#Z*pYI7``(>s|w> zMsO1gxqPKU!w`&Vd&#y-L=%)CBoNx8M6k_(hH2Bugsu9U;D}`;8fyfVShl8?h;kGV ziy|^Mc3!|RqdNr%bk+c`BWU2)d#w0lRvZCuZ|w>KoW`umF6d|U*Y%5fP8Y0~^fLZl zvZq0NQBPY{x}Q0G`>1gb6hH>d%7l6I0F3z_4t7QZXv_mC3|(SHh6OzwS{N2*bh9lA?0K8xN z=p&^gl9Hh9W}e|PVr5_=AOseJSQhax0^Q!UL|%xA5Cho&GN9u)b_7+T8xV{{gh&&8 zB4Gvy3Md69nE)A8tWM299+Tvlyoj;YWxRFY$`8@pLFxA-aT-+o~I5rnmvk zm~}!%(eOUT0WD=@xV7e7m%Uw~){ocXk7GJM2HBrlP_O%uA69+FAMq&^$|~xzmDhRe z34LClNz04YWqrZe{sMUVw!ebI(zkQi(`U4OoG+LitQ#jB!9N5Uqb6Ofen1y>%rKRWfUd(MrZYNp9j4ESq?t_8^gt49A2>5d{gG4d!V~{kqtZLB z!cs;=F8E6g1`>hNSk;W$9Z}IAH7ecX>8gt=d@}3QD*78U!r@MgJWh#bk02ba>9lo1 zg1ti8nkUS4=hIeMb@2fWL%>&*PM{c4Jt#k?>Um%nPt>YIALOi{co1mCi|8<^2JLRK za(gLSN|qK|ouu7CQqc6a{0s3JFue(&li>YRc+U0(i4A@V7pD_R4`aFjrnL@&2iNft z@&wHF-0P9Q*MU_XELIrdbP~Vz?BW}DE>!5$oi|tz`5YpxQ$$grQ8{ZYzRAL2vCiTK z3c(Tq7y&Ust^p_-V8e=?cgfoaBheax3vsoNT84-uIdN{1n^_US2bkH%tNZ2Ytl;N-12c5+jbB3{NT-2xc3GE^ zRHfx`%Nj*2ltU86?<~L8l%A4rNpHO%|NeZnN(g@%-##p!#l9YeML@{|Ln0WuTxSu5 z`hmpg!(s_w6M^X%q9h3qXl}45z!H)Wzzj?sh+&vU4>J)R`%JUKg!v%}a7KggOOneb zN}9`frdj`eXRFB)*H|?`j3Skmcv_6Ql~i^@9&0}n~~uFiUYkM z#c%^`G2nzceMn^^x&xK8Y2kzZ(z zAJ)pH-lA9x%y3bN7X3Ocs&|&o8KY<=Q>ti;r3=9rYPb#!5eDGGePT)wRV?+M5-|u) zAPjSz`BW)j@19j0)qM(jpW_dc7(CNr@4V`Q0L9L$x(%Pt6#IUkFDZGUEmLl)= zQmavm`BJ0W+BUH&spbxV4pg$2fY2*9rE)85d@Rx4c^w7RMqK2Dh%k+Vu$gu^IX=8e1kU@lHLg02zqcexg-2>rwNc%svXD-n4sZT=m?A}e;+l; zAfUOMP!yIjaPZQ_6#u%pAdSTV8do^*jN&Ni*~MWy^uNx)tupBe>RT}!II}^AL z0!hd6p^jx)bIK-88F!*V4R4OPIoxH__U;7D4l*U?c7d#QHS)}_cgJLGxE}?H3h=5F zR7M^~7q{7IBtfHv+nhded5FkZLsFd~8Xq9j5lIANQS-JRY;7m8D6!$tZ_9M8dL4H) zqP*<5D^bW}4IJd^hgp-E`{z(4ehYMeZrbc;t`>cLT7cEm3%x$bC zcd{r?+T@r;FtLnl7W~;W`lPj>m-HF^vNdIGJ$LQY-~W2$MZ0{Eg(3ztskrki>x?$r?JDQ5A@sjH~7ZQZ*G9=#2iM$%}Vc6WCDs z!HUWYWlFUr2^->&u9V9**3R^B0 zLQwF??oX<{U#krR_k-Oso6>*cr5=(pc!Uz2W}1Zs%Q$Ir^O{AtzZJ_5JI#QIDKDWV zK@;db0BPvoCs*Z7wE(QKSppL;SXx_nAuSf{MO#g8-+?a5!6MBIY~&bm+p8L^y%D7^ zYVg`BcA8{tkdg51@0-^>loEtai=9O63N6L?E{peBNZ!H8lkF6HW%Bm6>&G<#l~pO< z7O6pPUyyPIP=*&wcn`**(t=u{06bd;j;eCcCB4u=&1X8Urs^l=l@=wY z>$~J9m*%GCl@#j-WVi$rrflFa8ftUdRjw>fB diff --git a/doris_stack/functions/__pycache__/ESD_functions.cpython-36.pyc b/doris_stack/functions/__pycache__/ESD_functions.cpython-36.pyc deleted file mode 100644 index f1f3c1985401e94dbf63bde8b04663325919f3da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6776 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 AkpKVy diff --git a/doris_stack/functions/__pycache__/ESD_functions.cpython-37.pyc b/doris_stack/functions/__pycache__/ESD_functions.cpython-37.pyc deleted file mode 100644 index 26d5b93acaa0a950670f47120c73496d5a538bbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6769 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 HdawT*<$-<2 diff --git a/doris_stack/functions/__pycache__/ESD_functions.cpython-38.pyc b/doris_stack/functions/__pycache__/ESD_functions.cpython-38.pyc deleted file mode 100644 index 75dd8581e66c100fa58761072615d5b40cd30a1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6800 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 J-i_eB{{>JIdw2i< diff --git a/doris_stack/functions/__pycache__/__init__.cpython-36.pyc b/doris_stack/functions/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 7a8c9754da510f447e660ece3e95990ea7d39872..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmXr!<>k6`V16_M5IhDEFu(|8H~?`m3y?@*2xib^^jpbL1QJFNzdZFb@^e%56Z1-o z64Uiv@{>z*Q}arS^#d|o0*dmpQj<&cQ}T;4iy>ruaYg`kf=dVHM}z3cAOZ#$feZ&AE@lA|DGb33nv8xc8Hzx{2;!Hgenx(7s(xZ# zX;EUjzDs^`X>Mv>NwI!FhD$(EepYI7iGE6cQD!lOj4v)pOwQI%E6qzT$;{6y){l?R d%*!l^kJl@xyv1RYo1apelWGUD;xiC4006y1DboM| diff --git a/doris_stack/functions/__pycache__/__init__.cpython-38.pyc b/doris_stack/functions/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 7268d2c207336732ce921a24238d238657192bd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmWIL<>g`kf=dVHM}z3cAOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUS~{fzwFRQ<%f z(xSw4eV6>?(%jU%l4AXU43~hS{H)aE68)6?qRe6l8DCtIn4GPjR+^Vwl9``ZtREkr dnU`4-AFo$Xd5gm)H$SB`C)EyQ#b+R9007v>DdqqG diff --git a/doris_stack/functions/__pycache__/__init__.cpython-39.pyc b/doris_stack/functions/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index f62e4547d21ca63d6f979f60f2d8c359b5935e7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmYe~<>g`kf=dVHM}z3cAOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUS~{fzwFRQ<%f z(xSw4eV6>?(%jU%l4AXU43~hS{H)aE68)6?qRe6l8DCtIn4GPjR+^Vwl9``ZtREkr dnU`4-AFo$Xd5gm)H$SB`C)EyQ#b+R9007{3De?dS diff --git a/doris_stack/functions/__pycache__/get_ramp.cpython-36.pyc b/doris_stack/functions/__pycache__/get_ramp.cpython-36.pyc deleted file mode 100644 index ec5c0c8fd7b8124b8bcd34f0af35fb55e4aa49c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6395 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 PP1X-e#rRig)tLV)_sqv0 diff --git a/doris_stack/functions/__pycache__/get_ramp.cpython-37.pyc b/doris_stack/functions/__pycache__/get_ramp.cpython-37.pyc deleted file mode 100644 index 80cc6ffffaf3a804934d183464a7d287766eeece..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6317 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 EKbxh^f&c&j diff --git a/doris_stack/functions/__pycache__/get_ramp.cpython-38.pyc b/doris_stack/functions/__pycache__/get_ramp.cpython-38.pyc deleted file mode 100644 index a073dfdf017f3b7e1169fafafdd4cabfd461aa56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6343 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 D^;FCG diff --git a/doris_stack/functions/__pycache__/get_ramp.cpython-39.pyc b/doris_stack/functions/__pycache__/get_ramp.cpython-39.pyc deleted file mode 100644 index 8c07f79e6d98e95e5d79e0fd9db9c772da489eb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6343 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 Cd&-6Y diff --git a/doris_stack/functions/baselines.pyc b/doris_stack/functions/baselines.pyc deleted file mode 100644 index 48f46858bae5261abfa6564b6062fee855140b23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2953 zcmcIm&2ke*5boKPWJ~@xSVGu<41uUp*anJ9xX#D|0fMHx~~94OVI8ObZ}kGwMi ziIPrEo+FpMLN1*040)BDQXG=6dnH4vlH4Ng&Q8zt&(~k~j^zKoRQc`KpT2L?^i#m| zbKEw=pm8aRh>p(ZijKV5x=%;G%sq+<6c_2JNQ!NIib@pE(a~Hk!^b=w&Cl%0bW|o? zAYCL~B0Wbxz*B`oJ#Ee-Z1^WWkDCfp$8tOEk2+yw@|8KP92mPFxWHC0zjx>E{hd2^ zam~cfa?xRv+C>bTxEFALiQBf3;=7+ETWo*fsb4sT_;zjUWLYRplDK>iN1()beL?A zQfi7sRt3qoZb3XRPSL;^T-GP^*CNRu*kkzqx~1sdK^*xi4zsV0l$mTA1m zswlvTN7=hs^hK^mL(fwU`U84dtumS@a> zF3iutFLU@Qc%ZGbE^2bVzcSmeAh}f$H2|X2d&OFJan^$R_+&Z0s)eF4N zuqPMELBN^)8XCQ?Je_dzVSC@`Rmkl3pXdPWl4ri@@rQ0k29A@<+Y5#rUO# zulzkWlqE@Z`o=pPb_F-8aaBkVsu4kQcqBPgX;Nd)|Au51@EYk2s_QCl^yzq=#x-WH zGP zE1vnF{~LPlGfk5^O)mczdJg#!D`=?IX?&RhYmnO@y+!&8>8t$moT-93{lh^AC6?!iNYoahQt$voa zjkWeZ7QfC70|)(fI*7Dby)+P#S0-~t-);=7XgdO0$=tv*P`WzRCJw$_^Q09AqcR zjzOo6@eW6_j)xgK$B=o_PSZ?V%P!MS#~Rn@r@&zanGN3~>q zLd{zk#HUWP(6;)4JC>kn?nq=tCB?Fm+v^}p!laukupn8qk5OU?-eVk0TYSPx95CtU zF;Ghv#^%%eqL^?#OyuhzI*}Z0%4Kyv*1(@cGl{mZL!io0ILPAs4d~7x=&MKV&0GFG z%;5$8*SseGXFIrnLCTj5VxZ#wIH>X(vu2M6E{yWN=c87V+s)r%Np3d|!lczswVY<4 qGLViw_=Mfu;(^nAPvZZke8|u=- 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 diff --git a/doris_stack/functions/load_shape_unzip.pyc b/doris_stack/functions/load_shape_unzip.pyc deleted file mode 100644 index f6482000c891f300ba31613b6e981debd04a26ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5970 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 diff --git a/doris_stack/functions/orbit_coordinates.pyc b/doris_stack/functions/orbit_coordinates.pyc deleted file mode 100644 index 1993e210621b48404b4f2d03f88406a08c542dc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6446 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 diff --git a/doris_stack/functions/resdata.pyc b/doris_stack/functions/resdata.pyc deleted file mode 100644 index caa3cd5b07b33f3962da011bf5ea510d25b2b03e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11462 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 vF-X3^ gNubkw$p3UCBo32D`6xDPh4=;z#C~>U;!t+~7e%1tbpQYW diff --git a/doris_stack/functions/swath_metadata.pyc b/doris_stack/functions/swath_metadata.pyc deleted file mode 100644 index f2f192d3323e10c0d70c3a4d707ab34db9723546..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6023 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 UOWY*>DMw4SxzYLB*@;*G1wL%^TL1t6 diff --git a/doris_stack/functions/xml_query.pyc b/doris_stack/functions/xml_query.pyc deleted file mode 100644 index 9d6557266c301ff696d7122803f1b23f42cb3d10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12796 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 jnA{Usg#88}~)TGRGFzDQ$| diff --git a/doris_stack/main_code/__init__.pyc b/doris_stack/main_code/__init__.pyc deleted file mode 100644 index 4f7f1c88a2222324f2f1b165d30660a79db4abca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmZSn%*%D@!2IZB1}I1X8Urs^l=l@=wY z>$~J9m*%GCl@#j-WVi$rq)%)HE! b_;|g7$`THsX*Rj}DWy57b|5>8ftUdRg_0)l diff --git a/doris_stack/main_code/__pycache__/__init__.cpython-311.pyc b/doris_stack/main_code/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 354ac2d6817c4518488727a6ccc2ffc6faed6721..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 182 zcmZ3^%ge<81eXrXj|S0?K?DpiLK&agfQ;!3DGb33nv8xc8H$*I{LdiCU!M9I`MIh3 ziFu_(iRt<-`N^fZsd**E`T-d(0Y&*)smUe!Dfva2#Sk*SxFj(-TR%53GcP_lKP6Q^ wK0Y%qvm`!Vub}c5hfQvNN@-52T@fqLWRTs({6OLZGb1D82L>2X#0(Sz0HRDTTmS$7 diff --git a/doris_stack/main_code/__pycache__/__init__.cpython-36.pyc b/doris_stack/main_code/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 37a58c6ddfec1fa0fa3b0daf51cd7603fc6771b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmXr!<>k6`V16_M5IhDEFu(|8H~?`m3y?@*2xib^^jpbL1QJFNzdZFb@^e%56Z1-o z64Uiv@{>z*Q}arS^#d|o0*dmpQj<&cQ}T;4iy>ruaYg`kf=dVHM}z3cAOZ#$feZ&AE@lA|DGb33nv8xc8Hzx{2;!Hgenx(7s(xZ# zX;EUjzDs^`X>Mv>NwI!FhD$(EepYI7iGE6cQD!lOj4v)pOwQKNP0Y-TPtH$C)sK(Q d%*!l^kJl@xyv1RYo1apelWGUD;xiC4006aEDVYEO diff --git a/doris_stack/main_code/__pycache__/__init__.cpython-38.pyc b/doris_stack/main_code/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 41f3291f9d623e9167cd9b3fc15b332800a035f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmWIL<>g`kf=dVHM}z3cAOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUS~{fzwFRQ<%f z(xSw4eV6>?(%jU%l4AXU43~hS{H)aE68)6?qRe6l8DCtIn4GPjo0ypwpPZkPsvjSp dnU`4-AFo$Xd5gm)H$SB`C)EyQ#b+R9007Y3DXahh diff --git a/doris_stack/main_code/__pycache__/__init__.cpython-39.pyc b/doris_stack/main_code/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index 513e4eed20f1351cc75ac60fe84f1ebb42f0bede..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmYe~<>g`kf=dVHM}z3cAOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUS~{fzwFRQ<%f z(xSw4eV6>?(%jU%l4AXU43~hS{H)aE68)6?qRe6l8DCtIn4GPjo0ypwpPZkPsvjSp dnU`4-AFo$Xd5gm)H$SB`C)EyQ#b+R9007vGDYyUt diff --git a/doris_stack/main_code/__pycache__/jobs.cpython-36.pyc b/doris_stack/main_code/__pycache__/jobs.cpython-36.pyc deleted file mode 100644 index 88ca1875630cb46893401701f6faca8fba17bd65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4089 zcmZ`+-EP~+73PSfM9Y$`*h!ppvn^Y!(+Hc`ixx#&W6>_qv`rSfZjb~>E1)1~&d8=h zk@CzaYYTF3ycb0;df5l)Rr?0*tMIm0`wF@0cMc``CkX}49L}7XIp;e+bM(`0xBcIz z|BC*;;W+M6HvLW4X9qFpZxjS&Bc;WQD@4)HoC)6&V z28b{4nm?jZ&Ok_K(2xQvc>TbWp7g(U2EJ^{7W$?Pu*Mq>xDyIjCr27yR=Oh=Q11@d1?!7!eOE5 zpfD-MlT6vP$m?TX9jUw$BGxJ#rg>_PlzbTG>YIyU7DUN#n%gwHB2Nm1RGeT*7$3&z z#lA0(FvYVI72A3(bgZ_$Dmk4!(M6(+QF5of#DF)cU{fb5nOa5AL6av?FH`zOqSJ{D zZ4oY}tJzvPf}Zp~s@OwQ@f!tHX`J<9sOW2{d^pVFLpDmxWGGXu5&(G`7CCEgPK{OL z`k1GA_(ti2!oW_2RLt_8V<$SzaWD?GQ`&x5kmSb7Vrt)~@}bI=26m(pCTQkj?nI6iwlQ+gopbu~<_)y| z+!^_!CMdk1TA%`^RzTs!SQ}IuD_2Jy{_gVnwL=Hv>)iIZy&-Ae4cS1tc#hNko1e!Cqx|NkzISY`Jlu z>^Dl~k;#;rL}cA^P37|Pw>OFHQQ5-k9Osm)rkLtP;aH5WPEKL(y!u!nz#?17qFiM% zPHg%{4Z8fXjHxnMiqLmU&!}vuDW4D4S>$K6GXHk;7RKNHcK4_ltKB%C>iBT?agj{N z3c<7c?C9|`U5pTpyS%b$BRFUBdUuQhx*ztaV0s{83`%2&_{x3cur&gJ7ViMG;x-VRQ83w4U%=K z8algdMM$erD(MC@q`%YXh*_sPxtdC73wkIZh=l{<`yfv4%*A8p&%HAQ!N@sx=D4;# zcaEE{a0#*y`Xg}R+=gmE9JIRy1s7^G_Gc|U4j<`Z*!OfB%$0b}>WW~2KOp3dD9IEYd{RsK zlUhm-4taYaX4@%!LPSzGC%{G9J_SkSJxeBHA0@E{0V3JC72AmvODWlid;X5*5){;o^?j+%P-9J7F;fY2)bF>9W(Ce2CWm$ z@q<^DJGb^Vr2s~gapPdrpJHs*2=DhdN_U**obyUIQ@N&uq&Lx&zK-)lh2&mL7OtHf z!L{`R;#eV$4Z?I$!$egLQ$>PLEIZV&=TUkpoAG3VTn=v}Lk%{umeMn&NNtfFQNxvf znoD(}DJtGIV#P?yevNt4L*w}OL{D^(IKAco)Y7CEthGtWoFo>T^Z>-61JgYRXb#Nw zxRBBy)*Cl{wrthna*5{{CR_6?_h-M z15SPZ{_hy>*~-rHzIoYiRuFTtXi)|vOgVorYCnT$;NdLIwjeMDJ&UrHU6@r#T+eTUjyp<2*dlej= z#p*8ayV&LU6M##r|Mt%6Mdn+qUR$hQr`6I!I`L4abZ#y`}_T#{xQ(ySk!dS>Yr2d88z$}6k4Uv^_>0@(E;kRA>T{Q!!h?h7gD-Q zYxbyFqlPZjMZVM@)4(;aaZySRF>dI>cDw*pNJj*Co8rzDY8J4wfPKH;rJ9CHvM4Is zQH1{+(~Rg&6dh0FY%$Y{B3UF+r0>$Xw11@5F-d4~IHiMhYfowy8R^ihu4yZumiTCYU2A@}A|B6y3U(10A8vh4Z*bCkO diff --git a/doris_stack/main_code/__pycache__/jobs.cpython-37.pyc b/doris_stack/main_code/__pycache__/jobs.cpython-37.pyc deleted file mode 100644 index 25daa61150d904c265d682b4265715fa676865e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4093 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
^S4*l=wCQVRn2 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 diff --git a/doris_stack/main_code/__pycache__/resdata.cpython-36.pyc b/doris_stack/main_code/__pycache__/resdata.cpython-36.pyc deleted file mode 100644 index dc8c9876ef5c05c6c76378dfa8bf74386f786377..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9517 zcmb_hO>7)TcJAu#>FH?>e?Uyuf`s($I!^4jIFMnS7`BhE(XD#iS)AUW~{IWG4@ z8j`L&AP+(+%j5EpoPabe4`W;>;^K8Ln6HM_SgX;1=tuX1xZc1O{2P*GEz&A@U8Ew^ z8^$)}%{rw8PAyK0oZ68tzp+|WZ$_f5sW-z?!;$8;5SXYNTBMVXNT~P2p+>ne9Eoia zw7E_p5)&HL^G71;3ECSY+ZysK(5SEK>etk_JSD#=Ps=GeEx#qt$g^@r&dPJkL)+A* z;9o#pV^!bL)W34=Z_D%YMfsBaZTYf%MZPM(Bj@CI+`*Q|ZmyuxQoZT<)iuwREiZ8WR_J^oQwB0k@HlA zl($>Z6vQKK<<;teS81ucb>z*OYPI9xpuSeAuC<%>a6@9aN%xhozJ~F~PV1hh0xI@m z8v{-ybQ4ypoqFuBq^kZh$`{_gS$XHimHBwM)~c$0M_IPkQp#&m8{exS<1NSKq@RkX zR7=H<^e~nnzzfCYT5GMH)M~HArQTe`rCMvnQ=VVLV7ZR+mf9=Tz>7zMjk}?$^zuVl zG1SK8ULoa5H14F8wc&57YCCqkAk3zw2wV8!`IWe|?6qnwNmF4V4XP?GWv_XDN>{X` zRRIZPi{xS=+c~+ElbxJAl#|Ojc{nGJc|4ygw%&$jP)evvD5E$rCyG za891g$wzYXb2<5FPJTWoAIr%vM;Mu7)d%Soich4q#n#6xc@xV|Un>$Na0wNB|X!= zAKR5m-LHq03OQA94vA)3!ZI9zl>UVg;RsW=gel5m40lJj#h5sNr&LlFow4f)de3C4 zYJ$|@M|Zjy#L0UAry9X2?t<lkB8R0u!>bjctaq=)1Bt0gnAK;`PGx;70RAR zLIVzH{b<6@jf6}}x_Tp_r9^JcBl&j-VKN5si?}PK=<3Oq(lw;sHMbr`VqUxbS+{Wi zPon}sxq4~yg#UACMuk;Ny%iaNc{6L_hqA!W@9^`&HO;?^Erx3T3a#}?Oijr?qLPSMP zA&CnC?GU(ys@{$b+~Pu80hOn0ws2g8;mG3`ZLWze41VunMH%QiHmRSu*sLUKOj;Lv zo#H#_=OtWBk2Jjux3zIOLWkRu3j~{P=+oD1&9Ht1iV^@Kbi3H!nWAafALAz2raT|*OW#V9I9){LbnLn z-qE+VB4b|L(Qo_R(vE(A0X|^D(w4NMk~AhYcu{+E!9OI6Q3-Mc*+Gd7pZsuhL6-RG zuX_3&)>}ZWBXWq#{+jxV%&r5?W%!bfR>PU@9gv`?)Ud(Z^liOSlB3&#dTluHN3m+5 z{H-r4$2;cV%2*cNA!!W$m+fvjvLcKYnl48U=42?+;oXh|2}|Yk+{4)52qKUzw0SS0 zc`Q?#UT>J)&4s8aomCq({$B12ha=21-VN`C`okAAtUHt2KZ0(&70911&GfxM=|~^d z!AuwY&m(T!x<>l_aJ>=T}0Z^r>E5g5{BLBi~ZkC z%Af83c8SEqV!C5bR}zR(-=$X8v`f&UE+eA|hCBM~>|=3JU4r~rxILJr)-Yo4M-U4`Qp@1`0~`8jWQT z3kl%b&1%h4uTvq7UQJVSnv!`+zJ(+%BxKmY-mk9U!PH2y15&lPn2uU~pX&dBlB-A- ziv*7qzZI8yOk{DSCswFb{SH;kJtP`Hu#6!s7Wr0DU_`+A9=K++%6sk{+W!z&@P|mW zf(hs(b}+)=Y64*KgkZJ@ytdE{yH`pOOdzZqBf=F&Aepeo0kDm-Ue=E?G@B@O7?uIg zcw!YC^l?ld2Uru|IAV+;J%$zl?L$wuWDmE=rHM_`Ob4GJp}k&W$M64_i(TyJ4R$c> z{f)>ZZi4;)PPY*1p+VRp^$8psw}CuSp#c=%7HS%rtgTnGmQi7n+MMbZxlIvmOtitC zKB;Z%bO+)9_pvgq^*dOb)3=}zn5ly+7)v@1ebxf6yImSHTXdJ#A}zzILgFFsK#q;I z>X!O3Ne+me3WLphxRUOmYLT9^CBZZohr{aKricBqTBEE1bH@gpG!}kr+^aVC?4Esc zo3{8%XybLL!EEEYqmNJu`2b8aCM>-(vDW};%bo@39S9cK0*@eI*A$`H2F}tEyTM0! z9M#_s%|=0r(4ymbf>p#0{cBvmi2DB4JoB>CJZJrumwPS2sQN9}FW=JqaW2D7)z{kV z|Cf^Nu15lv(HeFnE^5BJb&UHs1TRTSX{Vr4{i3%1XT+)~lCseG$;}lHhwt?bP=1i0 zbV=?xP#IPU%3pR{OKuCXfUGt;tb&jQAr-74Hc-d0J1g~qIX5}Am13uk-~t?o&cM!H z9DNggjAV)&O`WA=h7v}mn@~7ZGkaB3}By6K0#B(wf4XkUd)&cJUOPiq@U}svxENj6f z+zY6GjqB6u?$u8MKIAD_-?Y-f#MR$Q6KmAi`Vr+CHsiuo@VG)`f{lF=VRxpI2)n+d zl@9i|zQs>XS)2fmij3rWR%=3&cH*P!Teq~WBjJ!N(e8bFq+6hN(qkLygr^MyxX$b$@G2pA*zTrI3 z6CX-SN#%oKVpy1TbbOnI3uFsxJr7Gi)Jry6WNiec-Ym;8+`r&0Ru0-jWk$Or)0iu(|`O zbLgqZX@~iA$CxXXItQL|vUUboFTvUkT)`L;X1z8YDRXR>F%}WRYp4*5_8!Pp*YWtj zNP&(79QSy(F>k7R=sk_v?o!Rp@4D^)r|+}-XOyO0CsEcv5B%RHDC2{|F6}|P6tvu> z09EJ8^wh9Uc;w;Q{3%R(^Y-|K!YCJ^*nj(BmzHMgh#L0$I>Qn*!POQt6n+$sx@t4f7 z!*3*kN0%e==;$J!)RJz~lUAoRS6O)b`tQB=mNT_KIfLxk%;~(6a7sR=aEyl8Wr6)g zDJp-L5fDrC3r`QgN3OdTXYqdJXaBvtw z&S8e?fL&NPD4+%|dO8m2Fz%;G!v7qen&Mrg=k%ArLdGH4MrU|n@zm%@NuM({EAA`wx15U~n%m+KXtsF&5T zQ0HSrAUO|CN{j~k&;<>VA?BxeW~k3`(%|RV4G@U zF%AP7iQ|?QlE58tuFfofHp;+r@T-x#1j-rGXC?Ayic%A1e!KJXKpUJjKzi>dADV*W z?mNJ6@K|@FjaHt!wBd8yJ*B6-Bs;ILhI>_2r&Emkl~qiY6mwPfadv71*h4y!?^y&4 z>*U`!U%iN1;*Cse?X25mkxh@lY~#A|y#h3GGQ>gCX&Q)r0Kl>;`_gAb`C;Su}P z9j;e+qFz>qeCk8?DYW5p4%qKS>b=N!UHuJxEJdsu8fiS}`>$AM5jqF`Iju$KB=#Ts z>-Z0!Q992Lc+jBN!BKvSiRvUDG&5uEIe#H0ZRgH25gL543z+>wjp|ZO_Kv-V$I-+K zy{lySlc=NtGoEI68z_<*UhkVdY5a6J`8z18O?Twv^749@;=B3 zqOjx(&wd-BPrMY&tyE&CQdw)s4MYShak)}i->5c|67?#*)Okwi0~%90MVwF7DIr3p z-lOCXD0!cfpHb3(Z&bV{fx#2vA|6xUSu#k8=o`uX` f3uCKwmp)x{>C;rl_Jw5lmoTqdK%D?*fwcbv;ZvbT diff --git a/doris_stack/main_code/__pycache__/resdata.cpython-37.pyc b/doris_stack/main_code/__pycache__/resdata.cpython-37.pyc deleted file mode 100644 index 1975ea2f92051169e8e62aef2f756ba6f0ab5d47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9354 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 diff --git a/doris_stack/main_code/__pycache__/resdata.cpython-39.pyc b/doris_stack/main_code/__pycache__/resdata.cpython-39.pyc deleted file mode 100644 index 520653a9b7c72686dc1244ce5e2e40d259c0a02a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9135 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 diff --git a/doris_stack/main_code/burst.pyc b/doris_stack/main_code/burst.pyc deleted file mode 100644 index 114a9970097985a9d4654e945283a8008a9c8122..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3505 zcmcImOK%)S5U!qmc%9gJhs1fnnwJ&?YaoIPAp*y6!wQoK2_sm>J8kc*cW0LAUME2| z7e@pn{sR(-OT>{Mz=0D-ehOT20Kxaw?5rISa0&KyO?P#5y{oz_zs?`}`G>FG@56!-}j`#BeW=K~;t|S*sQ6iVW(qR@ZZw&&b+LId8~X zL*lB~nrs+}YjQ_qPvpI|S&1uhy;X;}ZYA>3s-MMTnOxqsKAM_Hl4T6{5`Yz2Ru~F)#IpmN_^1=fZN*%7hUo`j6ri~i2D){EOtaX(}^iD%AH%45>qWFwQ^D~ zCvc@vKJa5Pf$NINp>lG#B%UiV^Wu*Pyay?Jf%K0tXfSe5jM=HlocmUG>N1xv2mZM9 zPe}iy?7$sW67SBC8}X-PXGZpntbFji>^2ky($nPxXJ%xl!80Jrf8zYZKtBFSc54S{ zH05rOXIx=Wbm9&VypwV1JRj!6LKwl-eJ+hwF>XLMGV6~@2X`1=SCt2!Q%R?Kvac+k; z^<5S@>z%cI3B#QS0QV1$%PzziDKh3=^RYIP>)Mo7TOg7a&uO!0zo4DN6&;JLM%h4V z+*?>I^|GN|iqdf&Z7!{3-7zJ*rE9&FYkAhUUB47(dEyG#ap-JYOT#EhJKZd{OWHNt zquY+n@A9Ti?X6LMVH&K?LqK`V<;@s3KyySj;>{P!HBWC_d69sYY3XjMQb8uP45v zRm7Td zU2&R=kXR*gKG*L6-k?x&QZ^cDr+W~hY}O-Z(`aa0tZAiocCZmX#T6M&oSudBX?Tig zYC#{7wR(rz0@0ziYy}&7l3P>Mtrqa2rLCMEVo8TjfHSpo?@~r});#cEnXLG2ECff) zX>&Ees9Z4fpqw+uf>rZQZ~`-qSIjZf#yE#j$KJeBb!jsr$x6J6;l2YvV`B@2OK=6@ z8ByU9FT|p?_O%E1ad81zSBU3AO?E5vY(Ys_km0F-Iqv{bOygh$MzMIY9!IoUz; zES@O_&lFGt1vpPECr5B#x=~eHyjXyW+2N`Es$F<1jCsKjl+IUv@gfEFKTA)HGE0+{ni^T*l_Ux;lG^I%_Xs#X82RUOB(qqBj0n0KEp=3X5y7 zy)jO^ytiGu=zuhq)v1BeuxhY83+eBtr@sR)k diff --git a/doris_stack/main_code/doris_sentinel_1.pyc b/doris_stack/main_code/doris_sentinel_1.pyc deleted file mode 100644 index 6e51ce1d104b5c2e66e40d90d545b69fe34caab2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4433 zcmcgvTXP&o6+Sa7t+Z>cBwM!ROB~C@7dcL(2;+nVCo!=SnOn+?ctJc&ji!60k!EMM zx_d1gv`6bFL%4lerIhKqOyPC-7*33Fu`&<7sjM9fow+qLXPloT7c92X0!< zZBikvxEVRj@{1LQb?9YCCUaq^9U(mJ}q;5d3`-va?TGq`>YRDe&r$g440bV{Ce)<`Ig{xJM^FI=sMP33#_e zYJpCsa1P{rQEt>C(^j^hGUO7e^OKO}=J86iyG-f=xhoButE84hiHqc}ff@?)HyZqP zzw>5Y60=y;n?hF09GUzEjpxa&l3HQuXUx1Tysyy79I30ke@X2z>{y_~o20IhVo5N_ z^M^3FjW56B#UdVWk@-h`52@AtEx9icYd~(3xgJ(5ZZwcP?6Atx3V4^y;~Kcy0M{mY z-6NCMkedzU?McXeGQX`M(6iF$ok_^MWd2k`-fAH0q;9cB>b9(Rymqai(r$yyH}#{t z&7=1w`EHU4T9u_xyAu7~Nyq~-w`$0}2J*d0$U`zaH3XJbT;3P$5E5wTGojM!12WHR z`27a{{Yj1=lKEW?fg>u8A5B7jK;|zsK7P%s*@3dIS9A^}hR*%+;yN zF&oXJ$CC>Dkj#@B0;g6wenx7O6nn5y;0YO110OWNtyjVp*7|-<=Jz!mZm#%#QNbtp zZj^I1AS(0a8Y1hLsEfWLtOS6|b>#-VRbm*3G*-wr%gcLeXOQZMWy^*m%F&mYn^^xTZ z@(hTBVzdRTT#L$SS)_1V!4YfmCA`YxynL>WxJ#rPFP#C}D$BMO+8vkXXccEsIV&)? z5u|b-idIGp;Lm+7;&H_I14G-=#$y1nD8u$pRS<&_Loh>#Qx#1+c z*wF>PTv*Po6bi)FsCAPZ3-h!*&_)-jmXj!f2hK5gFv?w)m*o-XIGf8iUQbS$QE_aN zq4)zCY_EWX-~YWt)_#K9NWKQKd+ZAvu>^6O{xv-7-P0cxDW{cWUo?^E@+~ON%Y6}N zozI8D#AQD|EcdJw2!gR!S{-rtBKB2XY$!xY=XucTqVZW1agd@F#_}Zu#4a1?7)d)A zMxc;*!s;CEjI%+quf69FG?*6p*wd__M#Ye8-lN#O>Y1dTAiSwQ`P^k7j2<9|;;cwZ zNj7X*hLuaDC4c4lnJ{yG{KAZUy7+RHDw7uUMUo?t*cy9`)`5rc3+v4qRbcK$)?ENW z={)v&YgK8^UkACZhPK+e>5beA7jHyqriilem&w)G7vI=aVn)?3u9Izsd|Q>AOM z@>2WJeWr1kfPA$FMDOrrrS)VlU|lB8v2@BxT+;=j4Srown{E)j$5ajr1pY@?Xb81C zePf6o0KdjkWzwJ)`tFjjz<5JFLcaXL<7=HG5wV#OV=7r^{xFgf$E@Ifc3R@mBYyKS zFQ=tkP2%(@`YAJGwx>ge-A}UEpJTUiP!9A)QjAa|8(U>M8eqiRjb{g2&rErUs^3uj z2by2GFQi8sgCr}E=}Ons>RUm)xjua12gIo0)Ujm9zC+Gz|;CjK5ti4bueih0MPj3r7 zIK^L?M9O|i)(Y==3dJKm|HVd5FI%NBpM2^enbx^rGO;A6!xSn74Xx|{ItL&7) p#g+8B2jALaxdWAZoO)vJ|HZNLP2rIb=qEfnEf>vPu;_ng{tZF*B(4Ae diff --git a/doris_stack/main_code/dorisparameters.pyc b/doris_stack/main_code/dorisparameters.pyc deleted file mode 100644 index 850e25929389c71c7ba3bd12684cd333de594c7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4736 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 diff --git a/doris_stack/main_code/grs_profile.pyc b/doris_stack/main_code/grs_profile.pyc deleted file mode 100644 index 278c24b977751e3ad310203af684bc49a5a748ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1310 zcmcJN&2H2%6os#ocKSn0B{n0$CJQ1(YSpl=5JFIiE}*J1s}>OphG5@9r60S-q(nhM-n#)*{x49LwxWZ` zlFX(@?EB?g*v(Blw2&vtc!x6*a@^ocUpeDdQG;Q^GiDF@mOTIt_tiNPB$lJRE$abP zW30`m=01VY1q}FGLwL=63p18xh~<%bs)w=1*%Nl96gXP&6;jdS( v{`(EeXpH@{45MIUH0($=xCNNMve`QR{lfcp<9qUa=)wzL3-4-6Z3TY-GN%>i diff --git a/doris_stack/main_code/image.pyc b/doris_stack/main_code/image.pyc deleted file mode 100644 index 75f2fb2aeaf32a0a8e5aeafe677eb95ed8e60121..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3935 zcmcguO^+ML5v`sfx#TYQL$YH@kP=Y>Y*U6sDpq_`1b?ihtdQiG|6m~hB>%t{-*U?>mmCuyd9P-MYruwY8;>|sMg zUW=THe6_Pgk=y+y#3%p7=TYB)EIR16Uqr>h=eCG+^xJ8)Z#i1%#yy{)xrgX1w5m0U zp$1NG$Ugd}yoNHRVl8qcAt7b3aEL4CXVC5t7O(+2T`;*MYB7-{w$jm?RqLq zvtqd(xbSE?DOS#gaa8#!p`XG-ta9fR4$~zLM%idA>l6PFqcG`M~9>1{djYwl)EAZGAGU?@}GC;hc2&-!xGIOC~Ag9oBD8Y|JwpBCNx zp6JtB^r@V*7(#y%edE6T5ioHIKJ92|cEXiR@^6xlH zEx)6dWN-Zxd)rj(ZG)53>uM>8U6w;%^1#3!V?3V~9&b`ubXjFmg(J)N1T?XdtxAm)+@zOwI3Jr%@4%D6$>%nsF?D_Q^sXEY1baXi*8d}+Tb7Nq_fcX zed=2&2POyu*sV%0UXx459aX;TRo3WwxKX%Ds+-p3(33p#D&uU_#!+;* zh~Rsqk1a~^1fwF!Qhnu98@YLI`9MYlL`Ezl^)8zG1v=o)(>LV=0A%zqp-#Uu&lGI8 z71T>;*VowR{({}$j)JOFj^HiK^wH#8-lro5+}pRQJ(}hBKjJY|0YS^Zg9H70{=6KO zf6ot+F4mGYbb&t2JD|3*NdzEJ^Ymb+UT#O(eww_p@%z2GOVa&bZ1QT`oeS+lp34x~Q%0tVHbzVWxA4KD5r<%e0x;n(WqdNM2kGm=VfYt5KWvdh{! z0H;8}&B{loqG^P)p15n~=$~{l?q2f2!T4=H{gz3hoI<+0g1ica#x44{B7pbh3|y?4 z7W?4YY7(`ZPNJ;qp@_YN^uxr8`VVQhB{4z<>*AG36se1PAz-@hZ;Y63{&yybF)BY~ zS?DC@i53pHP;Z0$@3baTn30+bAkmos}NPm50t z^Jq3hf!XI}H7f=8NqvS+;S8J0twgazFRWMB>!=dv9OJ>qICz9sBA3@PEw5u%(XJuH zHxcg3{+hY!T?BG1n?CQZiiaU>8HRf2Fq~%be1c(c84RUYeoczf&u*a9xu9`C`_X@n zmTvi1-|1fOu9s%NftlbPc0}laFSOvC7U6^MmEwa%DLzosmqDWL-enoDhx|WoqZYnb S+Vs8;RUIR>YxL`FH2w#~1tNt2 diff --git a/doris_stack/main_code/jobs.pyc b/doris_stack/main_code/jobs.pyc deleted file mode 100644 index eed84aac5597c116adef65212339f0dde779d469..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5154 zcmcIo>24gy5$@TG+7&O!vS|5G8i?tvVTm+sIB*C%mzhKgY(^Lg5G+6$3}qIvDu0|m`H|N!@&ZAS=kPn^1@ZvN_thLE4f~(D%c-rd?y2s&tJ(eU+UVa8{}Dv0 z{&eyCYdrP?fEa(CN|k!r;+}fyskoy|M@@iq)nAqRTB$FecDeL$+{0_h|L{3*ME_VE z*_O8l!f)}|0KkAN7yx$oCfJZgN0464_-S9oJ)sO#+!tg;#REaEsdz<@p^C2wGE(tS zkn74n9FMrsTM*~*%xE4%M`>uSE|hsWP>%!7m z?Z6-lPm*kz>3o?TnX-LxQWlxa3%d(!beP9FEAqq@rPY(761ubP0TSSsj)1K~2eal5y1yV!B}y#_txp?? z$npa1vdkMT|0#_x%gJqMk*s(D!{LlB$qbI2Eii19fko}1zc6lA#CEUYNDuax`Celd zd&%7|u8I&Kicbg6XAGHd0M0yhrWB&odCGOvyvq>(x+3<}Sx093g!8_d4`e8i!xb4` zYi5Ts6v)|;3`fHDx|**x%hnqH>uQPvVE2s%*=&#-Ocb2D$wYBD=DF=(01%x43~u*+ zC{Ce6C|p~_aO%Q5DV8=py{L!UfA$asaFWJHTKCZL67*@UPsDGX0YtA3Cr}6DR{-6$ z3#V~%K3776N)^@(@G~`Tk;F2?-%XI>qD*YS{F51HO6yiYtk2`NE-he!3K$&$yuhtt zt{DVnQ8;%Klq2K5GA0jfYRn>_=eTu{O&(t)F*h$lH6{i16Ra_%*rT?T=K%mab(=Yu_&WCpcqR^f;H*Hr%K!gfJpzS6@Cno5@3G^ zY5UX8VuIVveM+EALk@K!`-ocQb@y5Froj@-#aTfJO-d zq*fOMw}9K%091GAz3L6Ujr#iraDF3JDL!pP&<3#a9M#HGTfhQDg^Ul!Ty&6dxu8A} zx;AQHJSNqD72ryQqL&1y5CesGD56z}ihLB`-65znp04`h3xj2+2%W z)o79YibcJF-GV4JNE3@zR<^H|tUbgu9h(nNC$jzu2m%7$e}`_OQ{kJ%#ZqV#y=zILT&4T+?iufs4QA5>`2}0@tBI`=x zh*>;9-C>19Ed2sQOI@h0q&ljErxCUM2MAIdZ7!9+GCpko8j>0ZJq8J)=cT7k{zY$Q zMHb5bvu~Q*(qm762`qhy7+g_vbOX}d-vP-Zq3Q=lYJQ#J$XG-xutgMggll_>YlXte zbrKr_mw>j>5;)qd7vo)6ZwvMkpXF3n&2QB2d&eKwxsE0}NC1?WP|PH$&zEdN4e58r ztf*q0EXk{))deLrxz8D&t|uW~hB;Ksxka%!kMwAUNcZ32Qtl@Onr5gQ;-G4XtMtH^ z{d)uwNDN?U8N$T^#k&eIaTYcjV8SxYl2! z^#`!vg``PI#fIMkp<$$V@M?{UUQuv4AtCP(L$IQYI{7nI#IY3D^6!EVR5_`$0+K|P z4X_$ng@*mZ1C$vO<)(oAKqHdHs<1p~e*8YH3Od;R^9R@=oqUI#Tr-5-y0Al@IULi} z_7tGKPIa%j1YW)+u#J}cZCwm_nL9GgwJdIV+BdNKc6d*3 z$9nrnZ-1$`AM9;^vA2Dw-+Lb)@lr;dK3bx%vgXLB@!Nwjdue~0fH}#3li=qBI|P!f zB&}!+rFXNgoJgNSubpOsiXwP#@L4qcPYG5Deg<$}uKd?I#Pg$f>U1?+)F$|`6hZYy z@Wf4TgxoUp?h3YEV`HAI?(KPf2?EE~EC}#FfMv=dV>SrlA_@YZO}x*3wo;8~ic(b> zS2QK!{sy#j(FFVPZX%30=|L=0$Y5jO4L67VVGqyBa4>vjc&keDtjWFxkOEK~@unm1 XUfIb+kDpYU`z0G+>77=+)z1F`7s{wZ diff --git a/doris_stack/main_code/resdata.pyc b/doris_stack/main_code/resdata.pyc deleted file mode 100644 index 3ef0fed5c08241619a884bb40ac710f89804239b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11479 zcmcgyOKcoRdamjo4ms3NqF$y(vZa=HrKM;|v}~`vp-8Q5QM*c_(At(ZRFr5Zqv!-7Y=%-7>-pDTRp0-rqWhm?qu$T|qTW>5kBi@L<1;sq1o*F2OR0ywyjBl&Uhk-f zjtU$Vx@rlPu6kdoXG;Cf!xD$xn=FAu^b7nfq{GPip_y-_jlxv#a;hI82{DN!EOWk} z(+0_hZbqAQ(OOdPgNq@_4@tf(`Lg7PB|j|r5y_88z9RXG_mR$VTf#gd9_W+=~;^UQFb8BtHMZx__s zuu3BJRI4g}r4_XbzDnwuRvOE^hd!1*IwXIi(nD&ss#eF?A6?9!{ayBb-` z9n#gqWJD$_Y?%~8pJW!wfARq!iV7~P;ED>as$g0Lud3xkoQ1T8 zRQymVxI*Esw(AY9so*sgysm;bRPc2bys3h>RPYTI{F(}8RB&AdvnrTV!3`CBQw49U z;2jmbtAd+q`S<{3Y$KLBIgj04@UgopEpwxzc)1m(W5`Bv8YW9&(q2v)>*gD%nGctu zIP{_=FA2>?D>YsKRC$r{OsnxEyzH$v490lv#48Ryi^2C-&~GVfg>hp&^n!M1yttiu z;Z|hQ84qWmR1!7<_An{=c{M$Xw1v7bsdJ)E8&pkt7`2@wY(^%mx0A;as!FJ8Chd;! zZKCyhW4+Ug(v85b#IjXSqjjt<9YyE%lQ1#t6s996VmbW+I7sV_??=*63P~egwjCGV zyI=qAy<77#QM27h`aE#UvYKW)Ny1h(J`U?Bhs&v;TUe-vNzzWFJqW?9G1voXZ?@Mv zwtHt?wxqX@QfjtW!X%8Fc3ILn370x64HL??n2pD2QtwqA5|%&_HJC_d=yhQQH=QfA z6nOp{@n+KK2x~Zoe1EA!aKv%?+KP->4%^Lkz|G_sWK1KGhJ1fsn{?3NOF}ueMIMts z)GKoAKv5J`zm?}Q&`MSZiaf-DB3C+4(9c{Bq>0%)Lkq*xp;7Ky=u&c}+yHglGsWVI#o|lFBBgJDjdR7KS1g_{7GLfaxlOsS)H{uI zrB_I|J0Wx=;ooY7%`|GqM#}Fc5Zy4CkD95Vqm#6op)mj!iDf0gJx-H$OQb!ogQ%hx zWKu9YSSyHI5v3puY&Mb@K(so51?Wh~w=D~sgqdg=)8m+mW|FuR&0)gUk~C5GP&-L2 zS2c+)N)mG$x#^YmdN|#PHo)3y;dRvPwGYsVf$?R3HR<9l)mBK0nI)45_>E zGn(P7;b%hHQMI6~)+#FLmxuf1)iOuGj_)7?Cuv00R)@t?!Ne$IxGm4da0V)rtf%6D zOzaFZhXHS4QJ8WWz5vDytJ%fwHKnx_U)2w7!# zj-x3R(Y+Kpx}J+tE_762x8h(=J;yzj(UpjK5s9R|Sr?GqqW$vP&E^ISUEnoRuLZ|o z#+&5XN!NBKjQy{mQNk;yAeh^LfV-q1qZT$)6k)MZ_oOcDZuJn>v1G?Yq_7&`)Z zC1lbN%7J6RlvI!d8PclTj_gHg=8Oj*#QvKg`vyL9nG-n2AgEP*W7>tFGGBq1GA-%L z&Jlgy83)RbI<9U~L($C8E(y~A4hsQz&DlQQSAibLF#x1hEUoZ#fqm3y0v;j&ctFI5 zSoPx{x)22DMhhw+2iS)k0P+AJb`Pjx&4}8%?*dNqkM6iT6}A1kOE3-rYxo7E!c})w zjUw_BwHd4Ut118-D9ko@XfJP*gmrTkNWvtxp#Ya z%B7_3fUv|od(&lXBDlgP*~NdXpMq~30OA5i&30=JcAPIN=)3~>H=hG$csP{GLzAm9rFcW)J9 zNH`iPRweks2F^cvLG55SG5?XAq3=1WyX_YCRCY+I#cnJ*_yuxH9UMak#|0fsziz=7 z=a!mN^svO@qDcMgs58_6Q&Uzu8>#_sYOep2)m-WSMAVp~*QX2>r&CutqhW||_mzaEw$=gh(kjP*gX1OTB4V&a5#12ST(d?P= z^50?8O(ye5tkQ?}uOprm1JrXK53@Nh)oCI8TdXS9(<{qN5*QV7rh{BP5wk<9M?2zw zi$mo|56Yyxg&Dqs&-@UH8Y=5k&X_Jc$HbtNVN}Gt=uwywYiwX>+-k3tW~U4zQ+CJo zEBXS>5xl9hZdH#vN6Nar}Ab48AJ7%Jc3iJ+5Ex8!Ez$p&9qv z{5=xufFa%ce|cEJ3{jtnLaxy*`(x@R>xj-j`U4szc<8X)R((NdPC(y4KS3*_YE>*3 z#4^D(hImg~P^3MA=uw-0bd6>uqXMT2oRmOC9IF~A+1za3vUUFua(i9j|03q1nnx$; zx8&dogyOSc#gvN`P(_5H2<#+9&%*T%a^iEWH@1AA1##Z#SeeZzUFrKS{ynyG+lV9v z$`tan@wgSjJFzvK0nihIkS{@2ETt!n)&U``5O`&b{582`=%4_eGtQWET-V^Q0DSs9 zLXC>kq_!fr+zEk!h7`~<#|<1j5*UqlnddR(7jnE{`zvY^_$N3==nizCxxy#$NW7X; zzzKrFpQx<|>@)x9&HQ+Fk$X@iC*F0BT=#)mj3@FQV&DfREb#izv^i!bopc+XU7GRCA|}bnnw9oOEAZ&SBewKH01tO= z4G+#UfabNAyf!ZB^4^%U0q@+TY*@#oU4%=oyfrj4p1m0my-74jxB*1u$~z_&ALDAt z5*B0NQv`fEy#5s?Z!`H#Ce-H=Qd^xZ_~!jrmLKJ;cPv~Jd z;A4_IJ$3^6o5>ws6$kK!(XJ_=|90@dVlrfir4wt;7&7kDY67e!pt6BF<kx zNmY$6wL>7)$_ZF?*C#-)E59tZf&rvK2B?)l1(GwYq0y+PT(uQvl>q58T){qi$Y2*9 z7_=(ArGKI(TZIECBT>n)v_>iGewa6*|FD{XFAB|=wf4JDAk-8wLjOguwsoEt-f-zb zWB$=`Dr`Fg`U%++npzZ7!kK5q)*YD~qMmVhJr8;hsWn$6x9L`rL-_brHNnl4y+WCM z_UFH?ySIC^$1Lr~?lN`@{b3q1@>OboxWjbP{#?&Ly5Ta$Mi=qUYsouKwgmC;_Fcli z_NF;vr+IyVKt9h|ZghWhEp=|N?7|Tz--U4@!9&FYt>3&tzuBH&0B;yx>2b9z;a7Z8 zW`fUN=CI$xsY|_GBDVx#*>jKJC%wtx?cxZs^MF%Y#(qxN^UNx3kFB4}eGtwPQ{*fB z2aV8+P#P5|#cptlkqCAi2w;SPLmQR#ViGaCQ0BF~nzncXfkbdx1!ss~0t}iI)#%RC z@mypOQe~S6ROL|n)BzvaX8lnqcrj<;rwl%b74Y@aF34uUu}jGK>VxOw68!p%Ve|w$ z=6b0|%(9ka-!6-#tp2P;Vm3TLF>5$%8?b0bXxX^K>KxYfSyLw;_ov&0SH_>2W~$S51|&~#^ZYLv|sW1KmZfOSdh*ILlnNfKW^nU{lQsG^Z z)3_p$=}miK@7eb_?w>a&uJS-2YUohR)ED0Kf9st)qm$fy8!zti9prTBJJ^s?t_bO4 zNIbTgL}@6w*6IerQHDk~dW8RF!_-y035qN3-(_Q%4{f&ECiEFk$*Z!xP^8I^!_9i{ zo}V~c^1p}FZ!q~?CgQrVr6U*RnU`G8?-?ap`w8-=SZ1)qnQH5)AK{HlFgY>G|J6C#D|C7%=A~VCD z4078WfYCJrA~yE1L{K-|y`bR_0HpWiMts3ueKXE9(@5kgJa^EGFX7%29QKq?<$^Q3 zL1l{Yn&EwOVPvDl0Abrcp_}vGccGyX3wRqHj19e|jac5|G8bPY+E5~d$dg7AF&y8$k0d$u~?yz9>LB3pRE@#Q_Kqa07h_dy=GA zfLn8s(?AH0Zu?fMCIYIP-A)fgLvs5e6VH z?=^({uQPD47aCAv07(Hva8N$V$e}5R{7yawkl#B-CYRn8@*m}p2V+?%D}nZ0hG_(~ z-H!z9kPk1x_*7j0bx|CE-3|1> z!^m#f?(S#rUV6avpJ2o<@OauL~dKkip~99>_2h zf^r?om8+=k9B)vrc$>8f(>930L}!akuz`x28Pb{XSWp%<@Rtcg;>%)jkAf{?>}pTJ zT75F0VE0k0pL^`&Fd2A0aQ9QA|3ARB_M}PRzPt}`$3=w>I|S_s_zV+PbryVvJ+S?v zs9X9Xpm zA|u;!>Bz-Osq#{_UOiSlRlQd|gMX*2DiD9`Dmuv M5c>kj7^3R_FEfbbt^fc4 diff --git a/doris_stack/main_code/single_master_stack.pyc b/doris_stack/main_code/single_master_stack.pyc deleted file mode 100644 index fb9eea066c9a78fd29f905b70cb3f3edb36a6813..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82337 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

K2TpWE|@nq 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 PQTTKzrUe;{z6bsXAn>t+ diff --git a/doris_stack/main_code/stack.pyc b/doris_stack/main_code/stack.pyc deleted file mode 100644 index 2114211194a4eee9cc507b591e26fd65e30a9449..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23086 zcmcJXdu&|ymEV8&4xbWfQY0mkdR|%&Q?^C?wuLRlA8jN#QDwd{XF-a?>WD7C->h+_q_MRttHF16falZh0_^54q)G zi}$(e9#`AzmiM~ah+7_UwNbY`>f86b>V2*@=9b4g{f)cjacei=s{34R!Yxm@+N4{a zbhRnBJmu>Ry6S#cJK&ZN`1FvgPP^KSTb}XhVOO1XwS#W?An84>e8{b_tiA4S=iYMe zjpf5y_?7t)cB1m<{JT6K5^W6!dU2y{jcdh?jY|DmOGQ^3ZQtlV605~zwOA^b3Y+yxqwbqdl3#AO;^Jzn zaHCc&Y{cc8mGZ5YW@TL#Dm4|f_K;C+6iWrm^_`B9x7dg)$t%UUSSvH*#24(RV706z z`09nVxKS&_<+Qku;=kCqnzV+ATxk_oZ!8uGN!ULv@C81}_Xx^RhNlL?P^Yi3&%%E9 zHm6N;K${Aclm;zADO)t;-iDI;U1``dArNZ%zdi14s0uP6$$?O9$dyK{8uT)15l(Ec zE8Sg($D@|Br+?Drr|4NhYZD@DG<*&?7v7T!`KlQbX z|MAUtpG&l(k3I6}xigRO_h^fhYl#AGUa#n!S5>ZK7~pe(Px7BBg=DB%2;BCd+a_Y` zQ6%TCIm_wGBK=upAd3uUks-GoTIJy^XOEVoepsZBjATWlS>(PfGL}WgU2C6+Sq&$8 z;*&k`Dc9Pc)j7};pYDmz^wgj2i688VAJW=2(BW+KBU$8V7CDwhqAW7!TKBuwakn12 z^%H7N18DTouKugTYpHD zNm?B0iiUYOtq}0M#@`E+b;fp`YM~42Y+ApIhr-r^TR*Efjn^L$WfM{6qpk$)4yd;B z2bDjq=?=L1A**p#G~V0Hm!>^hN1Yy3)bCo4x$ObhdR(2xp9_g!VW!A4NVL|7qXY(6sh6t} z;};i_*J$@fV>2pMN>(x1D6dx5wlw+1W{b(%)EA;xs^wx*j!KOvX+%}{d>paR%|wf9 zT`xz)QmJ5z%r+sJqvuy*dZSq*zFP4;(L?W)=KH9XpHLv4pBFE(1Wi1zT5Q)ho5)wQ^#!v8Z*HSaY8?3DsLcGe~S% zRj9rtr%f6yos&-#Zx$=n;?+vE(%Q0F`0Q$<-kU16S|Uzgb`|=m zLV1ZDpx=|yW^E&{1G7VJB!(19mDmnpocxmHIOm!Pa%)?U3yrnHx zk)NjpoufU2zUHlBT!&!&rYqqAg(n^zzTfrLxXgBWj9?S1Z`iond_9;?oU;>W*S7#S zqN$$8)vu1{f-|YFmMy8JC#_iUM-$GT6$4pD0PM_~ZJZ#_jRHGhDLWNWYW@h#^0NvK zDmbd(0D<4ItA)-?GRmZj{FAC6o>G}7a26yl5<7dnQ7fM<);HtgwX=(j)y*1AAvycX z^~G1>#(H_Rb=LOXhXo_9v$bNSURZ6E%4aRTu(4%pDHJO8N~=)Nw30V9Om4VuIIvH^ zclUoTjps&!kv=}%|5-^eoEy#^qJ@TYz#CQrIbz8m zl`AwI6~0|J^d=!VtqVtotqg5h~%jduEC36(@={RA;X+_f7@o>#qR2n@aFFDj`P_k8D<*D?7c5!W#FK{Z6~>^10YClqn=e68E2`wibA4qy)4?8Qs%=Pe$( z*~OJ}ZihqYbL)U;Lo_j%fu?{5!U4Aq?nLH;E(}No&Bq*nOYQ%bb+@?k!=5e-g~VU| z;4U`1^Sk39%y_5YwJ!)JX~v5yPYSgFLNrT1#P{z!1a;o>z^wUw$KO)gi>5G?yfxwZVszC#AN{qO5 zln6s_(>sH^w-&Gzx*Z-4>xT~Be|Xx2ogoR-ZR>;d4Q4YM?%F~rfA(&xIT#n1sd)Xs=&zo#=@T=`YE1B4wlDq}O?Qb}%`qw72ilPX33 zi~O{M=Cir9x+kZe;%@V5B0j3pvic`4H?U-7& zGw#}#U5gb$93z@Ee~T+mrAyf!vx9uBPgFUhrLa=wJWH*hIo!8B{{FlrGUJWD(te85`aDG$mHmmD3Kt3I7)6+TC3L$`!*s$&&tg*4XW5gARe@aRz<=f5uCkZ@IrOz z%h!oadq^ZR7aP$Q@cUM=-ilfc0Cm=nA4)m{28zaJyqXm}7tL>#le6{4X;TY`L%7au zCC?MyHvPE_x3BINCc=#ATo$5NGt8m&$@XEpp}nd683v%r|5ot72n;R7<<@3gN9vc# z?c^b9$K_h%X1Qcyj^$Mwx3pGTM~0{(8CfF33{NGWqW;HP5xP>bbQ1tgt44II5#NZ| z(CcdC+Xy|Ci>0Ws7H!ryfJD^PoSCc?t)zGpC8AVGZX^_zk&z`js8%B{?LNUM`8>hA zA*K_=3}w|ZDVgxJ)U9ImhCvv#1D)q}59&5HNPBE05?OCl>Q<06VnJ#<)>ewGv{_zo zqxG5eHCnOQo2;a2)zK*o&BeuAY#S<-m9tOf9yx6@5l$5J%|EXx3%p_zYi^cpzOTka zM67YKeyyB8M{M2{Cll_MNaiB~LxioyhJi?}K>KEyNqN;WwFEK^nR?nbxILuCzMY5Y z&|;iUSmK+77V6mGY|+J5s^4e?O*{XRnu`#x=4EHIl|veq72g}!@hszfflmUU5bg~3 zg9-NqW5IC?kA){frA}GuL9pUjI2j%f_J_maY&a1d4kiF82LUU`Xt^(#Cp8xMdehWa zDoQ^mz@7uaEOn>D{lxky9S&BtmD%TlW+E2CY=lJ+zushJaTuGdVzM7-lP;T`Gq1fg zCDZ`E&$HwFmC_I&{rFCZT%}T&EPYMq}s}iUppj7qhm|P*QYp<*2Zeq@S6Xz;r?i%Sx)_WyxbY z0E7T?;tPG6iA+HV3@_%uiJ&fUR==AQpizpyK{sdkMoA2*Ig;sIzvO@>NMfLcFvEpD z`jemsNLW7OYjS;VR-f6OVaEgV7E{>MU4|AjD9q&70|McQX_c-DY@ikGO*_(xUJig$ z7cc4D+n@BX;j(18Ixw{5g<*hL>}=NiM^Pmc-RVGl0bR&F-+VP#YX3$EN@6)eT>=Pi zg%Z7^+N!Njg?H^2^V#jQA5UlBA_5*XD=LGrl4LGK{TKKfH5m3w=s?c3zY-V}dM{v2 z|KDo>9cUmk%lQ#ml0?47`;v{vDtpJ{SUEy%?0hKl7<26-0Ua!^OawrTUXr`xE&>wX zGEk$9+$%aflOl%oNtxQoj(-s95Lr4^M%@kg?GHkdBFi6yJJ^%oM+D58jxox=)$evd zB4dKl+mq@c02Tq~lyC-!rrZuFiPPV2m9RlmN$CTYp7M?S5Yuj(Er%L46$aSn=5`KP zV;~YEfVC!|`~!9%>ZEUdR*%<{VPV!ae;1rNAM&@ z54jzNWG*~x)9x8Sw|$XuuoF9EvF3ltEiE;_5%fV5H}<&r!+pUH_erYL`0!3zqWSMU)9uPQJl{x!vWf6%aFm1@|L&lz0_#j*xdMN9D`M4RReX!EyFf>@%8)}1q%v_3LaK) zRzaj-j=&?Pi^L3m_zgEmTdCPvY(UUM*$%2?kWk5jN4ANrA+8lFrThcxMdS9AdnhHV zW@6?#Z{X~0YdKcU=UUVsnMYCOB!wQ@Ei1@3HInFvk*v@X9Fb3mn7lpH@>hYY7{1EZ zojb-4nSBlVc{=%b55;Qruz6Wc=^ROO^@Tz{zkX{75hWzPK2U1asKM z9s;BE%L*2Z2j_E#!yGwBv4@QY=fE$M;Ygow%7=q9!CWv3G8w1dkzgh`m^%~f2?qI0 zU^83QlO@}X@Pq(BeW7BY8VF_>H5trQSZg5xj9h1BykrgcZI}&LKPMEc3;sV)GCKQKPvvDxn7NQ0n zS*$)MK|SOIHoR0ozL^mB*MRYlGSL8EPH(Fi3GPqYHpI$jmA-8QbPmlQ1xqKDxVBWUEwzH_A{l~?S#*XrKAN<%-iJEw))#YcK)me(V7 zhbuGBm?H|ivLzoYDQ-{^TQUyzR7JN2W&}9%2>-n1mm?2-$5yt1)n3nyxW=ux!aa&w z7z?z!fS+4jnLkQS*DUK9_tWGVzo`{bUn_Cqf&O__m1VX^AeelRpvmju^d|muiiu4d zN3}h(X?#pfx%G_l9|jfq4@0obyyb z`Vlf+ZXh@WqZ|*1`3%4y2ZASa`-=4w~PRBuWplQ?R%)qn7Yn zL2me{tw5{(ao}y0E&M)ah2lLQTwLLtO)(-1oIfk|aW*8TMzf)}I3^cEKOU-r&X?Tw zca1xzBLkuLaYBb!;@1Pz2%!D?VYhz7w*IKbiYuYUWmAqRNiR2Y_+sSJ6&$1GbJ8zF z7?HJ~v!PHfG~x`hYf`5Ipz0ZBsLla5o_Mp&XJ8x~qiEp`66B z*G}!wX4j8HIOcV+oa;E%_ye7#;`y}liL{C)f5NSwOl`bDb6Gti3tOk8$g!$vsXv_M zgeyFtP%ZpWbTzxZpDtO#yh%%nc5mKkCKK4E;@iR?wuN+RS;w-hIgMjkbYN3K=uXqM zwjp3}_T@>L&^!J2c}E%ariYZc(4@YFLi1TZTY;B+Q?QN8$y0Kq#7F zv&!vpX)6j`ng_dh zjVljvyZqTB<5Sx8~HD&^ouH$_{0d$LHfmOztY9g z*F6UTHq=Fd0CM0{~iEJ3{x_fo20LqU{CHqu*$GbJV0x{z$dxD z(Wjg`wU?SK>{vu4EU=e`uKk}(@X1j3{m|ccQwhp}JL%%s#I7_NETbNP*bU-&I+r?w z{Sl^!E!Iq?w1Jz=>h=;P$5aB+GLXINnrBT>dPVt*E0;`wBe&std#uJcT=PBEKzJw< zkvoWh;+EB44yS3@rH2Q|NkNGBxU4>6D;T5KiBK25b|tGmY^Jlw@$>Ef5!kSQDg}rP z^tV|sf?Nfq9Wm!=gnqhV=};4Nh;U|+lWyH#Cz^FwTlYc$ETB49i&`nBS<_QYIMdv+ zFh!bhPGpo+qeNy&;{Au=74o~OYI(;zMXJ(PZT#)o2>e}r(H;PVr=1mP{UAGP^m7C1qt>|kW3QBNb2 zZZY0Na57l-Vz?>(TT z#8dvO3c3>Mc_mHAeOfV-SCL{8clp1kz=WLjC%)p{yM9-(j;oKi*qPvBJ5!mZ6&B;T zxaEy{UsJ(9BrqvmjISYyOd|2+jeTENjen%zA1jbpGErp~S}$Xy>-kkl+8FCc9^nng zrKbsof1(N|ZQfDrn+j~|zpvOoQy>vxvZK9aQ)zSWh=-%J#4R6{1hqUJtCtxFqe10j z!o#4c?fcn#tc}nqm%#D|wL$-uq{oXIs_$et9?qZ~4#4#%BpcxTc%B7E$)7?}%mJ}qBuMiSbMw*j1FuI%KszDMpQ&Zk3Xmc+nubYDOaC;P zG7Y1*l(n;`x?jw`IqvxLPoF04eVfg9;qqqfsyuzyI?n>ubS+Rw*Sx(j%XhBoljADU zWjv*sTYv#z*>{9$yzAh+M)7FPaFRV1LLNq}8;uPkOz#?eG0TP~44s$}goKBO_l8X5 zE8^$R{WmCeL)bSp*Zzq}Moh|a1Hmw;d zkYAQpw0K3rNC8wyJ_m_MeETmAa%PJw7Y5}5l@-V>Cg%hMbljGhg^bSgV1XAnazv*> z^GZbQDvqN4lzG)49-tt-XCM+h*(aOh?v7`XqUR-ckm$%$hVX63PTN5~^ZoC=bZM*=3U~%Qwb22M}cLr>me#JWMjx3=LHqmVz z23r$m>B>jZ6?aXtx9WYns*bTR_Po!`&UbA?_reQzEl2kkHn>|A)O&2adPrqo_@G+I zKh?sVaM!Vzzl;udEuW$sknlmH?DwN^WBEa~4)|J_74B9`J3sAfVLkYuS~I@Ze(5@( z8P=!>Ye-LQ%*toD#H1Tt7gOplT4&u9_n1?((8gfR<_?wR1J@4PeFP>MpVRFO@36EG zqsffho^><+!g>c|cc*(ZI&2^8bd41p3I|Vdktth0$d5bJYnbeSbUY71uyeSlieS$j zs$kXY^paM=#IUQEqdis9fo`vI%&K4k1Ofu}U=X}1q&f8LS^7-Pf_O^^N9W#Qs##)ePG|#FT-}#tn3iGd`&d>C@gIiTFH zBW8@F2y*^OA6=;bem5iMP!tC`AVY=!vriD8!T}WyncnfXDG9sTPD7TyZlAx{-zAQ0 zp`FEbBSVgb&Sqo(^i9t1n&Y4Tbc2PR!L*j2YA|b}!P;L8QvGDtbL*L|r|rd+Yk~M( zhmNy#!@RmH?m6Juok)I@+mS1sfT!_w(tn-uUk~t1^|_t7o-UCI(q*>0hOjO>EkWHp zFANr%J#0E-u5mJ`N&OTxcX)M;E||%@J792`+raFd~@GG>A1|9`v#Vpqy0C(ZjmQwLI&pc8BFi$axKHnN5Y0b!tGIPKny)3N&3dMm=9}mn zOQm{clbfkRzRYVf6}^yFcrh;H&sbmGispr@HZdta99??zG*E=?jT;-u{hev*Wua*P z)YFr>dYX+V5qLRJz#H(U{0X!zXh1OBhDFxf{@A+ST-r%>)x>qslMkg;l zb@Jt>PF`6!xn|da^^%N?zfIL7BJfk+y%YBGUbb7(FYmBhyXwq!I=XFfyJ~5;JMBPk zrPdKDb=RLQv8M_*(Y-a&9qOr&oL7a0e4jdTRa^M^p{H;K(~w z{*pOuVUM9bx%QyF71p=!HqcM(R?3RR{QZq?=KGW&Hnmy^BMHx%- z4W(>(rekgQlJsqDOzX=U`=t0}z2Toon>Yzip1{kjBW)&DinTRsZN)yR)+uXzG@HIE zKL*_Fl=!MTM9to(L|Hh4>uWRp^6v>$V_Ug@&u`Tn1dJ1kYu_75A=XqXuW4%D?9%go z=#L@MfMWO|0zp5$8vpF=l}6$>QY@huBrTh}HMf`eV8E!{ zgwSaFHG{CY$bgikH7|y!kf^G1bz&RQr9H|v+$1j}51>5y#w73a4Hg3p5`2TmK_@ml zz3kEL|C*`KT;OJ-{9E%G>hy_;)MIzl@=k{amXetu?a-3e;g@?lG<$wJ^}iBG;osdU z&=a>}X%3x!&90toWc^yw4CmB9iDQ=PRG1Z=yo+Od^GD?0+|~Pfi|ndhH?O#2<=io; z$$n%sVe^`n8ND+{6dRNwb{IQ(Zzl7=V2(!MJ-tz`bg`g{*vQ{MPt-_LMQu%He(~v% zWI60E+|lnW(gg)~EOdoxh_PZCJ#-q&`!o&x_db7@{CTP{Cf5S;BFiR~##4_n z4nAl;qQ9l)zr!}pD|%dSpoO7z(Vk-du(y8>#zkbzeb($EnEXYGldioY4RvwlHOJjO z#&QNkaCu7O;{FNdi+(rD9s3g+N(Bd8@)KJcY6D46+*&F+fv;_o`bpUQNx0-2#O<8$ zJ9Y3=AUtFnk6wtI1lpi$VRZM?zAhGv*bBO=l?E2MQpudhW1?mUaWYMk6kNp46J!JdozP<*8|v1ZvQpqso-b${&fCd)8EfC z6GQ9X@k|TVwKzu9d7-GD3jq0(b>HjlnomuR@g7f|&BHBMdv>`|FMB7nkCU}T|7!xw z^Chk|9>sbnowSGl#}^mw`gmJb;K9= zB;Vp;K&&PYW*oW0iC{7?V5F}Xz`g#%*`-AClC^?;dyWJeQ_aa|vQkx9mtab1fE=gzWFJ~pK)$pf&FHHJkfLz4}`e#auDpxumpj>`H=)S z&MnW?%ciVzFPidA{p^LY;@z)(n#YiTFV@(wUI(=|LFvNnV#rfubbo`3pYftF2j#^1sHn zO*3WHkLC|*0CIokLc&xF{|>BI=0C6JeL+LmW*)J`m(=~i-@Lnw9Qtf zYSFmXipym?O;et2o4cDUO1n3^Gr?qVO@rwCTf%;izN$SE)jAw}Y~|8(J6udsqWw#q zmEY3J;Y2Jxy>Ye0v;M`EWA@sk@ihHR1+OmJ4-P0M-;YyL7GV0chV7Uyt>=g^IqIs) zYuZSu4LqCvcPh-nfBV)BF(-eG&VHwYRwm25X6;|xIi;A0ecrV8i%Pzu;3Wm$Au!qC z#i6N`_h!%UVOC45 zXYdwc!Cv!J#9q@>1V19gz~d$>xb!B%9gN>tyQT2%ooq7*-dwHa2K6IdH&9C_WJQZB zuyFYBkR9M>jm%NVd=<2Do@-rDptf*sMgtFsogzk{XLVsZk*OZauwM(C)T``J@waq54<|7axuhybt z^7Qt0Zs3+q1e+O+E54;BE3VQ(sYN?IHoT3^x`!v#0=s%e$dqB z35)dh;(x#+-3|5P)r#)oCu}q51^LM4;iL2fHa3(a)S@S(?4WVB|Avh7Iwg~-OlxuF zZF_^pdyGLPx`sxDLte7DKKILi*{;DqnYH8Dqy`PG?X&heF7F#1(5Sj;@#S&|qe40d zPEd`Mnazd5p!sgNBnJ73*PE}0o>NMzxNKJJEBPNvf$4%uh?T z;w^LGfHMN{@dfpkG|c7?#h#yn3dX^ypGt)|1QaVt@@KABuSKfuiLn)ST6mq!bK zRk26`T*!M~<^L5i&u#681-`rrZ*z(4IIT0DTRJRs7kBt$# z2rw@Z+9fgSa5?7Dz;CET6l}lJw%~sw&%0J-R*+=jc0_Kki~0A%1ZrEliFkke&ab@r zUb{cM=YOT|!8ofqr%F0923No7iEXvxVf0=l(C{3avH( diff --git a/doris_stack/main_code/swath.pyc b/doris_stack/main_code/swath.pyc deleted file mode 100644 index 01a9ee75f51d77795eaf4cffcf95ff38b3f0172a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4438 zcmcInTXP&o6+S(C)5?-9OSWa%21Zn%)~-at3523ZrE*aSMG-}eQjnjtjwIl7$ ztfzZr*(E*M72t^~egV($mgoEeil_V)-Y6*ezSBD^83Mf6lJ;!(>C>mX&*eKuwZAUT z_dnkGv?tS_8ouAc$L1gj{)`MoMn?9G7|sJ32C^6E8pbu*tLeBV!@7(bve)o(bs08g z)RMiHjOJu-PDX9nYh$e;>AdufBu#lL@ryS;~ZID#>Y;OhJkOTbHA zna79Ue1wfa_eD-bx@vO{aI#Sjj`9Oo+7IfLaHASDt3j(8%vFPSHJGoqUyzf!EZE0# z(vXGn_i|$N%Pq*kB3<#s`+8TU{@|s47EG6Gx(pj1T#|z&?u8+q1ahiZApf$QG%2)o z?-e<1(L)qnt_IlCl#>?sK&bqRB zA#O!}Ez_|3945XYTR0ql_IGCbunU};WKMo7g6Kbi*>B2WOUgf05|>m0Yjjl|?|WNL z+j7#DWJ!|Cvi=*9!={v97_ydS4Jr-;&i~C?SbkE|H-BO9W@>BvS8WnJt4)Guv^9AC zRGS2NDX!<5tDgrrovVKDwdvkuMGk9H{xLYywn}aG z%fLZKHB4pxQpLuV%0SaAUZ<|)s;uF(1^c(^=3qBw>~g*~b-=Z1x8Ibk%DR_JuFE>_ z^8HG3?ODk+pDt6SoM^J{c5WfJwj*Yl{SnB{FpX^*j?3aGOVTjS+#oH(n2co7bKw|h z5Ef+!)CuD}36t1i5lnj(ySJ)YnAtEd9)=T}CXQ(w=Xv2`mle6YfawUQOv-eW=B~%I zXVNpvU&F`V1i=mOU6xbivJoFMzcddNMt2qFwmT4#4)-ZyY$?Ucnq+H;#pQD)ZDt_9j1ZjRzC2RbI{rlR7;_>m>v zzOkR?>G8OH^M{yNUZCl(Fc?I0nCW!}M;^xpb`z|fVi-faJ|AXrA@H@>&$GvA@-j@6 z<@;fh_T$OWg`K0L+fj>ZXqH!%zGgQtRv-@Z$>=^D@_&@vy`3#!OLmcjzRjr3z6A0S z+%T-v6#cND4O1K1K`|L7;r%o$@^n3eoY?PzyyyK-Z^P*`XNO6FO}s>UoLQIs0~IOz zJBS|fOl(j;#8tRglx1qiMV@SQ>d+qXermMn5=ToQTCvmu(Pi?M$y)<)e1}#stA)vz zDx9V9K%00b&tlW9`rCSbGX(zK9v&$N3|b zQ?+DRSL(tL_oQa-(@p9M+hMlpf=!40=-Ze@*GTvt-AI#hqZ)xHgVE*5jFG-xol7&; zu}?Lws*>lJPRkLX7!9}weTs80VQ@aID+bo!+ zVB7qnxr`A%ubU;afzJ)_7tIV|`096g%7-B6IRG*TTH!n%!aC$=&HWVBx@sgG3doGF zGF?<>Kxj+p96Oo{l^AakJ`!CaxlTf_MGWDHXc65YA;v|wKor8Fmod^PK#DNdyvf0o z=V@(*2E)Ir8Nq8>CY1!s=DO+eaLP(bPi*n>av&exzNHo?J))XLBFUA0{ zg3_ejYS=G^37`=Yb_`BGL+K&FOxL@9y^3$2r*zH7AN*YNV&}v6JSx!$-gDpJ=$jyZ zfnJJUC*gu>Vp?`_wHM<5F121fJb0Ii;;$^qJI^q)AjEvw1AZooe_=(Tae0&dZSGQ-ItrPh)KG>CdQ zXWfe`cS)DdvC%9;1|2nI&auG&ySlw9SXS1GQsgvsuE>K!`IROx0dia2tKkq&jvWh9 z{5Ts;+~A{Zl6}1&FAofmPgR d!>jLjab{A7z2RN-CXcps{t{|4YPGr5`WJ0mut@*_ diff --git a/prepare_stack/__init__.pyc b/prepare_stack/__init__.pyc deleted file mode 100644 index 2e9a7639b163f670e9c2f19a81646f8dec4f7329..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152 zcmZSn%*%E8!2IZB1}I1X8Urs^l=l@=wY z>$~J9m*%GCl@#j-WVi$rlgeG@B#p diff --git a/prepare_stack/__pycache__/__init__.cpython-310.pyc b/prepare_stack/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index b5c312aedbf83600181b003b834cf629241985f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmd1j<>g`kg3AZyM}z3cAOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUS?{fzwFRQ<%f z(xSw4eV6>?(%jU%l4AXU43~hS{H)aE68)6?qRe9bf}+%d#G=&r;*!MVZ2kE7%)HE! b_;|g7%3B;Zx%nxjIjMFaql=k<1PcQI)Ji5r diff --git a/prepare_stack/__pycache__/__init__.cpython-36.pyc b/prepare_stack/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index e8488178b32d9834f008301ec79bc2726e378db3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmXr!<>k73V16_M5IhDEFu(|8H~?`m3y?@*2xib^^jpbL1QJFNzZ~^5@^e%56Z1-o z64Uiv@{>z*Q}arS^#d|o0*dmpQj<&cQ}T;4i}eeNQVSA`QsawD5|gv_g`kg3AZyM}z3cAOZ#$feZ&AE@lA|DGb33nv8xc8Hzx{2;!Hcenx(7s(xZ# zX;EUjzDs^`X>Mv>NwI!FhD$(EepYI7iGE6cQD(7zK~ZW!Vo_>*aYg`kg3AZyM}z3cAOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUS?{fzwFRQ<%f z(xSw4eV6>?(%jU%l4AXU43~hS{H)aE68)6?qRe9bf}+%d#G=&r;*!MVZ2kE7%)HE! Z_;|g7%3B;Zx%nxjIjMFaqdx;N0|0tpCZzxX diff --git a/prepare_stack/__pycache__/__init__.cpython-39.pyc b/prepare_stack/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index 3777e2f497fb58924d7a7d05a5ac8a571045b7f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmYe~<>g`kg3AZyM}z3cAOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUS?{fzwFRQ<%f z(xSw4eV6>?(%jU%l4AXU43~hS{H)aE68)6?qRe9bf}+%d#G=&r;*!MVZ2kE7%)HE! Z_;|g7%3B;Zx%nxjIjMFaqdx;N0|0@rCb0kj diff --git a/prepare_stack/__pycache__/create_datastack_bash.cpython-39.pyc b/prepare_stack/__pycache__/create_datastack_bash.cpython-39.pyc deleted file mode 100644 index f267583c71c379ed191354aac5bc6028f979d27b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2024 zcmah~&2Hm15GEfg|#pA?M?e90rbKAt?PnZs<-Ip+9A(S#;<; zhnn|6P(*Qzy!wwPgdmJ2nx|v*1EPd#?-A9Q@lNwv6u(7B`rj}H4MQoLg+S*y)cgqu zhCED>M<}M`J@PcFQ62s|HDHF8uwHT&6zoNik3$URcSW{keF-&}Bq;)WJp3Jm&~p}# zxCW>ax5L3Wov=ZWOnGoIc$J3J2}_E6a5{c<%F|0076Y2{C?8~;WdUb?UIgKhbcyFgNv$FE z!dPJWQM@2Cy=cwbmA=3;qcY~^0?k@gYu=$`fiJCDyB?Lz7iR(cU!ZvpSbwr0vMr+ttJ!^E zHGA~ah4zuP{2$+%$^MebXDf~mGkJ2KiHh3;9#%2mqo042<$WgW$bY~@U5YP;yh6LmZAa1W9wD%g77;GK~_^rV&qq2@~z$JXbiRno$HB;0yBl zOc;=za?oC|f~RRA^ih;hp%?5L+G)lTVO;U3V8RIF6by}UJW1)%2A6rrv+FE2N@L2n z=*k)VWyer~7bYADV?YU@%5te85-qnH`MdTyJThdemm31{w|pOBIaPaM`~Gj! zAg(pM1-$ry6ssqvZpkHZ`8>3ts#nU?Oidw2Z4S>Z5|1I`eb`OL`mbXqpQSSyctb&= g+rapiv~Q*7^1V`X{Fggnep|ErPHuVa6K|7$0j#7L!vFvP diff --git a/prepare_stack/__pycache__/create_dem.cpython-310.pyc b/prepare_stack/__pycache__/create_dem.cpython-310.pyc deleted file mode 100644 index d1b625c460e1cee78dd2535a38c13c63d2340ebe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19807 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 PG30=BjBoNg`tSXJjGslb diff --git a/prepare_stack/__pycache__/create_dem.cpython-36.pyc b/prepare_stack/__pycache__/create_dem.cpython-36.pyc deleted file mode 100644 index ed2a88742c485542ffb57d0f5e66df7b6342500d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20332 zcmb_^du&`+df(hTcizL{@F9|-DC&xmEYX%o>S3?fm2Jr)_1Lv&MWikJcD<9)oJ(@Z z;S71_(jupK_5pg6O;a~Yu?UjIrd_1%=Fzm+wu|ipLEyGYnzjMD0rsz3pk1Ir8}^?D zEzqLw0^8s3yLTR>srB038O*uo{krFT=lg!&cjj_WPx`<2TvWgM^O4AZj&yx`;J=1n z{m-;WL`9TViC7w*dPQH4T2YO0QTPqZ5WfL`%!-LWR*A32t+@ELO2SG=`J|PUXUa;+ zGi{~inXxkR%vxDIcLRAFu{)MN~p1-;Jo`u5Jw?lu~Jg(sq0| zY8|nMRAx({T z$3k~R<#+X6%{p$6t3LbqaAa50B6k1k3Hvx=P1{^Oxr-Sr`7TIGMH;^Au@SlkFS4z zQuB>vRjlBd;_x-Fqntx~Z|Zn;)1v2^Q`gXbE4^{>LQ zW#w2p+ScEVSWy*x4Ha9CEaQ#iokmqMh+WFbJJl>hndoQFyP6eKCsj`M!WUP0)rT4q zoKrlLYET`)Go^;qFrH~OqK@L3Q4{Kz8bgV!IOnoa6(B3h%r-Lt7y zvLErYj=j89DLRE^r>qwD*w5v!{~AC4>}5Z;aDVac#ZoUTz~?M}oOc<>KgUQsJsWXG zJVR+~;&ZWkxsE-}IqyYQH4m%vb9%G4nXf*-bK2Ft_^#$g=`JG{;e>?YBAkB^srGA_ zDJ_C}qO6A#WvKWBhPeywuDx`6ragA6h1l{wBO$ zFYjf%w3qdIRQ$d8=c3KNW`A?Qjd*=tzlU9hv1L?3Xn>)T&B5w zX_ZAdi?Q^y$C32SrU7pxnDypZb*4SG z!LYZ--ix+JmhlE!BlCLMdh;0Oc}(WA)$ilz_whs99ruo--EnWc-7aV;S8j70wVc>j zi-}rJ99qjs?*wWwQOZQA36?^>Bi?cEgqN08XQ)$HWl`scNIxyKuJVyc^Q4!M za3Ty(wCDT`T0JGLa&@2dCe%sq6k0ot)=s-atHa(YxS;r9=y(_!$MdK+?jfIwz(2Yx zXK(YgcdB{3dOFzkj}3=Cek$zoF)!{VFeB0C8Sl(O#EYpT=(XW|SDp26#;J4IsmD>@ z)K~PQ5rm({%6|$y9rL6H>GN@M$30MzUG1?^-$wXEcO3QsPDiO{n)Rq>P^-SH%bZPM z&U7!zISX=mI@+6&d>61okW0w##d#}NcDjjQW8z-LF4k?czG0WjOFL$DJ7E@S3x8cTG~zDTfr)A(foe{p3cmUVl_`l%L$f zamFef64P=X83O8hx%_PqQa?^gdwFJW8>x+%&8=dk?CzNLmD*NCnGbE#F1stXV+uV! zFOSP+EeKzpIoZg+QroJka&_5!Slc$s^%okkC8xG-HhRoT(Ji}MN;=!fnUz{~xf9kO zJu?~gW6Isxu>DwlrHF^IUQ>2MpW0l+@stg_Qs5LcGOoS8QP`Yv%S%hk=qWxwcsca^ z1&)iYa@Bo)Qg@CZ!5MN79 zezP%tKPbbgLWipMBQsnB^7SDjxara_WARbwul~)W3`4R1`8qgfO&H4CEKy9CEM@0WxMx_b=P)YDOQ!A ze&Cc{`?}*4clHUf2IS=qu! zxJKWx{gFbjKQS5Lh`{n-uX3H%C(k-5^vBA{ik9i&-t&{lFCjnq4p<)M^^>htm#roS{&K54Tpea;-8LNVQlA!olDf_7f|1d3l8| zt5n01tEvtw>!i6P;=$Uw1b_V-a3ZO^medU`uj^V~8`R=jQZtMz+7)9=%SO`(hd&+h z`j|F`^wZku=%7BL^+(6Fp=eGs@f}0yxG|*lqb?(w)N&GI7=h0~>71TMd>-E%+A-kf zbUx#HT2c)>$F#JLI<%2!E;^z&@*NgA==RN0f_=t^)QnuZ@V-~c`$oz2I-}}LGohYp zCRMDN!Y^IDjg&Z2uBfv}IoFjkg%t3L&KqhHDNiG%$4lbuPN|$c)50zG@+=k37yO+I z9(q+*eF1-``oVJrF(JpN1_G|{adi7zo<19S9DVy6&5Rd!zUxL;4RCjmU*6Nf4THyS zW~+l?>`-^C8(&SVCcO+e(P5mXBRH`m&IfL)EB>e&%o5hGr+LyxxSgER zk|%Yya$b#W{>p(`V;`zjVh*V_$k|j`L$zz{+%z+f0mJNGV(1(_Q~hVFHh#2lZl&&bik$X)O22Do;!3tL+7(}M(D6*us7iu z4?bvv2f39Dd^m{>&Wsf+laKPFJfWjJpp$Ok zv)UDLuj07>jD{bM_&4-7^~PZ5sO|8lC9W5KCh#M_E~l*rX4;EoBlWBo2i|ng1+ug% z*pV|U=NZqoq?cTc?cyx;Qmb(Vn!TE6#>5Xf68<>ORv>__vla4i$}_x}2l*LTKzcdS z%;1;Bug6WVX7I~;KxRmj;O~JyPCumNTsvLwO4r-zy*Rso5Y>Ml&!ougE01-Y&N-aU zI!@<2LSOTGCG=NuX5@gXXw5vHeR%c}1zL;XI8C_;B-yzgsjx4^WVbN4TP+F zC5NjUv7Hs~nNr4Z#>3TZ9=f^_yKi-)4j_&vW&Ik??Z?s0FI2~|T97Y@haY*u^d+Xt zN_*l8R}+V>W1VmIajbq{oob#`r<-xCD`~e?f6%7jU0jPN4_k{nZ+zmlcJ9D>=xMFB zAGZpsgWizWgMA-$zTmY>a1O8rqMI8Jux5#ZFGazvOwKoQQ(N`rdZC44wZbhixADqb zwXGIh)yB`vR(3#X%53H3vED*21j!OiXNu=IW#>SOZlh?zCkZd)YYWapX86l+eC@$r zlmQ-9jb7qnw_d$GwX*C^HOd=}o>s&rgO*+>0ER&#VJ*jEkwkTCU9!d=E!*HWlIDdA z?5^3!!q@IAxR494nZEw$;Uu&}KmnKCmB#qZBFoO1 z86@jwB?6SMU?pE)n7coJ{qCHVymx(J;lXS7XUqQwSkNARKXM!vpffq%VLF@_5aH`{ zi$II09P<|QRCOp1T1H1!Z0Z@Z*L z;i?}iRch#3ytsj!%8xrXff{EC87C)%8|vbFgbljQ_S)|q_(zDC7Pi+b;CTcEsoO3G z0w9L%uxX1(4g+<9D1j%_iUN+}%(B`!I;(Wn;NbOv3344gsc>|H+Bg^@B&@^AaSDqi z*H%F|vsq}zK-1R+xj_@y3T--ztUa|^2q6$FiJ1$alz6?i&lF8aKRm9!nkBUz_0#K;Y8wDEek{>sb_&+kmbq;te9?Urrs}@MiQxMZ3H24qy5M+ zs_9_KhO}{QTsMK75uRPEdGcLAR6dmEWpJKlr5w+bOjr&!0bS+5Hy%tQasYfI z1%x6)=~1P;>0SQrV-4hGbwLkI4%AgPU&ByP(6E*saGXJrPZBVeAyL^a1UwhNGw;@brU;M6j9 zB(xKR5|s*edeyZOTWyaM##922v%toZZHE%D^E{j{VzTNK79-eVd2AH`kJ#WtS`yOI z2)5`5AkN^M*Bhfp}qO}3;83MDyWu#sT?PE7oO_CA3y^sLb4!v&6&d;rYyXCn6_ zZ$_%WBYnWWfmAW!8nglkWHatg?lvzCyfG!bZwmVB^lEw+{bHZGd>IL6v0G6ycRBi* zInb*ZEI2-9KOqO^0*(AKtP7y6OfKocUNEMhdU5_5CbMn2!C5Ao!S`7wyuS>+?AysE zX7-o$O=F?!B}3h(Pt64TV*i`}Abpi*7EXtamwtl_fVIXWjc2-EZ@1!S>T0D{Dpu+* z!P6=yNQ|F^hGre7{ti!FXd(c?yLNqFZ;e)ONm`}1S@xEeL_v>%)5wlxAF+?$!^77q z2N&yKNA$Nkef`)?Zyxk;Y3TOMtSf&>2IKSzE4x$f%R1=$Qk}aZ9mVG&y#vbh!ux>YAGDg?gr{>W`rN zb>f`AQ*=l^$n%jQgVm4n6HB0ZC~ZYQd-qik``T>z+M(~Za}}FUIcLzMk-*bKEu8czd}N-#zQNfz2TufSMOM%0d9W${U}DC=&}4-PnF?e2g}rGEKVegpxUl&luSj@N2;SFF zf5 zcLI;(LFilN6(jSF-nmtHFjUm+I5dtWU3tdV2c7gNx7Jy>)wP_WBJ9YXKVm)i**k zTrGv3Z?rs-@4YNs%-)}Z5bu2x{HK7{A%Go#?+>xU_7t2(ssJMa(c3rjqVNZ4F2Tso zyl~y5boh$d$UtHYg^w2jjbFIHEH6%6f992mR%hN1JZkBE5X4_Yz0TL+03mLJ%7NrX zAy33FXNJBrbV_vC7v~q?_%YaExI4i?bCIz`(+_Y_&Zij1lgr9d<^D>jWACtCV9Qd> zBW%%Y^xdW-yT6yJ;6QQ_-EhDswKu%;Gt7CP&OJC*6co#fi5Y;^BagyTr3?vBS?Nwq zu&IRl8FP7%PFz79zfU?r_Aip8=mDMx=rh!}qzU*AMj_JZSsiL(D0`vArGO&OB-F;~ z52MM_i#EyN!Ad=xfUugXe12uTw%eST;V;({}!&ZQp1x0uY3*F%W5O=QxHO7)v{c zjAmbsG33Cg+Bsxg`*Oe{I_&-UAwFPuVXE2ob$WlY9T!;DaW+nUWUo(uWUtSBWUs}d zO=j@0UU%mFY`ce@UY~2nO}2ecw|&oiWdF~9WdARGWdEna_A*4U#b$1LJ|K=F+hNB> z0-^>RFp>Eh`Kc}o8evehM^>EXD)zbsg9s}{!Ap1|5i6|(!lIT+N~Q{oT3`!S*s3(* z7cO7=)N{{EiE52vS>x&{b8*FPp=?wdmWqz5o6C09cEATK^Wlzp`dmvjXP%y!H0vd& zyx~rn>Bh(@^YuCl0Xzfb0|u!6f_eHHQf{3xZvetFVPI$019P);^+^Q5xxvmFHr6l` zBd}L=kf~fN*xTO0d!u!Teve{pt&JG4IR~92_tX5cK`16MZ`K+%v366PESK^x>Ve%a2y0@ z9eAp)4HOWiT2(FFvF4bVwtBcoJcPrxcSDB88;jp3k*JiIXOYn|RSJZ?v_JrXF zLmS&ScJ?2*=beScAoUc^?(T7&#)_eZ+Vtu0Tz!_~3^RSqafYQj<7~Ip8fO^M8D|*r zp>ghif%oTb&fTAzzcEKc!(bfdDJ-V@vxU2Ji??5!#hfAK&ivy2dtpSnaf-=ZZ}9Mu zhM7L*NW)T{k+$1vjWmqtj5LfmIMT_UE{5XgvD2NOqw`fdJ9IoafJ@3HH-M1i8|Bg( zB@(r@zTq^P8hb>G!O46VpK*;vuQM@9k`UXL%^%y5M?5e;>~I$X)Pi{w;1*_(R;WlX zxZ7^q4?8}nxwi!jhQ%OQ48$B{FqP5dbkG zl15y$^CfNyOcdWvT;MxAww+sVOmqn~SkN$2{E*3Fn^~bX0A+JwR=y1mHI!(yF8Kzs z3jm%M0Ie7Vcp&G*a2Wy&1ell@Ar>5n@dW^2Ip``e>(%gJWSO@bkb(}fCL zSPt8hVd3BUw7cl6q#{9F9w}$|N_IU%4$xZ=4 zg%9J^Hs5#<+5Qf$_8gWQYH#E|jok1_?suVL`#D^9>a^91>p-1QpBnE9u^%T6tvTq& znXZ2PNA%-7E+{>@A5XRWp>Jl9`%S#5JjT(#8^!2uge4xV2;cwa6{v;3`T%fy_bOB;vF3)c=2#9_I`GzpJF9N;?7Z_O zEMP&>8l#l%Al%tkmfXtB#i^1bn#8H)+B+XyzB_k);r07-3)6wR?&8$U%;o7zGcz+& zGnb|=UTj4dHemBoxHz@qu2(*0p-Z2n5cG&2zojdmq|mdUq|kFgA@jiOT|PK_ADldx z1M@m_se6Ju+Er0dexOZ5&1n?3+?BmQ#w%XLYq|jh_d`AY?C^P@NKlmNeF_Xw~W(-N5(mVb3|+EyqW`wN;B%t63_#9 zx`Mniu*qnMQI`drIBc-0)38j`|5xjrWM}&~|s@ubOK>a^c(8d05rAGWf(hO7l@ zIB1RcuX^W6E2{j220zY<5+Tk)FMqHH3zzek5u>3}nN z?7Q=~;P8e^Q3=ED{7r_VScQQV2`?%6~`cfOZkpK=?gg{3*|@R+so3xG|^#mfEGJw7XUXMF<; z{U)@6bN3c*Sv@Eh{*wUyQ^Cs2Z8LeX_F&CzsQ?c{`o+|P2OvjUMeph?9aqv*VEfpw z0Kz~eg7$GY^Ftil3`#e-b7tX*#B^8>?f)hL^Yiu>4Ip%=3F)U56YQ3BnxQi{T^gUK zp-gOycgfYI;2#hI5Fxn3*p{ieQ+RI34*48BSXJaY@K+E`qdJO^fzTK(@EdXkE6@jm zX>n<2j@_~bBXUUDQRhv>z-(OM4+uO!|A>u4-i09r41HpdqEGq{dWW_+To3h&_NEl^lRD>@!pfkS52&yXTlBuD-4 z^Foa9jU_G1XNH|NU_jryv)7#{n0 zHmHQFlM9E!2?jYMUyQ`kH_~5>#FNL96Uk2}ZzOM|XB_4%;n)6P3L@9=tFysF{)5E8 z|AN4RM#b@r1^+999V7oJgB_FMQgObEqHU&;>;fy5b;|LOo_a#jKpi6m9R_icLXrZ(loP^HWrZ=kw>>$2r~*8$B7 zw>+$U;PQ)-o+(#v!IMVShNkFJ%)@%z0iuz1G01<&NT$o##|T!gy?a{-G8tuguJxj0Zq+vJNY zq`gW=OAnorYp`3;K-Z$q6nr`iClTh^s0>VkAuhNC_+dtg$%qA$ant#Cs4-YD@n8-( za_5iee1VS42ImF)R^I)eFn0d}@O#3}!+r(B{|^U-j|D+n)40|+`;o&BYS=gU_IkL6 zmN6_40Fd8EL36=uc-l~~VKB5+Z7uGclWoD_8_rb>n{iiFtUd7fd;|Bdu^V1IQ*R{i zVAE`ywWY;I{vK36P}a1W+kKP5g%c3mKcr9Ai7b(DQht%K2PP#GP6`jp|Jt4snFuhE zWD-F`8)rUpN?3j$%^=;74MMht6N2}tf!4}fd%_mwMX&$KPH-tje(amr$Hvb?Ao&+4 z;rvTF|B8-K<9|=z_vrj79ai5pewhhw4Iy}cz;+n|2A{z5dMA!*|@a7`_4ap<{!`7=*8u_3ISeB*ovXlXkb+AlmUXEJ{ z_!|LSMT7|!ES^OC0Q3lh|Dh==7DD@ev=`p|Z)7AskUs($o`3j|fCgfUo{zXRv51*` zg@fa(b8gbPMdvo1J9NMn22v5WT6-EMFGF;JmSrb6>SMJ!c^=GYVDRCPVg{6+0-p07 zI$~w=SLpj1ofqL)kcev4q8OH0M=*g?Ff6p~skw?x9pxe|?_&}L9SB%&;D=ga z(IFx1{B1VbBVt$U9!nT(-BECUgDnUf(%I?lmF_362HeX_e0BAog+ql?@TKyp^%YCF uzT6iht?yX=GEMVyB38zAn%q;!%<2=M6>=RQDz#8}q#Ye7M;0lD_WuC3%y*#x diff --git a/prepare_stack/__pycache__/create_dem.cpython-37.pyc b/prepare_stack/__pycache__/create_dem.cpython-37.pyc deleted file mode 100644 index a035ba30690e1e2c1beddc3fd38074b7d7cd91d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20116 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 LZy}d{|M&j`7prC= diff --git a/prepare_stack/__pycache__/create_dem.cpython-39.pyc b/prepare_stack/__pycache__/create_dem.cpython-39.pyc deleted file mode 100644 index 215879be2d0a4ecf97a633554005b74956821d7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20048 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 Y&FmvghXh43Qp0YM#?Aq|l>htx0r9bXu>b%7 diff --git a/prepare_stack/__pycache__/create_doris_input_xml.cpython-39.pyc b/prepare_stack/__pycache__/create_doris_input_xml.cpython-39.pyc deleted file mode 100644 index 04514b70c818796c4457e59b09fa9aecd40c6fb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4319 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 aVXVB%Ar*Yy#Ni9w>V-~a6J#Cej`bg;=sLLo diff --git a/prepare_stack/__pycache__/prepare_datastack.cpython-37.pyc b/prepare_stack/__pycache__/prepare_datastack.cpython-37.pyc deleted file mode 100644 index b44a28874d33d7974358be50c04b882650f74360..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1994 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 diff --git a/prepare_stack/create_datastack_bash.pyc b/prepare_stack/create_datastack_bash.pyc deleted file mode 100644 index e618217c8e688669c04aaa5f8e2d0c10f886324f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2644 zcmcguU2fY(5FV2H|FK**s@ zU>A^{+@2N6o3-D6`}Ic;vX6!T-{Pab z!a?BAfB@iZGdEyn!pwrR0tgdi5hex*3w{B(0(gB^B86e6fXe<~_&L=zoIXpWtL2HS zrki~XB%k1;?&2VE2Q&j@=FB7$G_hbX?3l>*NO=7`BPFtr;=>M6PdhjOPc<==3??aw z=;{>?y=gR;JvUq=?s@NddOnMrLiLVa7>^|;3J(1e&#fgmFL^?{l z-cLP`9dLxJT_!kV^rajBtSe~Tas1HNjzgX*!V88+I9m7=@nOVIEC3BKRVg}lW}Wnt_e#_R*A9ILDykf2T|r_BPUY^Q2~M2(0Bn>P10Iz!Lk9f28cTC zXk?2-av z#FI|!>Zz&|Ar<2_9mB2{Uru}>f=nh=3f*|RNR_rwDAnQf-BnXft>pr%`vyZ-aXoka z5FrSunj0?Bupuzz!RNiPANHt6*fm9VYU&P-5BeuV`!KLWQayfh6vyE)Hw=^_L^&^x z)gvUx%Q#B3-G4oL`NL`dyV1+zgPhFK!8IeZuvQ>ZcHl^r(ar(sq6p2gX-%Wh<`!xn z#FNYxx!J{W&KbFXiwR< zF}R~TQ8M;incK@=ZckcDP`+v9cI?I3Bsm$Ga}_irPZ5Js4O`E z91sFJ(WIK%N*1A`yu^<+U&nD0c~U6^@S(2B5<*GKi=oq%4CZ5_YP5`oxnta?uh}+R z<~^fiHjSpy&Yp+HzFD)jt+vrJ_j0^_1F0rbSu*38MCEsn>|Uly!IGeh*>Nz93#yO- z)z{z)9In0R+5h^cFu?tQ3YZUG$*Ni%S`8?1x{U)CN*AkC%I=Fm((B2HiiL`asaz>J h&VY{!#Wfn!3k=);kPdN(zfObt4Zn8L&@gt)zX6raND2S| diff --git a/prepare_stack/create_dem.pyc b/prepare_stack/create_dem.pyc deleted file mode 100644 index 86d004636d69532b7b858b7474f217b62c5d7476..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23388 zcmeI4YiwNCcHj4zAt{j}^`?fDEcs9`)0Rb259|86^1XVHdNh`-dnjMptmWxw=8zg{ zI77}ETGTC>+{C^})1qh*1Q$qgKlG6{K-!`Y6iqIW6c>FZ$cG~R(iUxj6fMvcXbS{L zo1hQW{r%TIXJ)8}uWi`hDr(N`$J(!T_FntH)?Rz^e=sy~?B6}ElwJC7Ki`-5B)^?= zuEPJo)ts9TESz(-oLkPj`Me91m$!J2oA2@Q9*g(7`CcFIb+taXyv@yT^Kt6h?&h~= z_4d2@{wzG;<_EIy4mZCe3lF;a!7M!F=7%iY=W09M@-8>Ot6lGIx3tGC?RE3}GV1+q ze!r`1a|?8IyZhL=kDPmNe%Mv|T}&z?8fd2;aB;y^cDRQ**ZgO>c)wd3ag{+gIzQ^- zgU-i4qQsDU*yEbhK}spMm2wWYvMsmoN)0=R{x=_>|~bmLY6Y+;$aPV{)~&yxTUi$rVrFM;VRUB&Q*@M z_`IvUs25ZT?K$S+Q?3GYcoXnp%2i;(B%|IQ@DiB9v*Rb2)74M-cY8b_*y`c2SSi(f ztUryF8}+2+lky}rlBSOg5V>*p)?0T<%_QzhD>rJjxZJ8X>Md1qwHcRM@pQagCSw0~ z@w~z(`DGq)wvd>N^Eve^{hxDj-YwE0I-7Tu9!u}dav|$;AMeyEi%Hz(K4xYxvD(F% z-Mrszn%SzE^<^_#i))9au(Ad%z_J>$0IXxmQo}CyF)xc{wcFBnx@dNM4}C3*OWEhD zMj(z=9IRC8?QtH?Ge;RoTwCx-N>5Z^@@`ohj=jyu`;|5#LF^&$*498*IMdHjLS< zdqpZacl`!4W+QOTH{6DEOBQA+yq|NMyWHk(SD$u|&%0LOHu^MSTe&pA+J`{t+p=^E zD1En^s}H##2za^IZ-|HQw(@SN$8GG=%O2h6cOx6y-7xj>wO@I?me*@}g|57`8DDz$ zr<5k|*`;^excXH82H_oUgV{lp8L`c647rbba_{He<{r1X*KO`|8++WwUbnH&EvWC1 zBTFSE|9HS`+uZN!=Trw1PKm{U38%y(mN;mMt$;bFM5g1;bo?!vV(jXnXTiwEez%|T zlT_FocFIpj;0L)S|A3|~jNI**AZZ1ZEg(Y+X$mzfrA_2(F`~Vm$XD-)+QUkY=Q^XA z&+AR}Yo;JY6^2v$-NvxnIN%mYWG|7N%x@Nqr?8R${32k?{ixTG)v2UF7kx!A`sdvW5!d3)^ah&*cDkiqZi!b%Z%ou~j%G}#9CYw;cqHX*8ZBtjkmGsKrtu8u zra5G-GXRK@q(rGK`(mlkTA$k_z)rSTuL|xhF-2@65FjA0{u5mT_Jf5@U4#87$Zg>l zW2A~Mei8P)-J}nPdCyx$%)ZEI4u4utUvwLXt*6YwBU^iFo0#>K-7tKzZuVK~rZ@}# zIb1mEHeR&4*?1T)&tuf00teJ8nY=OTd(wJyEbEP5u9P~eoo?fp_2Rho;<#%Sgjh&az)y;H;^D5uBNpcM!Wt{fAXJ3y z*h99>NQfKPfWkUUmh( zE3de)P&vh-K53(aMT{#zg!^eshkO9W85ANf`C+dT!)Ih^J8zA-B^coAuDnV!6wJYK zUIN^r1!QvGUP7BxOZc=4D-*6DQh@^PWZF`0(-zR6*}an_M@hOvrAy|f&UC85eUTH#6~Nvij2aoB2vegg}qXKsbslqRasINO?RH(Mzs z$)iTIVv#k#gldX}FRHugNPE{hSN%IZMA@ip6FWCmT_>1K@mO6e)vB$>Ve+7{R;z^f z<1nta9>mSicDq;Y>s;9I@pDsS$!-c=X{^;N)%s$1zp)-xlQ$A=j|%ln`){U!-}ig0X^Dp9S3#5C?r|H{s&X*`qLWs23 zYL@DWjpTG=A-r|%S_rJ*g;f7H@YP`0M6>iL4NOf{|BsUOI&B=|#|g0-0ZtE>YsKWj zO7U#*{(W{KUKZ@K@6tNJ1@&abn8>IbO?#W=xLRw8LB&erQ5|Mfgv9(?w31X{-$|=! zb8|UfUM{Uf;#W(PxLB%GiY>kLNN>_Az1v)it+_^G@s(2Rfd!TtR41}xiuz!2GhT?B zalIVd5U$6qsFbwg=9N;tVhzkStF8EQvsrpbc^yYGDG4=$}<>J+~`_*zw%chuAHA9N`tF>x9F8M(xkLl8~ zH5;#2lU4#;;cZuKE!)CgE-BX!MkyRfxhM9!1>g&a{Gg^g2e0M~&N+%E<>FV4X zv5J+$-09>fVmXp_73wv1R;bh7kd}w4gb(#nt(~M2X_9#OAg(SxNasnp!IG)7P4dqk zUz)b00s576mQeBowa~vm*q-YPMsoRJBzPgn2faaW&o_c^^qdZM<_ClRApPWegPvR% zgyf$HPUJ^&uLOtk6Tw)1I5^JV$>2cH-*Y@TL|uLP-eA~L`g(k*kJ9^cgQV}}Z#Xy- z^zj_dy});WZjjvJTo2y|gQ46JdNGpUmp_y%i!%rKi07tao@Bu z6EPiw-AH48h=CwshNfike2$~5}<2`uv4YrM$rhwqHhIE?Gw4XA88wW`)t-C5 z-h+Ju)m(Y{Qo$G9$oJ3`d~^Cz_k1GC{U|md)L$#$JDC;m?P3MkTHxa9Z^?-AL?gY= zYQ!f#yOFfO)<)U|)W{q?n;qBAaog(+dw}bUMEUpoDW(qp<|R`(A|d(e-(~Ca1V8%u zOOdQ$)fLcY^+$WNboarfw1%5mVEWP*Q#OPiTa8w!W_nVneH?uwG&LxZWihPQJK6>t zVXA;AHPbjEL9awe^&4wv{CD+iRojIj;oDX17**j-i_cVrc&av5?R-^X+eGA`Q2}(* zfG+#6poiKI4L}RKC*labBFJu@c3VBzQle20$5n4t?6!xGin+#NA8j*sTu>eHzax!t!}tQ z#KSFnUCOCe4F6e18Ya~Mo`&HmEYzr1zXDtoNt^#wKFK@}2kPky282w&K3hWr;1l7X z$=nb*W4R+Bn4_Q~{~QF{?8)`#UkP3b?gW=WKzD*0`ETXEMU8Q8Ay*bJ)Rsmr#wY(B zM8+mGh(Zkz7;M%h;6M>e$Q|4LoA=FH)&>KZGq=n5`w_M!wzYok`=BAj8N2@`Mq!^~ zmJ+4(xz)Pxk+&+>X^r}+1o=;$w*AqtOl|{`000s_2kptuPi+JC1gL;3`b=;t6*)$H zo5k5^*_*e}VoljXOT0sip$fTcR^ntw(2>FSd)Dvf*$Suc-OOVWU%!-R3!c9BdR{vz zTRVqgKo+nT;XM|{2FET1!eg#K46rc+uUpl_?^=GF(T zb#H}ETemiXxz)KI9S~ucg=5!m5Pg>^v!%PB3-#TXCUb6eZ!pKCTK}1xEvxV3w5(Qh zwydf-zpS)wL62~dS^gq(fOQ?(QIikt2gVh!d9&&|q%0S3oCwC+q+@PBi6ff;bdFyA zYI41uMTuGb(-x&=Z(WpOR?YR^&Y}#vs(HquwCtxArB%+11#8-J+vr{WuqR!VRwB*Q z95z~``YT5DITj@V^|@;fiEfiB`Nw_ITE|QwMR+sueZM+wD`dSI^$UU*@Qfw%c+FPo zSH2*Ix)#LT>hJb#nT5aG_b!}dWavPWc7(g>$>aarYPDyMnJV-`Zj~@~s(*+_^kE zJNI@pJ$_j9ZSWbLBWj(Qxoen@gZU)3su)eP(eTDEOkEX^4deBeSp$nnv$b5TVG9Lr zd#Ed8R0&J=VjR7oMyw@aSHr}HA4~TWYvnt@;aYT3c^Zke2fN!KdA_=GO(;}wv>`*T zfR^yF8jLQeh!lWwW96~RH1021wdGoa&RaiLC{?jwGnNfDDnmamtY*-;3n5=snx;P&7HEPvont_Jpt3;e&vRvoXpxlZp-X1G;$#nCzDIaRo&rjJq(rnjk{Bq5kkxpIy z7oX(URCnJ_;P|d!Fo(er(7r8q2*}P~?$zMc+(`wvzB09PS7Uc(nlJ&Nd2`0leEeW&wC_unMp*GVF-vc@n^Cxrsp60}=yw z5u{+i8c!)?*TU|ua)+`E{o^W6zmNnC>?1H*i|TrbDhtru$OI>2 zqBjce&=5vxoE>LmzrHcB?Z*`8^GPVsWH${2`vFH=@A_bF$2k@EbRo#fd>b85;P2xM`Hq|J9WFk4p`CeEF; zt*WZIW8PU^BKxF@No<-RjJ~E29~Yh0V}gf?9Dj`V-mH#QBprPGUByjaM`KD*Lzh)Jc=rq}((-}!ClP%F*C2PE<_A6j# zDmvHnCy(nzOarQLy;#u+jYuA6X^(xHmQ1aNgyIlV;kE8?vy)!);pk65^A*UUGgSLi z^gKCEz~zRKLr4Y=O7?P4GMFC^4hDSkA+kn)dvoO+bTS7?f@_0GwC0)SOR&K}bMrR^ zNu+a|FTI}V$L6%Q`Pf!knZtFgkQ_ND zW|Q@WIGazj^=oxujI85Dg1bUvvCe|5jD_ZW;(bXn?~YP9K_U5dOwgj4DJM+ySd-wJ zqyJc0{B*XTigQ6n92-={lu-ete>(=;)K}*%NTJR#w_5}x`v@L z`unO-a~NO|H>>yzXu;a}5^wG_iST`q87|eawzqG}1Zvb4O{`%gfZ_0(fgTTkW}q`u zrKf0=jpE@~u!?mG{{yXJt2@7obvl~cn;XOIH^PTF`}I(8K214fhQYG9tFdh3V=MU- zYg^m0-@P%+_}#l_Yoe`crf*8gQZnbc!eO?bkEbh~Fc`RyJ>p9Rl) z*Sh2&iv`ZIwym7`sl!X2Y=!g%RKSkUI~u5235P;Ocmzbw?jvX>|@{(hOPj{JXnQc&nI%8*iJ-3 z5%!xq9J20v>r>_v=dGh``alQ_Z^$>Zxgnejcs3TWtQ4?@J@v*gP01^eKG>X4&t}K9 z`` zk_Rl$)`QZde3a^5q*TkvByK{J%jQ2bIX8FawOiM3OiW+C8lrI`&G`4Hzx|^uaLETM z3u(#^7Sa^=JKyxE?3u&n1$JMZBTR7sYT~1#K%`XgnIMs&U^p0q!PmA`=qnA%zIqHv8+6^1?o`gP9Sv~%FNg*AxM1N9` zk{-Xz!%!5?A+5(AXlcPmFYED&9(=mMQZ%Wk24zaqb-aPDq`p5LfaNim2|EKl@2HHB zPh_%B07`BnUSl%%5RZb|(k+@3@w<9_n}-QIgu3skeA7&;rVeJvLamDW>b;*jwHg4D z^9j8E3Z&z!^y(iIEY-4zvk93!WgvTu+V0j5eX?#uJ2g`zafcS!|yfF)M18GuF+K zEkixpopY=^g2%yU8{&!2Iz&!_KHCsq>h8z$hq&c!j(3;YGQ^j=b6)9=oa&Ce`dP<& z`m>IA;saaR^^=<2Vs?BA(Qw;uA#5xjLHmse_h8d`Z3~&`@@6!h@)5*_3?CV& zlvf}|EvZ?}^Jd4A@@dH0)NK=%B$@KLT@9%~4L?F_wO(Wkl{7zn?(Ektyq;B1Z%9W? zE|PI9y!#-|jIQ!1D3_X*BwUQ^aT8#V6ZYfq_;_|~A0D52IZVn;EXEVzKq91hEPN+X zISi_DW$qi`>lwYSuSs1ZKK5ZB!o z43KLpYDm`Aa+v)q7K>TXz7nCi-po!O(T=Vze%9piWf1D zZ>e+k=KPG+sl7Cy>F5a5Cd*khC_)6x@+jpZoX~IAv4v3=b zy+4-&Dc$GiKw5AM2ilExaUf0G!htmHNe+1Zl+LGE@2@HJOM3iuJ=kVl^s_un^{wFj z?T;xW6;`U{hp7TxSzBI-{*1^ZI3CFtecbGJ9W3|;8POjTiKd;zl1SH0^eFV$LZbKH z?j0y-q6}NVy!4fiX?+<-eQDB6EmY}Zi{qBADBj;D*+@1Oe;bs7grt83knnYC|06-d zCIOeSdX4iy)&JDObjib+9!;y(y- zr&~0Qo1LC{BSqZ;6oyz>kyJ%IG)yBP!S&_53|`;^(2*>A@8{nKiVjFK7ku3XD#R#_ z^DB3|wd7s^|wXHRT26}JJa`$ z+J)RQjSTmwc$8G_dHnNXx3nJVS%rUzNT!(k%t-aQJrg7Z5aN+)ZRy$c!-Y`Gr<( z>dZvBY3>aZi;WKx*&%MtT%LU=nwg#SZUbi~rl!tKo}HSSnwUB}app{xTwLL@QSr>g zgBC{M&t2~97c7Tk!xw7r{1+_u+7~Q$!Iul4=I6O5`I(G8g9v6%o$cm&#|^}LM##7` zS^X`ZcF&LB9cZm3yd@dng4 zGuxjXRjowbp8o!(%9$t9I3>Ph50sy##y7AsB=RA1Jv#9P@&b2z@_qPy90B|qn8j^; zC@64-v_02rFnI`1l#$#xF5~*Uh?mL5U^I>U*a7@d4sdcTpA>;+yHZ=0q|nUJl)1_$ z0p{xB15g(*dqH1$zU*A+fl6#0yTaypID za@b4jqJl1Q`y;le=+~kskER% zJ#NQB>O_Nwi%0R;dO_XTlT#b0x5gR}2R6f)fI4T#1p~ars&l~^eeHGcTX>3G?^UQ9 z(Y6EFJlE}HoH#Uzqra*gTW<#x(knJC&hB|!IPb5uXyGvTxq7@#lBR$uereK~v#;Bl zxvn!J+g;4J@ao&Q?tngK-+XI+&JI_u+`NAG=Cx~YzBe-q=eYkJFGre6)&GRjI<7@- zryrbuna9U;lija*AVJ&P@*TB=3uYur1@ zxw*W;(!It3^UR&u>n5+LApIF2{dkfFII}LIyN$Vrt#QSl^vs)6njM*##{GSwDNpM3 zI#D(1bHxT>95wS@CR=^Kxby!N{7zBy5)I?A;gV|vTu(mO_SD}1$0fVan7zB%D8iv1 zhqF;RiXl3-@vTz%U$-Gi&bB`JM?Zhbj@Cc@*DBgSQ!!QzzWd21X^kIT8rNQ7bI!I){0$%R z3m5)p1gaHtM;aG%{3MA9*>PQJCpkBT9o64`T2PiKtCix1{4Rv88^Y(NzWn{crm=R* znl+XDEzJlma@{#%3*fzSyQpWF_g&y7(YThK4X;>~PiL`c^SM~$H#OGS#EOxP@EBCl zJ&{U$Tr1U**lskLKV&3lq(~O#NJn;&j5Lw9DVvhf2-`(xoEG}BZktEyjeN|^zTL;Y zDDHiKJa~2Q_xca_AMO8o|JDAhyQZT50!5jR{i8Sj*U(-gz)SN#EBJBtYiJ5EzjICj z_O!eOn3X*i=+keLsnxRT(MM9pmc|_d>HPMxTKfS9(VX)$uL<;+rGWrb-ly2^rYsCE z%yR?-;WX~a{E5>; zK)$jjbM`S#KP16}mQUmKqSy~ygPRZYu6fg<{`cW59Z_z-cjRY1i^&IA8UDrf*|mGk zcQL}VIXW)RZ71%9tmd`ntGF4xsK=ir*K=6BHct&Nj87^`=9i1T4K$>@lrMj2@!vkd zNp@6zqk_MuIa#7N;u3n-*TqslVI?C1cYwQ-HbZgYdI%c+x_JmP4fAgG>o%z=$d7*B zGtPM$!WfjH>2<63+WeDfx@|W;Od7m-BC*I#gvWZ=Sg`eVhtoVx-rBmHXR>Cd=dUKY zpTNHqVz8dPR>@dZVad*F8Q z4*mxF2h$CHxx|@s(OZYq-;Pnrjx)OsxF@(_V#k^C)|9o0czP*azmVx~(x)2v@u`4wG+Dtc3oOL|<^7#mjY(_-ebV44o6+w&3?^nPj5>tjBRZzNg0z^|-*ps$M{UD4Fvt7G=)s zr~nV%IG&iP#X2m%tLr{$)Ka~|(#eUK|9)@bx1kIf8SsfT8~p~;T>Q|G0dK7QF#CC> zJf*nLF1TM_rT36y~=d%nMuTh zORL0Q{?_uA6#W!MqwlH`fqa`6Dr@_gCWJimvc9W%r2)CKq;xhYDf*A9MYbfn8J1n; z>!f6t;G%y6jlo;*jdzUbSF}Qn8y7ve{)Vu({T{#|d$0fV`>}uOOmlG0zE9jI?iUZ7 p8w3^Up9}dAt!(eyroJmHmAm#O|M|K* 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 uw2ROHuH{px(vsU9n-o82gT{eJ=Oaq0vB diff --git a/prepare_stack/create_inputfiles.pyc b/prepare_stack/create_inputfiles.pyc deleted file mode 100644 index a36ec337efc904e9909230e45ee2fa1169b65e6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3683 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 Nn&xI(^wxjd&Og*LX_Wu~