HI Lukas,

I haven't done the build yet. I will see if I can manage to do one tomorrow.

These changes have been merged onto the trunk and will definitely be in the
release.

-greg


On Tue, Mar 12, 2019 at 10:42 AM Lukas Pravda <lpra...@ebi.ac.uk> wrote:

> Hi Greg,
>
>
>
> I was wondering If you managed to create the Mac build you were talking
> about some time ago. Also I wonder If this functionality is going to be
> part of the next RDKit release?
>
>
>
> Best,
>
> Lukas
>
>
>
> *From: *Greg Landrum <greg.land...@gmail.com>
> *Date: *Tuesday, 5 February 2019 at 14:45
> *To: *Lukas Pravda <lpra...@ebi.ac.uk>
> *Cc: *RDKIT mailing list <rdkit-discuss@lists.sourceforge.net>
> *Subject: *Re: [Rdkit-discuss] Bond tags in SVGs
>
>
>
> Sure. I don't have my Mac with me, so that'll need to wait until I'm back
> in Basel on the weekend.
>
>
>
> -greg
>
>
>
>
>
>
>
> On Tue, Feb 5, 2019 at 2:39 PM Lukas Pravda <lpra...@ebi.ac.uk> wrote:
>
> If it is not too much trouble to ask, please build it for mac os (10.14.3)
> python 3.6.x.
>
>
>
> Thanks!
>
> Lukas
>
>
>
> *From: *Greg Landrum <greg.land...@gmail.com>
> *Date: *Tuesday, 5 February 2019 at 13:40
> *To: *Lukas Pravda <lpra...@ebi.ac.uk>
> *Cc: *RDKIT mailing list <rdkit-discuss@lists.sourceforge.net>
> *Subject: *Re: [Rdkit-discuss] Bond tags in SVGs
>
>
>
>
>
>
>
> On Tue, Feb 5, 2019 at 12:23 PM Lukas Pravda <lpra...@ebi.ac.uk> wrote:
>
>
>
> Thanks for this. It looks excellent!! Is there a way how I can test this?
> Other than cloning and compiling the repository? So far I have been using
> rdkit solely from python and its conda builds, so don’t really know how to
> test it.
>
>
>
> At the moment you would need to get a copy of the repo and build it. I can
> do a build so that it's conda-installable though. Which OS are you using?
>
>
>
> If I understand this correctly, the atom and bond class ids are added only
> after TagAtoms() is called, or are they added at the ‘DrawMolecule()’
> stage?
>
>
>
> Bond classes are added as the bonds are written. Atom classes can only be
> added at the TagAtoms() stage - there's not an object in the SVG for many
> atoms without TagAtoms() being called.
>
>
>
> I can imagine a lot of possible scenarios and use cases with this new
> functionality. However, in order to make the function TagAtoms()
> sufficiently general, a bit more control over the javascript used in the
> events would be needed. As a possible suggestions, I can imagine to pass as
> the third parameter a lambda selector, which would in turn feed the JS
> function with parameters to display names/charges/whatever. Also it would
> be nice to have a mean how to pass dict of key-val properties for both
> atoms and bonds so that you can incorporate related data into the svg.
>
>
>
> Having said that, in my opinion if svgs end up as a part of
> html/javascript application, it is the best to expose this interactivity
> directly from the client, rather than ‘pre-generating’ the behaviour on the
> server. So I’m not sure If it is worth investing time into mimicking this
> functionality in C++/python code, Whoever is in a need of generating
> interactive svgs, can directly consume the svg string and modify it
> according to their needs.
>
>
>
> Yeah, that's more or less what I was thinking. We want to write something
> that can be reasonably easily modified after the fact to produce something
> useful.
>
>
>
>
>
> To sum up, I think it should enough just to tag positions and identifiers
> of atoms/bonds exactly as you do and possibly further extend them with a
> mean how to pass some extra data to all of it. Then users can modify svgs
> whichever way they want, but others might think differently.
>
>
>
> Excellent!
>
>
>
> -greg
>
>
>
>
>
> Best,
>
> Lukas
>
> *From: *Greg Landrum <greg.land...@gmail.com>
> *Date: *Sunday, 3 February 2019 at 17:49
> *To: *Lukas Pravda <lpra...@ebi.ac.uk>
> *Cc: *RDKIT mailing list <rdkit-discuss@lists.sourceforge.net>
> *Subject: *Re: [Rdkit-discuss] Bond tags in SVGs
>
>
>
> Hi Lukas,
>
>
>
> I had a chance to do a bit of work on this recently and I'd be interested
> to hear your feedback.
>
>
>
> Bonds are now tagged with their bond IDs (using classes) and the
> "TagAtoms()" function now adds clickable transparent circles above each
> atom. These are also tagged with atom IDs using classes. TagAtoms() also
> lets you add callback functions for events associated with the atom
> circles. At the moment these are simply called with the atom id, but
> there's almost certainly a better way to do that. Suggestions are very
> welcome.
>
>
>
> Here's a gist showing what's currently on the branch:
> https://gist.github.com/greglandrum/d23517cb449003252cf09b5bd14d8637
>
>
>
>
>
> On Tue, Dec 4, 2018 at 6:46 PM Lukas Pravda <lpra...@ebi.ac.uk> wrote:
>
> Hi Greg,
>
>
>
> that’s what I have been thinking, unlucky. Essentially, I want to color
> the molecule in web-browser with various annotations and make it
> interactive. For that part I’m converting it internally to the d3.js
> internal representation (https://d3js.org/) and connecting it to its
> environment. For most of the parts I’m just fine with the position of atoms
> in svg using the tag property.
>
>
>
> What I wanted to avoid is to replicate rdkit svg drawing code in
> javascript so that I don’t want to consume the dump of rdkit.Mol object.
> What I wanted to do instead is to use existing svg images and parse them
> into d3.js, so I know which paths belong to which bond.
>
>
>
> At this point my only idea is to color bonds individually and based on the
> overlay/proximity use kd-tree to reverse-engineer which bonds the paths
> belong to, which is a bit overkill in my view.
>
>
>
> Lukas
>
>
>
>
>
> *From: *Greg Landrum <greg.land...@gmail.com>
> *Date: *Tuesday, 4 December 2018 at 17:24
> *To: *Lukas Pravda <lpra...@ebi.ac.uk>
> *Cc: *RDKIT mailing list <rdkit-discuss@lists.sourceforge.net>
> *Subject: *Re: [Rdkit-discuss] Bond tags in SVGs
>
>
>
> Hi Lukas,
>
>
>
> There's not currently a way to do this at the moment. The closest you can
> get is by calling AddMoleculeMetadata():
>
>
>
> In [6]: d = Draw.MolDraw2DSVG(200,200)
>
>
>
> In [8]: d.DrawMolecule(nm)
>
>
>
> In [10]: d.AddMoleculeMetadata(nm)
>
>
>
> In [11]: d.FinishDrawing()
>
>
>
> In [12]: svg = d.GetDrawingText()
>
>
>
> In [14]: print(svg)
>
> <?xml version='1.0' encoding='iso-8859-1'?>
>
> <svg version='1.1' baseProfile='full'
>
>               xmlns='http://www.w3.org/2000/svg'
>
>                       xmlns:rdkit='http://www.rdkit.org/xml'
>
>                       xmlns:xlink='http://www.w3.org/1999/xlink'
>
>                   xml:space='preserve'
>
> width='200px' height='200px' >
>
> <rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='200'
> height='200' x='0' y='0'> </rect>
>
> <path d='M 9.09091,126.243 100,73.7568'
> style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2px;stroke-linecap:butt;stroke-linejoi
>
> n:miter;stroke-opacity:1' />
>
> <path d='M 100,73.7568 190.909,126.243'
> style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2px;stroke-linecap:butt;stroke-linejoi
>
> n:miter;stroke-opacity:1' />
>
> <metadata>
>
> <rdkit:mol xmlns:rdkit = "http://www.rdkit.org/xml"; version="0.9">
>
> <rdkit:atom idx="1" atom-smiles="[CH3]" drawing-x="9.09091"
> drawing-y="126.243" x="-1.29904" y="-0.25" z="0" />
>
> <rdkit:atom idx="2" atom-smiles="[CH2]" drawing-x="100"
> drawing-y="73.7568" x="0" y="0.5" z="0" />
>
> <rdkit:atom idx="3" atom-smiles="[CH3]" drawing-x="190.909"
> drawing-y="126.243" x="1.29904" y="-0.25" z="0" />
>
> <rdkit:bond idx="1" begin-atom-idx="1" end-atom-idx="2" bond-smiles="-" />
>
> <rdkit:bond idx="2" begin-atom-idx="2" end-atom-idx="3" bond-smiles="-" />
>
> </rdkit:mol></metadata>
>
> </svg>
>
>
>
> This gets you the information you need to connect bond indices to the
> atoms, but I suspect that's not what you're looking for.
>
>
>
> In general you are guaranteed that the order of the bonds in the output
> SVG is the same as the order in the input molecule, but you can have
> multiple paths for a given bond. For example here, where the end atoms have
> different colors:
>
>
>
> In [25]: print(svg)
>
> <?xml version='1.0' encoding='iso-8859-1'?>
>
> <svg version='1.1' baseProfile='full'
>
>               xmlns='http://www.w3.org/2000/svg'
>
>                       xmlns:rdkit='http://www.rdkit.org/xml'
>
>                       xmlns:xlink='http://www.w3.org/1999/xlink'
>
>                   xml:space='preserve'
>
> width='200px' height='200px' >
>
> <rect style='opacity:1.0;fill:#FFFFFF;stroke:none' width='200'
> height='200' x='0' y='0'> </rect>
>
> <path d='M 9.09091,100 59.1479,100'
> style='fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2px;stroke-linecap:butt;stroke-linejoin:mi
>
> ter;stroke-opacity:1' />
>
> <path d='M 59.1479,100 109.205,100'
> style='fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2px;stroke-linecap:butt;stroke-linejoin:mi
>
> ter;stroke-opacity:1' />
>
> <text x='109.205' y='107.5'
> style='font-size:15px;font-style:normal;font-weight:normal;fill-opacity:1;stroke:none;font-family:sans-serif;text
>
> -anchor:start;fill:#FF0000' ><tspan>OH</tspan></text>
>
> <metadata>
>
> <rdkit:mol xmlns:rdkit = "http://www.rdkit.org/xml"; version="0.9">
>
> <rdkit:atom idx="1" atom-smiles="[CH3]" drawing-x="9.09091"
> drawing-y="100" x="-0.75" y="5.55112e-17" z="0" />
>
> <rdkit:atom idx="2" atom-smiles="[OH]" drawing-x="122.71" drawing-y="100"
> x="0.75" y="-5.55112e-17" z="0" />
>
> <rdkit:bond idx="1" begin-atom-idx="1" end-atom-idx="2" bond-smiles="-" />
>
> </rdkit:mol></metadata>
>
> </svg>
>
>
>
> What are you looking to be able to do? That may make it easier to either
> come up with a work around or figure out what a new feature addition might
> look like.
>
>
>
> -greg
>
>
>
>
>
>
>
>
>
> On Mon, Dec 3, 2018 at 6:57 PM Lukas Pravda <lpra...@ebi.ac.uk> wrote:
>
> Hi all,
>
>
>
> I was wondering if there is a way how you can tag <path> elements (bonds)
> in the svg created by rdkit.
>
>
>
> i.e. transform something like this:
>
> <path d='M 265.658,263.25 342.74,218.746' style='...' />
>
> <path d='M 342.74,218.746 419.822,174.241' style='...' />
>
>
>
> Into:
>
> <path bondId='1' d='M 265.658,263.25 342.74,218.746' style='...' />
>
> <path bondId='2' d='M 342.74,218.746 419.822,174.241' style='...' />
>
>
>
> Or similar. I’ve found possibility of tagging atoms in the SVG using
> Draw.rdMolDraw2D.MolDraw2DSVG.drawOptions() method that exposes property
> includeAtomTags. This then renders following additional elements into the
> SVG:
>
> rdkit:atom idx="4" label="O<sup>-</sup>" x="153.479" y="82.8259" />
>
>
>
> But I have not seen anything like this for bonds (latest release of RDKIT
> and python). Thanks, in advance for any hints. I was wondering about using
> *highlightBondLists* and then based on the svg infer the bond annotation,
> but that seems to be a bit of an overkill.
>
>
>
> Cheers,
>
> Lukas
>
>
>
>
>
> _______________________________________________
> 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

Reply via email to