Skip to main content

atlantes-cpd

Online changepoint detection for AIS tracks. A changepoint marks where a track should be split into a new subpath, which lets downstream inference run only when a vessel's behavior may have changed. The detector is served over gRPC as atlanteschangepoint.ChangepointService.

The detector (atlantes_cpd.changepoint_detector) can also be called in-process: pip install atlantes-cpd installs only numpy and scipy. The gRPC service needs the serve extra (pip install 'atlantes-cpd[serve]'), and validate.py needs the validate extra.

This is a standalone package. It does not import atlantes and has its own dependencies, tests, Dockerfile, and CI workflow (.github/workflows/cpd.yml).

Develop

cd cpd
python -m venv venv
venv/bin/pip install -e '.[dev]'
venv/bin/pytest tests --ignore=tests/integration/serve

The detector integration tests read three AIS track CSVs from tests/data/ (or $CPD_TEST_DATA_DIR); they skip when the files are absent. The tracks are licensed and must not be committed; tests/data/*.csv is gitignored.

Run the service

docker compose up --build

Configuration comes from environment variables:

Variable Default Purpose
CPD_ADDRESS 0.0.0.0 Address the server binds
CPD_PORT 5206 Port the server binds

With the service running, CPD_ADDRESS=127.0.0.1 venv/bin/pytest tests/integration/serve exercises it end to end.

Tuning

Detection thresholds live in src/atlantes_cpd/constants.py.

Regenerating the gRPC code

See src/atlantes_cpd/serve/README.md.

Release to PyPI

The package publishes to PyPI as atlantes-cpd through trusted publishing; no API token is involved.

The repo has a single version, in the VERSION file at the repo root. cpd/VERSION is a symlink to it, and pyproject.toml reads it. A v<version> tag releases the whole repo, and atlantes-cpd is one of the artifacts.

  1. Set VERSION and merge it.
  2. Create a GitHub release with the tag v<version> (for example v1.1.0) and publish it. Drafts and pre-releases don't trigger the workflow.
  3. .github/workflows/publish_cpd.yml checks that the tag matches VERSION, builds the sdist and wheel, and uploads them from the pypi environment.

Metadata

Release files for atlantes-cpd 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for atlantes-cpd 1.2.0
File Size Uploaded Provenance Actions
atlantes_cpd-1.2.0.tar.gz 16.0 kB With provenance Details for atlantes_cpd-1.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for atlantes-cpd 1.2.0
File Interpreter ABI Platform Actions
atlantes_cpd-1.2.0-py3-none-any.whl Python 3 none any Details for atlantes_cpd-1.2.0-py3-none-any.whl

Total release size: 32.8 kB

Release files / atlantes_cpd-1.2.0.tar.gz

Download URL atlantes_cpd-1.2.0.tar.gz
Size 16.0 kB
Tags Source
SHA-256 checksum
How to use checksums
4e251d4f35940c4914c1e68fc55db13a66e12e0f7cfa36c27e2d329caacdd24a
BLAKE2b-256 checksum
How to use checksums
da306a74bc3a0bf50893e618d751edd88205b814af064f0eb5c398ba6a6ffa1a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Release files / atlantes_cpd-1.2.0-py3-none-any.whl

Download URL atlantes_cpd-1.2.0-py3-none-any.whl
Size 16.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fed1aa2f634c772575dc19497dfe4fb84520958dfcced88d38274ccc268e9cf1
BLAKE2b-256 checksum
How to use checksums
dab010163489f32594d3d6cb302637bea235a6a08ea15f1dbcb7bbda733a002c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

Security for atlantes-cpd 1.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for atlantes_cpd-1.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page