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.4"
adam_assist = "=0.4.0-rc.6"
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, collision, and orbit-determination workload builders. 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 the complete 35-workload grid 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.0rc6-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.0rc6-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.0rc6-cp313-cp313-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

adam_assist-0.4.0rc6-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.0rc6-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.0rc6-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.0rc6-cp312-cp312-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

adam_assist-0.4.0rc6-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.0rc6-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.0rc6-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.0rc6-cp311-cp311-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

adam_assist-0.4.0rc6-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.0rc6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d38dd74b8c5ceb0ff4ce85f0708a3bceb9b42bf1e98b8771f9f97aaba2b26dc4
MD5 2306b10b60514e7a7d68c29d13c058d0
BLAKE2b-256 7e0633fbaf40f1ccfccaf7474a055dcfd4faacb2b2bac33db8f71882c01ac51c

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc6-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.0rc6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 29cfd84d39f550e20f06296eb3dc0c2a739fe6e73e129a1a4286ad41870f1ff8
MD5 6258cc182293b3132432376b9be55d7d
BLAKE2b-256 08fc24500e5b9a485c3a0f2c53cab9b6fdd411bb17ce2ac80cbdc382573f4705

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc6-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.0rc6-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc6-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6d2f5cf8d1385d5d78891d42d8ce462866748ff4acd90ad4f4f6b95775492f15
MD5 2d07f3ec6699fb52dcdddf2d9f96c3c5
BLAKE2b-256 31352d6f7120d30e61cd71edecdc7dfae4d432abb4fc8c633a07667f05e559c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc6-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.0rc6-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc6-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3aa1842883ecbe2bf29f580c203cf7e2000c37ca21fbdd5ad49700040f3085d4
MD5 bea98a3f860ad6501440fca0ca960c9a
BLAKE2b-256 71f3eac25ef1f024e27f6d45413f15044b07a97006340d9c5edde138f0e7739f

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc6-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.0rc6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 466b89fb2590b3ca6c0f3d51f240ce9785b99714b78039be43dd8ff42bd2d75d
MD5 c533f36febd7e37e441be9af66b6f4ea
BLAKE2b-256 9aeb39f06f1cf67ced28a6af9d0c0a0062aa4f7502fb741cbec6ac99b905f721

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc6-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.0rc6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 285452c29b30c460c91c7da2e523bb35c1777b6ef7ac49a42c223e31670a4c27
MD5 614669f6494c57c102c638e2741cf95a
BLAKE2b-256 094f393547bea686618049a88406d56ecb82608c505490054737b60e8ab3a736

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc6-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.0rc6-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 25a9accced161dc1d8bd4d08c34ff8b8f4505b9f48e936442e0af90d779f46b0
MD5 6afdf22c3c644f406db68abde494d34c
BLAKE2b-256 61ac8697c805069601ac89eb0b8a386303dc22c30288493bf1894332bd764d62

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc6-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.0rc6-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc6-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5327c7ea3115e66c4ceed6e2d1a749ed8ed835615d291c7dc1a44fe278ec09ac
MD5 69921bd78dc96423cb84c78da6bd6453
BLAKE2b-256 d8b3a0a2c1a2623c587c89a55ae9c68d48dbd9b08c176decf53b49d97530bc29

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc6-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.0rc6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 87094776ba621935ebbb6cda618674c5f69aa940ceb7f267626a548454c114e3
MD5 e732af6c406d4c796a2f5af616d8c800
BLAKE2b-256 94313586af916e21872784a8bc967ed9c798643e591a4478f0dc6ae9ba1ea2ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc6-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.0rc6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e51a60b4a50d9aec04ff7b40b34de7fd274720d8da96e09e68c77ff7bf6f0aa1
MD5 c5666f96ab0d84165e1365e665e4ea84
BLAKE2b-256 8652f9535a488b85c18cab5346ee9c4fc305f10d9af6a2a8ff63afe71d2d4c55

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc6-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.0rc6-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7f820f100f4d2316e5b563ccfd5bf1d3d62816f595e732cab2e671c70f232fef
MD5 6be9e1ca88c1586ff342b47e6f865a1c
BLAKE2b-256 8635d161011538658e6b84a64063c267f43b67766e5d7d2de84a5673c3970aa9

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc6-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.0rc6-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for adam_assist-0.4.0rc6-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 dbfb5325801dbbfaf0c3c1b5012e535aec1a6a1e8defe3e4858adc50425f3fbd
MD5 6c61b0552201105d391e0feba67a4b45
BLAKE2b-256 2d58c104388f6773091ef83b2ea553539b23d1038671ae0907ea4f70084d8048

See more details on using hashes here.

Provenance

The following attestation bundles were made for adam_assist-0.4.0rc6-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.0rc6 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