Skip to main content

A PYthon library for basic and eXtended COntinuous Change Detection algorithms

Project description

PYXCCD

GithubActions Pypi Downloads ReadTheDocs

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:

  1. Near real-time monitoring: This package provides the unique S-CCD algorithm to recursively update model coefficients and detect changes;

  2. 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;

  3. 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;

  4. Using dataset other than Landsat: pyxccd supports the use of any band combination from any sensor (such as Sentinel-2, modis);

  5. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyxccd-0.0.5.dev0-cp313-cp313-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.13Windows x86-64

pyxccd-0.0.5.dev0-cp312-cp312-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.12Windows x86-64

pyxccd-0.0.5.dev0-cp311-cp311-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.11Windows x86-64

pyxccd-0.0.5.dev0-cp310-cp310-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10Windows x86-64

pyxccd-0.0.5.dev0-cp39-cp39-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.9Windows x86-64

pyxccd-0.0.5.dev0-cp38-cp38-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.8Windows x86-64

File details

Details for the file pyxccd-0.0.5.dev0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for pyxccd-0.0.5.dev0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a4c1874d05b694cb8138d9420b1d37302a2b51a82a6c83fa3722c66b6002e5f8
MD5 46e128cb472b3bcb2c38f1ac2af01208
BLAKE2b-256 d13bffb6916585078c3de3791537eee90e2a9c5fcd5c22c2bc6075fb933ad370

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyxccd-0.0.5.dev0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pyxccd-0.0.5.dev0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c6b03395de1efe26253d335c985a6d0ec02134fd6fbe9ea7fd488e87ad9cd760
MD5 bc0427f4bd69147d324fe3203626eb85
BLAKE2b-256 e4d74aab5dbf05a34f5e03118dc0f7ee1ea1106fa996ce277fedfaa66b92e1d1

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyxccd-0.0.5.dev0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pyxccd-0.0.5.dev0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 71858612fb205df60fd94ad4383fb926ea1558c3c73a184fa55a417704709e6d
MD5 a123eb76c980e8d91f52ecde4412ab03
BLAKE2b-256 9d0cd738e81b90eb7f6f3ce58986f3b27150598e0a050ef5e6305297e7802892

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyxccd-0.0.5.dev0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for pyxccd-0.0.5.dev0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 512956cb025c7930823fe04735e51ec2f342a832309e53318cd4cce41a993700
MD5 fd0967b4ce4ed79fcad21b54b12dbf7e
BLAKE2b-256 72b24be5cc9931ae97350d3f8a81f3b5285be4f4960e4ad9a77fbed831d593d8

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for pyxccd-0.0.5.dev0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 dabc42f8ec3d427c05ba22a1d4072c6431df9620683f48b73b209eff64e4ba35
MD5 547418567b031830d4c81ac30d78aa6d
BLAKE2b-256 e731c83afd204902ecc3c2b0da28321f15006e92b6e1f75aedf7de528bacac09

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for pyxccd-0.0.5.dev0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 2c65ce83a79b85e09512ec131eb4c45b4417dc851f255fe91f405307cf4e74f0
MD5 1babe0c8632319d8c7a670359b55eecf
BLAKE2b-256 d931bb5043a5e1cd74a07b04eed22a2021994374244dccc2919ecf524d6f48ee

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page