Hi Chaya

It’s quite easy to compute the charge by (no. of valence electrons)−8 + (no. of 
bonds). This will work for most atoms. Have a look at Table 2 in this paper 
10.1002/bkcs.10334

Best regards, Jan

On 4 Oct 2019, at 18.27, Chaya Stern 
<chaya.st...@choderalab.org<mailto:chaya.st...@choderalab.org>> wrote:

Hello all,

I am trying to create a molecule from geometry (a numpy array n_atoms x 3), 
symbols (list of atom symbols) and a connectivity map (list of list where each 
list is [atom_1_idx, atom_2_idx, bond_type]). The information also has all 
hydrogens. The following code works most of the time:

from rdkit import Chem
from rdkit.Geometry.rdGeometry import Point3D

_BO_DISPATCH_TABLE = {1: Chem.BondType.SINGLE, 2: Chem.BondType.DOUBLE, 3: 
Chem.BondType.TRIPLE}

conformer = Chem.Conformer(len(symbols))

molecule = Chem.Mol()
em = Chem.RWMol(molecule)
for i, s in enumerate(symbols):
    atom = em.AddAtom(Chem.Atom(cmiles.utils._symbols[s]))
    atom_position = Point3D(geometry[i][0], geometry[i][1], geometry[i][2])
    conformer.SetAtomPosition(atom, atom_position)

# Add connectivity
for bond in connectivity:
    bond_type = _BO_DISPATCH_TABLE[bond[-1]]
    em.AddBond(bond[0], bond[1], bond_type)

molecule = em.GetMol()
Chem.SanitizeMol(molecule)

However, if a molecule has a tetravalent nitrogen, the data that I have does 
not have the explicit formal charge for each atom so I get the following error:

ValueError: Sanitization error: Explicit valence for atom # 0 N, 4, is greater 
than permitted


Given that I have all the hydrogen and the total charge of the molecules, I can 
go in and add the charge to the problematic nitrogen and check that the total 
charge is still the same. But I am not sure how to capture the offending atom 
instance. I can get the information from parsing the error message (which is 
the hack I use now) but I was wondering if there is a better way to do it.


Thank you,

Chaya

_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net<mailto:Rdkit-discuss@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

Reply via email to