Skip to content

Recursive SMIRKS patterns should be considered #88

@bannanc

Description

@bannanc

As with many issues I'm going to leave on this repo, this is just an idea I've been thinking about, but not one I had time to explore.

These are used in smirnoff99frosst, such as this angle:

<Angle smirks="[*:1]~[#7X3$(*~[#6X3,#6X2,#7X2+0]):2]~[*:3]" angle="120." id="a19" k="140.0"/>

In this case, we're combining many angles for planar nitrogens into one SMIRKS. The atoms [#6X3,#6X2,#7X2+0] in the recursive part of the SMIRKS can be on atom 1 and/or 3. In this case I think you could just put the recursive part on atom 1 and leave atom 3 as a *. However, there are other patterns where it is less obvious if that works or not.
For example, on this proper torsion:

<Proper smirks="[*:1]-[#7X3$(*-[#6X3,#6X2])r5:2]-@[#7X3$(*-[#6X3,#6X2])r5:3]~[*:4]" id="t127" idivf1="1" k1="3.600" periodicity1="2" phase1="180.0"/>

The recursive atoms could be 1 and 4. However, we could also imagine a molecule where the recursive atoms are NOT a part of the proper torsion, just neighbors helping you identifying the environment of these nitrogens. I don't know how to write a SMIRKS pattern that puts those recursive patterns on indexed or unindexed atoms.

Right now we NEVER use recursive SMIRKS. ChemPer won't make recursive SMIRKS. In fact, ChemicalEnvironments use the function _convert_embedded_smirks to switch recursive SMIRKS to normal ones.

I've thought about switching all non-indexed atoms in a SMIRKS to a recursive layer, but I'm not sure if that's universally a better option either.

Metadata

Metadata

Assignees

No one assigned

    Labels

    long termCaitlin did not have time to address

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions