SMIRKS
SMIRKS is a line notation for expressing generic chemical reactions, or "transforms," as molecular graph rewrites. Developed by Daylight Chemical Information Systems, it is a deliberate hybrid of two of Daylight's other languages: the concrete structure notation SMILES and the substructure-query language SMARTS. Where a reaction SMILES describes a specific transformation between fully specified molecules, SMIRKS abstracts a reaction to only the atom-and-bond changes at its reaction center, so that any reaction undergoing the same changes—regardless of the surrounding substrate—is treated as an instance of the same generic reaction.
Structurally, a SMIRKS is written as reactant patterns, an agent, and product patterns separated by the reaction operators, in the form reactant >> product or reactant > agent > product. The defining feature is atom mapping: numeric map labels (for example [C:1] or [N+:2]) place reactant and product atoms into strict pairwise correspondence, so the notation records exactly which atoms persist and how their bonds and charges change. Daylight imposes a hybrid grammar for validity: atoms and bonds whose connectivity is unchanged may carry SMARTS query expressions, but atoms and bonds directly involved in the transformation must be expressed in valid SMILES rather than as queries, and hydrogens participating in bond changes must appear explicitly and be mapped on both sides. This makes a SMIRKS both a pattern that matches candidate substrates and a rule that produces the transformed graph.
In the broader graph-data and format-conversion landscape, SMIRKS is a graph-rewriting rule language rather than a graph serialization: it encodes a transformation over the molecular graphs represented by formats like SMILES, Molfile, or SDF, and it complements the pure-query role of SMARTS. It underpins reaction application, retrosynthesis (running rules in reverse), library enumeration in combinatorial chemistry, reaction classification, and metabolic-transformation prediction. Toolkits such as RDKit and Open Babel implement reaction-transform handling in the SMIRKS/reaction-SMARTS family, and the open-source Ambit-SMIRKS module was built specifically around the language.
Its strengths are compactness, reversibility, and the ability to capture a reaction class in a single string with local stereochemistry via mapped atoms. Its limitations are equally real: a well-formed transform "need not represent a real reaction," so it can ignore steric, electronic, or kinetic feasibility; hydrogen semantics are notoriously subtle, and implicit hydrogens can create ambiguity that forces explicit annotation. Interpretation also varies somewhat between toolkits, so a SMIRKS is best treated as a precise but toolkit-sensitive rule rather than a universal standard.
Frequently Asked Questions
What is a SMIRKS reaction transform notation file?
A SMIRKS reaction transform notation file stores a graph — its nodes, edges and attributes — in the SMIRKS reaction transform notation format. See the feature table above for what it supports.
How do I open a SMIRKS reaction transform notation file?
Open it in a graph tool that supports SMIRKS reaction transform notation, or convert it to a format your tool reads. With GraphInOut you can convert SMIRKS reaction transform notation to GraphML, DOT, Connected JSON and more, right in your browser.
How do I convert a SMIRKS reaction transform notation file to another format?
Use the Convert from SMIRKS reaction transform notation link above: upload or paste your SMIRKS reaction transform notation file (input preset to SMIRKS reaction transform notation), choose a target format and download the result — free, no install.