Reviewing verification JSON outputs on the command line with inspect_job.py¶
inspect_job.py is a command-line tool that lets you quickly see what information is stored in the *verify.json
files generated whenever you run code that integrates with LSST’s verification framework (lsst.verify).
It’s particularly useful when you want to see measurement values and don’t need a full report comparing measurements to metric specifications.
See also
See inspect_job.py for a complete reference of that script’s command-line interface.
Running inspect_job.py¶
inspect_job.py takes one or more verification framework JSON files as command-line arguments.
Since JSON files output by the verification framework generally have names that end with verify.json
, you can quickly inspect all available outputs by using a *verify.json
wildcard:
inspect_job.py *.verify.json
Interpreting the results¶
inspect_job.py prints a report for each file passed to it. An example report looks like this:
Common metadata:
ccdnum = 42
visit = 411657
object = Blind15A_26
date = 2015-02-19
instrument = DECAM
filter = g
Measurements:
ip_diffim.numSciSources = 1326.0 ct
ip_diffim.fracDiaSourcesToSciSources = 0.0385
ap_association.totalUnassociatedDiaObjects = 540.0 ct
ap_pipe.ApPipeTime = 63.1475 s ({'estimator': 'pipe.base.timeMethod'})
pipe_tasks.ProcessCcdTime = 24.3298 s ({'estimator': 'pipe.base.timeMethod'})
ip_isr.IsrTime = 0.9623 s ({'estimator': 'pipe.base.timeMethod'})
pipe_tasks.CharacterizeImageTime = 7.5473 s ({'estimator': 'pipe.base.timeMethod'})
pipe_tasks.CalibrateTime = 11.0519 s ({'estimator': 'pipe.base.timeMethod'})
pipe_tasks.ImageDifferenceTime = 37.5217 s ({'estimator': 'pipe.base.timeMethod'})
meas_algorithms.SourceDetectionTime = 1.0205 s ({'estimator': 'pipe.base.timeMethod'})
ip_diffim.DipoleFitTime = 1.9112 s ({'estimator': 'pipe.base.timeMethod'})
ap_association.AssociationTime = 0.6594 s ({'estimator': 'pipe.base.timeMethod'})
ap_association.numNewDiaObjects = 51.0 ct
ap_association.fracUpdatedDiaObjects = 0.0
ap_association.numUnassociatedDiaObjects = 0.0 ct
Each report starts with the job-level metadata in the file, formatted as one key-value pair per line.
Next, the report lists each measurement in the JSON file, including:
The metric’s fully-qualified name.
The measurement, including units if applicable.
Any additional metadata associated specifically with that measurement.
Going further¶
inspect_job.py provides easy access to measurements and metadata in the verification framework’s JSON output files. If you’re developing tasks that generic metric measurements, inspect_job.py is often enough.
However, if you need to generate a report that compares measurements against specifications, you can directly use the Job
and Report
Python APIs.
The SQR-019 technical note includes a demo of this method.