results are empty
String smirks = "[#8:8]([H])-[c:2]1[c:1](-[#8:7]([H]))[c;R]([c;R:5](-[!#8,#1:11])[c;R:4](-[!#8,#1:10])[c;R:3]1-[!#8,#1:9])S([#8])(=O)=O>>[!#8,#1:11]\\\\\\[#6:5]=[#6:4](///[!#8,#1:10])-[#6:3](-[!#8,#1:9])-[#6:2](=[O:8])-[#6:1](-[#8-])=[O:7]"; String smi = "C1=C(C=CC(=C1)C2=NC3=C(C(=C(C=C3N2)S(=O)(=O)[O-])O)O)C4=NC5=C(C=C(C=C5S(=O)(=O)[O-])S(=O)(=O)[O-])N4";
Examples are also provided as short, self-contained Java Unit Test:
https://github.com/mguetlein/TestAmbitSmarts/blob/master/src/test/java/org/kramerlab/test/TestAmbit.java
envipath ids:
rule2793
u26103
The stereo transfrormation issue is already fixed in Ambit-smarts library.
However there is another problem with the smirks.
The target smirks does not match the double cycle aromatic system beacuse of the following branchings (substituents):
(-[!#8,#1:11])
(-[!#8,#1:10])
-[!#8,#1:9]
According to the official SMARTS/SMIRKS syntax by default supported in Ambit,
bond '-' means single NON AROMATIC and that is why these substituents does not match the aromatic substituent because the aromatic cycle is fuzed to another atomatic cycle
Working solutions:
Solution (1)
Use insted of '-' bond deafult bond (e.g. nothing: CC instead of C-C) which means single or atomatic bond:
([!#8,#1:11])
([!#8,#1:10])
[!#8,#1:9]
Here is the correct smirks
Solution(2)
Activate flags:
smrkMan.getSmartsParser().mSupportSingleBondAromaticityNotSpecified = true;
smrkMan.getSmartsParser().mSupportDoubleBondAromaticityNotSpecified = true;
By default these flags are 'false'. Making them 'true', the single bond '-' and double bond '=' will match aromatic systems as well as aliphatic systems.
Generally I do not reccomend the second solution (although it seems handy) because it changes the default smarts/smirks syntax.
And if using this approach, apply these flags only for specific reactions. Not for all reactions.
Related
Bugs:
#8Last edit: Nikolay Kochev 2016-06-25