[Rdkit-discuss] Link error using Xcode 5
Dear all, I’ve just tried to build simple GUI in Xcode using rdkit libraries. Unfortunately I’ve got link errors. I tried to use homebrew installed version, also compiled sources from github by myself. Any idea? PS Python bindings work perfectly on my computer. If I don’ include MolDrowing.h and DrawingToSVG.h project is linked without errors. simple code: #include testmol.h #include GraphMol/RDKitBase.h #include GraphMol/SmilesParse/SmilesParse.h #include GraphMol/Depictor/RDDepictor.h #include Geometry/point.h #include GraphMol/ROMol.h #include GraphMol/MolDrawing/MolDrawing.h //#include GraphMol/MolDrawing/DrawingToSVG.h Error listing: Ld /Users/black/Library/Developer/Xcode/DerivedData/SMILES_Viewer-ftbnkyhvxqageqflovukoyyuiamy/Build/Products/Debug/SMILES\ Viewer.app/Contents/MacOS/SMILES\ Viewer normal x86_64 cd /Users/black/projects/SMILES Viewer setenv MACOSX_DEPLOYMENT_TARGET 10.9 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -L/Users/black/Library/Developer/Xcode/DerivedData/SMILES_Viewer-ftbnkyhvxqageqflovukoyyuiamy/Build/Products/Debug -L/Users/black/projects/rdkit/build/lib -L/usr/local/Cellar/boost/1.54.0/lib -F/Users/black/Library/Developer/Xcode/DerivedData/SMILES_Viewer-ftbnkyhvxqageqflovukoyyuiamy/Build/Products/Debug -filelist /Users/black/Library/Developer/Xcode/DerivedData/SMILES_Viewer-ftbnkyhvxqageqflovukoyyuiamy/Build/Intermediates/SMILES\ Viewer.build/Debug/SMILES\ Viewer.build/Objects-normal/x86_64/SMILES\ Viewer.LinkFileList -mmacosx-version-min=10.9 -fobjc-arc -fobjc-link-runtime -stdlib=libstdc++ -framework Cocoa -Xlinker -dependency_info -Xlinker /Users/black/Library/Developer/Xcode/DerivedData/SMILES_Viewer-ftbnkyhvxqageqflovukoyyuiamy/Build/Intermediates/SMILES\ Viewer.build/Debug/SMILES\ Viewer.build/Objects-normal/x86_64/SMILES\ Viewer_dependency_info.dat -o /Users/black/Library/Developer/Xcode/DerivedData/SMILES_Viewer-ftbnkyhvxqageqflovukoyyuiamy/Build/Products/Debug/SMILES\ Viewer.app/Contents/MacOS/SMILES\ Viewer Undefined symbols for architecture x86_64: Invar::operator(std::ostream, Invar::Invariant), referenced from: RDGeom::Point3D::operator[](unsigned int) const in testmol.o RDGeom::Point3D::operator[](unsigned int) in testmol.o RDGeom::Point2D::operator[](unsigned int) const in testmol.o RDGeom::Point2D::operator[](unsigned int) in testmol.o RDKit::ROMol::initFromOther(RDKit::ROMol const, bool), referenced from: RDKit::RWMol::RWMol(RDKit::ROMol const, bool) in testmol.o RDKit::ROMol::initMol(), referenced from: RDKit::ROMol::ROMol() in testmol.o RDKit::MolOps::Kekulize(RDKit::RWMol, bool, unsigned int), referenced from: RDKit::Drawing::MolToDrawing(RDKit::ROMol const, std::vectorint, std::allocatorint const*, bool) in testmol.o RDKit::MolOps::findSSSR(RDKit::ROMol const, std::vectorstd::vectorint, std::allocatorint , std::allocatorstd::vectorint, std::allocatorint *), referenced from: RDKit::Drawing::DrawMol(RDKit::ROMol const, int, std::vectorint, std::allocatorint const*, unsigned int, double, double, double) in testmol.o RDLog::toStream(std::ostream), referenced from: RDGeom::Point3D::operator[](unsigned int) const in testmol.o RDGeom::Point3D::operator[](unsigned int) in testmol.o RDGeom::Point2D::operator[](unsigned int) const in testmol.o RDGeom::Point2D::operator[](unsigned int) in testmol.o RDGeom::operator/(RDGeom::Point2D const, double), referenced from: RDKit::Drawing::DrawMol(RDKit::ROMol const, int, std::vectorint, std::allocatorint const*, unsigned int, double, double, double) in testmol.o RDGeom::operator-(RDGeom::Point2D const, RDGeom::Point2D const), referenced from: RDKit::Drawing::DrawMol(RDKit::ROMol const, int, std::vectorint, std::allocatorint const*, unsigned int, double, double, double) in testmol.o RDGeom::operator*(RDGeom::Point2D const, double), referenced from: RDKit::Drawing::DrawMol(RDKit::ROMol const, int, std::vectorint, std::allocatorint const*, unsigned int, double, double, double) in testmol.o RDGeom::operator+(RDGeom::Point2D const, RDGeom::Point2D const), referenced from: RDKit::Drawing::DrawMol(RDKit::ROMol const, int, std::vectorint, std::allocatorint const*, unsigned int, double, double, double) in testmol.o RDDepict::compute2DCoords(RDKit::ROMol, std::mapint, RDGeom::Point2D, std::lessint, std::allocatorstd::pairint const, RDGeom::Point2D const*, bool, bool, unsigned int, unsigned int, int, bool), referenced from: RDKit::Drawing::MolToDrawing(RDKit::ROMol const, std::vectorint, std::allocatorint const*, bool) in testmol.o RDKit::Atom::getTotalNumHs(bool) const, referenced from: RDKit::Drawing::detail::getAtomSymbolAndOrientation(RDKit::Atom const,
Re: [Rdkit-discuss] Possible rotatable bonds replacement
My 2p worth: I am not a big fan of outright replacing the NumRotatableBonds implementation (option 2). This is quite a popular descriptor which is used in many ways (e.g. QSAR models, conformer generation, property calculation, etc.). IF we are lucky (or skilful, or have had enough time), we have tests written out for everything which will break as soon as soon as we get different rotatable bonds count, and different results. We can then revalidate our protocols using the new (strict) rotatable counts. Perhaps we get better correlations/enrichments/AUCs etc ! Yeah! On the other hand option (1), having two methods NumRotatableBonds() and NumStrictRotatableBonds() will lead to some confusion. Greg has a point about different people and/or libraries intermixing between the two. Like Paul, I prefer option (3) - with the default behaviour giving the old rotatable counts (not strict). This does not come for free either, as the API becomes slightly less clean (and what to do in the future when, for example, someone finds a non-SMARTS based way to do this -- add another parameter?). Still I think this is the less of all evils. Thanks Toby Greg! JP On 31 January 2014 06:54, paul.czodrow...@merckgroup.com wrote: I could add the new descriptor as Toby provided it. People are then free to pick between NumRotatableBonds() and NumStrictRotatableBonds (). This has the advantage of maintaining strict backwards compatibility, but I could imagine it being confusing/irritating to people using the code to have to choose between them (or, worse, using both). Another option is to just replace the current NumRotatableBonds() SMARTS with the new one. This loses backwards compatibility, but replaces NumRotableBonds() with something more correct. Finally, I could take a hybrid approach: replace the default NumRotatableBonds() with the new one, but add an extra argument that allows the old one to be used. I'm leaning towards the second option. I'd normally go with the third, but I almost view this as a bug fix for the rotatable bonds definition. Comments? suggestions? Other options? I like your idea of your hybrid approach which would mean backwards compatibility. paul This message and any attachment are confidential and may be privileged or otherwise protected from disclosure. If you are not the intended recipient, you must not copy this message or attachment or disclose the contents to any other person. If you have received this transmission in error, please notify the sender immediately and delete the message and any attachment from your system. Merck KGaA, Darmstadt, Germany and any of its subsidiaries do not accept liability for any omissions or errors in this message which may arise as a result of E-Mail-transmission or for damages resulting from any unauthorized changes of the content of this message and any attachment thereto. Merck KGaA, Darmstadt, Germany and any of its subsidiaries do not guarantee that this message is free of viruses and does not accept liability for any damages caused by any virus transmitted therewith. Click http://www.merckgroup.com/disclaimer to access the German, French, Spanish and Portuguese versions of this disclaimer. -- WatchGuard Dimension instantly turns raw network data into actionable security intelligence. It gives you real-time visual feedback on key security issues and trends. Skip the complicated setup - simply import a virtual appliance and go from zero to informed in seconds. http://pubads.g.doubleclick.net/gampad/clk?id=123612991iu=/4140/ostg.clktrk ___ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss -- WatchGuard Dimension instantly turns raw network data into actionable security intelligence. It gives you real-time visual feedback on key security issues and trends. Skip the complicated setup - simply import a virtual appliance and go from zero to informed in seconds. http://pubads.g.doubleclick.net/gampad/clk?id=123612991iu=/4140/ostg.clktrk___ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
Re: [Rdkit-discuss] Possible rotatable bonds replacement
Hi, I favour option 1 but not strongly over option 3. Option 2 is cleanest but I think the cost to users that expect the existing behaviour is too high. I don't see much difference in the confusion levels between: numRotatableBonds() vs numStrictRotatableBonds() and numRotatableBonds() vs numRotatableBonds(strict=true) as neither is truly clean if the user thinks that the two definitions are interchangable. The invariant numRotatableBonds(X)=numStrictRotatableBonds(X) holds which is why I was thinking that one is a strict version of the other, but I'd welcome a better name for the new function/variable. Yours, Toby Wright -- InhibOx Ltd Oxford On 31 January 2014 11:05, JP jeanpaul.ebe...@inhibox.com wrote: My 2p worth: I am not a big fan of outright replacing the NumRotatableBonds implementation (option 2). This is quite a popular descriptor which is used in many ways (e.g. QSAR models, conformer generation, property calculation, etc.). IF we are lucky (or skilful, or have had enough time), we have tests written out for everything which will break as soon as soon as we get different rotatable bonds count, and different results. We can then revalidate our protocols using the new (strict) rotatable counts. Perhaps we get better correlations/enrichments/AUCs etc ! Yeah! On the other hand option (1), having two methods NumRotatableBonds() and NumStrictRotatableBonds() will lead to some confusion. Greg has a point about different people and/or libraries intermixing between the two. Like Paul, I prefer option (3) - with the default behaviour giving the old rotatable counts (not strict). This does not come for free either, as the API becomes slightly less clean (and what to do in the future when, for example, someone finds a non-SMARTS based way to do this -- add another parameter?). Still I think this is the less of all evils. Thanks Toby Greg! JP On 31 January 2014 06:54, paul.czodrow...@merckgroup.com wrote: I could add the new descriptor as Toby provided it. People are then free to pick between NumRotatableBonds() and NumStrictRotatableBonds (). This has the advantage of maintaining strict backwards compatibility, but I could imagine it being confusing/irritating to people using the code to have to choose between them (or, worse, using both). Another option is to just replace the current NumRotatableBonds() SMARTS with the new one. This loses backwards compatibility, but replaces NumRotableBonds() with something more correct. Finally, I could take a hybrid approach: replace the default NumRotatableBonds() with the new one, but add an extra argument that allows the old one to be used. I'm leaning towards the second option. I'd normally go with the third, but I almost view this as a bug fix for the rotatable bonds definition. Comments? suggestions? Other options? I like your idea of your hybrid approach which would mean backwards compatibility. paul This message and any attachment are confidential and may be privileged or otherwise protected from disclosure. If you are not the intended recipient, you must not copy this message or attachment or disclose the contents to any other person. If you have received this transmission in error, please notify the sender immediately and delete the message and any attachment from your system. Merck KGaA, Darmstadt, Germany and any of its subsidiaries do not accept liability for any omissions or errors in this message which may arise as a result of E-Mail-transmission or for damages resulting from any unauthorized changes of the content of this message and any attachment thereto. Merck KGaA, Darmstadt, Germany and any of its subsidiaries do not guarantee that this message is free of viruses and does not accept liability for any damages caused by any virus transmitted therewith. Click http://www.merckgroup.com/disclaimer to access the German, French, Spanish and Portuguese versions of this disclaimer. -- WatchGuard Dimension instantly turns raw network data into actionable security intelligence. It gives you real-time visual feedback on key security issues and trends. Skip the complicated setup - simply import a virtual appliance and go from zero to informed in seconds. http://pubads.g.doubleclick.net/gampad/clk?id=123612991iu=/4140/ostg.clktrk ___ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss -- WatchGuard Dimension instantly turns raw network data into actionable security intelligence. It gives you real-time visual feedback on key security issues and trends. Skip the complicated setup - simply import a virtual appliance and go from zero to informed in seconds.
Re: [Rdkit-discuss] Possible rotatable bonds replacement
Hi, I would also go for the second option (i.e. replace the current SMART): I also see it as a bug fix. What you could do is to highlight in the release notes or somewhere else the call one would have to do to mimic the behavior of previous releases: Lipinski.RotatableBondSmarts = Chem.MolFromSmarts('[!$(*#*)!D1]-!@[!$(*#*)!D1]') Lipinski.NumRotatableBonds(m) Grégori Date: Fri, 31 Jan 2014 05:05:56 +0100 From: Greg Landrum greg.land...@gmail.com Subject: [Rdkit-discuss] Possible rotatable bonds replacement To: RDKit Discuss rdkit-discuss@lists.sourceforge.net,Toby Wright toby.wri...@inhibox.com Message-ID: CAD4fdRTpTwHbq9iC3VYKfTKOZeGEtsjFG= xpfjmyue6x0_p...@mail.gmail.com Content-Type: text/plain; charset=iso-8859-1 Dear all, A question for the community: Toby Wright submitted a pull request this week that introduces a new, stricter, rotatable bond definition: https://github.com/rdkit/rdkit/pull/211/files The new SMARTS, re-formatted to be somewhat more readable, is: [!$(*#*)\ !D1\ !$(C(F)(F)F)\ !$(C(Cl)(Cl)Cl)\ !$(C(Br)(Br)Br)\ !$(C([CH3])([CH3])[CH3])\ !$([CD3](=[N,O,S])-!@[#7,O,S!D1])\ !$([#7,O,S!D1]-!@[CD3]=[N,O,S])\ !$([CD3](=[N+])-!@[#7!D1])\ !$([#7!D1]-!@[CD3]=[N+])]\ -!@\ [!$(*#*)\ !D1\ !$(C(F)(F)F)\ !$(C(Cl)(Cl)Cl)\ !$(C(Br)(Br)Br)\ !$(C([CH3])([CH3])[CH3])] Toby was quite careful and added a new descriptor - NumStrictRotatableBonds() - that uses this SMARTS. I see a few options to deal with this: I could add the new descriptor as Toby provided it. People are then free to pick between NumRotatableBonds() and NumStrictRotatableBonds(). This has the advantage of maintaining strict backwards compatibility, but I could imagine it being confusing/irritating to people using the code to have to choose between them (or, worse, using both). Another option is to just replace the current NumRotatableBonds() SMARTS with the new one. This loses backwards compatibility, but replaces NumRotableBonds() with something more correct. Finally, I could take a hybrid approach: replace the default NumRotatableBonds() with the new one, but add an extra argument that allows the old one to be used. I'm leaning towards the second option. I'd normally go with the third, but I almost view this as a bug fix for the rotatable bonds definition. Comments? suggestions? Other options? -greg -- WatchGuard Dimension instantly turns raw network data into actionable security intelligence. It gives you real-time visual feedback on key security issues and trends. Skip the complicated setup - simply import a virtual appliance and go from zero to informed in seconds. http://pubads.g.doubleclick.net/gampad/clk?id=123612991iu=/4140/ostg.clktrk___ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
[Rdkit-discuss] SDMolSupplier doesn't support file handlers?
Hi, I need to process large, compressed SDF file. I was planning to use SDMolSupplier but there is a problem: 1. I can't just pass a file name, as this is compressed file and if I understand, SDMolSupplier doesn't support compressed files. 2. I can't read a file to string and then call setData() method of SDMolSupplier, because size of uncompressed string will be larger than available memory. The solution would be to obtain file handler (f = gzip.open(...)) but the problem is that there is no way (at least I don't know any) to pass it to SDMolSupplier. Any ideas? Kind regards, Michał Nowotka -- WatchGuard Dimension instantly turns raw network data into actionable security intelligence. It gives you real-time visual feedback on key security issues and trends. Skip the complicated setup - simply import a virtual appliance and go from zero to informed in seconds. http://pubads.g.doubleclick.net/gampad/clk?id=123612991iu=/4140/ostg.clktrk ___ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
Re: [Rdkit-discuss] SDMolSupplier doesn't support file handlers?
Example from tutorial: import gzip inf = gzip.open('data/actives_5ht3.sdf.gz') gzsuppl = Chem.ForwardSDMolSupplier(inf) ms = [x for x in gzsuppl if x is not None] len(ms)180 pozdrawiam Adrian Jasiński 2014-01-31 Michał Nowotka mmm...@gmail.com: Hi, I need to process large, compressed SDF file. I was planning to use SDMolSupplier but there is a problem: 1. I can't just pass a file name, as this is compressed file and if I understand, SDMolSupplier doesn't support compressed files. 2. I can't read a file to string and then call setData() method of SDMolSupplier, because size of uncompressed string will be larger than available memory. The solution would be to obtain file handler (f = gzip.open(...)) but the problem is that there is no way (at least I don't know any) to pass it to SDMolSupplier. Any ideas? Kind regards, Michał Nowotka -- WatchGuard Dimension instantly turns raw network data into actionable security intelligence. It gives you real-time visual feedback on key security issues and trends. Skip the complicated setup - simply import a virtual appliance and go from zero to informed in seconds. http://pubads.g.doubleclick.net/gampad/clk?id=123612991iu=/4140/ostg.clktrk ___ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss -- WatchGuard Dimension instantly turns raw network data into actionable security intelligence. It gives you real-time visual feedback on key security issues and trends. Skip the complicated setup - simply import a virtual appliance and go from zero to informed in seconds. http://pubads.g.doubleclick.net/gampad/clk?id=123612991iu=/4140/ostg.clktrk___ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
Re: [Rdkit-discuss] SDMolSupplier doesn't support file handlers?
I'm sorry I've overlooked this. Thank you for help. On Fri, Jan 31, 2014 at 2:58 PM, Adrian Jasiński jasinski.adr...@gmail.com wrote: Example from tutorial: import gzip inf = gzip.open('data/actives_5ht3.sdf.gz') gzsuppl = Chem.ForwardSDMolSupplier(inf) ms = [x for x in gzsuppl if x is not None] len(ms) 180 pozdrawiam Adrian Jasiński 2014-01-31 Michał Nowotka mmm...@gmail.com: Hi, I need to process large, compressed SDF file. I was planning to use SDMolSupplier but there is a problem: 1. I can't just pass a file name, as this is compressed file and if I understand, SDMolSupplier doesn't support compressed files. 2. I can't read a file to string and then call setData() method of SDMolSupplier, because size of uncompressed string will be larger than available memory. The solution would be to obtain file handler (f = gzip.open(...)) but the problem is that there is no way (at least I don't know any) to pass it to SDMolSupplier. Any ideas? Kind regards, Michał Nowotka -- WatchGuard Dimension instantly turns raw network data into actionable security intelligence. It gives you real-time visual feedback on key security issues and trends. Skip the complicated setup - simply import a virtual appliance and go from zero to informed in seconds. http://pubads.g.doubleclick.net/gampad/clk?id=123612991iu=/4140/ostg.clktrk ___ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss -- WatchGuard Dimension instantly turns raw network data into actionable security intelligence. It gives you real-time visual feedback on key security issues and trends. Skip the complicated setup - simply import a virtual appliance and go from zero to informed in seconds. http://pubads.g.doubleclick.net/gampad/clk?id=123612991iu=/4140/ostg.clktrk ___ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss