A PYthon library for basic and eXtended COntinuous Change Detection algorithms
Project description
PYXCCD
A PYthon library for basic and eXtended COntinuous Change Detection
Author: Su Ye (remotesensingsuy@gmail.com)
The Continuous Change Detection and Classification (CCDC) algorithm has been popular for processing satellite-based time series datasets, particularly for Landsat-based datasets. As a CCDC user, you may already be familiar with the existing CCDC tools such as pyccd and gee ccdc.
Wait.. so why does the pyxccd package still exist?
We developed pyxccd mainly for the below purposes:
Near real-time monitoring: This package provides the unique S-CCD algorithm to recursively update model coefficients and detect changes;
The latest version of CCDC (COLD): The COLD algorithm has the highest breakpoint detection accuracy than the ever, and has been verified with Zhe’s MATLAB version;
Large-scale time-series processing in the desktop environment: the core of pyxccd was coded in C language with the superior computing efficiency and small memory usage;
Using dataset other than Landsat: pyxccd supports the use of any band combination from any sensor (such as Sentinel-2, modis);
Decomposing time-series signals to unveil inter-annual variation: S-CCD allows continuously outputting trend and seasonal signal components as “states”, allowing detecting inter-segment variations such as yearly phenological shifts
1. Installation
pip install pyxccd
Note: it only supports windows and linux system so far. Please contact the author if you wish to install it in the macOS system.
2. Using pyxccd for pixel-based processing (more see jupyter examples)
COLD:
from pyxccd import cold_detect
cold_result = cold_detect(dates, blues, greens, reds, nirs, swir1s, swir2s, thermals, qas)
COLD algorithm for any combination of band inputs from any sensor:
from pyxccd import cold_detect_flex
# input a user-defined array instead of multiple lists
cold_result = cold_detect_flex(dates, np.stack((band1, band2, band3), axis=1), qas, lambda=20,tmask_b1=1, tmask_b2=2)
S-CCD:
# require offline processing for the first time
from pyxccd import sccd_detect, sccd_update
sccd_pack = sccd_detect(dates, blues, greens, reds, nirs, swir1s, swir2s, qas)
# then use sccd_pack to do recursive and short-memory NRT update
sccd_pack_new = sccd_update(sccd_pack, dates, blues, greens, reds, nirs, swir1s, swir2s, qas)
S-CCD for outputting continuous seasonal and trend states:
# open state output (state_ensemble) by setting state_intervaldays as a non-zero value
sccd_result, state_ensemble = sccd_detect(dates, blues, greens, reds, nirs, swir1s, swir2s, qas, state_intervaldays=1)
3. Documentation
API documents: readthedocs
Tutorial: under development
4. Citations
If you make use of the algorithms in this repo (or to read more about them), please cite (/see) the relevant publications from the following list:
[S-CCD] Ye, S., Rogan, J., Zhu, Z., & Eastman, J. R. (2021). A near-real-time approach for monitoring forest disturbance using Landsat time series: Stochastic continuous change detection. Remote Sensing of Environment, 252, 112167.
[COLD] Zhu, Z., Zhang, J., Yang, Z., Aljaddani, A. H., Cohen, W. B., Qiu, S., & Zhou, C. (2020). Continuous monitoring of land disturbance based on Landsat time series. Remote Sensing of Environment, 238, 111116.
The recent applications of S-CCD could be found in CONUS Land Watcher
Q&A
Q1: Has pyxccd been verified with original Matlab codes?
Re: yes, multiple rounds of verification have been done. Comparison based on two testing tiles shows that pyxccd and Matlab version have smaller than <2% differences for breakpoint detection and <2% differences for harmonic coefficients; the accuracy of pyxccd was also tested against the same reference dataset used in the original COLD paper (Zhu et al., 2020), and pyxccd reached the same accuracy (27% omission and 28% commission) showing that the discrepancy doesn’t hurt accuracy. The primary source for the discrepancy is mainly from the rounding: MATLAB uses float64 precision, while pyxccd chose float32 to save the run-time computing memory and boost efficiency.
Q2: how much time for production of a tile-based disturbance map (5000*5000 pixels) using pyxccd?
Re: I tested it in UCONN HPC environment (200 EPYC7452 cores): for processing a 40-year Landsat ARD tile (1982-2021), the stacking typically takes 15 mins; per-pixel COLD processing costs averagely 1 hour, per-pixel S-CCD processing costs averagely 0.5 hour; exporting maps needs 7 mins.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyxccd-0.0.5.dev0-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: pyxccd-0.0.5.dev0-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4c1874d05b694cb8138d9420b1d37302a2b51a82a6c83fa3722c66b6002e5f8
|
|
| MD5 |
46e128cb472b3bcb2c38f1ac2af01208
|
|
| BLAKE2b-256 |
d13bffb6916585078c3de3791537eee90e2a9c5fcd5c22c2bc6075fb933ad370
|
Provenance
The following attestation bundles were made for pyxccd-0.0.5.dev0-cp313-cp313-win_amd64.whl:
Publisher:
main.yml on Remote-Sensing-of-Land-Resource-Lab/pyxccd
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyxccd-0.0.5.dev0-cp313-cp313-win_amd64.whl -
Subject digest:
a4c1874d05b694cb8138d9420b1d37302a2b51a82a6c83fa3722c66b6002e5f8 - Sigstore transparency entry: 219256500
- Sigstore integration time:
-
Permalink:
Remote-Sensing-of-Land-Resource-Lab/pyxccd@4c43b03068279e40ea46b403d063788ff0b66176 -
Branch / Tag:
refs/tags/0.0.4 - Owner: https://github.com/Remote-Sensing-of-Land-Resource-Lab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
main.yml@4c43b03068279e40ea46b403d063788ff0b66176 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyxccd-0.0.5.dev0-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: pyxccd-0.0.5.dev0-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6b03395de1efe26253d335c985a6d0ec02134fd6fbe9ea7fd488e87ad9cd760
|
|
| MD5 |
bc0427f4bd69147d324fe3203626eb85
|
|
| BLAKE2b-256 |
e4d74aab5dbf05a34f5e03118dc0f7ee1ea1106fa996ce277fedfaa66b92e1d1
|
Provenance
The following attestation bundles were made for pyxccd-0.0.5.dev0-cp312-cp312-win_amd64.whl:
Publisher:
main.yml on Remote-Sensing-of-Land-Resource-Lab/pyxccd
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyxccd-0.0.5.dev0-cp312-cp312-win_amd64.whl -
Subject digest:
c6b03395de1efe26253d335c985a6d0ec02134fd6fbe9ea7fd488e87ad9cd760 - Sigstore transparency entry: 219256510
- Sigstore integration time:
-
Permalink:
Remote-Sensing-of-Land-Resource-Lab/pyxccd@4c43b03068279e40ea46b403d063788ff0b66176 -
Branch / Tag:
refs/tags/0.0.4 - Owner: https://github.com/Remote-Sensing-of-Land-Resource-Lab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
main.yml@4c43b03068279e40ea46b403d063788ff0b66176 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyxccd-0.0.5.dev0-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: pyxccd-0.0.5.dev0-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
71858612fb205df60fd94ad4383fb926ea1558c3c73a184fa55a417704709e6d
|
|
| MD5 |
a123eb76c980e8d91f52ecde4412ab03
|
|
| BLAKE2b-256 |
9d0cd738e81b90eb7f6f3ce58986f3b27150598e0a050ef5e6305297e7802892
|
Provenance
The following attestation bundles were made for pyxccd-0.0.5.dev0-cp311-cp311-win_amd64.whl:
Publisher:
main.yml on Remote-Sensing-of-Land-Resource-Lab/pyxccd
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyxccd-0.0.5.dev0-cp311-cp311-win_amd64.whl -
Subject digest:
71858612fb205df60fd94ad4383fb926ea1558c3c73a184fa55a417704709e6d - Sigstore transparency entry: 219256569
- Sigstore integration time:
-
Permalink:
Remote-Sensing-of-Land-Resource-Lab/pyxccd@4c43b03068279e40ea46b403d063788ff0b66176 -
Branch / Tag:
refs/tags/0.0.4 - Owner: https://github.com/Remote-Sensing-of-Land-Resource-Lab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
main.yml@4c43b03068279e40ea46b403d063788ff0b66176 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyxccd-0.0.5.dev0-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: pyxccd-0.0.5.dev0-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
512956cb025c7930823fe04735e51ec2f342a832309e53318cd4cce41a993700
|
|
| MD5 |
fd0967b4ce4ed79fcad21b54b12dbf7e
|
|
| BLAKE2b-256 |
72b24be5cc9931ae97350d3f8a81f3b5285be4f4960e4ad9a77fbed831d593d8
|
Provenance
The following attestation bundles were made for pyxccd-0.0.5.dev0-cp310-cp310-win_amd64.whl:
Publisher:
main.yml on Remote-Sensing-of-Land-Resource-Lab/pyxccd
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyxccd-0.0.5.dev0-cp310-cp310-win_amd64.whl -
Subject digest:
512956cb025c7930823fe04735e51ec2f342a832309e53318cd4cce41a993700 - Sigstore transparency entry: 219256563
- Sigstore integration time:
-
Permalink:
Remote-Sensing-of-Land-Resource-Lab/pyxccd@4c43b03068279e40ea46b403d063788ff0b66176 -
Branch / Tag:
refs/tags/0.0.4 - Owner: https://github.com/Remote-Sensing-of-Land-Resource-Lab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
main.yml@4c43b03068279e40ea46b403d063788ff0b66176 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyxccd-0.0.5.dev0-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: pyxccd-0.0.5.dev0-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dabc42f8ec3d427c05ba22a1d4072c6431df9620683f48b73b209eff64e4ba35
|
|
| MD5 |
547418567b031830d4c81ac30d78aa6d
|
|
| BLAKE2b-256 |
e731c83afd204902ecc3c2b0da28321f15006e92b6e1f75aedf7de528bacac09
|
Provenance
The following attestation bundles were made for pyxccd-0.0.5.dev0-cp39-cp39-win_amd64.whl:
Publisher:
main.yml on Remote-Sensing-of-Land-Resource-Lab/pyxccd
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyxccd-0.0.5.dev0-cp39-cp39-win_amd64.whl -
Subject digest:
dabc42f8ec3d427c05ba22a1d4072c6431df9620683f48b73b209eff64e4ba35 - Sigstore transparency entry: 219256532
- Sigstore integration time:
-
Permalink:
Remote-Sensing-of-Land-Resource-Lab/pyxccd@4c43b03068279e40ea46b403d063788ff0b66176 -
Branch / Tag:
refs/tags/0.0.4 - Owner: https://github.com/Remote-Sensing-of-Land-Resource-Lab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
main.yml@4c43b03068279e40ea46b403d063788ff0b66176 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyxccd-0.0.5.dev0-cp38-cp38-win_amd64.whl.
File metadata
- Download URL: pyxccd-0.0.5.dev0-cp38-cp38-win_amd64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.8, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c65ce83a79b85e09512ec131eb4c45b4417dc851f255fe91f405307cf4e74f0
|
|
| MD5 |
1babe0c8632319d8c7a670359b55eecf
|
|
| BLAKE2b-256 |
d931bb5043a5e1cd74a07b04eed22a2021994374244dccc2919ecf524d6f48ee
|
Provenance
The following attestation bundles were made for pyxccd-0.0.5.dev0-cp38-cp38-win_amd64.whl:
Publisher:
main.yml on Remote-Sensing-of-Land-Resource-Lab/pyxccd
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyxccd-0.0.5.dev0-cp38-cp38-win_amd64.whl -
Subject digest:
2c65ce83a79b85e09512ec131eb4c45b4417dc851f255fe91f405307cf4e74f0 - Sigstore transparency entry: 219256481
- Sigstore integration time:
-
Permalink:
Remote-Sensing-of-Land-Resource-Lab/pyxccd@4c43b03068279e40ea46b403d063788ff0b66176 -
Branch / Tag:
refs/tags/0.0.4 - Owner: https://github.com/Remote-Sensing-of-Land-Resource-Lab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
main.yml@4c43b03068279e40ea46b403d063788ff0b66176 -
Trigger Event:
push
-
Statement type: