This looks great! I may actually make use of it very soon: just yesterday I was looking into pycalls for Mordred.
How does this compare to MolecularGraph.jl? Do the two libraries integrate or have some common underlying data structure?
What are your plans for future features? I’m not very interested in the visualization aspect but I may help implementing other functionalities such as descriptors or substructures.
You mean how MoleculeFlow.jl compares to MolecularGraph.jl? The other two are very different packages.
There are quite a few differences:
MolecularGraph.jl uses a graph as it’s base representation, whereas MoleculeFlow.jl uses a simple struct to hold information about a molecule. There’s the option to convert to a graph if one desires but it’s not as feature-rich. There’s no integration between two libraries, at least not currently.
MolecularGraph.jl chooses to go more “low level” when it comes to source libraries, such as inchilib or coordgen or RDKit MinimalLib, which severely limits the available functionality, unless one decides to do write everything from zero. MoleculeFlow.jl wraps RDKit as its sole source library, which gives it access to everything RDKit has to offer. I’ve ported the majority of functionality most people should ever need but RDKit is huge, so there’s plenty to add if one desires. Additionally, doing certain things in RDKit requires knowing some of its more “arcane” syntax, so MoleculeFlow.jl is there to make it simpler for the user.
I don’t really have a development roadmap, I just like Julia and I’ve spent my entire PhD working with RDKit, so I figured this would be something fun to do. I guess you could say that I’m making tools that I wish I had when I first started.
The plan for now is to finish the visualization and filtering libraries (pretty close on both), add some polish here and there, port some niche functionality I had to develop in RDKit way back and that would be more or less it. Anything after that would depend on my mood/availability and/or user feedback, if the tools gain any traction. There’s ML, quantum chem, docking, whatever else. I know SciML is Julia’s thing, so maybe there will be opportunities in that domain. It would be cool to integrate with and/or develop something on top of this that python can’t provide.
I see, this seems a great approach to me. While I do like the MolecularGraph idea of implementing everything (or almost) in Julia, I feel it is more pragmatic to start with RDKit so that at least we can work on real projects.
One of the main reasons I don’t work mostly in Julia is the lack of these functionalities, having an easy way to hook into RDKit may make this much easier.
I guess that if your library bases the molecular information on RDKit it should also be simple to pass information to MolecularGraph through the RDKit object.
I’ll try to set aside some time in these days to take a deep look at what you have implemented. If you need help with something let me know and I’ll be happy to help out.
Years ago there was a chemometrics person that was very active in the community and wrote a bunch of packages. At some point he stepped away, but a lot of his work is still around.