distlink-python
An unofficial, source-level Python port of the DISTLINK C++ library for computing the minimum orbit intersection distance (MOID) and orbital linking coefficients. The public API retains the C++ names to make examples and results straightforward to compare.
This port is maintained independently and is not represented as an official release by the original DISTLINK authors.
Installation
After the first PyPI release:
python -m pip install distlink-python
The distribution is named distlink-python; the import name is distlink.
To install the current development version directly from GitHub:
python -m pip install git+https://github.com/troyrock/distlink-python.git
The implementation uses only the Python standard library and supports Python 3.10 and later.
Quick start
from distlink import COrbitData, MOID_fast, detect_suitable_options
earth = COrbitData(1.00000011, 0.01671022, 0.0, 1.796767, -0.196535)
asteroid = COrbitData(1.4583, 0.2226, 0.05814, 2.20611, 3.56154)
max_root_error, min_root_error, _ = detect_suitable_options()
result = MOID_fast(earth, asteroid, max_root_error, min_root_error)
print(result.distance, result.good)
Angles are in radians. Distance results use the same unit as the supplied
semimajor axes. Python float corresponds to the C++ double
instantiation.
Input and numerical behavior
Orbital elements and numerical options must be finite. Eccentricity must be
nonnegative, and exactly parabolic orbits (e == 1) are rejected. A nonzero
semimajor axis is canonicalized to positive for an ellipse and negative for a
hyperbola. Invalid inputs raise ValueError.
MOID_fast is deterministic and supports circular first orbits directly. It
automatically exchanges the pair when only the first orbit is circular and
uses the exact two-circle solution when both are circular. For other results
marked unreliable, retrying in the opposite order remains reasonable before
using MOID_direct_search as the fallback.
The direct scanner uses a full anomaly range for coplanar elliptic orbits. It
rejects a coplanar hyperbolic pair because no finite scan interval can in
general bound both unbounded branches; use MOID_fast for that case.
Verification against C++
The standard-library test suite compiles a fresh C++20 command-line oracle and compares Python results with it:
python -m unittest discover -s tests -v
The release CI pins the oracle to
troyrock/distlink-cpp@58c1c29.
For a local checkout, place distlink-python and distlink-cpp beside one
another, as they are in the development workspace.
Provenance and references
This code is a direct Python translation of DISTLINK by Roman V. Baluev and
Denis V. Mikryukov. The original project is distributed at
SourceForge; the maintained
C++20 oracle used for this port is available at
troyrock/distlink-cpp.
The underlying algorithms are described in:
- R. V. Baluev and D. V. Mikryukov, “Fast error-controlling MOID computation for confocal elliptic orbits,” Astronomy and Computing 27 (2019), 11–22, doi:10.1016/j.ascom.2019.02.005.
- R. V. Baluev, “Fast error-safe MOID computation involving hyperbolic orbits,” Astronomy and Computing 34 (2021), 100440, doi:10.1016/j.ascom.2020.100440.
License
The original C++ work and this Python translation are distributed under the
MIT License. The original authors' copyright and permission notice are
preserved in LICENSE and in the translated source.
Metadata
Release files for distlink-python 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| distlink_python-0.2.0.tar.gz | 23.7 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| distlink_python-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 40.5 kB
Release files / distlink_python-0.2.0.tar.gz
| Download URL | distlink_python-0.2.0.tar.gz |
|---|---|
| Size | 23.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3e3d406ab3e3b9e5452aeb516dac5bb829246573ab38aae02b992bfa50b0d9c2
|
|
BLAKE2b-256 checksum How to use checksums |
a4a74f7759ec0ab58fba0197ec7641a581265a6ea020499ad3a068d4c9d27a70
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 7, 2026.
Transparency logRelease files / distlink_python-0.2.0-py3-none-any.whl
| Download URL | distlink_python-0.2.0-py3-none-any.whl |
|---|---|
| Size | 16.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b98443cede2a0a1bbed0e7c5eb08abcf44b860e51cfeab0d2b440fc1553bb92b
|
|
BLAKE2b-256 checksum How to use checksums |
2bb441032e304c639ba429fd9142a422cae3200d86e26df0ad6a6dbc61bbd776
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 7, 2026.
Transparency logSecurity for distlink-python 0.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
All 2 files in this release have been uploaded with provenance metadata.
Attestation for distlink_python-0.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 Sep 7, 2026.
Transparency logA 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.