Skip to content

Map reaction_class to RXNO top-level categories for stable identifiers #855

Description

@skearnes

Background

#854 added best-effort reaction classification to the ORM (reaction_class / reaction_name columns), populated by Rxn-INSIGHT. Those columns store Rxn-INSIGHT's own label vocabulary, which carries no stable identifiers and may drift across versions.

For cross-tool / cross-database interoperability we'd want standardized identifiers from a public ontology — RXNO (the RSC Name Reaction Ontology, also what NextMove's proprietary NameRxn emits). There is no open-source tool that assigns RXNO IDs from structure, so we'd build the crosswalk ourselves.

This issue tracks the coarse, cheap version: map Rxn-INSIGHT's closed set of 11 reaction_class values to RXNO's top-level categories. (Named-reaction-level mapping of the ~470 reaction_name strings is deliberately out of scope here — it's partial, needs curation, and only pays off if an external consumer needs it.)

Why this is cheap

Rxn-INSIGHT's classes are essentially the Pistachio/RXNO superclasses already, so the mapping is close to 1:1:

Rxn-INSIGHT reaction_class RXNO top-level category
Aromatic Heterocycle Formation Heterocycle formation
Acylation Acylation and related processes
C-C Coupling C–C bond formation
Heteroatom Alkylation and Arylation Heteroatom alkylation and arylation
Reduction Reductions
Oxidation Oxidations
Functional Group Interconversion FGI
Functional Group Addition FGA
Protection Protections
Deprotection Deprotections
Miscellaneous (no RXNO term — leave unmapped)

(RXNO also has a "Resolution" superclass with no Rxn-INSIGHT equivalent.)

Scope

  • Fill in the exact RXNO:####### IDs for each top-level category from rxno.obo.
  • Add the static ~11-row crosswalk (a dict/table; no new heavy dependency).
  • Decide on storage: a separate mapped column vs. populating the schema's existing REACTION_TYPE ReactionIdentifier (the schema-native home for ontology terms).
  • Backfill alongside / after the existing reaction_class post-pass; Miscellaneous and NULL stay unmapped.

Out of scope

  • Named-reaction-level (reaction_name → RXNO ID) mapping.
  • Any attempt to assign RXNO from structure directly (that's NameRxn's territory).

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions