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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

File metadata

File hashes

Hashes for adam_assist-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ce30eea6b2180d482e88581a8319f42afaf87011dc9a84619a5ce6af73b3865d
MD5 f484ca7049f9bc35d575a88700e93ed4
BLAKE2b-256 02e5f53d80f5f759dbb5ab29c04a30268d01c1267641e11a6bbde18b88810cbc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for adam_assist-0.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 20d12497596853b6b6d30e882b20703624074f55e4a89a79a50ece59bb915f95
MD5 fcc971dfc9b078b0a46bfa16d2e392ff
BLAKE2b-256 c88efc4058ba0eeb57bbaae87fd9ea1d76469d895689925b5f8232dd9bcdd758

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for adam_assist-0.4.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c0b834894ca484dc8255b651bddf0423a916251ead6422b577a2c51d2c3c7d8d
MD5 d619523d5e0362e2332da25c19ae06e6
BLAKE2b-256 32817928f8e0a4fe7ac803acc6a17ee6fe3405557e08c7e29cae647eafde43e5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for adam_assist-0.4.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 882a7fe81a56c3414abb5d0c1155374676bf0545212bedfdd808635dd252cc1a
MD5 e638f7af55a9518cd672294c1427bfa0
BLAKE2b-256 1a7b93d90c2a235ee5b005e6b3c17a549bdd5b888b33b0c28fdb84b4da4ff23f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for adam_assist-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d3879778f0f8fc2620a80cff110a67a4535911f26942a4e953d9cc99a5eb8655
MD5 c09da197de6571883bbb1236fd3445cf
BLAKE2b-256 efaf03ed062536c45359065ede9949f12ecf59133eabbca169af724d8a4b7727

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for adam_assist-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f519cbcc2a80842a3302e22781dba4fccd95c2523d7c1c76ce2be8dde001b613
MD5 7e6b390962957dd293f7b9b494e88786
BLAKE2b-256 3c40d74ccf77ba348a9083ad8a3c2600b852b72572d228a1bf5c14afae191826

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for adam_assist-0.4.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 99cfa48f9dee86197c9f83ed23093297015746a40c1d49d5f19f614e753f5af5
MD5 56053203451d2aca6a53116551f29a21
BLAKE2b-256 61bb1d6561246b76f3922d4ed8e6364494d674a078bb61459e79cf09bdcf69f1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for adam_assist-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a1a9eb7602150aa00281083e3d9fac3e0474fc7feb2302f6d5e492deb9b6bf9a
MD5 1a691c6950d4d8bbf13f21dee9a5f8cc
BLAKE2b-256 3fea03f5df6251f7a08bad7b0b4c7d289cbc24182c114f53beb5f220e0ac5a27

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for adam_assist-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e531bb2d6b2358995de3fe4f06a44526f69c15cd246b27bd5fabdc012ea6f332
MD5 0e151b7a7e388ce5556481d59d2b472c
BLAKE2b-256 83cafec06921bbe1c30d4b6a8a8d44917c18280ceb2a26e8cae1b12435687684

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for adam_assist-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0b9054cc15691265bebaa0870f3adbc3c65287872c6d0d4a1c92c5c08bc6e5d8
MD5 d1bc14d5663873a07775e590570e57e0
BLAKE2b-256 26b89b46558200c101a26b1f0510b4695236077e2b285b5ae9e19e59cdd5f16f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for adam_assist-0.4.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 147347b9e8dd30a1245eed4418f50727582630183a1dbac018f83a38b1b49638
MD5 20ff4b8c0f6e05fb78e3e5353abb9a81
BLAKE2b-256 2687b6805e43d482f272f739ca71f70dbe44a105e5508ee48ab94d90d4aecb5a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for adam_assist-0.4.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 045f2fb3ac30c92714a4819829e269b5a8c1214172683d882784bb682ef246c8
MD5 4c6ea68fc7c86088d9e27a040634137b
BLAKE2b-256 0414b220fd51294cc65d2435b65ad67822cf9c9c85661d556d9eaec20b411115

See more details on using hashes here.

Provenance

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

This release

0.4.0 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