On Wed, Nov 4, 2009 at 7:54 PM, Greg Landrum <greg.land...@gmail.com> wrote: > > On Wed, Nov 4, 2009 at 3:26 PM, Evgueni Kolossov <ekolos...@gmail.com> wrote: >> >> I found that SubstructMatch would not work if query is a fragment (with * >> atoms). >> Can you suggest solution for this problem? > > That's a bug. Dummy atoms (things with atomic number zero) that do not > have an isotope specification should match anything. If you have a > sourceforge account, please enter the bug, otherwise let me know and I > will enter it.
After going back through the code and thinking about this for a while I'm going to change my original answer: it's not a bug that standard dummy atoms only match other dummy atoms. When I saw the "*" in the original message I started thinking about the QueryAtoms produced by a "*" in SMARTS, which definitely should (and do) match other dummies. The behavior with standard Atoms is useful for things like flagging attachment points of R groups on a scaffold. Here's an example: [5] >>> f= Chem.MolFromSmiles('c1cccnc1*') [6] >>> p = Chem.MolFromSmarts('c1cccnc1*') [9] >>> m = Chem.MolFromSmiles('c1ccc(C)nc1*') Matching using f, which has dummy Atoms only gives one match: [10] >>> m.GetSubstructMatches(f) Out[10]: ((0, 1, 2, 3, 5, 6, 7),) But matching using p, which has a QueryAtom built from "*" matches twice: [11] >>> m.GetSubstructMatches(p) Out[11]: ((0, 1, 2, 3, 5, 6, 7), (2, 1, 0, 6, 5, 3, 4)) For your use case, I'd suggest replacing the dummies in your fragments with QueryAtoms that have the appropriate query, something like this (not tested): //--------------------------------------------- #include <GraphMol/RDKitQueries.h> void replaceDummies(RWMol *frag){ QueryAtom *qat = new QueryAtom(); qat->setQuery(makeAtomNullQuery()); for(unsigned int i=0;i<frag->getNumAtoms();++i){ if(frag->getAtomWithIdx(i)->getAtomicNum()==0){ frag->replaceAtom(i,qat); } } delete qat; } //--------------------------------------------- I hope this helps, -greg ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss