kjappelbaum / mofchecker

Basic sanity checks for MOFs.
https://mofchecker.readthedocs.io/en/latest/background.html
MIT License
21 stars 4 forks source link

Estimate if MOF is charged #32

Open kjappelbaum opened 3 years ago

kjappelbaum commented 3 years ago

Feature description

We can extract the linkers and we can estimate the oxidation states using oximachine. We need to think about how to deal with more complicated nodes with OH, etc.

Implementation idea

Alternatives

Andrew-S-Rosen commented 3 years ago

For what it's worth, I think this would be a great use-case! On the topic, I've been wondering if it'd be possible to use a similar approach to flag potentially problematic structures that don't have proper charge-balancing. For instance, a really gnarly structure to flag correctly is OVADAR. At first glance, nothing seems immediately wrong about it, but the real chemical formula is Mg2Li(BTC)(HBTC)(DMF)2 whereas the formula in the CIF is Mg2Li(BTC)(BTC)(DMF)2. The only practical way (that I can tell) to catch that extra H is by decomposing the structure, getting the charge of the linker and node (e.g. with oximachine), and hoping it comes up as unbalanced. As you already alluded to, there are likely to be many challenges with charge assignment approaches, but I think such an approach would be quite useful in the end!

kjappelbaum commented 3 years ago

@arosen93 you have the GPL license for MOFid due to the openbabel dependency? It would be great to use it to get the SMILES for the linkers, but I would rather want to stay with a more permissive license

Andrew-S-Rosen commented 3 years ago

@kjappelbaum. Looks like that probably is the reason why. The MOFid repo was started by @bbucior, and I'm not sure the origins of the licensing, but I do see that openbabel is GPL. I guess that would mean MOFid in turn would need to be GPL (if my understanding of GPL is correct). A modified version of openbabel is packaged with MOFid.

bbucior commented 3 years ago

Confirmed, that's where the GPL decision came from. IANAL, but you might be able to use the package without re-licensing yours by calling it as a command-line utility or similar. But there would still be the challenge of the cmake compilation steps.