Skip to content

Export tool-neutral ARC results and parser evidence - #917

Open
calvinp0 wants to merge 9 commits into
mainfrom
feature_arc_result_export_contract
Open

Export tool-neutral ARC results and parser evidence#917
calvinp0 wants to merge 9 commits into
mainfrom
feature_arc_result_export_contract

Conversation

@calvinp0

@calvinp0 calvinp0 commented Jul 20, 2026

Copy link
Copy Markdown
Member

What changed

Re-homes the ARC-owned result-production pieces from the historical TCKDB integration work onto clean ARC main, without bringing the TCKDB adapter back into ARC.

  • expands tool-neutral calculation, scan, thermo, correction, spin, and TS-path provenance in output.yml
  • adds Cartesian Hessian, rich IRC, GSM energy, constraint, and spin parsers
  • emits an atomic, versioned tckdb_evidence.json sidecar bound to output schema 1.1 by document ID
  • preserves and transfers queued xTB-GSM node evidence safely
  • delegates opt-in uploads to the standalone tckdb-arc package, with disabled/missing-package no-op behavior
  • keeps all TCKDB enum, indexing, nesting, and payload translation out of ARC

Why

The adapter is moving to its own repository, but ARC must continue to own parsing and publication of the scientific facts generated by ARC jobs. This creates that durable producer/consumer boundary without merging the old tckdb-imp branch wholesale.

Validation

  • 259 focused ARC tests passed (live external xTB execution excluded because binaries are unavailable locally)
  • standalone consumer parity: 491 passed, 3 skipped, 34 subtests
  • evidence/golden suites: 32 passed

@calvinp0
calvinp0 marked this pull request as ready for review July 20, 2026 15:14
Copilot AI review requested due to automatic review settings July 20, 2026 15:14

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Comment thread arc/parser/parser_test.py Fixed
Comment thread arc/parser/parser_test.py Fixed
Comment thread arc/parser/parser_test.py Fixed
Comment thread ARC.py Fixed
Comment thread arc/parser/adapters/gaussian.py Fixed
Comment thread arc/parser/adapters/qchem.py Fixed
Comment thread arc/tckdb_evidence_test.py Fixed
@codecov

codecov Bot commented Jul 20, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 64.05%. Comparing base (684967b) to head (fd0ea74).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #917      +/-   ##
==========================================
+ Coverage   63.54%   64.05%   +0.51%     
==========================================
  Files         114      115       +1     
  Lines       38363    39664    +1301     
  Branches    10033    10329     +296     
==========================================
+ Hits        24377    25406    +1029     
- Misses      11066    11241     +175     
- Partials     2920     3017      +97     
Flag Coverage Δ
functionaltests 64.05% <ø> (+0.51%) ⬆️
unittests 64.05% <ø> (+0.51%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 27 out of 27 changed files in this pull request and generated 3 comments.

Comment thread arc/parser/adapters/gaussian.py
Comment thread docs/output_yml_schema.md Outdated
Comment thread docs/output_yml_schema.md Outdated

@alongd alongd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this well-though of contribution! I left some minor comments

Comment thread arc/parser/adapters/gaussian.py
Comment thread arc/output.py Outdated
Comment thread ARC.py
_warn_missing_tckdb_package()
return
raise
from tckdb_arc.adapter import TCKDBAdapter

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what's tckdb_arc? do we install it in our devscripts? or is it in the env?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's for https://github.com/calvinp0/tckdb-adapters/
I added in the devtools installation now but it's still a WIP. Splitting the adapter from ARC has somewhat been a challenge
https://github.com/ReactionMechanismGenerator/ARC/blob/56800ae93a52f93d20d8a1017b20413a5ca6629d/devtools/install_tckdb_arc.sh

Comment thread arc/output.py Outdated
Comment thread arc/tckdb_evidence.py
@calvinp0
calvinp0 force-pushed the feature_arc_result_export_contract branch 3 times, most recently from 45210de to bb36bbe Compare July 26, 2026 10:21
@calvinp0
calvinp0 requested a review from alongd July 26, 2026 10:23
@calvinp0
calvinp0 force-pushed the feature_arc_result_export_contract branch from bb36bbe to bd2a0db Compare July 26, 2026 10:27
Add Cartesian Hessian lower-triangle parsers for Gaussian, Orca, and QChem,
a structured Gaussian IRC-path parser emitting one record per converged
point, and GSM stringfile energy parsing, all exposed through the parser
dispatch layer.

parse_irc_path walks the log once and returns per-point energy, gradients,
reaction coordinate, direction, and geometry; the TS seed carries no
CURRENT STRUCTURE block and is deliberately not emitted.
Add ARC-native Hessian parser tests with an Orca H2O Hessian fixture, scan
constraint parser tests, and IRC-path parser coverage including the
forward/reverse direction and the failed-log path.
Consolidate ARC's results into a documented, tool-neutral output.yml: per-job
calculation and rotor-scan provenance, thermo points and applied energy
corrections, chosen-TS-guess attribution, spin diagnostics, and IRC/NEB/GSM
log paths. ARC reports source facts, native indices, and explicit units;
consumers own any database-specific enums or nesting.

Torsions reference rotor-scan records through a single shared predicate, so a
torsion can never name a scan_rotor_N record that was not emitted. Correction
parameter tables are labelled with the native unit of the table they are read
from rather than the per-species total's unit.

docs/output_yml_schema.md documents the emitted shape.
Build a deterministic, tool-neutral evidence document from output.yml plus the
parser layer: Hessians, IRC trajectories, and GSM paths, each reported by kind
with an explicit availability status and reason. Paths are run-relative and
operational fields (servers, job ids, credentials) are excluded.

The sidecar is written atomically: contents are fsynced, replaced into place,
and the parent directory is then synced so a completed rename survives a
crash. Platforms that cannot sync a directory log and skip rather than failing
a write that already succeeded.
ARC no longer implements TCKDB upload itself; it hands results to the
standalone tckdb-arc package from the tckdb-adapters repo. The hook is
optional: a missing package logs one warning per process and continues, while
a broken install re-raises rather than being misreported as absent.

Add devtools/install_tckdb_arc.sh and a make install-tckdb-arc target. The
adapter is work in progress and is deliberately excluded from install_all.sh
and CI. Unlike the other optional tools it is imported in-process, so the
installer pip-installs into ARC's own environment and checks the Python >=
3.11 floor that it and tckdb-client require.
Retain the stringfile and per-node outputs the GSM run produces so the
evidence layer can report the path and its energies, and transfer queued
artifacts back from the job directory. Isolate the tests across xdist workers
so they no longer share a scratch directory.
Record which TS-search method produced the selected guess and keep the NEB and
GSM log paths associated with it, so the result contract can attribute a TS to
its originating adapter rather than inferring it after the fact.
Surface the per-species spin information the result contract reports, so
consumers receive ARC's own diagnosis rather than re-deriving it from
geometry and multiplicity.
Extract the atom-energy and bond-additivity corrections Arkane actually
applied, along with the thermo points, through helper scripts run in the RMG
environment, so the result contract can report the correction model, total,
component decomposition, and the parameter table used.
@calvinp0
calvinp0 force-pushed the feature_arc_result_export_contract branch from 4bf5fbf to fd0ea74 Compare August 2, 2026 20:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants