Python rewrite of application named StaMPS https://homepages.see.leeds.ac.uk/~earahoo/stamps/.
This isn't complete StaMPS rewrite! This only contains steps that are responsible finding persistent scatterers. There are missing phase unwrapping for complete and standalone work.
The rewrite was done from StaMPS version 3.3b1.
Estonian below/ Eesti keeles allpool.
Application is written in Python 3.6.3.
First it is recommended to make Python virtual environment using virtualenv. Do not use Anaconda/ conda virtual environment, because you can't load dependencies to conda. In this example command we make virtual environment named "virtenv".
virtualenv virtenv
Then you need to activate it with this command (in Windows).
C:\Users\<UserName>\Anaconda3\envs\virtenv\Scripts\activate
In Linux the command is:
source virtenv/bin/activate
Then you load dependencies from file env.txt or env_intel.txt:
pip install -r env.txt
First one is for ordinary Python and env_intel.txt is for Intel Python MKL. For last one you need to download Numpy and SciPy packages separately. For Windows you can find them here https://www.lfd.uci.edu/~gohlke/pythonlibs/.
Clone file StampsReplacer\resources\properties.ini.sample and remove .sample.
Parameters in the file are:
- path - Input/ data files path.
- patch_folder - When PATCH folder is in other folder (like tmp) then put that folder here.
- geo_file - .dim file that is used for processing.
- save_load_path - Save and load path or work directory. Results file can be found in this path.
- rand_dist_cached - Is randomly generated file loaded from temporary files (from path save_load_path\tmp). It reduces PsEstGamma process time. If the processed file or area is new is then you should first delete cached file.
For tests there is seperate properties file properties.ini. Clone file from StampsReplacer\tests\resources\properties.ini.sample and delete .sample from the end.
Parameters in the file are:
- tests_files_path - Tests files path. Test classes are looking source files from that location.
- patch_folder - When PATCH folder is in other folder (like tmp) then put that folder here.
Other parameters are the same. tests_files_path is the same path that in not test properties file.
All paths must be absolute.
Pay attention that when you are using files that are in this repository that pscphase.in and rsc.txt correspond to your file system. This is because program reads paths from those files.
When you see error that tells that there is missing .npz file. Error like this:
FileNotFoundError: [Errno 2] No such file or directory: 'StampsReplacer/tests/resources/process_saves/ps_files.npz'
This is because test doesn't find file from previous process. Then you need to run test class that creates that file. You don't need to run whole test class, it is enough to run only save-load test. After that test sould not raise this error.
For starting program/ processing you need to run Main.py.
Like so:
python Main.py
This starts from zeroth step and ends final. Runs all steps.
You can also add steps where to start (first parameter) and where to end (end parameter). Example:
python Main.py 0 5
This is also equal to previous command.
When we need to run only one step, then both parameters need to be equal. Example:
python Main.py 0 0
Also you can show step where to start. It starts from this step and ends with final step. Example:
python Main.py 0
This is also equal to first and second command.
What each step do: 0 - load SNAP files and data to Python and calculate some additional that is needed for next steps. 1 - Load SNAP files that where made for StaMPS to Python/ Numpy format. 2 - Estimate phase noise 3 - Select persistent scatterers 4 - Filter/ weed out persistent scatterers 5 - Phase correction
Please note that you can't start from first step when you haven't started zeroth step and so on. All steps depend from previous steps.
Cython compiles Python code into C. It may affect performance positively in some steps.
Compiled files are written in cython_setup.py. You need to run with this command:
python cython_setup.py build_ext --inplace
After that Python uses compiled files.
The results can be found in path that you set in properties.ini file, parameter save_load_path.
Rakendus on kirjutatud Python'i versioonis 3.6.3.
Esmalt tuleb luua virtualenv'iga keskkond. Siin luuakse virtuaalkeskkond virtualenv'iga nimetusega virtevn. Virtuaalkeskkonda ei või teha Anaconda/ conda'ga, sest muidu ei saa laadida sõltuvusi sinna keskkonda.
virtualenv virtenv
Siis see aktiveerida Windows’is järgneva käsuga:
C:\Users\<Kasutaja>\Anaconda3\envs\virtenv\Scripts\activate
või Linux'is
source virtenv/bin/activate
Ning siis laadida sõltuvused failist env.txt või env_intel.txt:
pip install -r env.txt
env.txt on tavalisele Python'ile ja env_intel.txt on mõeldud Intel'i Python'ile. Viimase puhul Numpy ja SciPy paketid tuleb käsitsi paigaldada. Need saab Windows'i operatsioonisüsteemi jaoks alla laadida siit: https://www.lfd.uci.edu/~gohlke/pythonlibs/.
Kopeeri fail StampsReplacer\resources\properties.ini.sample ja kustuta sealt lõpust .sample.
Parameetrid failis on järgnevad:
- path - Algfailide asukoht
- patch_folder - Kui path kaust on veel mingis kaustas (tmp on üpris levinud) siis tuleb sinna see ka panna.
- geo_file - .dim fail mida kasutatakse töötluses
- save_load_path - Salvestustee. Koht kuhu tulemused (.npz failid) salvestatakse
- rand_dist_cached - Kas juhuslike arvude massiiv loetakse vahesalvestusest või mitte. Vähendab oluliselt PsEstGamma protsessimise aega. Kui tegemist on uute andmetega siis peaks enne vahesalvestatud faili ära kustutama. Asub asukohas save_load_path\tmp.
Testiklasside jaoks on oma properties.ini fail. Asukohast StampsReplacer\tests\resources\properties.ini.sample tuleb kopeerida fail ja kustutada lõpust .sample.
Parameetrid failis on järgnevad:
- tests_files_path - Testifailide asukoht. Testiklassid otsivad sealt faile/ algandmeid.
- patch_folder - Kui path kaust on veel mingis kaustas (tmp on üpris levinud) siis tuleb sinna see ka panna. Kui PATCH_1 kaust on otse eelnimetatud tests_files_path'is on kõik korras ja selle võib jätta tühjaks.
Parameetrid on samad mis mitte testi parameetrites. tests_files_path on sama mis path mitte testi failides.
Kõik asukohad on absoluutteena.
Juhul kui kasutada git'is olevaid faile siis peab vaatama, et pscphase.in ja rsc.txt oleksid sinu failisüsteemile vastavad. Põhjusena, et seal on asukoht kust võtta algfaile absoluutteena ja see peab olema igas süsteemis oma moodi seadistatud.
Juhul kui test annab teada, et tal on mõni .npz fail puudu näiteks
FileNotFoundError: [Errno 2] No such file or directory: 'StampsReplacer/tests/resources/process_saves/ps_files.npz'
See on seepärast, et testil on puudu üks vahetulemuse salvestus. Siis tasub käivitada vastava faili test kõige enne. Kui kõiki teste ei soovi teha siis võib käivitada ainult salvestamise ja laadimise. See teeb selle .npz faili ja siis saab teine test ka edasi minna.
See on seepärast selliselt tehtud, et algandmed võivad kõigil erinevad olla ja seega ka selle programmi loodud vahetulemus.
Programm käivitatakse klassist Main, failist Main.py, kus on kaks parameetrit. Esimene parameeter näitab millisest protseduurist alustatakse ja viimane näitab millisega lõpetatakse. Mõlemad parameetrid on täisarvud 0-ist 5-ni. Kui neid ei määra tehakse kogu protsess.
Kui parameetreid ei määra siis tehakse kõik protsessid. See käsk näeb välja selline:
python Main.py
Või siis näidata, ette mis sammust alustada ja milliselst lõpetada:
python Main.py 0 5
See käsk on võrdne esimesega.
Või kui on soov vaid üks samm teha:
python Main.py 0 0
Võib näidata ka vaid algussammu:
python Main.py 0
See käsk teeb sama asja mis esimene ja teine.
Parameetrite numbrid vastavad järgnevatele protsessidele: 1 - Programmiga SNAP loodud failide lugemine ja töötlemine (klass CreateLonLat). 2 - Algandmete laadimine. Loetakse ja konverteeritakse SNAP eksporditud failid, mis olid tehtud StaMPS programmile formaadiks, Python/ NumPy failideks (klass PsFiles). 3 - Faasimüra hindamine (klass PsEstGamma). 4 - Püsivpeegeldajate valik (klass PsSelect). 5 - Püsivpeegeldajate filtreerimine (klass PsWeed). 6 - Faasikorrektsioon (klass PhaseCorrection).
NB! Pole võimalik kävitada samme mille eeldusandmeid ei ole. See tähendab, et kohe ei saa alustada teisest sammust töötlust, sest esimese sammu tulem on puudu.
Cython kompileerib Python'i kood C koodi. See mõningates protsessi sammudes parandab kiirust.
Failid mida kompileeritakse on kirjas cython_setup.py. See tuleb ka käivitada kompileerimiseks. Käsk on järgnev:
python cython_setup.py build_ext --inplace
Peale mida juba Python kasutab ise kompileeritud faile.
Tulemusfailid leiab kaustast, mis seadistati properties.ini faili parameetri save_load_path.