Python implementation of Continuous Change Detection
Project description
PyCCD - Python Continuous Change Detection
pyccd creates change segments from Landsat timeseries data
Using PyCCD
>>> import ccd
>>> results = ccd.detect(dates, blues, greens, reds, nirs, swir1s, swir2s, thermals, qas, prev_results)
>>>
>>> type(results)
<class 'dict'>
>>>
>>> results
{algorithm: 'pyccd:x.x.x',
processing_mask: [bool, bool, ...],
snow_prob: float,
water_prob: float,
cloud_prob: float,
change_models: [
{start_day: int,
end_day: int,
break_day: int,
observation_count: int,
change_probability: float,
curve_qa: int,
blue: {magnitude: float,
rmse: float,
coefficients: (float, float, ...),
intercept: float},
green: {magnitude: float,
rmse: float,
coefficients: (float, float, ...),
intercept: float},
red: {magnitude: float,
rmse: float,
coefficients: (float, float, ...),
intercept: float},
nir: {magnitude: float,
rmse: float,
coefficients: (float, float, ...),
intercept: float},
swir1: {magnitude: float,
rmse: float,
coefficients: (float, float, ...),
intercept: float},
swir2: {magnitude: float,
rmse: float,
coefficients: (float, float, ...),
intercept: float},
thermal: {magnitude: float,
rmse: float,
coefficients: (float, float, ...),
intercept: float}}
]
}
Default processing parameters can be overridden using a dictionary (see parameters.yaml for valid keys):
>>> import ccd
>>> params = {'QA_BITPACKED': False,
'QA_FILL': 255,
'QA_CLEAR': 0,
'QA_WATER': 1,
'QA_SHADOW': 2,
'QA_SNOW': 3,
'QA_CLOUD': 4}
>>> results = ccd.detect(dates, blues, greens, reds, nirs, swir1s, swir2s, thermals, qas, params=params)
Installing
System requirements (Ubuntu)
- python3-dev
- gfortran
- libopenblas-dev
- liblapack-dev
- graphviz
- python-virtualenv
System requirements (Centos)
- python3-devel
- gfortran
- blas-dev
- lapack-dev
- graphviz
- python-virtualenv
It's highly recommended to do all your development & testing in a virtual environment.
user@dev:/home/user/$ mkdir pyccd
user@dev:/home/user/$ cd pyccd
user@dev:/home/user/pyccd$ virtualenv -p python3 .venv
user@dev:/home/user/pyccd$ . .venv/bin/activate
(.venv) user@dev:/home/user/pyccd$
Install
$ pip install -e .[test,dev,docs,deploy,profile]
Testing
$ pytest
$ pytest --profile
$ pytest --profile-svg
# pytest-watch
$ ptw
Make targets
$ make build
$ make tests
$ make docs
$ make deploy
$ make profile
Profiling
Decorate the function to be profiled with @profile and
run make profile. Remove decorations before committing code.
Contributing
Before committing to this repository, run the following command.
git config --local commit.template .gitmessage
This will add the LCMAP commit template to git commit.
jira/lcmap-xxxx: Title
Description
Contributions are most welcome.
- Open an issue and discuss the change.
- Branch from major version and name it after the issue
- jira/lcmap-xxxx
- Write automated tests for your changes and make sure all tests pass.
- Update documentation in project.
- Submit pull request to the appropriate branch (e.g. 1,x)
Versions
PyCCD previously followed MAJOR.MINOR.PATCH.LABEL semantic versioning but has changed to date based semantic versioning, thus: YYYY.MM.DD[.HH.MM.SS][-label].
PyCCD's version is defined by the ccd/version.py/__version__ attribute.
References
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 Distribution
Built Distribution
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 lcmap-pyccd-2021.7.19.tar.gz.
File metadata
- Download URL: lcmap-pyccd-2021.7.19.tar.gz
- Upload date:
- Size: 32.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.8.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2fddb3421e62a530eb8530aaf22a52033cdc8b5f412cb6f453cce48bcfad02f2
|
|
| MD5 |
53b39329ba2cd286194e79a1d0ba2d0d
|
|
| BLAKE2b-256 |
eaa922c1c500b4e8e26b99655c22e53dfa58c3f11e844bfe123327f7559acc34
|
File details
Details for the file lcmap_pyccd-2021.7.19-py3-none-any.whl.
File metadata
- Download URL: lcmap_pyccd-2021.7.19-py3-none-any.whl
- Upload date:
- Size: 31.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.8.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
605230eaaeccc6d7273dc7d0675272e309819b58e70376e7f55a83dafc1fab41
|
|
| MD5 |
81da25c5c6e831d6b8a72c891555a1d5
|
|
| BLAKE2b-256 |
9e932ecbadaa8713491feb48d08014e29490e475bf4896e230bc5dac1e08146b
|