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.0.6.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.0.6-cp313-cp313-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.8Windows x86-64

pyxccd-0.0.6-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.0.6.tar.gz.

File metadata

  • Download URL: pyxccd-0.0.6.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.0.6.tar.gz
Algorithm Hash digest
SHA256 b163fcad9cab503be25cb08738290e6c88482a8567c71de855fe311b7d212c37
MD5 db442d5636840f7a72013a2ed64d3750
BLAKE2b-256 18c7b80207d1081fd3af20eeebdb7363ce9e3e5c87622ee414e84ed5750458fb

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyxccd-0.0.6-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.0.6-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 37a5da5f4fb39811567ea1238d0310d9be950e4c3926214446f48f1abdfbe653
MD5 4fd1b3ecd4ba5065024219cd1df82b06
BLAKE2b-256 485126b03a98fc0845267602dc2fe52616b9d61476034d3f3b0f7724d6fbe67b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyxccd-0.0.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e2225043e763c7b077b9211947c8ab7dd871c2fcf87761b09da88d58f3530150
MD5 5d71d170e16f80de49c7e5d1567bb406
BLAKE2b-256 7286900086597d822f1f9e2e3fad275bba4af2ad51987a7bedf596a9240b20a5

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyxccd-0.0.6-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.0.6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 87a0dc3fe213fe0095251765732e2ccc7e0ce4726ba6244399ad0b14cbc6a2a7
MD5 934e71d803c1a9d7c95510165932db1a
BLAKE2b-256 f35b9ffd7a9809389f22952d35dc968e2275f8975f0bbe5577fc3eaa7972fd29

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyxccd-0.0.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 76d8886c0ccf299cd533a23db32aec15008f79ededb98d5ae6fed1e34144b789
MD5 014ea6f20cdba6c5389be611bfeb17c5
BLAKE2b-256 78dbfb83ea29a108a667040bd861022cc325fe4c52c1db34fc59c2c190973c9c

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyxccd-0.0.6-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.0.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 30b2811c7d60469be469123897f5a6649d4a8c28c05a6a933c11f78bf7c31907
MD5 5ebbd3a4a3bf67a034cc1ea11520fdd8
BLAKE2b-256 6114e314d9f6d6cd708213dfcb3e6e45c5cd4dcd7903690c524cba6611501f47

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyxccd-0.0.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 17fec14de771c444e373a3d190260c487d2b98c5510f3433e0b81130c7f82c07
MD5 99c661e9f88889625ed78cf5eb86778b
BLAKE2b-256 61ebddd1ddbbb70b5abf2ab9c00f3ff9c8a44ad25bdcf10ab9613de4d81e378b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyxccd-0.0.6-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.0.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 93860d4c826b0fed31706d689fa495c2b844652a112b24f9d1a35dc4bf8da495
MD5 2a52725f8b2f5768bf7f1b1fe9836168
BLAKE2b-256 e45d2306edaffb4af00bc856300d3d49b8fe7a5edfe6ceb3645b5fe133de336e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyxccd-0.0.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6fe1e721f14ee1049686ab654f74dfc12e7a8be719c99130947d40c626fe34c3
MD5 1f7397f8bf47ed6037fe22a9ece40dc2
BLAKE2b-256 139dcd463b21ef16b7470f2e33d5a53986adc1910c7620d75adb495bdcb35368

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyxccd-0.0.6-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.6-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 375c4ac36962f376043b2fdd5dcf457a7f696463138900af74ee35cf174712fc
MD5 60e0cf4f541f4566f776fa02ae755169
BLAKE2b-256 d22eec7b83faf7a38fa1d1469e25944547cc9bdbf1e35cf5df20ca638fe1910f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyxccd-0.0.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6d9aced70261e67b6f8b6301b661583c6d3e0a05f2f48f44f312c54cb7fb839c
MD5 312801455692a65a3235cd247146624b
BLAKE2b-256 4cfae903a8bc98a5519453baf4cf3aabd192f2d3fc654256237c937de46caf7b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyxccd-0.0.6-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.6-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 25baab2544e0d8536194f7d0f29e305507a3ced0980590c788927c30be151439
MD5 613428e54725d810ff359a2b519f0fdb
BLAKE2b-256 2ae20c004b770a62d4363d333cb37748c55496bc6d18f4a73923d36584a4cfc0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyxccd-0.0.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 345a6188e88d14c3a09bb219cde07e3c33b315746bbb053401aea262e474c56a
MD5 96a01cabdc2b9ad4f606e08154f4002d
BLAKE2b-256 46fe8d02deb7b5fda089aca9121c90e1a78a8ad0b6d5e71db4cc591a674e278e

See more details on using hashes here.

Provenance

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