Prompt Processing Metrics#
The Prompt Processing pipeline publishes per-detector metrics to InfluxDB in the
lsst.prompt database. These include DiaSource counts, solar
system object associations, and image quality metrics for each processed visit.
The endpoints["pp"] client returned by get_clients() connects
to the relevant lsst.prompt InfluxDB database. The topics related to prompt
processing start with lsst.prompt.prod.
Querying prompt processing metrics directly#
Just like with any InfluxDb measurement, records can be queried directly. The primary indexes are on time, so querying records from a particular timespan generally works best. There are some additional “tags” which work like indexes for influx, but querying based on parameters outside of that set of tags is slow.
Generally prompt processing metrics are recorded per-detector. To fetch the records from a specific topic:
dia_det = endpoints["pp"].select_time_series(
"lsst.prompt.prod.numDiaSourcesGood",
["visit", "detector", "numAllDiaSources", "numGoodDiaSources", "run"],
t_start, t_end,
)
Querying for all DiaSources per visit#
diasource_visit_summaries() queries the three key prompt
processing topics — numDiaSourcesGood, numSsObjects, and
numDirectSsObjects — and returns an aggregated per-visit summary DataFrame:
from astropy.time import Time
from rubin_nights.pipelines_metrics import diasource_visit_summaries
t_start = Time("2025-10-24T12:00:00")
t_end = Time("2025-10-25T12:00:00")
alert_summary = diasource_visit_summaries(t_start, t_end, endpoints["pp"])
The returned DataFrame is indexed by visit_id and contains (among other values):
numAllDiaSources_sum/numAllDiaSources_median— sum and median across detectors.nDiaDetectors_count— number of detectors that produced DiaSource results.numSsObjects_sum/nSsDetectors_count— solar system alert associations.numDirectSsObjects_sum/nDSsDetectors_count— direct solar system associations.
Joining with visit data#
Merge the alert summary with ConsDB visit data on visit_id to combine observing
conditions with prompt processing outputs:
from rubin_nights.reference_values import SCIENCE_PROGRAMS
constraint = f"science_program in {SCIENCE_PROGRAMS}"
visits = endpoints["consdb_tap"].get_visits("lsstcam", t_start, t_end,
visit_constraint=constraint)
combined = visits.merge(alert_summary, left_on="visit_id", right_index=True, how="outer")
The combined table can be used to correlate image quality metrics (e.g., fwhm_geom,
cat_m5, clouds) or visit metadata (galactic_lat, ecliptic_lat)
with alert production rates across a night or across a longer
observing campaign.