autoRIFT v2.0.0
Important
This release includes major changes to Geogrid, autoRIFT, and the expected usage; please read the release notes carefully. Notably, the radar workflow has been migrated from ISCE2 to ISCE3 and autoRIFT now depends on ISCE3 instead of being built inside it. This release is thanks to @mfangaritav, @AndrewPlayer3, @kmarnoult, and @jhkennedy.
Added
-
An
environment.ymlfile for creating a developmental conda environment -
ruff.tomlconfiguration files for formatting python code with ruff -
.clang-formatconfiguration files for formatting C/C++ code with clang-format -
Updating the changelog will now be required for all PRs into autoRIFT's
mainbranch. -
geogrid C++ extension for the radar workflow which calls core ISCE3 C++ code directly.
Changed
- geogrid and autoRIFT now require Python 3.10 or greater
- All project documentation has been consolidated into the
README.mdanddocs/demo.md, which have been updated to reflect new usage. - Python's
sysconfigis now used to get the Python include directory andpureliblibrary paths instead of predicting it from the OpenCV build info. - Geogrid and autoRIFT now report their version numbers from the
geo_autoRIFTnamespace package metadata - The radar module in the Geogrid package has been changed from
Geogrid.pytoGeogridRadar.py. - The radar version of Geogrid now uses ISCE3 rather than ISCE2.
- The
test*.pyworkflows are no longer specific to optical or radar processing:testGeogridOptical.pyandtestGeogrid_ISCE.pyhave been combined into a newtestGeogrid.pyscripttestautoRIFT.pyandtestautoRIFT_ISCE.pyworkflow scripts have been merged into onetestautoRIFT.pyscript
- Significant performance improvements to functions in
autoRIFT.py:arPixDisp_sandarPixDisp_u(float32anduint8pixel-wise displacement functions):- Moved the looping code into
autoriftmodule.cpp - Multi-threading is now done via OpenMP in C++, rather than by using Python's
multiprocessinglibrary - Removed the
loop_unpacking_functions that were used for multiprocessing
- Moved the looping code into
colfilt(column-wise filter function):- All the filter methods have been manually implemented with Numba's @jit
- The filters are now applied using SciPy's LowLevelCallable and generic_filter
Fixed
- The
arPixDisp_sandarSubPixDisp_sC++ functions now use normalized cross-covariance (CV_TM_CCOEFF_NORMED) in thecv::matchTemplatecalls, rather than normalized cross-correlation (CV_TM_CCORR_NORMED). This matches what thearPixDisp_uandarSubPixDisp_uworkflows have been using. See here for the differences between the methods.
Removed
- The
geo_autoRIFT/__init__.pyfile and all thesconscriptfiles have been removed with the migration to ISCE3 -- these only served to facilitate building autoRIFT as a contributed package inside ISCE2. topsinsar_filename.pyhas been removed with the migration to ISCE3. This functionality has been moved to theget_topsinsar_configfunction intestautoRIFT.py.testautoRIFT.pyno longer outputs a Matlab-styleoffest.matfile- The geocode-only workflow added to
testGeoGrid_ISCE.pyin v1.6.0 with the switch to ISCE3. A similar workflow is currently being developed for a forthcoming release.