OK, SMARTS-based MMFF94 charges are now checked in for Jmol.
Obviously the settings are not perfect and will take some tweaking. I'm
sure it's more complicate than I make it out to be -- probably some very
odd definitions in there; certainly some I could not fathom on this first
pass. I haven't taken a full look at OpenBabel's definitions, but I did use
the algorithm in OBForceFieldMMFF94::SetPartialCharges() as my basis (even
though some of that makes almost no sense to me -- for example:
switch (type1) {
case 32:
// 32 OXYGEN IN CARBOXYLATE ANION
// 32 NITRATE ANION OXYGEN
// 32 SINGLE TERMINAL OXYGEN ON TETRACOORD SULFUR
// 32 TERMINAL O-S IN SULFONES AND SULFONAMIDES
// 32 TERMINAL O IN SULFONATES
case 35:
// 35 OXIDE OXYGEN ON SP2 CARBON, NEGATIVELY CHARGED
case 72:
// 72 TERMINAL SULFUR BONDED TO PHOSPHORUS
factor = 0.5f;
break;
case 62:
// 62 DEPROTONATED SULFONAMIDE N-; FORMAL CHARGE=-1
case 76:
// 76 NEGATIVELY CHARGED N IN, E.G, TRI- OR TETRAZOLE ANION
factor = 0.25f;
break;
}
What the heck is that? Convince me that is reasonable! (Or are these not
the MMFF94type numbers in MMFF-I_AppendixB.ascii?)
Jmol's aromatic definition is structural, not electronic, so that certainly
would be one point of difference.
Ideally it would be verified, but for a lot of purposes at least for now
I'll be satisfied with an approximation.
I can get partial charges from MMFF94 far easier from PubChem than I can
from OpenBabel, I think. All I have to do is
load :xxxxx
then save the partial charges in an array and compare them with calculated
values:
load :methanol
A = {*}.partialcharge.all
calculate partialCharge
{*}.partialcharge = A.sub({*}.partialcharge.all)
label %[partialcharge]
print {*}.partialcharge.all.stddev
This will display the differences and print the standard deviation. I must
be doing something right, because I do get this:
$ load :methanol
...
0.0
$ load :acetone
...
8.1649824E-4
$ load ":ethyl acetate"
...
3.9223014E-4
$ load ":benzene"
...
0.0
$ load :pyridine
...
0.0
But I'm sure there are plenty that are problematic.
Caffeine must assign different atom types --
load :caffeine
A = {*}.partialcharge.all
calculate partialCharge
{*}.partialcharge = A.sub({*}.partialcharge.all)
label %[partialcharge]
print {*}.partialcharge.all.stddev
0.10437195
But that's what I expect at this stage. Can't expect everything to be
perfect in a day!
Can I get OpenBabel to report what MMFF94 atom types it is assigning?
Bob
On Fri, Apr 27, 2012 at 8:00 PM, Geoffrey Hutchison <geo...@pitt.edu> wrote:
>
>
> > Geoff, I will look at that. What does "fully validated" mean exactly?
>
> There's an MMFF94 validation set:
> http://ccl.net/cca/data/MMFF94/
>
> This includes 761 structures, plus energies, etc. But one reason I bring
> this up, is that you can use Babel to generate partial charges (e.g., for
> mol2 files):
> echo "c(s1)ccc1Cl" | babel -ismi --gen3d --partialcharge mmff94 -omol2
>
> In short, feel free to use Babel to generate a pile of MMFF94 charges for
> testing. IIRC, the structures in the test set also have MMFF94 charges.
>
> > I have the SMARTS business for MMFF94 charges working in Jmol now for
> getting the atom types -- obviously not validated! -- and I suspect it will
> require a bit of hand-crafting.
>
> We'd be interested in testing SMARTS versus the hand-crafted rules in Open
> Babel.
>
> Hope that helps,
> -Geoff
>
>
--
Robert M. Hanson
Professor of Chemistry
St. Olaf College
1520 St. Olaf Ave.
Northfield, MN 55057
http://www.stolaf.edu/people/hansonr
phone: 507-786-3107
If nature does not answer first what we want,
it is better to take what answer we get.
-- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Blueobelisk-discuss mailing list
Blueobelisk-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/blueobelisk-discuss