MoleculePattern[{atom1,atom2, }, { bond1,bond2, }]

represents a molecule pattern with atoms atomi and bonds bondi for use in substructure searching.


represents a molecule pattern from the input SMARTS pattern.


  • The atoms and bonds in a MoleculePattern are not checked for proper valence, and no implicit hydrogens are added.
  • Possible forms for the atom patterns include:
  • "sym"an atom with atomic symbol "sym"
    Atom["sym",rules]an atom with properties described by rules
    patt1|patt2|an atom matching any of the patti
  • A bond is entered as Bond[{id1,id2},"type"]. If the bond type is omitted, it will match any type.


Basic Examples  (3)

Define a pattern for sulfur-oxygen bonds:

Use MoleculeContainsQ to verify the molecule matches the pattern:

Use the pattern in MoleculePlot to visualize:

Find bonds between carbon and heavier atoms:

Make a molecule pattern from part of a molecule:

Find this pattern in the parent molecule:

Visualize the pattern with MoleculePlot:

Wolfram Research (2019), MoleculePattern, Wolfram Language function,


Wolfram Research (2019), MoleculePattern, Wolfram Language function,


@misc{reference.wolfram_2020_moleculepattern, author="Wolfram Research", title="{MoleculePattern}", year="2019", howpublished="\url{}", note=[Accessed: 17-January-2021 ]}


@online{reference.wolfram_2020_moleculepattern, organization={Wolfram Research}, title={MoleculePattern}, year={2019}, url={}, note=[Accessed: 17-January-2021 ]}


Wolfram Language. 2019. "MoleculePattern." Wolfram Language & System Documentation Center. Wolfram Research.


Wolfram Language. (2019). MoleculePattern. Wolfram Language & System Documentation Center. Retrieved from