Skip to main content

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.5.7, <0.6.0"
adam_assist = "=0.4.1"

adam-assist 0.4.1 supports the stable Core 0.5 contract from 0.5.7 through future compatible 0.5.x releases. Breaking Core contracts require Core 0.6; release CI tests the same ASSIST wheel/crate with Core 0.5.7 and the current 0.5.8 line.

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

Metadata

Release files for adam-assist 0.4.1

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

Built distributions (wheels)

Table of built distributions (wheels) for adam-assist 0.4.1
File
adam_assist-0.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
adam_assist-0.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details
adam_assist-0.4.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
adam_assist-0.4.1-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details
adam_assist-0.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
adam_assist-0.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
adam_assist-0.4.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
adam_assist-0.4.1-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details
adam_assist-0.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
adam_assist-0.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details
adam_assist-0.4.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
adam_assist-0.4.1-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details

Total release size: 15.4 MB

Release files / adam_assist-0.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL adam_assist-0.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.6 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
97b3842e9f3e5acf296adc0d56282e91ecc3bb63c86a578bd329688ff1d3243c
BLAKE2b-256 checksum
How to use checksums
da5d1465a58e2ed0264bc2c1ec338e98fc70d011826937e55748d553ec6a6f63
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 Oct 6, 2026.

Transparency log

Release files / adam_assist-0.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL adam_assist-0.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.2 MB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
caee46316b699cf4ff052e23aadb2d15c4dd0443085da123a8e51417ab6a6984
BLAKE2b-256 checksum
How to use checksums
e9f6cae8d95d1aedf5993c67e9f212e485a270b11a97f6a5be410486c552da41
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 Oct 6, 2026.

Transparency log

Release files / adam_assist-0.4.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL adam_assist-0.4.1-cp313-cp313-macosx_11_0_arm64.whl
Size 1.2 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
54e353cc01a71c527e818a871d13a55970643b2794077810f651efd0ee3344eb
BLAKE2b-256 checksum
How to use checksums
21e9952dda6bcf9afd4c7d3d996ddcfe7f839007c3213ea51f6224f02661feb8
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 Oct 6, 2026.

Transparency log

Release files / adam_assist-0.4.1-cp313-cp313-macosx_10_12_x86_64.whl

Download URL adam_assist-0.4.1-cp313-cp313-macosx_10_12_x86_64.whl
Size 1.2 MB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
b68d907f4446e167e7c8f5de88717eaf2da53909e7d0ddf4e93175d81de71e2a
BLAKE2b-256 checksum
How to use checksums
bd06e2e548056d6fcb3377720189d42e9d07cc777a4347873b87cf9040de20a0
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 Oct 6, 2026.

Transparency log

Release files / adam_assist-0.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL adam_assist-0.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.6 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
4c5fec39edee7ebfe57c9f4a2824ef6b276413370d48f053a1c686bdd60cf1e6
BLAKE2b-256 checksum
How to use checksums
f7693030a16e4001b178a8b2843c6ea1e931d09c810f19ea6e5602288268123f
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 Oct 6, 2026.

Transparency log

Release files / adam_assist-0.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL adam_assist-0.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.2 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
725a49d920dabe58f7c2dac325b18c6c28641280f00763d245df75202278e5ab
BLAKE2b-256 checksum
How to use checksums
2ad8ce55179dd2929af880675009380015fe8804876633619b353e3a63825358
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 Oct 6, 2026.

Transparency log

Release files / adam_assist-0.4.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL adam_assist-0.4.1-cp312-cp312-macosx_11_0_arm64.whl
Size 1.2 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b4cb231a2ef3bbbcf672d5a10ace7637ddd1dd8995dd4895b1713358d4248acc
BLAKE2b-256 checksum
How to use checksums
e589bf040ee820e5d80fc1bb594f1b23a4c3212d3b64c94f2a793b7c7355426f
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 Oct 6, 2026.

Transparency log

Release files / adam_assist-0.4.1-cp312-cp312-macosx_10_12_x86_64.whl

Download URL adam_assist-0.4.1-cp312-cp312-macosx_10_12_x86_64.whl
Size 1.2 MB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
5e1600b00727c711f491f016eb422030e50943f8b0b40e15a0fcb833e4301dde
BLAKE2b-256 checksum
How to use checksums
df9f147d09bc64aeeb29aba215faed6af65e4282cfe4d9dbbc6aef1598d53a84
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 Oct 6, 2026.

Transparency log

Release files / adam_assist-0.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL adam_assist-0.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.6 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
a572e2fa1ac9171d5cf7d83a70861d922da10dda2847c653cb446438f2c3847c
BLAKE2b-256 checksum
How to use checksums
bfaf0c83be7d1833c11d636feb7928c5b2c52ad9def49c67b48096692b7ebafb
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 Oct 6, 2026.

Transparency log

Release files / adam_assist-0.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL adam_assist-0.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.2 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
3c9f0781224da4dcddf3b3d64e3a4082b040e63ed7a2fdda47cf95fd6de9be75
BLAKE2b-256 checksum
How to use checksums
bf0013c3edcf8b2e0f460d52f2d67c123f739ed4deeac21a91a638f586b42b90
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 Oct 6, 2026.

Transparency log

Release files / adam_assist-0.4.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL adam_assist-0.4.1-cp311-cp311-macosx_11_0_arm64.whl
Size 1.2 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
459e42b6b651f75104360e192622558042e6533046c5087f4f7f237dfda8a5e5
BLAKE2b-256 checksum
How to use checksums
4219c3b86cbf0e586a80b3a5ac93224d6f1cdedef5b0d4c31026741a5c97f74f
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 Oct 6, 2026.

Transparency log

Release files / adam_assist-0.4.1-cp311-cp311-macosx_10_12_x86_64.whl

Download URL adam_assist-0.4.1-cp311-cp311-macosx_10_12_x86_64.whl
Size 1.2 MB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
8900f3cff40a69998d16657cd14cf958b01aa1ec8a659927a5dc1251bbd9a93a
BLAKE2b-256 checksum
How to use checksums
f677890202c3358441241d030edf86fef92a9c9dc5c9ce0733dfd16f005ff478
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 Oct 6, 2026.

Transparency log
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