Skip to main content

JPL TOM Dataservice Module

This module adds JPL Scout support to the TOM Toolkit. Using this module TOMs can query Scout NEO Candidate data.

tom_jpl provides the following features to the TOM Toolkit:

  1. A way to query the JPL Scout service (by providing a TOM Toolkit DataService called ScoutDataService) for all current targets or a specific target. The service and associated form allows optionally applying cuts/filters on the parameters, which is not supported in the Scout API. For single object queries, this also retrieves the orbital elements, allowing non-sidereal Target creation.

  2. Mechanisms to store state and history: the Scout service provides no means to access past computations or previous versions of the target when it is updated with additional observations. tom_jpl provides a ScoutDetail model to store Scout-specific quantities that don't fit into Target, ScoutDetailHistory to track changes in parameters values and a target-detail tab and admin tools to view this.

Installation

Install the module into your TOM environment:

pip install tom-jpl

Include the app in your INSTALLED_APPS in your TOM's settings.py:

INSTALLED_APPS = [
    ...
    'tom_jpl',
]

Usage

The workflow is illustrated in the figure below:

Life of a Scout NEO candidate in a TOM: ingested via rundataquery, refreshed and retired by updatescout, then resolved to an IAU designation or to none.

Normal use consists of:

  1. Using the Scout Query Form to define desired cuts (and optionally saving the query for later re-use). Navigate to Data Services → Scout in the top navbar of your TOM to bring up the form: Screenshot of the Scout Query Form with some of the Advanced fields visible and then hitting the Run button (tick the Save Query to save the current set of parameters for later re-use e.g. 3. below)

  2. This will result in a Query Results table being displayed: Screenshot of the Scout Query Results page Targets which have been ticked in the left-most column will have Targets created when the Create Targets button is pressed.

  3. Using the built and saved query from above to keep things up to date. Saved queries are listed under Data Services → Saved Queries, or can be retrieved and viewed from the command line:

    python manage.py listqueries
    

    Then ingest the matching candidates and keep them up to date:

    python manage.py rundataquery <query_id>
    python manage.py updatescout
    

    The two updatescout phases have different natural cadences: reconciliation tracks the Scout roster, which changes hourly, while the MPC's Previous-NEOCP outcome page holds months of departures, so a daily check is plenty (and is kinder to the MPC's servers). From cron, run them as two entries:

    17 * * * *  python manage.py updatescout --skip-designations
    47 4 * * *  python manage.py updatescout --skip-reconcile
    

    Note: rundataquery catches its own failures and logs them rather than raising, so a failed run exits 0 and prints 'Finished querying targets' only on success. This should be borne in mind if running from e.g. a cron job, in that silent failures won't trip a non-zero exit check.

Metadata

Release files for tom-jpl 0.3.0

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

Source distribution (sdist)

Source distribution for tom-jpl 0.3.0
File Size Uploaded
tom_jpl-0.3.0.tar.gz 58.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tom-jpl 0.3.0
File Interpreter ABI Platform
tom_jpl-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 127.9 kB

Release files / tom_jpl-0.3.0.tar.gz

Download URL tom_jpl-0.3.0.tar.gz
Size 58.4 kB
Tags Source
SHA-256 checksum
How to use checksums
085fd36f496ac7c1ac1b18b2d8b550d5a6cc12d52e3437e74f1c3a5084c89919
BLAKE2b-256 checksum
How to use checksums
50bac8c752b2f17ca3bb84b4a89e4cec5aef20c74a79ac7328c3cfb438029d39
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.0.1 CPython/3.12.8

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 10, 2026.

Transparency log

Release files / tom_jpl-0.3.0-py3-none-any.whl

Download URL tom_jpl-0.3.0-py3-none-any.whl
Size 69.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5b726fb9a7044ca421bc0c4d142be73e442e824f563db8f6aaabbc537a882326
BLAKE2b-256 checksum
How to use checksums
6c1a2db0b698c5cce145830273df8d6c528e039cf8a049eafcc8f86072179d7f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.0.1 CPython/3.12.8

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 10, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.0

2 release 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