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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions