Re: [Rdkit-discuss] Nickel unrecognized atom in RDKit?
Open-Source Cheminformatics and Machine Learning
Brought to you by:
glandrum
|
From: Marshall L. <mar...@em...> - 2009-03-30 20:22:13
|
Greg-
Your explanation of "minium" perfectly matched my vague suspicions.
Thanks for always being helpful and thorough with your answers.
I will use the try/catch for my code and start putting together the
examples and bug on sourceforge.
Thanks!
-Marshall
On Mar 30, 2009, at 12:15 PM, Greg Landrum wrote:
> Dear Marshall,
>
> A quick (and partial) reply.
>
> On Mon, Mar 30, 2009 at 7:22 PM, Marshall Levesque
> <mar...@em...> wrote:
>> Greg-
>>
>> Here is how I fixed the nickel and copper (found this later)
>> organomettalic
>> compounds within 'atomtyper.cpp':
>>
>> ######### addAtomChargeFlags #####
>> case 28: // Ni
>> switch(totalValence){
>> case 2:
>> atomKey += "+2";
>> break;
>> default:
>> if(tolerateChargeMismatch) atomKey += "+2";
>> BOOST_LOG(rdErrorLog) << "UFFTYPER: Unrecognized charge
>> state for
>> atom: "<< atom->getIdx() << std::endl;
>> }
>> break;
>> case 29: // Cu
>> switch(totalValence){
>> case 1:
>> atomKey += "+1";
>> break;
>> case 2:
>> atomKey += "+2";
>> break;
>> default:
>> if(tolerateChargeMismatch) atomKey += "+1";
>> BOOST_LOG(rdErrorLog) << "UFFTYPER: Unrecognized charge
>> state for
>> atom: "<< atom->getIdx() << std::endl;
>> }
>> break;
>>
>> #######################
>>
>> ######## getAtomLabel ########
>> case 28:
>> atomKey += '4';
>> if(atom->getHybridization()!=Atom::SP3D){
>> BOOST_LOG(rdWarningLog) << "UFFTYPER: Warning:
>> hybridization
>> set to Square Planar for atom "<< atom->getIdx() << std::endl;
>> }
>> break;
>> case 29:
>> atomKey += '3';
>> if(atom->getHybridization()!=Atom::SP3){
>> BOOST_LOG(rdWarningLog) << "UFFTYPER: Warning:
>> hybridization
>> set to Square Planar for atom "<< atom->getIdx() << std::endl;
>> }
>> break;
>> ##########################
>
> Thanks. I'll have to go through this a bit more and think about it.
>
>>
>> Now I have found a problem with lead tetraoxide (aka minium or Pb3O4)
>>
>> http://www.emolecules.com/cgi-bin/more?vid=474486
>
> The problem here goes far, far beyond UFF parameters and
> hybridization. Pb3O4 is not a molecular species, it forms a continuous
> crystalline network connected by covalent bonds. In the language of
> solid-state chemistry, it's an extended system, not a molecule. Pb3O4
> isn't a molecular formula per se, it's just telling you the ratio of
> the components in the crystal. Take a look at the wikipedia page for
> minium (http://en.wikipedia.org/wiki/Minium) to see a picture of the
> crystal structure. Basically, you can't represent this substance as a
> SMILES at all and can't even do a reasonable approximation without
> including a *lot* of atoms. Even if you could, the distance geometry
> code and force field in the RDKit aren't likely to be able to do
> anything sensible with it.
>
>>
>> The initial error was similar to the previous Ni and Cu problems
>> but I have
>> not found a fix using the same solution strategy:
>>
>> [15:46:23] UFFTYPER: Unrecognized atom type: Pb3+3 (0)
>> [15:46:23] UFFTYPER: Unrecognized charge state for atom: 2
>> [15:46:23] UFFTYPER: Unrecognized atom type: Pb3+3 (2)
>> [15:46:23] UFFTYPER: Unrecognized charge state for atom: 4
>> [15:46:23] UFFTYPER: Unrecognized atom type: Pb3+3 (4)
>> [15:46:23]
>>
>> ****
>> Pre-condition Violation
>> bad params pointer
>> Violation occurred on line 21 in file ForceField/UFF/BondStretch.cpp
>> Failed Expression: end1Params
>> ****
>>
>> If there isn't an easy fix, can you suggest a strategy for
>> preventing RDKit
>> from terminating when encountering these hybridization errors and
>> just
>> moving to the next molecule, while making a note of the molecules
>> name to be
>> logged as an error?
>
> Sure, just put the embedding step in a try/except block and catch
> the failure.
>
>> For the Ni and Cu additions to AtomTyper.cpp, you told me to come
>> up with
>> some test cases in $RDBASE/Code/GraphMol/ForceFieldHelpers/
>> testHelpers.cpp
>> Do you want me to follow the examples in that file and also submit
>> a bug to
>> sourceforge.net to connect the test case to?
>>
>
> Please. That would be very helpful.
>
> -greg
|