-
-
Notifications
You must be signed in to change notification settings - Fork 443
Fix tautomer code #2171
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix tautomer code #2171
Conversation
* EnumerateTautomers(mol, functor); | ||
* @endcode | ||
*/ | ||
class OBAPI UniqueTautomerFunctor : public TautomerFunctor |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll mark this for 3.1 when we can add new API
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should I make a separate version with only the bug fixes and no API changes for 3.0.1?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you think you can provide only the bug fixes with no API changes, that would be great. There's clearly interest in a 3.0.1 release.
Brilliant. I'll test it out - I have a set of tautomers somewhere I've pulled out from ChEMBL. Regarding keto-enol, if you do add this in, could you put it within an option just in case it leads to weird results? I have the impression from others that this may be the case. |
@baoilleach - did you have a chance to test this? I'd like to merge for 3.1 - even if it needs further improvement, it's a big step forward. |
I didn't. But I see no reason not to merge.
…On Sun, 3 May 2020, 15:46 Geoff Hutchison, ***@***.***> wrote:
@baoilleach <https://github.com/baoilleach> - did you have a chance to
test this? I'd like to merge for 3.1 - even if it needs further
improvement, it's a big step forward.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#2171 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAALCGPVEZ4EXJIPKABWQADRPV7UDANCNFSM4MFORPFA>
.
|
Just to follow-up (only a year too late). The new code is much improved indeed. However, I'm still able to find some test failures, e.g. S=c1[nH]c(c([nH]1)c1ccccc1)c1ccccc1 and Sc1[nH]c(c(n1)c1ccccc1)c1ccccc1 don't resolve to the same form. I can provide a longer list if @timvdm or anyone else is interested. A separate issue is that it's not possible to use the functor from the Python API. I know that OEChem have solved this by somehow enabling Python functions to be passed in. An alternative would be to do as Tim did previously for automorphisms (I think), where there is an API function that either has a default functor or acts as a convenience function to just return a vector<OBMol*> of results (perhaps with an optional maxsize argument?). |
@baoilleach This issue is fixed in #2410 A longer list of examples is welcome if there are still issues. I'll have a look at the callback issue when I have time. |
Great stuff @timvdm. I'll pull a list together. Related to this I've been searching for other implementations which may be of interest. Roger's one is hidden behind his slides: https://www.daylight.com/meetings/emug99/Delany/tautomers/. Meanwhile, @johnmay has an implementation discussed in his thesis available on a CDK branch: https://github.com/cdk/cdk/tree/sd-tautomer/tool/tautomer/src/main/java/org/openscience/cdk/tautomer. Something to note is that when it comes to the step of trying to assign double/single bonds to the system, it should be possible to call the OBKekulize function with a properly prepared OBMol. This function can kekulize any system that's possible to kekulize and returns 'false' otherwise. |
Happy to send a few recent papers: |
...the second of which has a contribution from me. :-) |
Oh, I hadn't noticed the "O'Boyle and Sayle" spreadsheet. 😉 My group has a longer-term project to use QM calc to generate more tautomer preferences, but that's probably several months to a year out. |
Hi @timvdm, apart from a logical error in my own code (which I need to think about), the OB code still had trouble with the following pairs:
It also had trouble with protonated nitrogens, which hopefully is a simple atom-typing issue:
|
Various improvements and fixes for the tautomer code.
TODO: