Table of Contents |
---|
Small rings (Lexie)
Summary
First round of experiments
In general, I have two versions of a small ring FF that I’m iterating on.
Both of these force fields have the following changes:
a3 [*;r3:1]1~;@[*;r3:2]~;@[*;r3:3]1
--> a43 [*;r3:1]1~;@[*;r3:2]~;@[*;r3:3]1
(same SMIRKS, moved to the end to catch heteroatoms)
a7 [#6r4:1]-;@[#6r4:2]-;@[#6r4:3]
--> a42 [*;r4:1]-;@[*;r4:2]-;@[*;r4:3]
(made generic & moved to the end to catch heteroatoms)
New parameter: a41: [*;r5:1]@[*;r5:2]@[*;r5:3]
New parameter: a41a: [*;r5:1]@[#16;r5:2]@[*;r5:3]
New parameter: a13a: [*;r6:1]~;@[*;r5;x4:2]~;@[*;r5;x2:3
...
]
(splits spiro rings from fused rings)
The difference between the two FFs is in the 4-member ring “external” angles--e.g. angles where one atom is in a 4-membered ring but one or more of the others aren’t.
Version 1 is more similar to Sage, but correcting some over-specificity.
a8: [!#1:1]-[#6r4:2]-;!@[!#1:3]
--> [!#1:1]-[*;r4:2]-;!@[!#1:3]
(same param ID)a9: [!#1:1]-[#6r4:2]-;!@[#1:3]
--> [!#1:1]-[*;r4:2]-;!@[#1:3]
(same param ID)
These angles don’t distinguish between ring-ring-nonring or nonring-ring-nonring--they instead differentiate between H vs non-H.
Version 2 is aimed at making the ring/nonring distinction, by introducing two new parameters a44
for nonring-r4-nonring angles and a45
for r4-r4-nonring angles.
Parameter removed: a8
Parameter removed: a9
New parameter: a44: [*;!r4:1]~[*;r4:2]~[*;!r4:3]
New parameter: a45: [*;r4:1]@[*;r4:2]~;!@[*:3]
Second round of experiments
The second round of experiments is aimed at distinguishing between H and non-H atoms.
3-membered rings
First iteration of experiments
Moving a3 ([*;r3:1]1~;@[*;r3:2]~;@[*;r3:3]1
) to the end so that it also picks up the epoxy C-O-C angle (which was previously covered by a28). Instead of adding to the end, could also change a28 to be not-3 (or 4-) membered ring atoms.
...
For now, it appears that these capture the desired chemistry based on inspecting the captured molecules, so I’m leaving them as is for the first iteration.
New parameter: Renamed a3 to a43, due to moving it to the end, though it sounds like the numbering is arbitrary so could probably keep the same name. This parameter is after the 4- and 5- membered ring internal angles below.
Second iteration of experiments
For the next iteration of experiments, I will split these parameters based on H vs nonH, adding the following new parameters:
a4a: [*;r3:1]~;@[*;r3:2]~;!@[#1:3]
r3 atom - r3 atom - H
a6a: [#1:1]-[*;r3:2]~;!@[*:3]
H - r3 atom - H
...
4-membered rings
...
First round of experiments
Moving a7 ([#6r4:1]-;@[#6r4:2]-;@[#6r4:3]
) to the end, and changing the SMIRKS pattern to [*;r4:1]-;@[*;r4:2]-;@[*;r4:3]
so that it also catches heteroatoms which were previously included under a1, a18a, and a28. Instead of adding to the end, could also keep SMIRKS change but change a28 to be not-4 (or 3-) membered ring atoms and remove a18a (or make it specific to 5-membered rings).
...
New parameter: Renamed a7 to a42, due to moving it to the end. In (2) above, added a44 and a45 for the respective SMIRKs patterns listed.
Second round of experiments
For the second round of experiments I will explore making both sets of parameters more specific.
Add new parameters
a8a: [*;r4:1]@[*;r4:2]-;!@[!#1:3]
anda9a: [*;r4:1]@[*;r4:2]-;!@[#1:3]
to be specific to ring-ring-nonring angles, anda9b: [#1:1]-[*;r4:2]-;!@[#1:3]
to catch H-ring-H angles that are currently treated by the generica2
. Based on the parameter distributions from MSM/Espaloma, I’m not sure the a8 split will do much.
...
Add new parameters
a44a: [#1:1]~[*;r4:2]~[#1:3]
anda45a: [*;r4:1]@[*;r4:2]~;!@[#1:3]
to split out H vs non-H parameters
...
5-member rings
...
Currently we don’t have any internal r5-r5-r5 ring angles, so I made one. I just made a generic one: [*;r5:1]@[*;r5:2]@[*;r5:3]
but we may want to break it down further. Looking at the MSM parameter distribution, it seemed like the non-aromatic rings were clustered together, but the aromatic rings were all over the place in a way that made it not obvious how to split them.
...
New parameter: Added a parameter a41a after a41.
Issue with fused rings
...
One issue I have noticed with separating the small ring parameters is that there is no way to specify in a SMARTS pattern that a given atom is in a ring of a given size. The primitive r
indicates the size of the smallest ring the atom is a part of, but if it is part of a fused or spiro ring, this may lead to issues. The primitive R
denotes that an atom is part of a ring, but can only be modified by the number of ring bonds, not the size of the ring.
...
After a lot of experimenting I haven’t been able to find a solution that involves a single elegant SMARTS pattern. To get these right, we may have to add a number of very specific parameters, and increase coverage for fused rings.
Results
Other parameters I’ve looked at
...
All parameters:
View file | ||
---|---|---|
|
...