# vim: set filetype=cfg: ##------------------------ smallbaselineApp.cfg ------------------------## ########## computing resource configuration mintpy.compute.maxMemory = auto #[float > 0.0], auto for 4, max memory to allocate in GB ## parallel processing with dask ## currently apply to steps: invert_network, correct_topography ## cluster = none to turn off the parallel computing ## numWorker = all to use all of locally available cores (for cluster = local only) ## numWorker = 80% to use 80% of locally available cores (for cluster = local only) ## config = none to rollback to the default name (same as the cluster type; for cluster != local) mintpy.compute.cluster = auto #[local / slurm / pbs / lsf / none], auto for none, cluster type mintpy.compute.numWorker = auto #[int > 1 / all / num%], auto for 4 (local) or 40 (slurm / pbs / lsf), num of workers mintpy.compute.config = auto #[none / slurm / pbs / lsf ], auto for none (same as cluster), config name ########## 1. load_data ##---------add attributes manually ## MintPy requires attributes listed at: https://mintpy.readthedocs.io/en/latest/api/attributes/ ## Missing attributes can be added below manually (uncomment #), e.g. # ORBIT_DIRECTION = ascending # PLATFORM = CSK # ... ## a. autoPath - automatic path pattern defined in mintpy.defaults.auto_path.AUTO_PATH_* ## b. load_data.py -H to check more details and example inputs. ## c. compression to save disk usage for ifgramStack.h5 file: ## no - save 0% disk usage, fast [default] ## lzf - save ~57% disk usage, relative slow ## gzip - save ~62% disk usage, very slow [not recommend] mintpy.load.processor = auto #[isce, aria, hyp3, gmtsar, snap, gamma, roipac], auto for isce mintpy.load.autoPath = auto #[yes / no], auto for no, use pre-defined auto path mintpy.load.updateMode = auto #[yes / no], auto for yes, skip re-loading if HDF5 files are complete mintpy.load.compression = auto #[gzip / lzf / no], auto for no. ##---------for ISCE only: mintpy.load.metaFile = auto #[path of common metadata file for the stack], i.e.: ./reference/IW1.xml, ./referenceShelve/data.dat mintpy.load.baselineDir = auto #[path of the baseline dir], i.e.: ./baselines ##---------interferogram datasets: mintpy.load.unwFile = auto #[path pattern of unwrapped interferogram files] mintpy.load.corFile = auto #[path pattern of spatial coherence files] mintpy.load.connCompFile = auto #[path pattern of connected components files], optional but recommended mintpy.load.intFile = auto #[path pattern of wrapped interferogram files], optional mintpy.load.ionoFile = auto #[path pattern of ionospheric delay files], optional mintpy.load.magFile = auto #[path pattern of interferogram magnitude files], optional ##---------offset datasets (optional): mintpy.load.azOffFile = auto #[path pattern of azimuth offset file], optional mintpy.load.rgOffFile = auto #[path pattern of range offset file], optional mintpy.load.azOffStdFile = auto #[path pattern of azimuth offset variance file], optional mintpy.load.rgOffStdFile = auto #[path pattern of range offset variance file], optional mintpy.load.offSnrFile = auto #[path pattern of offset signal-to-noise ratio file], optional ##---------geometry datasets: mintpy.load.demFile = auto #[path of DEM file] mintpy.load.lookupYFile = auto #[path of latitude /row /y coordinate file], not required for geocoded data mintpy.load.lookupXFile = auto #[path of longitude/column/x coordinate file], not required for geocoded data mintpy.load.incAngleFile = auto #[path of incidence angle file], optional but recommended mintpy.load.azAngleFile = auto #[path of azimuth angle file], optional mintpy.load.shadowMaskFile = auto #[path of shadow mask file], optional but recommended mintpy.load.waterMaskFile = auto #[path of water mask file], optional but recommended mintpy.load.bperpFile = auto #[path pattern of 2D perpendicular baseline file], optional ##---------multilook (optional): ## multilook while loading data with nearest interpolation, to reduce dataset size mintpy.load.ystep = auto #[int >= 1], auto for 1 - no multilooking mintpy.load.xstep = auto #[int >= 1], auto for 1 - no multilooking ##---------subset (optional): ## if both yx and lalo are specified, use lalo option unless a) no lookup file AND b) dataset is in radar coord mintpy.subset.yx = auto #[y0:y1,x0:x1 / no], auto for no mintpy.subset.lalo = auto #[S:N,W:E / no], auto for no ########## 2. modify_network ## 1) Network modification based on temporal/perpendicular baselines, date, num of connections etc. mintpy.network.tempBaseMax = auto #[1-inf, no], auto for no, max temporal baseline in days mintpy.network.perpBaseMax = auto #[1-inf, no], auto for no, max perpendicular spatial baseline in meter mintpy.network.connNumMax = auto #[1-inf, no], auto for no, max number of neighbors for each acquisition mintpy.network.startDate = auto #[20090101 / no], auto for no mintpy.network.endDate = auto #[20110101 / no], auto for no mintpy.network.excludeDate = auto #[20080520,20090817 / no], auto for no mintpy.network.excludeIfgIndex = auto #[1:5,25 / no], auto for no, list of ifg index (start from 0) mintpy.network.referenceFile = auto #[date12_list.txt / ifgramStack.h5 / no], auto for no ## 2) Data-driven network modification ## a - Coherence-based network modification = (threshold + MST) by default ## reference: Yunjun et al. (2019, section 4.2 and 5.3.1); Chaussard et al. (2015, GRL) ## It calculates a average coherence for each interferogram using spatial coherence based on input mask (with AOI) ## Then it finds a minimum spanning tree (MST) network with inverse of average coherence as weight (keepMinSpanTree) ## Next it excludes interferograms if a) the average coherence < minCoherence AND b) not in the MST network. mintpy.network.coherenceBased = auto #[yes / no], auto for no, exclude interferograms with coherence < minCoherence mintpy.network.minCoherence = auto #[0.0-1.0], auto for 0.7 ## b - Effective Coherence Ratio network modification = (threshold + MST) by default ## reference: Kang et al. (2021, RSE) ## It calculates the area ratio of each interferogram that is above a spatial coherence threshold. ## This threshold is defined as the spatial coherence of the interferograms within the input mask. ## It then finds a minimum spanning tree (MST) network with inverse of the area ratio as weight (keepMinSpanTree) ## Next it excludes interferograms if a) the area ratio < minAreaRatio AND b) not in the MST network. mintpy.network.areaRatioBased = auto #[yes / no], auto for no, exclude interferograms with area ratio < minAreaRatio mintpy.network.minAreaRatio = auto #[0.0-1.0], auto for 0.75 ## Additional common parameters for the 2) data-driven network modification mintpy.network.keepMinSpanTree = auto #[yes / no], auto for yes, keep interferograms in Min Span Tree network mintpy.network.maskFile = auto #[file name, no], auto for waterMask.h5 or no [if no waterMask.h5 found] mintpy.network.aoiYX = auto #[y0:y1,x0:x1 / no], auto for no, area of interest for coherence calculation mintpy.network.aoiLALO = auto #[S:N,W:E / no], auto for no - use the whole area ########## 3. reference_point ## Reference all interferograms to one common point in space ## auto - randomly select a pixel with coherence > minCoherence ## however, manually specify using prior knowledge of the study area is highly recommended ## with the following guideline (section 4.3 in Yunjun et al., 2019): ## 1) located in a coherence area, to minimize the decorrelation effect. ## 2) not affected by strong atmospheric turbulence, i.e. ionospheric streaks ## 3) close to and with similar elevation as the AOI, to minimize the impact of spatially correlated atmospheric delay mintpy.reference.yx = auto #[257,151 / auto] mintpy.reference.lalo = auto #[31.8,130.8 / auto] mintpy.reference.maskFile = auto #[filename / no], auto for maskConnComp.h5 mintpy.reference.coherenceFile = auto #[filename], auto for avgSpatialCoh.h5 mintpy.reference.minCoherence = auto #[0.0-1.0], auto for 0.85, minimum coherence for auto method ########## quick_overview ## A quick assessment of: ## 1) possible groud deformation ## using the velocity from the traditional interferogram stacking ## reference: Zebker et al. (1997, JGR) ## 2) distribution of phase unwrapping error ## from the number of interferogram triplets with non-zero integer ambiguity of closue phase ## reference: T_int in Yunjun et al. (2019, CAGEO). Related to section 3.2, equation (8-9) and Fig. 3d-e. ########## 4. correct_unwrap_error (optional) ## connected components (mintpy.load.connCompFile) are required for this step. ## SNAPHU (Chem & Zebker,2001) is currently the only unwrapper that provides connected components as far as we know. ## reference: Yunjun et al. (2019, section 3) ## supported methods: ## a. phase_closure - suitable for highly redundant network ## b. bridging - suitable for regions separated by narrow decorrelated features, e.g. rivers, narrow water bodies ## c. bridging+phase_closure - recommended when there is a small percentage of errors left after bridging mintpy.unwrapError.method = auto #[bridging / phase_closure / bridging+phase_closure / no], auto for no mintpy.unwrapError.waterMaskFile = auto #[waterMask.h5 / no], auto for waterMask.h5 or no [if not found] ## phase_closure options: ## numSample - a region-based strategy is implemented to speedup L1-norm regularized least squares inversion. ## Instead of inverting every pixel for the integer ambiguity, a common connected component mask is generated, ## for each common conn. comp., numSample pixels are radomly selected for inversion, and the median value of the results ## are used for all pixels within this common conn. comp. mintpy.unwrapError.numSample = auto #[int>1], auto for 100, number of samples to invert for common conn. comp. ## briding options: ## ramp - a phase ramp could be estimated based on the largest reliable region, removed from the entire interferogram ## before estimating the phase difference between reliable regions and added back after the correction. ## bridgePtsRadius - half size of the window used to calculate the median value of phase difference mintpy.unwrapError.ramp = auto #[linear / quadratic], auto for no; recommend linear for L-band data mintpy.unwrapError.bridgePtsRadius = auto #[1-inf], auto for 50, half size of the window around end points ########## 5. invert_network ## Invert network of interferograms into time-series using weighted least sqaure (WLS) estimator. ## weighting options for least square inversion [fast option available but not best]: ## a. var - use inverse of covariance as weight (Tough et al., 1995; Guarnieri & Tebaldini, 2008) [recommended] ## b. fim - use Fisher Information Matrix as weight (Seymour & Cumming, 1994; Samiei-Esfahany et al., 2016). ## c. coh - use coherence as weight (Perissin & Wang, 2012) ## d. no - uniform weight (Berardino et al., 2002) [fast] ## SBAS (Berardino et al., 2002) = minNormVelocity (yes) + weightFunc (no) mintpy.networkInversion.weightFunc = auto #[var / fim / coh / no], auto for var mintpy.networkInversion.waterMaskFile = auto #[filename / no], auto for waterMask.h5 or no [if not found] mintpy.networkInversion.minNormVelocity = auto #[yes / no], auto for yes, min-norm deformation velocity / phase mintpy.networkInversion.residualNorm = auto #[L2 ], auto for L2, norm minimization solution ## mask options for unwrapPhase of each interferogram before inversion (recommed if weightFunct=no): ## a. coherence - mask out pixels with spatial coherence < maskThreshold ## b. connectComponent - mask out pixels with False/0 value ## c. no - no masking [recommended]. ## d. range/azimuthOffsetStd - mask out pixels with offset std. dev. > maskThreshold [for offset] mintpy.networkInversion.maskDataset = auto #[coherence / connectComponent / rangeOffsetStd / azimuthOffsetStd / no], auto for no mintpy.networkInversion.maskThreshold = auto #[0-inf], auto for 0.4 mintpy.networkInversion.minRedundancy = auto #[1-inf], auto for 1.0, min num_ifgram for every SAR acquisition ## Temporal coherence is calculated and used to generate the mask as the reliability measure ## reference: Pepe & Lanari (2006, IEEE-TGRS) mintpy.networkInversion.minTempCoh = auto #[0.0-1.0], auto for 0.7, min temporal coherence for mask mintpy.networkInversion.minNumPixel = auto #[int > 1], auto for 100, min number of pixels in mask above mintpy.networkInversion.shadowMask = auto #[yes / no], auto for yes [if shadowMask is in geometry file] or no. ########## correct_LOD ## Local Oscillator Drift (LOD) correction (for Envisat only) ## reference: Marinkovic and Larsen (2013, Proc. LPS) ## automatically applied to Envisat data (identified via PLATFORM attribute) ## and skipped for all the other satellites. ########## correct_SET ## Solid Earth tides (SET) correction [need to install insarlab/PySolid] ## reference: Milbert (2018); Fattahi et al. (2020, AGU) mintpy.solidEarthTides = auto #[yes / no], auto for no ########## 6. correct_troposphere (optional but recommended) ## correct tropospheric delay using the following methods: ## a. height_correlation - correct stratified tropospheric delay (Doin et al., 2009, J Applied Geop) ## b. pyaps - use Global Atmospheric Models (GAMs) data (Jolivet et al., 2011; 2014) ## ERA5 - ERA5 from ECMWF [need to install PyAPS from GitHub; recommended and turn ON by default] ## MERRA - MERRA-2 from NASA [need to install PyAPS from Caltech/EarthDef] ## NARR - NARR from NOAA [need to install PyAPS from Caltech/EarthDef; recommended for N America] ## c. gacos - use GACOS with the iterative tropospheric decomposition model (Yu et al., 2018a, RSE; 2018b, JGR) ## need to manually download GACOS products at http://www.gacos.net for all acquisitions before running this step mintpy.troposphericDelay.method = auto #[pyaps / height_correlation / gacos / no], auto for pyaps ## Notes for pyaps: ## a. GAM data latency: with the most recent SAR data, there will be GAM data missing, the correction ## will be applied to dates with GAM data available and skipped for the others. ## b. WEATHER_DIR: if you define an environment variable named WEATHER_DIR to contain the path to a ## directory, then MintPy applications will download the GAM files into the indicated directory. ## MintPy application will look for the GAM files in the directory before downloading a new one to ## prevent downloading multiple copies if you work with different dataset that cover the same date/time. mintpy.troposphericDelay.weatherModel = auto #[ERA5 / MERRA / NARR], auto for ERA5 mintpy.troposphericDelay.weatherDir = auto #[path2directory], auto for WEATHER_DIR or "./" ## Notes for height_correlation: ## Extra multilooking is applied to estimate the empirical phase/elevation ratio ONLY. ## For an dataset with 5 by 15 looks, looks=8 will generate phase with (5*8) by (15*8) looks ## to estimate the empirical parameter; then apply the correction to original phase (with 5 by 15 looks), ## if the phase/elevation correlation is larger than minCorrelation. mintpy.troposphericDelay.polyOrder = auto #[1 / 2 / 3], auto for 1 mintpy.troposphericDelay.looks = auto #[1-inf], auto for 8, extra multilooking num mintpy.troposphericDelay.minCorrelation = auto #[0.0-1.0], auto for 0 ## Notes for gacos: ## Set the path below to directory that contains the downloaded *.ztd* files mintpy.troposphericDelay.gacosDir = auto # [path2directory], auto for "./GACOS" ########## 7. deramp (optional) ## Estimate and remove a phase ramp for each acquisition based on the reliable pixels. ## Recommended for localized deformation signals, i.e. volcanic deformation, landslide and land subsidence, etc. ## NOT recommended for long spatial wavelength deformation signals, i.e. co-, post- and inter-seimic deformation. mintpy.deramp = auto #[no / linear / quadratic], auto for no - no ramp will be removed mintpy.deramp.maskFile = auto #[filename / no], auto for maskTempCoh.h5, mask file for ramp estimation ########## 8. correct_topography (optional but recommended) ## Topographic residual (DEM error) correction ## reference: Fattahi and Amelung (2013, IEEE-TGRS) ## stepFuncDate - specify stepFuncDate option if you know there are sudden displacement jump in your area, ## e.g. volcanic eruption, or earthquake ## excludeDate - dates excluded for the error estimation ## pixelwiseGeometry - use pixel-wise geometry (incidence angle & slant range distance) ## yes - use pixel-wise geometry if they are available [slow; used by default] ## no - use the mean geometry [fast] mintpy.topographicResidual = auto #[yes / no], auto for yes mintpy.topographicResidual.polyOrder = auto #[1-inf], auto for 2, poly order of temporal deformation model mintpy.topographicResidual.phaseVelocity = auto #[yes / no], auto for no - phase, use phase velocity for minimization mintpy.topographicResidual.stepFuncDate = auto #[20080529,20190704T1733 / no], auto for no, date of step jump mintpy.topographicResidual.excludeDate = auto #[20070321 / txtFile / no], auto for exclude_date.txt mintpy.topographicResidual.pixelwiseGeometry = auto #[yes / no], auto for yes, use pixel-wise geometry info ########## 9.1 residual_RMS (root mean squares for noise evaluation) ## Calculate the Root Mean Square (RMS) of residual phase time-series for each acquisition ## reference: Yunjun et al. (2019, section 4.9 and 5.4) ## To get rid of long wavelength component in space, a ramp is removed for each acquisition ## Set optimal reference date to date with min RMS ## Set exclude dates (outliers) to dates with RMS > cutoff * median RMS (Median Absolute Deviation) mintpy.residualRMS.maskFile = auto #[file name / no], auto for maskTempCoh.h5, mask for ramp estimation mintpy.residualRMS.deramp = auto #[quadratic / linear / no], auto for quadratic mintpy.residualRMS.cutoff = auto #[0.0-inf], auto for 3 ########## 9.2 reference_date ## Reference all time-series to one date in time ## reference: Yunjun et al. (2019, section 4.9) ## no - do not change the default reference date (1st date) mintpy.reference.date = auto #[reference_date.txt / 20090214 / no], auto for reference_date.txt ########## 10. velocity ## Estimate linear velocity and its standard deviation from time-series ## and from tropospheric delay file if exists. ## reference: Fattahi and Amelung (2015, JGR) mintpy.velocity.excludeDate = auto #[exclude_date.txt / 20080520,20090817 / no], auto for exclude_date.txt mintpy.velocity.startDate = auto #[20070101 / no], auto for no mintpy.velocity.endDate = auto #[20101230 / no], auto for no ## Bootstrapping ## refernce: Efron and Tibshirani (1986, Stat. Sci.) mintpy.velocity.bootstrap = auto #[yes / no], auto for no, use bootstrap mintpy.velocity.bootstrapCount = auto #[int>1], auto for 400, number of iterations for bootstrapping ########## 11.1 geocode (post-processing) # for input dataset in radar coordinates only # commonly used resolution in meters and in degrees (on equator) # 100, 60, 50, 30, 20, 10 # 0.000925926, 0.000555556, 0.000462963, 0.000277778, 0.000185185, 0.000092593 mintpy.geocode = auto #[yes / no], auto for yes mintpy.geocode.SNWE = auto #[-1.2,0.5,-92,-91 / none ], auto for none, output extent in degree mintpy.geocode.laloStep = auto #[-0.000555556,0.000555556 / None], auto for None, output resolution in degree mintpy.geocode.interpMethod = auto #[nearest], auto for nearest, interpolation method mintpy.geocode.fillValue = auto #[np.nan, 0, ...], auto for np.nan, fill value for outliers. ########## 11.2 google_earth (post-processing) mintpy.save.kmz = auto #[yes / no], auto for yes, save geocoded velocity to Google Earth KMZ file ########## 11.3 hdfeos5 (post-processing) mintpy.save.hdfEos5 = auto #[yes / no], auto for no, save time-series to HDF-EOS5 format mintpy.save.hdfEos5.update = auto #[yes / no], auto for no, put XXXXXXXX as endDate in output filename mintpy.save.hdfEos5.subset = auto #[yes / no], auto for no, put subset range info in output filename ########## 11.4 plot # for high-resolution plotting, increase mintpy.plot.maxMemory # for fast plotting with more parallelization, decrease mintpy.plot.maxMemory mintpy.plot = auto #[yes / no], auto for yes, plot files generated by default processing to pic folder mintpy.plot.dpi = auto #[int], auto for 150, number of dots per inch (DPI) mintpy.plot.maxMemory = auto #[float], auto for 4, max memory used by one call of view.py for plotting.