Releases: dbekaert/RAiDER
Releases · dbekaert/RAiDER
RAiDER v0.5.3
RAiDER v0.5.2
Changed
- 627 - Made Python datetimes timezone-aware and added unit tests and bug fixes.
- 651 - Removed use of deprecated argument to
pandas.read_csv
. - 652 - Changed the behavior of
RAiDER.models.credentials.check_api
to not overwrite the user's API credential files. - 656 - Example run configuration files available through
raider.py --generate_config <example_name>
. - 657 - Fixed a few typos in
README.md
. - 658 - Fixed opaque error message if a GUNW file is not produced while HyP3 independently against a previous INSAR_ISCE.
- 661 - Fixed bug in raiderDownloadGNSS, removed call to scipy.sum, and added unit tests.
- 662 - Bumped dem-stitcher to >= v2.5.6, which updates the URL for reading the Geoid EGM 2008.
RAiDER v0.5.1
Changed
- Use hyp3-lib v3* to download orbits to be able to distribute load across ESA and ASF. Can be easily swapped out for
sentineleof
in future release.
RAiDER v0.5.0
Added
- A
--input-bucket-prefix
argument tocalcDelaysGUNW
which will allow RAiDER to process ARIA GUNW products under one prefix and upload the final products to another prefix provided by the--bucket-prefix
argument.
Fixed
RAiDER v0.4.7
RAiDER v0.4.6
Added
- Adds an
s1_orbits.py
module which includes:get_orbits_from_slc_ids
to download the associated orbit files for a list of Sentinel-1 SLC IDsensure_orbit_credentials
to ensure ESA CSDE credentials have been provides to download orbit files. This should be called beforesentineleof
is used to download orbits.
- Adds a
setup_from_env
function tomodels/credentials.py
which will pull all credentials needed for acquiring weather model data from environment variables and ensure the correct config file is written. This makes setting up credentials in CI pipelines significantly easier
Changed
sentineleof
upgraded to version 0.9.5 or later to (a) fetch orbits from ESA CDSE and (b) ensure that if CDSE fetch fails, code resorts to ASF orbit repository
Fixes
- RAiDER is now tested on Python version 3.9-3.12
- All typehints are now Python 3.9 compatible
- 607: Python entrypoint loading is now compatible with Python 3.12
- 610: Sentinel-1 orbit availability due to ESA migrating Sentinel-1 orbit files from Copernicus Open Access Hub (Scihub) to the new Copernicus Data Space Ecosystem (CDSE)
- make weather file directory when it doesn't exist
- Ensures the
models/data/alaska.geojson.zip
file is packaged when building from the source tarball - Make ISCE3 an optional dependency in
s1_azimuth_timing.py
- Added unit tests and removed unused and depracated functions
Removed
hyp3lib
, which was only used for downloading orbit fies, has been removed in favor ofsentineleof
RAiDER v0.4.5
Fixes
- #583: it appears that since the issues with geo2rdr cropped up during our processing campaign, there has been a new release of ISCE3 that resolves these failures with
geo2rdr
and the time interpolation that uses this ISCE3 routine. - #584: failed Raider step function in hyp3 job submission when HRRR model times are not available (even within the valid model range) - to resolve, we check availability of files when delay workflow called with a) azimuth_grid_interpolation and b) input to workflow is GUNW. If weather model files are unavailable and the GUNW is on s3, do nothing to GUNW (i.e. do not add tropo delay) and exit successfully. If weather model files are unavailable and the GUNW is on local disk, raise
ValueError
- #587: similar to 584 except added here to the mix is control flow in RAiDER.py passes over numerous exceptions in workflow. This is fixed identically as above.
- #596: the "prefix" for aws does not include the final netcdf file name, just the sub-directories in the bucket and therefore extra logic must be added to determine the GUNW netcdf file name (and the assocaited reference/secondary dates). We proceed by downloading the data which is needed regardless. Tests are updated.
Removed
- Removes
update
option (eitherTrue
orFalse
) from calcGUNW workflow which asks whether the GUNW should be updated or not. In existing code, it was not being used/applied, i.e. previous workflow always updated GUNW. Removed input arguments related from respective functions so that it can be updated later.
Added
- Allow for Hyp3 GUNW workflow with HRRR (i.e. specifying a gunw path in s3) to successfully exit if any of the HRRR model times required for
azimuth-time-grid
interpolation (which is default interpolatin method) are not available when using bucket inputs (i.e. only on the cloud) - For GUNW workflow, when model is HRRR, azimuth_time_grid interpolation used, and using a local GUNW, if requisite weather model files are not available for raise a ValueError (before processing)
- Raise a value error if non-unique dates are given in the function
get_inverse_weights_for_dates
ins1_azimuth_timing.py
- Added metadata provenance for each delay layer that is included in GUNW and the cube workflow generally in
calcDelays
including:model_times_used
- the weather models used and interpolated for the delay calculationinterpolation_method
- whethernone
,center_time
, orazimuth_time_grid
methods were used - see description incalcDelayGUNW
scene_center_time
- the center time in which the associated SAR image was acquired
- Stages GMAO data for GUNW testing of correct dataset update i.e. in the test
test_GUNW_dataset_update
. - Stages HRRR data for
test_HRRR_ztd
test. - Ensures ISCE3 is
>=0.15.0
- Uses correct HyP3 S3 prefix conventions and filename suffix within test patches to improve readability of what tests are mocking (see comments in #597).
Changed
- Get only 2 or 3 model times required for azimuth-time-interpolation (previously obtained all 3 as it was easier to implement) - this ensures slightly less failures associated with HRRR availability. Importantly, if a acquisition time occurs during a model time, then we order by distance to the reference time and how early it occurs (so earlier times come first if two times are equidistant to the aquisition time).
- Made test names in
test_GUNW.py
more descriptive - Numpy docstrings and general linting to modified function including removing variables that were not being accessed
- hrrr_download to ensure that
hybrid
coordinate is obtained regardless how herbie returns datacubes and ensures test_HRRR_ztd passes consistently- Remove the command line call in
test_HRRR_ztd.py
and call using the python mock up of CLI for better error handling and data mocking.
- Remove the command line call in
- Return xarray.Dataset types for RAiDER.calcGUNW.tropo_gunw_slc and RAiDER.raider.calcDelayGUNW for easier inspection and testing
- Fixes tests for checking availability of HRRR due Issue #596 (above).
RAiDER v0.4.4
Fixes
- For s1-azimuth-time interpolation, overlapping orbits when one orbit does not cover entire GUNW product errors out. We now ensure state-vectors are both unique and in order before creating a orbit object in ISCE3.
RAiDER v0.4.3
- Prevent ray tracing integration from occuring at exactly top of weather model
- Properly expose z_ref (max integration height) parameter, and dont allow higher than weather model
- Min version for sentineleof for obtaining restituted orbits.
- Rename datetime columns and convert from strings for GNSS workflow
- Use native model levels in HRRR which extend up to 2 hPa as opposed to 50 hPa in pressure levels
- Update tests to account for different interpolation scheme
- Dont error out when the weather model contains nan values (HRRR)
- Fix bug in fillna3D for NaNs at elevations higher than present in the weather model
- write delays even if they contain nans
- check that the aoi is contained within HRRR extent
- streamline some unit tests to remove downloading
- move the ray building out of the _build_cube_ray and into its own function for cleaner testing
- update the tests to use the new build_ray function
- If the processed weather file exists use it; otherwise check if raw exists and covers study area; otherwise download new
- Update the integration height for raytracing from 50 km to 80 km
- Reinstate test 3 (slant proj and ray trace), remove unused calls with ZREF
- Add buffer to W/E for ERA5
- refactor imports to allow for a cleaner raider-base
- Add buffer to HRES when downloading as with the other models
- Refactor to pass a weather file directly to fetch
- Update staged weather models to reflect update to aligned grid
- Correctly pass buffered bounds when aligning grid
- Check the valid bounds prior to starting and use HRRR-AK if its correct so that rounding times to obtain data at are correctly fed to Herbie
- Update test_intersect to already existing weather model files
- Replace the real weather model files used for the synthetic test with the correct ones (bounding box changed slightly)
- Update test_scenerio_1 to match golden data by selecting a grid by lat/lon rather than indices
- Adjust the buffering to account for grid spacing
- Update ERA5 model coordinates to reflect changes in support of HRRR
- Re-work the HRRR weather model to use herbie (https://github.com/blaylockbk/Herbie) for weather model access. HRRR conus and Alaska validation periods are respectively 2016-7-15 and 2018-7-13 onwards.
- minor bug fixes and unit test updates
- add log file write location as a top-level command-line option and within Python as a user-specified option
- account for grid spacing impact on bounding box before downloading weather model
- update the GUNW test to account for change in grid spacing on affine transform
- add CLI for the old processDelayFiles script and rename to raiderCombine
- Fix gridding bug in accessing HRRR-AK
- misc clean-up
- Specify unbuffered python output in the docker entrypoint script using
python -um RAiDER.cli ...
whose__main__.py
is the desired entrypoint. - For the GUNW workflow uses azimuth time interpolation using ISCE3 geo2rdr (see here).
- Updates
interpolate_time
options to:'none'
(formerlyFalse
),'center_time'
(formerlyTrue
anddefault
), andazimuth_time_grid
(not implemented previously)
- Updates
- Series of bug-fixes/compatibility updates with stats class:
- Inconsistent definition of index IDs, which leads to key errors as so when querying the grid space for valid data points
- Turn off default behavior of plotting minor ticks on colorbars, which translates to unreadable plots especially when scientific notation is involved
- Assign valid geotrans to output tif files used for replotting/dedup.
- Properly load existing grids for replotting runs. Before the program crashed as single bands were incorrectly being read as cubes.
- Update in pandas not backwards compatible with original conditional logic. Specifically, conditions like
(not self.df['Date'].dt.is_leap_year)
replaced with(self.df['Date'].dt.is_leap_year is False)
- add unit tests for the hydro and two pieces of wet equation
- bump bottom/top height of user requested levels by ~1mm during ray tracing to ensure interpolation works
- ensure directories for storage are written
- fix bug in writing delays for station files
- Force lat/lon/hgt to float32 so that they line up correctly in stitching
- Add two stage buffer;
- first pad user bounding box such that a 3D cube is generated that at min covers user area of interest.
- then if ray tracing is used, pad the downloaded model in look direction. Assumes look angle is fixed increases with latitude.
- Update and convert user given AOI to weather model projection (except for HRRR)
- Clean up error messagse, skip date if temporal interpolation fails
- Update valid range for ERA5 (current date - 3 months) & ERA5T
- Temporal interpolation of delays if the requested datetime is more than _THRESHOLD_SECONDS away from the closest weather model available time and
interpolate_time = True
(default behavior) - Add assert statement to raise error if the delay cube for each SAR date in a GUNW IFG is not written
- Verify some constants / equations and remove the comments questioning them
- Relocate the time resolution of wmodels to one spot
- Skip test_scenario_3 until a new golden dataset is created
- Update environment with scipy version minimum and requiring pybind11 (the latter for Apple ARM64 with rosetta2)
- For GUNW entrypoint and associated workflow, update json metadata when bucket argument is provided to include
weather_model
key with value being a list.- A GUNW is downloaded from a bucket prefix with netcdf, json, and png whose name is the <GUNW_ID>. We download the json and update it to be consistent with ASF DAAC schema (link: https://github.com/asfadmin/grfn-ingest/blob/test/verify/src/metadata_schema.json)
- For the GUNW workflow:
- Updated GUNW workflow to expose input arguments (usually passed through command line options) within the python function for testing
- Include integration test of HRRR for GUNW workflow
- Test the json write (do not test s3 upload/download) in that it conforms to the DAAC ingest schema correctly - we add a weather model field to the metadata in this workflow
- Removed comments in GUNW test suite that were left during previous development
- If a bucket is provided and the GUNWs reference or secondary scenes are not in the valid range, we do nothing - this is to ensure that GUNWs can still be delivered to the DAAC without painful operator (i.e. person submitting to the hyp3 API) book-keeping
RAiDER v0.4.2
New/Updated Features
calcDelaysGUNW
allows processing with any supported weather model as listed inRAiDER.models.allowed.ALLOWED_MODELS
.- Removed NCMR removed from supported model list till re-tested
credentials
looks for weather model API credentials RC_file hidden file, and creates it if it does not exists- Isolate ISCE3 imports to only those functions that need it.
- Small bugfixes and updates to docstrings