Hi Mark, I believe the bug is caused by the fact that isAtomListQuery() returns true for a query that is actually a complex query, and that subsequently getAtomListQueryVals() (called by getAtomListText()) fails to parse. The following patch seems to solve the problem:
$ git diff diff --git a/Code/GraphMol/QueryOps.cpp b/Code/GraphMol/QueryOps.cpp index a80d8f5..ea28ad3 100644 --- a/Code/GraphMol/QueryOps.cpp +++ b/Code/GraphMol/QueryOps.cpp @@ -812,8 +812,9 @@ bool _atomListQueryHelper(const T query) { return false; } } + return true; } - return true; + return false; } } // namespace bool isAtomListQuery(const Atom *a) { Cheers, p. On Tue, Feb 8, 2022 at 8:29 PM Mark Mackey via Rdkit-discuss < rdkit-discuss@lists.sourceforge.net> wrote: > Hi all, > > > > I’m trying to generate an SVG from reaction SMARTS. The code looks like > this: > > > > QByteArray ChemicalReactionsCalculation::toSvg(const QString &reaction, > int width, int height) > > { > > try > > { > > std::string text = reaction.toStdString(); > > > > std::unique_ptr<RDKit::ChemicalReaction> > rxn(RDKit::RxnSmartsToChemicalReaction(text)); > > if (rxn) > > { > > RDKit::MolDraw2DSVG drawer(width, height); > > drawer.drawReaction(*rxn); > > drawer.finishDrawing(); > > > > auto svg = drawer.getDrawingText(); > > return QByteArray::fromStdString(svg); > > } > > } > > catch (const std::exception &e) > > { > > qWarning() << "Exception in ChemicalReactionsCalculation::toSvg > on" << reaction << ":" << e.what(); > > } > > return QByteArray(); > > } > > > > This works fine for most reaction SMARTS strings, but throws an exception > at “drawer.drawReaction” when the SMARTS string has a combination of > Boolean operators in it. For example, “[n&H1:1]>>[o:1]” works fine, as does > “[c,n:1]>>[O:1]”, but doing “[c,n&H1:1]>>[o:1]” fails (as does the > equivalent “[c,nH1:1]>>[o:1]”): > > > > Exception in ChemicalReactionsCalculation::toSvg on "[c,n&H1:1]>>[o:1]" : > bad query type1 > > > > This happens for pretty much any combination of “,” and “&” operators > inside the square brackets. Any ideas? > > > > Regards, > > Mark > > > > > > *Dr Mark Mackey Chief Scientific Officer * > *Cresset *New Cambridge House, Bassingbourn Road, Litlington, > Cambridgeshire, SG8 0SS, UK > Tel: +44 (0)1223 858890 Mobile: +44 (0)7595099165 > Email: m...@cresset-group.com Web: www.cresset-group.com > > > > > > This email has been sent from Cresset BioMolecular Discovery Limited, > registered in England and Wales, Company Number: 04151475. The information > in this email and any attachments are confidential and may be privileged. > It is intended solely for the addressee and access to this email by anyone > else is unauthorised. If an addressing or transmission error has > misdirected this email, please notify the author by replying to this email. > If you are not the intended recipient you must not use, disclose, > distribute, store or copy the information in any medium. Although this > e-mail and any attachments are believed to be free from any virus or other > defect which might affect any system into which they are opened or > received, it is the responsibility of the recipient to check that they are > virus-free and that they will in no way affect systems and data. No > responsibility is accepted by Cresset BioMolecular Discovery Limited for > any loss or damage arising in any way from their receipt, opening or use. > Privacy > notice <https://www.cresset-group.com/privacy/> > _______________________________________________ > Rdkit-discuss mailing list > Rdkit-discuss@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/rdkit-discuss >
_______________________________________________ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss