Skip to content

Vants/stampsreplacer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stamps replacer

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.

Tutorial in English

Estonian below/ Eesti keeles allpool.

Before starting application

Setting up environment

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/.

Properties and parameters

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.

Source files

Files made with SNAP in this code repository

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.

Errors related to missing .npz 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.

Starting program

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

Cython compiles Python code into C. It may affect performance positively in some steps.

For compiling

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.

After process compilation

The results can be found in path that you set in properties.ini file, parameter save_load_path.


Eestikeelne õpetus

Enne käivitamist

Keskkonna seadistus

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/.

Sättefailid ja parameetrite selgitus

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.

Algfailid

SNAP'i loodud failid siin repositooriumis

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.

Vead seotud puuduvate .npz failidega

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.

Käivitamine

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

Cython kompileerib Python'i kood C koodi. See mõningates protsessi sammudes parandab kiirust.

Kompileerimiseks

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.

Protessi lõppedes

Tulemusfailid leiab kaustast, mis seadistati properties.ini faili parameetri save_load_path.