Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
00f80dd
Add first crude (but working...) migration to TAP for specific objects
talister Aug 8, 2026
22e5c72
Allow selection of ssObject vs diaObject. Convert numpy types to nati…
talister Aug 13, 2026
096cf04
Add baseline tests for AlerceDataService pre-TAP-migration
talister Aug 13, 2026
f6bcb72
Route LSST general/classifier ALeRCE queries through TAP
talister Aug 13, 2026
8fe355b
Move AlerceForm.get_classifiers() from REST to TAP
talister Aug 13, 2026
8dd10ea
Fix broken canary tests in TestMPCExplorerDataServiceCanary
talister Aug 14, 2026
3da0219
Show LSST classifier fields without a form resubmit
talister Aug 14, 2026
095c516
Wire LSST diaObject classifier queries through TAP probability join
talister Aug 20, 2026
2a3a0ad
Support open-ended lastmjd lower bound in TAP object/classifier queries
talister Aug 20, 2026
caa6a20
Ingest LSST photometry from ALeRCE light curves
talister Sep 23, 2026
22e42e0
Create LSST ssObjects as non-sidereal targets from MPC orbits
talister Sep 23, 2026
f787caa
Validate LSST object IDs before interpolating into ADQL
talister Sep 23, 2026
82e5290
Link ALeRCE results to the ALeRCE Explorer
talister Sep 23, 2026
886ca5c
Add max results and sort order to ALeRCE queries
talister Sep 23, 2026
d548b69
Add LSST max detection time span filter for asteroid candidates
talister Sep 23, 2026
7fc6937
Add MPC designation alias to LSST ssObject targets
talister Sep 23, 2026
1f493b1
Fix ALeRCE object ID lookups
talister Sep 23, 2026
a71f421
Look up LSST asteroids by MPC designation
talister Sep 23, 2026
3a143bd
Handle ALeRCE TAP failures without crashing pages
talister Sep 23, 2026
3ad038b
Show the class in LSST classifier search results
talister Sep 23, 2026
ae95321
Declare pyvo as a direct dependency
talister Sep 23, 2026
c8ed96f
Fix crash creating LSST targets from ALeRCE results
talister Sep 23, 2026
13cb2e5
Find ALeRCE objects for targets through their aliases
talister Sep 23, 2026
b562cb5
Add MPC number, name and secondary designations as asteroid aliases
talister Sep 23, 2026
91aebd6
Keep existing ALeRCE photometry when a re-query revises uncertainties
talister Sep 25, 2026
20a654f
Document the ALeRCE data service's ZTF and LSST support
talister Sep 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions docs/data_services/alerce.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
ALeRCE: ZTF and LSST
--------------------

The ALeRCE data service queries the `ALeRCE <https://alerce.online/>`_ broker for objects from
both ZTF and the Rubin Observatory's LSST. Choose the survey with the **Survey** field on the
query form.

How ALeRCE is queried
*********************

* **ZTF** searches use the ALeRCE REST API through the ``alerce`` Python client, as before.
* **LSST** searches, and the classifier lists for both surveys, use ALeRCE's
`TAP service <https://tap.alerce.online/tap>`_ through ``pyvo``. The REST API can list LSST
objects, but it cannot yet filter them by classifier or list the LSST classifiers, and asteroid
(ssObject) searches need the MPC orbits that are only available through TAP.
* **Light curves** for both surveys come from the REST API.

If the TAP service is unavailable, the query form still loads without the classifier fields, and
LSST searches report an error instead of failing the page.

Searching for LSST objects
**************************

With **Survey** set to LSST, choose an **LSST Object Type**:

``diaObject``
A static-sky transient or variable, for example a supernova candidate.

``ssObject``
A known Solar System object, linked by the MPC to an orbit.

The **Object ID** field takes a diaObjectId, an ssObjectId, or an asteroid designation such as
``2010 WX64``. A designation is looked up in ALeRCE's copy of the MPC orbits, which takes about
a second. Without an Object ID, the cone search, first and last detection MJD, and number of
detections fields filter the search, as they do for ZTF. There are also three LSST-specific
options:

* **Classifiers** filter diaObjects by class and minimum probability, for example ``SN`` from
``stamp_classifier_rubin_beta``. ssObjects are not offered here, because ALeRCE assigns every
known ssObject the asteroid class with probability 1 rather than classifying it.
* **Max. Detection Time Span (days)** limits the time between the first and last detection.
Together with the stamp classifier's asteroid class, a span of less than a day finds candidate
new moving objects that are not yet linked to an ssObject.
* **Max. Results**, **Sort By** and **Sort Order** control the size and order of the results.
When you filter by classifier, the limit applies to each classifier separately, and results
are sorted by probability by default.

Each result links to the object's page on the ALeRCE Explorer.

Creating targets
****************

* A **diaObject** becomes a sidereal target named by its diaObjectId, at ALeRCE's mean position.
* An **ssObject** becomes a non-sidereal target named by its ssObjectId, with orbital elements
taken from its MPC orbit. Bound orbits use the ``MPC_MINOR_PLANET`` scheme; unbound ones use
``MPC_COMET``. The target's aliases include its provisional designation and, where the MPC has
assigned them, its permanent number, name and any secondary designations. That way you can find
it under whichever name you know.

Photometry
**********

LSST light curves report difference-image PSF fluxes in nJy. These are converted to AB
magnitudes, with a zero point of 31.4, and their times are converted from TAI to UTC. Detections
with zero or negative difference flux have no magnitude and are skipped. LSST photometry is
recorded with the telescope ``Rubin`` and the instrument ``LSSTCam``.

Updating the data for a target again leaves the photometry already stored unchanged, even if ALeRCE
has since revised a measurement's uncertainty.

Updating targets from other sources
***********************************

A target doesn't have to come from ALeRCE for ALeRCE to update its data. The data service finds
the ALeRCE object from the target's name and aliases, in this order:

#. A name that is already a ZTF object ID or an LSST diaObjectId/ssObjectId.
#. A TNS name (e.g. ``SN 2025abc``), resolved to its ZTF or LSST internal name through TNS.
This needs the TNS data service to be configured; otherwise TNS names are skipped.
#. An MPC designation (e.g. ``2010 WX64``), resolved to its LSST ssObjectId.

This means, for example, that an asteroid target created from the MPC can pick up its LSST
photometry.
3 changes: 3 additions & 0 deletions docs/data_services/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ Data Services
:hidden:

Add a data service <create_dataservice>
ALeRCE: ZTF and LSST <alerce>
Available data services <../api/tom_dataservices/data_services>
Data service views <../api/tom_dataservices/views>

Expand All @@ -20,4 +21,6 @@ A TOM Toolkit Data Service Module contains the logic for querying a remote broke

:doc:`Data Service Modules <../api/tom_dataservices/data_services>` - Take a look at the supported Data Services.

:doc:`ALeRCE: ZTF and LSST <alerce>` - Search ALeRCE for ZTF and LSST objects, including LSST asteroids, and ingest their light curves.

:doc:`Data Service Views <../api/tom_dataservices/views>` - Familiarize yourself with the available Data Service Views.
2 changes: 1 addition & 1 deletion poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ dependencies = [
"importlib-resources >=6.4.5,<6.5.0",
"django-tasks (>=0.6.1,<0.7.0)",
"alerce >=2.3.1,<3.0",
"pyvo >=1.5,<2",
]

[tool.poetry]
Expand Down
Loading
Loading