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 Distribution

pyxccd-0.1.0.tar.gz (3.8 MB view details)

Uploaded Source

Built Distributions

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

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

Uploaded CPython 3.13Windows x86-64

pyxccd-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.12Windows x86-64

pyxccd-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.11Windows x86-64

pyxccd-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.10Windows x86-64

pyxccd-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.9Windows x86-64

pyxccd-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.8Windows x86-64

pyxccd-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.4 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

File details

Details for the file pyxccd-0.1.0.tar.gz.

File metadata

  • Download URL: pyxccd-0.1.0.tar.gz
  • Upload date:
  • Size: 3.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pyxccd-0.1.0.tar.gz
Algorithm Hash digest
SHA256 00baad68918cedbeba4f82477e34d7e2dfcee9ed1b8a620a53de3cc9109c07f4
MD5 c169b799560e40f1817138c7d4ae36b6
BLAKE2b-256 da6462e1c30992af4a467712c5d86ff1f8ab9a0026531da80c7d07abee9082a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyxccd-0.1.0.tar.gz:

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.1.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pyxccd-0.1.0-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

Hashes for pyxccd-0.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 060bcdb47e2ce0871064942ad76474e4844420ed74aa0645ac9809e96e84a7cd
MD5 60811798fd4769358b4a8448135e0866
BLAKE2b-256 127578e423cc1803293a55ffcec831c0f3b2f6fbc7b129984fa5c497fd535b3e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyxccd-0.1.0-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.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyxccd-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b5dffb734c5df5eb484ca28d307db082320e2d59f20b1926bccd14b7cdd8544a
MD5 735bf857e473e8270b6029caf540a6d3
BLAKE2b-256 9b2f0f5070068ae4c079ae592150c577b8f391b8f502ca30edffdb1f70dfc1e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyxccd-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.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.1.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pyxccd-0.1.0-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

Hashes for pyxccd-0.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 478d3a7391722815d15c8172d3c37a7811aeded5d05fbd58a6fb688197769679
MD5 721a99fb026a2527050018b52f3f361c
BLAKE2b-256 625d27812b18e37c5110a227ed824c42bea7f2a355ce4f66125a9d83866f0310

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyxccd-0.1.0-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.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyxccd-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 16c0114e58a0d9b89ea39225802f5bbd371680f5eb1774fffe1c760938538661
MD5 1b0e750e6674bb3935b54ba75c402d9e
BLAKE2b-256 f1e2f2a96aaa42aa5c4e6bfce4df1f795e066140b6805c9a8e753255e7d20da1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyxccd-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.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.1.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pyxccd-0.1.0-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

Hashes for pyxccd-0.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8baabe55652e2d112be8b33eeda115541bc0417e033266fb6b874f98c69d2264
MD5 832517adbf1de7d2a3f21477fcaea24a
BLAKE2b-256 e5b705e9b4867bc6845f4bf9ba742c443f2c704c1377c5c09373deb321f71561

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyxccd-0.1.0-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.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyxccd-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 376d5a3a4d001b663fcb63fefa1373ea8086fef391cc7d0fd4d6e0741ae02397
MD5 0914a0a6ebea0ac9fa3909c268ed8c58
BLAKE2b-256 12bfc3b556f3097dafc2b95ce9e8a78fe4d09c36a14ccef87e655f8a49fbd9d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyxccd-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.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.1.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pyxccd-0.1.0-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

Hashes for pyxccd-0.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8706759796e3f8c2c957662fcd0252894a1f11a5f3d97fe349b5070d8991e10e
MD5 62422ab128d8b2a3b282797da429c25f
BLAKE2b-256 8c13405c1f42598037095f3f60e3d41c0c8958efb9f682772caccb0fe2ef0c1e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyxccd-0.1.0-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.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyxccd-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 075bb913e5b99b40a170d290f95d7ca5ed5b65c5513f3961c47ab0879b2bd289
MD5 18cdf6fa26e04b50e54cac4aec2ac4bd
BLAKE2b-256 9a9635ac7ef564a6420189d20f6fd9c1753d834b80cfd14cbdd9364794a5c560

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyxccd-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.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.1.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pyxccd-0.1.0-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.1.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b35970a985cb044995f13c5f0d43fa846a4cb7572be2a52d3f33aef8c36b3f55
MD5 c8ce1fb50760d0b5d5fa9135e9902c2a
BLAKE2b-256 914e7e60500d737ef02540375bcc4b6068c205f698bec48410d723514cef6a0d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyxccd-0.1.0-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.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyxccd-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 966a24344b7b9d1c9087ec9ec0ffba364e9b13672d15edb0ec4767edf0962cdb
MD5 9d2048269b7c112f3666400826493f90
BLAKE2b-256 e723051aa40a9d06de6a341aafaa8607b2e74b5db9439a13550ac8533a2ea6b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyxccd-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.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.1.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: pyxccd-0.1.0-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.1.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 101c778d49ec27f93de6369837500c68b719e2acf4877cca389d337956b66532
MD5 ae5b570032807b78c0c3b493cf00b7b5
BLAKE2b-256 9f9fce135fce0a26c139d33f9ffba2fa2875bd10c67b881461bd33faed93a478

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyxccd-0.1.0-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.

File details

Details for the file pyxccd-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyxccd-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7f10aff637f4b75461072c0119940b4f4db7cdb88ff4c130de8bb1cb2d91336c
MD5 b02827b54b86910c1ee67d7b384a4782
BLAKE2b-256 e8afa0ac0579c5bdff81472ff36c208bfca350eb780621edcfcc1e393c41d82f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyxccd-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.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