Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

adam-assist

PyPI - Version PyPI - Python Version


Table of Contents

Overview

adam-assist is a pluggable propagator class for the adam-core package that uses ASSIST for propagating orbits.

Installation

pip install adam-assist

Native wheels support CPython 3.11-3.13 on manylinux 2.17+ x86-64/AArch64 and macOS Apple silicon/Intel. Windows is currently unsupported because libassist-sys 1.2.1 wraps upstream ASSIST code that requires POSIX sys/mman.h memory mapping; no Windows port is bundled. Musllinux is also unsupported.

Pure Rust

Rust-only consumers can use the same backend from crates.io without Python:

[dependencies]
adam_core = "=0.1.0-rc.5"
adam_assist = "=0.4.0-rc.7"
use adam_assist::{AssistPropagator, AssistResult};

fn main() -> AssistResult<()> {
    let propagator = AssistPropagator::from_default_kernels()?;
    let _integrator = propagator.integrator();
    Ok(())
}

The default resolver loads DE440 and SB441-n16 through adam-core's environment, installed-package, cache, and checksummed-fetch policy. Explicit/offline users can call AssistPropagator::from_paths and can disable default resolver support with default-features = false.

Usage

Propagating Orbits

Here we initialize a set of adam_core.orbit.Orbit objects from the JPL Small Bodies Database and propagate them using the Rust-backed ASSISTPropagator class. You can manually initialize the orbits as well.

from adam_core.orbits.query.sbdb import query_sbdb
from adam_core.time import Timestamp
from adam_assist import ASSISTPropagator

# Query the JPL Small Bodies Database for a set of orbits
sbdb_orbits = query_sbdb(["2020 AV2", "A919 FB", "1993 SB"])
times = Timestamp.from_mjd([60000, 60365, 60730], scale="tdb")


propagator = ASSISTPropagator()

propagated = propagator.propagate_orbits(sbdb_orbits, times)

Of course you can define your own orbits as well.

import pyarrow as pa
from adam_core.orbits import Orbit
from adam_core.coordinates import CartesianCoordinates, Origin
from adam_core.time import Timestamp
from adam_assist import ASSISTPropagator

# Define an orbit
orbits = Orbit.from_kwargs(
  orbit_id=["1", "2", "3"],
  coordinates=CartesianCoordinates.from_kwargs(
    # use realistic cartesian coords in AU and AU/day
    x=[-1.0, 0.0, 1.0],
    y=[-1.0, 0.0, 1.0],
    z=[-1.0, 0.0, 1.0],
    vx=[-0.1, 0.0, 0.1],
    vy=[-0.1, 0.0, 0.1],
    vz=[-0.1, 0.0, 0.1],
    time=Timestamp.from_mjd([60000, 60365, 60730], scale="tdb"),
    origin=Origin.from_kwargs(code=pa.repeat("SUN", 3)),
    frame="eliptic"
  ),
)

propagator = ASSISTPropagator()

propagated = propagator.propagate_orbits(orbits)

Non-Gravitational Forces

Orbits whose non_gravitational_parameters carry Marsden-style A1/A2/A3 accelerations (au/d^2) are propagated with ASSIST's non-gravitational force. The g(r) law is selected by the ALN/NK/NM/NN/R0 columns: null constants mean the asteroid convention g(r) = (1 au / r)^2, and an explicit tuple (for example the standard Marsden comet law, or a custom shape such as 1I/'Oumuamua's) is applied simulation-wide. Batches mixing different g(r) tuples are automatically split into one simulation per force law, since ASSIST holds the constants per simulation rather than per particle.

Supported (regression-tested against JPL Horizons to tens–hundreds of metres over ±300 days): symmetric inverse-square asteroid solutions (e.g. 99942 Apophis), the standard comet Marsden law (e.g. C/2022 E3), and custom symmetric (ALN, NK, NM, NN, R0) tuples (e.g. 1I/'Oumuamua).

Not supported: the asymmetric-outgassing time offset DT (dropped with a warning by adam-core's importers — solutions that estimate DT, such as 67P or 81P, retain km-scale model error through perihelion and should not be treated as JPL-parity), thermophysical Yarkovsky (AMRAT/RHO) models, and estimated (rather than fixed) g(r) shape parameters. Non-finite A-values, partial constants tuples, and degenerate ALN <= 0 / R0 <= 0 values are rejected with a ValueError rather than silently altering the force.

Generating Ephemerides

ASSISTPropagator.generate_ephemeris performs propagation, light-time geometry, optional covariance sampling/collapse, aberration, and photometry in the Rust backend behind one public Python call. Local parallelism uses Rayon rather than adam-core's former Python/Ray composition.

from adam_core.orbits.query.sbdb import query_sbdb
from adam_core.time import Timestamp
from adam_core.observers import Observers
from adam_assist import ASSISTPropagator

# Query the JPL Small Bodies Database for a set of orbits
sbdb_orbits = query_sbdb(["2020 AV2", "A919 FB", "1993 SB"])
times = Timestamp.from_mjd([60000, 60365, 60730], scale="utc")
observers = Observers.from_code("399", times)
propagator = ASSISTPropagator()

ephemerides = propagator.generate_ephemeris(sbdb_orbits, observers)

Benchmarking

Run the complete current-only suite with:

pdm run benchmark-current

It reuses the existing propagation, nongrav, ephemeris/covariance, and collision workload builders, plus five provider-capability checks used by adam-core's public OD workflows. Orbit determination remains an adam-core product rather than a separate adam-assist surface. Results include current public Python timings, genuine Rust-owned std::time::Instant timings where available, public/native overhead, and exact workload shapes. It does not require a frozen Python environment or baseline timing cache, and all ASSIST workloads use max_processes=1. Use --quick for a smoke run or select, for example, --domains nongrav ephemeris covariance --lanes tiny small. Release CI runs 30 ASSIST product workloads plus the five Core-OD backend-capability checks, all with native timing required. After wheel acceptance, release candidates also run all 54 live JPL Horizons propagation and ephemeris accuracy cases.

The deterministic test suite uses reviewed, hash-pinned frozen outputs for all formerly two-runtime propagation, covariance, ephemeris, collision, typed mapping, and OD/Vallado parity cases. Normal pytest and the current benchmark suite do not import or launch the archived ASSIST oracle and never skip because a legacy virtual environment is absent.

Configuration

When initializing the ASSISTPropagator, you can configure several parameters that control the integration. These parameters are passed directly to REBOUND's IAS15 integrator. The IAS15 integrator is a high accuracy integrator that uses adaptive timestepping to maintain precision while optimizing performance.

  • min_dt: Minimum timestep for the integrator (default: 1e-12 days)
  • initial_dt: Initial timestep for the integrator (default: 0.001 days)
  • epsilon: Controls the adaptive timestep behavior (default: 1e-6)
  • adaptive_mode: Controls the adaptive timestep behavior (default: 1)

These parameters are passed directly to REBOUND's IAS15 integrator. The IAS15 integrator is a high accuracy integrator that uses adaptive timestepping to maintain precision while optimizing performance.

Example:

propagator = ASSISTPropagator(
  min_dt=1e-12,
  initial_dt=0.0001,
  epsilon=1e-6,
  adaptive_mode=1
)

When initializing the ASSISTPropagator, you can configure several parameters that control the integration. These parameters are passed directly to REBOUND's IAS15 integrator. The IAS15 integrator is a high accuracy integrator that uses adaptive timestepping to maintain precision while optimizing performance.

Default SPK Files

The asteroids SPK file sb441-n16.bsp contains the 16 largest asteroids in the solar system. They are listed here by number for reference:

1 Ceres 3 Juno 4 Vesta 7 Iris 10 Hygiea 15 Eunomia 16 Psyche 31 Euphrosyne 52 Europa 65 Cybele 70 Panopaea 87 Sylvia 88 Thisbe 107 Camilla 511 Davida 704 Interamnia

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

adam_assist-0.4.0rc7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

adam_assist-0.4.0rc7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

adam_assist-0.4.0rc7-cp313-cp313-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

adam_assist-0.4.0rc7-cp313-cp313-macosx_10_12_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

adam_assist-0.4.0rc7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

adam_assist-0.4.0rc7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

adam_assist-0.4.0rc7-cp312-cp312-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

adam_assist-0.4.0rc7-cp312-cp312-macosx_10_12_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

adam_assist-0.4.0rc7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

adam_assist-0.4.0rc7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

adam_assist-0.4.0rc7-cp311-cp311-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

adam_assist-0.4.0rc7-cp311-cp311-macosx_10_12_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

Details for the file adam_assist-0.4.0rc7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b869370c38401057709b13b79c305c756f68ee0fd9f9568f0dc229f0d93dc834
MD5 719ce84b8a9bf8ba8396327998e4090e
BLAKE2b-256 7f89f265e4759248c9927bacd6e657f1b8ce0c2596af096c5def703e25820eda

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on B612-Asteroid-Institute/adam-assist

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file adam_assist-0.4.0rc7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9283b65c494d5e0258f057e792225b845e09d7778b24241275eac4b8f963e241
MD5 c859f086857ca63f5bf6d199eb9d1150
BLAKE2b-256 947711c624bc12d0a421ea78bfca9458496c3053869612782a3a00819d66c264

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on B612-Asteroid-Institute/adam-assist

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file adam_assist-0.4.0rc7-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc7-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d1e9a578aa0b8fb3b0b3504de5968ac0751352cee4ae9e0c7d8f6a1e62d4f213
MD5 2c862cbd6b0e67297f944c01aaa1aacd
BLAKE2b-256 e5d97d791fdccf17f5093fba5225bf8087e57bac7e82de8276589976965ae68f

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc7-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on B612-Asteroid-Institute/adam-assist

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file adam_assist-0.4.0rc7-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc7-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e227fea3433ddcb937e8d0f10e334c8103ce13f89f8a36a0742385fe92483fce
MD5 4a966e18596dc7153780484e1b4fcb60
BLAKE2b-256 e17330c003755e3c95c4ea8eafc81c8677c47b11318c625af44c9e0cb6679d0d

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc7-cp313-cp313-macosx_10_12_x86_64.whl:

Publisher: publish.yml on B612-Asteroid-Institute/adam-assist

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file adam_assist-0.4.0rc7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3a20a1a868275fce2d9679a3950ef1bc86880a46b2edab025f967013975427b5
MD5 3654fca6b92248883b93024c660e33e9
BLAKE2b-256 87e1c8216306fbdd53cc68cb859b800c2101c64e0f5390d7608ba2a01b051643

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on B612-Asteroid-Institute/adam-assist

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file adam_assist-0.4.0rc7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 99a4ef95c3334bb75e9cd63cd654ce887e244c3a7bb566ec3c670c15c6e2d8d6
MD5 173f99ed7a9a00e87cc75966ea17b714
BLAKE2b-256 9152f91c9e79e5d6b7bb9edc81385529fb20c7c8f7458f913b6982ba310ccc15

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on B612-Asteroid-Institute/adam-assist

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file adam_assist-0.4.0rc7-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc7-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c6a8a0aaee8437a453969d5662cbd9e318c6348193cc5725773b65cd0246d160
MD5 99756279034910f8c918f3ac043c372b
BLAKE2b-256 e41bc719e46d91945c4a45866fb9a0fe0d813f45abc48c28f61b338ef0f511f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc7-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on B612-Asteroid-Institute/adam-assist

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file adam_assist-0.4.0rc7-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc7-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ccfddd54a1861cecf7560feeabf3ec572c77b99dd6fa4b507408655d667ea75e
MD5 a85426ffd5eb730c9559c562ac0c3a55
BLAKE2b-256 f1e10f19f151924008dc2a4ded8fec7c676f24faf16b6767bf885a6600ffe435

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc7-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: publish.yml on B612-Asteroid-Institute/adam-assist

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file adam_assist-0.4.0rc7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fe5e08903d2631430c0ea2e889179a6a49659fb28c76360ee71f6acc67a22d2d
MD5 c270d62e13b9fc9a2b0627c68a36e97b
BLAKE2b-256 0cc50f10f50d2a6ec245376865aa21974bacf1293511cfc6af6cd1e80e802429

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on B612-Asteroid-Institute/adam-assist

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file adam_assist-0.4.0rc7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b9acca5b7e6b413bcfd45617c7f6eccb2bd788c77975b78117f5e82c2819a442
MD5 bb3fcd90ef1109d0dfa1311bbb18a7cf
BLAKE2b-256 f64bccbcaddc8667efec4552cd36ae3408e269b2471693f33d594e67b401e78e

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on B612-Asteroid-Institute/adam-assist

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file adam_assist-0.4.0rc7-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc7-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2170f4bd7a18e20ef7a7a03bd8c2cf8de524cd9e1577920601012b27ae4dd598
MD5 23798c8ee5fe38a3b981295dbe1f0431
BLAKE2b-256 99feae555d004b6ac539634cba054f1db01aba7874110f67c9a708904d813ba2

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc7-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on B612-Asteroid-Institute/adam-assist

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file adam_assist-0.4.0rc7-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc7-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6bb686d7cd26c8c371d27b5b8fb3acaaa8e44f9d6a28fcaa652318913a865018
MD5 8b8282546c678dda6517473a234bc77d
BLAKE2b-256 a923c7afc7f0d8ad097ee5c5a96b42686ea4053533892205589a8509d53439ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc7-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: publish.yml on B612-Asteroid-Institute/adam-assist

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.4.0

12 files

This release

0.4.0rc7 This release

12 files

0.3.10

2 files

0.3.9

2 files

0.3.8

2 files

0.3.7

2 files

0.3.6

2 files

0.3.5

2 files

0.3.4

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.4

2 files

0.1.2

2 files

0.1.1

2 files

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