Hi Adrian,

On Nov 21, 2007 6:19 PM, Adrian Schreyer <[email protected]> wrote:
>
> I am having problems working with biomocules such as B12 (sdf attached). If
> I read the file RDKit will return an error message complaining about
> valences which are greater than permitted, in this case atom # 1 N. I
> suspect the problem is due to metal coordination (in this case a Cobalt
> atom) which occurs in the structure. This problems occurs in most
> Porphyrin-like molecules.

The problem in this case, as you suspect, isn't so much that B12 is a
biomolecule but is instead caused by the metal coordination.

In the sdf you provided, the nitrogens are all four coordinate but
have no charge. As drawn they would have 10 valence electrons each;
since the RDKit sanitization does not like violations of the octet
rule, the software rejects this molecule.

You can parse the SD file if you turn off sanitization:
>>> m =Chem.MolFromMolFile('B12.mol',sanitize=False)
>>> m.GetNumAtoms()
179
This trick doesn't yield a 100% happy molecule as some operations
require that sanitization has been done (e.g. things like SMILES
generation). Theoretically one could read one of these organometallic
species in without sanitization, adjust the bond orders to the metal
programatically, and then sanitize the molecule.

Alternatively, if you draw the molecule in such a way that Ns have
octets (see the schematic in the attached mol file), you can work with
things normally. One can argue about which of these representation is
less inaccurate (certainly neither is correct).

-greg

Attachment: porph.mol
Description: MOL mdl chemical test

Reply via email to