---
tags: isce, fringe, timeseries
---
# Fringe insar processing working note
## Introduction
FRInGE is a psds processing code utilizing the sequential MLE algorithm.
The fringe project is developed by :rocket:NASA JPL.
[fringe@github](https://github.com/isce-framework/fringe)
Here, we want to combine **distributed scatter** and **PS algorithm, StaMPS**, and explore more precise timeseries in geodesy .
## Installation
Follow the github page.
Notion: you must install the same version gdal as ISCE since it sometimes calls ISCE functions.
## Fringe workflow for PSI
:::success
1. ISCE SLC stack for input
2. Cropping the slc stack is recommended.
3. I do some modidication to the code for StaMPS support. Here's my :dog:[github page](https://github.com/sharkbig/fringe2mintpy)
:::
### Standard FRInGE workflow for DS estimation
1. load data
`tops2vrt.py -i ../crop_merged/ -s coreg_stack -g geometry`
2. calibrate amplitude
`mkdir calamp & calamp.py -i coreg_stack/slcs_base.vrt -o calamp/slcs_base_calamp.vrt`
- calibrate is optional (?)
- replace the coreg_stack/slcs_base.vrt in the following step
3. KS/AD test to find SHP candidates
`nmap.py -i calamp/slcs_base_calamp.vrt -o KS2/nmap -c KS2/count -x 25 -y 7`
- need more tests for window size determination.
- The code has GPU support.
4. Sequential Estimator
`sequential.py -i ../crop_merged/SLC -o Sequential -w KS2/nmap -b calamp/slcs_base_calamp.vrt -x 25 -y 7 -s 15`
- take most time
- The window size must be consistent with the previous step.
6. `adjustMiniStacks.py -s slcs/ -m Sequential/miniStacks/ -d Sequential/Datum_connection/ -o adjusted_wrapped_DS -M 10`
- Datum connection process with sequential
6. Amplitude dispersion and PS pixel mask
```bash
ampdispersion.py -i calamp/slcs_base_calamp.vrt \
-o calamp/ampdispersion -m calamp/mean
gdal2isce_xml.py -i calamp/ampdispersion
imageMath.py -e="a<0.4" --a=calamp/ampdispersion \
-o calamp/ps_pixels -t byte
```
## integratePS.py for StaMPS
- The original code makes single master interferograms and utilize mintpy (prep_fringe.py) to **display** the PS-DS result.
*(I'm not going to introduce in this docs)*
- Since we want to apply the StaMPS algorithm to calculate the timeseries, **the option "--stamps" is added to export SLCs without interference.**
```bash
integratePS.py -s coreg_stack/slcs_base.vrt \
-d adjusted_wrapped_DS/ \
-t Sequential/Datum_connection/EVD/tcorr.bin \
-p calamp/ps_pixels \
-o PS_DS --stamps
```
:::info
Also, the modified code has SBAS support.
Check the github page for more info!
:::
## StaMPS insar timeseries
### mask_file for coherence
10. `gdal2isce_xml.py -i PS_DS/tcorr_ds_ps.bin`
11. `imageMath.py -e="a<0.85" --a="PS_DS/tcorr_ds_ps.bin" -o PS_DS/TempCohMask -t B`
** temporal cherence value threshold still need more experiment. (0.85、0.9、0.95?)
** the one-byte (char*) binany file is designated to stamps input (very important!!)
** In StaMPS, the "selpsc_patch.c" code treats "0" for no mask, other value for mask out.
Here, we let temporal coherence < 0.85 as 1 and greater as 0, which means points whose cohrence higher than 0.85 will be processed.
### "input_file" for StaMPS
**replace "$project" with your project directory**
```
source_data slc_stack
slc_stack_path $project/fringe/PS_DS
slc_stack_reference 20230510
slc_stack_geom_path $project/crop_merged/geom_reference
slc_stack_baseline_path $project/crop_merged/baselines
range_looks 1
azimuth_looks 1
aspect_ratio 1
lambda 0.0555
slc_suffix
geom_suffix .full
maskfile $project/fringe/PS_DS/TempCohMask
```
The same as isce2stamps procedure, which you can refer to [ISCE-stamps/MTI-TomoSAR](/Je0fJkX_TsS1nqCoaW2bwA) note.
execute command:
`mt_prep_isce 0.45 1 1`
- **da_threshold** for *mt_prep_isce* still needs more test for DS algorithm.
- While using the same value as step 7, the result will be the same as **not doing DS**
## Parameter issues
there are some parameter that is important for estimation
1. xwin/ywin
2. number of connection
I did some experiments, and they can be briefly concluded as:
1. the window size is according to the sar resolution. And for sentinel-1, I guesss -x 11 -y 6 is good enough. (not too big?)
2. the number of connection will affect the ministack estimation. Thus, I cannot be too small. In some of my experiments, I think larger than 10 is better?