covair_verify
Verify a structure against a measured IR spectrum: verdict, band recall, and what is left unexplained.
Pass `path` whenever you have the spectrum file. The curve is baseline-corrected
and normalised the way covair_auto_analyze does it, and the verdict then requires
two things: that the structure's expected bands were found AND that the structure
accounts for the absorption actually measured. With neither a `path` nor peaks
there is nothing to verify against and the verdict is `no_evidence` -- not
`inconsistent`, which would assert evidence against the structure where none was
supplied. With peaks but no curve, `verdict_basis` reads `peak_recall_only` and
the verdict cannot reach `consistent`.
Do NOT read a verdict off `match_score`. It is the fraction of the CANDIDATE's own
expected bands that were found, so the denominator belongs to the candidate and a
structure predicting few bands scores high on any spectrum. Measured on a real
aspirin spectrum: hexane, which contains no oxygen, scores 1.00 where aspirin
scores 0.92, because all four of hexane's expected bands are C-H. Read `match_score`
with `n_expected_bands` beside it; `band_recall_verdict` shows what recall alone
would have concluded, and `verdict_note` says in words why the verdict differs.
Two measured limits. This blocks the "explains almost nothing" class, not wrong
structures in general -- nitrobenzene still reads `consistent` against an aspirin
spectrum. And on featureless input the unexplained-absorption test collapses onto
its chance level, so a broad candidate can pass on noise; check
`claimed_axis_fraction` in that case.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| smiles | Yes | ||
| api_key | No | ||
| tolerance_cm | No |
Output Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |