Open conjunction assessment: CCSDS CDM parsing, collision probability (Foster/Chan/Max-Pc), SGP4 screening, and risk triage — pure Python.
Project description
kessler-toolkit
Open conjunction assessment for Python: parse CCSDS Conjunction Data Messages, compute collision probability three honest ways, screen a satellite against a catalogue, and triage the results — no MATLAB license required.
Extracted from KESSLER, where the same code powers a live dashboard over the public Space-Track feed.
pip install kessler-toolkit
What's inside
| Module | Purpose |
|---|---|
cdm_parser |
CCSDS 508.0-B-1 KVN CDMs (incl. RTN covariance) and Space-Track cdm_public JSON → typed Cdm |
collision_probability |
Foster 2-D numerical Pc, Chan analytic series (cross-check), covariance-free Max-Pc bound |
propagation |
SGP4 wrapper (TEME), close-approach refinement to sub-second TCA, ground tracks |
screening |
Catalogue screening: altitude sieve → coarse scan → refined TCA + RTN miss components |
risk_engine |
Operator-community risk classes (1e-4 / 1e-5 / 1e-7), urgency scoring, recommended actions |
Quick start
from kessler_toolkit import parse_cdm_kvn, compute_pc
cdm = parse_cdm_kvn(open("conjunction.cdm").read())
result = compute_pc(
miss_m=cdm.miss_distance_m,
hbr_m=20.0,
r_rel_m=cdm.rel_position_rtn_m,
v_rel_ms=cdm.rel_velocity_rtn_ms,
cov1_m2=cdm.sat1.cov_rtn_m2,
cov2_m2=cdm.sat2.cov_rtn_m2,
pc_reported=cdm.pc_reported,
)
print(result.value, result.method, result.pc_type)
# e.g. 2.19e-04 foster-2d computed — with Chan cross-check in result.cross_check
Every result carries pc_type — "computed" (full covariance), "reported"
(source value), or "max" (conservative upper bound) — so downstream code can
never mistake a triage bound for a measurement.
Validated against the closed-form isotropic solution (<0.1% error) and Foster/Chan cross-agreement; screening results are triage-grade (SGP4/GP accuracy limits apply) — not a substitute for operator ephemerides.
Apache-2.0. Orbital data used with KESSLER courtesy of Space-Track.org and CelesTrak.
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 kessler_toolkit-0.1.1.tar.gz.
File metadata
- Download URL: kessler_toolkit-0.1.1.tar.gz
- Upload date:
- Size: 15.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32439fba1efcf6eb2dc1afae311d4896aa0d6765227e8a11b253864e606667cd
|
|
| MD5 |
64be8d1d3f0e8fe8fc1080c22f0a53d1
|
|
| BLAKE2b-256 |
e0d3800fd122a78d6f0db681199a679bf6f875191892adc14c083edd58bc6a3b
|
File details
Details for the file kessler_toolkit-0.1.1-py3-none-any.whl.
File metadata
- Download URL: kessler_toolkit-0.1.1-py3-none-any.whl
- Upload date:
- Size: 16.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1fedf908933074fa3b7a5c6a32dbdee1427664e4051d26d732d4883b48bb365d
|
|
| MD5 |
7364a6372e6b486044c76cdd7c46e93e
|
|
| BLAKE2b-256 |
f1cb673ede16664458ac87789fd197c0c3c57859631dacdbf13f21c430ece0bd
|