All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to PEP 440 and uses Semantic Versioning.
- Resolves #71 - median drift in cusum was incorrect.
- Function to organize burst time series into windowed data
- Removed view/permute in favor of more readable einops to ensure self-documenting reshaping, transposing, etc
- Notebook's curation of data for burst application.
- Proper model validation for
mahalanobis.pypydantic models - removes warnings during test time. - Update environment for gpu to utilize regex for cuda compatibility.
- Fixed asf search for notebook examples:
- filters out dates with single polarization
- allows users to select which dual polarization to use (
HH+HVvs.VV+VH)
- Baseline curation matches dist-s1.
- Add models for v0 and v1 that use 32 x 32 input size.
- Dynamically update
input_size(i.e. the size of the input image) for inference using the corresponding model attribute. - Expose fill value of model inference (via
fill_value) that was reminant of old logit transformation and is now explicitly set and can be modified
- Latest weights for
transformer_anniversary_trained_optimized_fineandtransformer_anniversary_trained_optimizedthe v1 datasets.
- New models from v1 dataset.
- Load model config and obtain maximum sequence length (context length) of model.
- Decouple loading of config and weights.
- Changelog action
- tests for external model loading
- Nodata interpolation for interior datapoints (i.e. within pixels collected during acquisition) which are np.nan including:
- bilinear - an iterative bilinear-like interpolation
- nearest - nearest neighbor interpolation
- dependabot
- Several models for easier testing
- notebooks that can do both immediate and anniversary selection to establish baseline
- Removes logit transformation from normal param estimation
- 4 new models for testing
estimate_normal_params_of_logits-->estimate_normal_params- Reorganization of transformer metric code into loading model(s), inference, torch model, and metric.
- Updated notebook so we only download necessary arrays.
- Notebook for multiple burst analysis (will add back later)
- Version/Changelog
- Added optional compilation for
CPUviatorch.compileandGPUviatorch_tensorrt.compile. - 'external' option for model_token parameter of load_transformer_model.
- And the associated cfg and wts file paths.
- Fixed order of tensor operations and moving data to 'device' to reduce overhead.
- Test to ensure
cpuand None interface work correctly for transformer metric.
- The
deviceargument for transformer needs to be correctly passed throughout the transformer estimation process and test suite.
- Ability to control
devicefor transformer model
- Ensures environment.yml and environment_gpu.yml are up to date with the latest dependencies.
- Requires rasterio>=1.4.0 for merging to be consistent.
- Bug in
reproject_arrays_to_target_crs.
- Tests for merge categorical arrays using inputs that are in different crs.
- Pyproject.toml kept dependencies for mpire and dill (those are now removed)
- Pyproject.toml and environment.yml to require python 3.12+
- Pydantic model_config to allow arbitrary types (update for v2)
mpiredependency
- Test for despeckling of cropped data
- Fixed default keyword argument for
merge_categorical_arraysfrommode(not possible with rasterio) tomin.
- Added
rio_toolsfor merging float arrays (including burst data such as the computed metric)- can be used to average over overlapping areas
- average using the distance from exterior mask (mask that touches one of the four edges)
- exterior mask can also be dilated to avoid problematic boundary pixels
- categorical merging of data
- Added
nd_toolsfor getting exterior mask and distance from such mask (wrappers aroundscipy.ndimage) - A notebook for applying the transformer metric to a large area of interest
- Removed torch.compile from transformer model loading
- Fixed transformer to ensure last pre-image always has correct index
- Arxiv link to README
- Installation instructions
tqdmdescription for despeckling- Allow user to disable
tqdmfor despeckle
- Renamed
load_trained_transformer_modeltoload_transformer_model - Renamed inputs to reflect (possible) usage with other polarizations:
vv->copolandvh->crosspol. The APIs don't change, just the variable name inputs.
- Fixed ASF calls in landslide transformer notebook - more data is becoming available so static slices do not work
- Consistent linting of DIST-S1 repositories
- Expose estimation of the normal parameters of the logit images with high/low memory usage.
- Added transformer test based on usage of different strategies of computation.
- Uploaded latest model
- Data directory structure
- Only support python 3.12+
- Fixes Changelog format to ensure proper automated release
- Fixes secrets in workflows for proper automated release
This was an initial release of the library.
This is a python library for calculating a variety of generic disturbance metrics from input OPERA RTC-S1 time-series including a transformer-based metric from Hardiman-Mostow et al., 2024. Generic land disturbances refer to any land disturbances observable with OPERA RTC-S1 including land-use changes, natural disasters, deforestation, etc. A disturbance metric is a per-pixel function that quantifies via a radiometric or statistical measures such generic land disturbances between a set of baseline images (pre-images) and a new acquisition (post-image). This library is specific to the dual-polarization OPERA RTC-S1 data and will likely need to be modified for other SAR data. The user is expected to provide/curate the co-registered baseline imagery (pre-images) and the recent acquisition (post-image) for the computation of the distmetrics.
Provides an interface for the following metrics:
- transformer - this is metric that uses spatiotemporal context to approximate a per-pixel probability of baseline images. This that was proposed in Hardiman-Mostow, 2024.
- logratio - this is not a non-negative function just a difference of pre and post images in db, but we transform into a metric by only inspecting the decrease in a given polarization
- Mahalanobis 1d and 2d - based on sample statistics computed in patches around each pixel.
- CuSum - based on the actual residuals and on a normalized time-series assuming normality.