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_index=1, tmask_b2_index=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.1.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.1-cp313-cp313-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.13Windows x86-64

pyxccd-0.1.1-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.1-cp312-cp312-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.12Windows x86-64

pyxccd-0.1.1-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.1-cp311-cp311-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.11Windows x86-64

pyxccd-0.1.1-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.1-cp310-cp310-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10Windows x86-64

pyxccd-0.1.1-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.1-cp39-cp39-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.9Windows x86-64

pyxccd-0.1.1-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.1-cp38-cp38-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.8Windows x86-64

pyxccd-0.1.1-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.1.tar.gz.

File metadata

  • Download URL: pyxccd-0.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 8e3776c300849f647c7f4d6e54a5927f097ec25aecce51a3be5fbbc3e74c18d7
MD5 57e0138f3692a9cf52b1955958fc818f
BLAKE2b-256 2c71453e533ff84f9fdd8cd6852697c8556fcb79d63d5879dd50001bdc4bca12

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyxccd-0.1.1.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.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pyxccd-0.1.1-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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 cd45c6830744acb290d8599b2afd70405020c8be1bb1f63317881aaeabb18f2e
MD5 af0173d1b37fa782a8a580f0a5fce89a
BLAKE2b-256 06df9f1a8093710c185973a8244a4bc696318f3d3c12674547e4c28ec677e009

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyxccd-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ea87f911aa88b4a12de9538c4ed9a1d1990e261338e651be826ec7266e8e6e1e
MD5 4c723f441d2ca37e7229ff15b33a0b7e
BLAKE2b-256 fce7af4aebb39a5904d2ca59acfaec3fd37130a6be2fb85a15530ace21b41dff

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyxccd-0.1.1-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.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pyxccd-0.1.1-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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 3b52c9142504a977e6403143f357b173c900dec638e3f4e547e4bc66f0194924
MD5 0eb4066942f2c2aef45e55c1b8d2adc0
BLAKE2b-256 f6b9f157d76327acbd9b167fbc7442511f8f2770c54ce159bb7916431d35eee1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyxccd-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f54fecb6f2a5e085edacd64b3db05dd06ca4cd72499f0bc8bf9ea44d5de4b090
MD5 70478162a300b1ea920e75bf11941194
BLAKE2b-256 6b1bb0d1e9797753290d933574c5000fb3de21b924a77339384ae9ab6ca18712

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyxccd-0.1.1-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.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pyxccd-0.1.1-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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9515df5aa1d356a2c659fce9d5c851bdfc831182b68a5236e7e4973dfe455356
MD5 d71b7a2bf1ba51329cfc903cec0d74ec
BLAKE2b-256 a2689e38546b67402e925a8726dfe0194018f7c6ab09670dc2ca6cf3a34f23f0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyxccd-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 07cd5609cc99dd9debc77a15a0afda9b9961297f4c8c69b7f957229031c0c1ef
MD5 320e312f2374511b9991e44f4edf93f2
BLAKE2b-256 6bc4f075e5913606d6e24308d507a12606f72c72a670a632361c57b055848c0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyxccd-0.1.1-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.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pyxccd-0.1.1-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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1ed2a6a20790aeaf87d15fecf39420cfd205ccfd17ff018696670bc7eb217e3e
MD5 77cf7ec9548cec5a440c24fb2b87f641
BLAKE2b-256 1e2f3dc6ffec322db3544611ac663151474e60e186c243aa90e5b98b9ef6b777

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyxccd-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f50d99664772c16842924e4c28089948937f1c0cfd1a5b89a61fda056e9dd38c
MD5 e2520eef5279497c61bc8b95d14f87d6
BLAKE2b-256 e5965f5955d871db336bb80fd59eb2be3901f3ebfa3ea9dee06d474cdf5281f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyxccd-0.1.1-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.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pyxccd-0.1.1-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.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 1f9e741d5201717e71bf209a0972b661e70862b7932b7ae15a66e7303bae7434
MD5 892e5b99dd709cf13ca2e56c9f58f5c0
BLAKE2b-256 8269b4ae95e07d62bbf3f553b244540ac83d46cf1efb39c1985f03e7ad183091

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyxccd-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 37dcd9746132f8f6b746b32e43538ef22b45ce1f25577b8ed1f174d001976ee9
MD5 30e702ec58004b760b506a195b3742e8
BLAKE2b-256 2cd7610c59d453043f177f8cac83a8137cea6a8ae51e8bca259f4cabebc1d053

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyxccd-0.1.1-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.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: pyxccd-0.1.1-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.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 3c02d79e90dd3e412f83f741b0f7f1638b8bb0aa40feaf6744c0566f781e4484
MD5 2b5828f6138220491582a60d6510c43b
BLAKE2b-256 8b90c83b8a487fd4fd5212a23823cd066fac3980005ac5f82ac6361d7562098b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyxccd-0.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ad6ff9648c55b156bc4d30130f52c891042f8beb8982b255cc673c009a38e4d8
MD5 526090078c7dd070c2c472ccd5f08875
BLAKE2b-256 624984e762b50720cb8fa5a21ccb79c38afc9d0bf4b5bdeb61b378fc1249f13f

See more details on using hashes here.

Provenance

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