Dear Puck,
Here there is some confusion between the concept of implicit/explicit
hydrogens vs real hydrogen atoms.
In your previous example you were fragmenting an acetone molecule with
real hydrogen atoms explicitly present in the molecule graph. Therefore,
after calling FragmentOnBonds() it was appropriate to convert the dummy
atoms into real hydrogens and leave them as such.
In your latest example you are fragmenting a molecule with no real
hydrogen atoms, only implicit hydrogens, so after converting the dummy
atoms into real hydrogens you have a mixture of real and implicit hydrogens.
Please refer to this gist for a (hopefully) cleare explanation:
https://gist.github.com/ptosco/162b52b018dc95709bd43757c0078a28
You may also refer to the following threads on the mailing list:
https://sourceforge.net/p/rdkit/mailman/message/29679834/
https://sourceforge.net/p/rdkit/mailman/message/36696340/
and to this blog post by Roger Sayle:
https://nextmovesoftware.com/blog/2013/02/27/explicit-and-implicit-hydrogens-taking-liberties-with-valence/
for further clarifications on the various kinds of hydrogen in the RDKit.
Cheers,
p.
On 18/02/2020 12:18, Puck van Gerwen wrote:
Dear Paolo
Thank you for this illustrative example. I tried the same method on a
few other molecules and didn't find consistent results. In the
notebook attached, the first molecule is left with a bivalent carbon,
and the second molecule is only sanitized after explicitly calling the
SanitizeFrags option when getting individual fragments. Am I missing
something?
Kind regards
Puck
On Tue, 18 Feb 2020 at 11:17, Paolo Tosco <paolo.tosco.m...@gmail.com
<mailto:paolo.tosco.m...@gmail.com>> wrote:
Hi Puck,
I modified your previous example to use FragmentOnBonds():
from rdkit import Chem
from rdkit.Chem.Draw import IPythonConsole, MolsToGridImage
smiles = "COC"
mol = Chem.MolFromSmiles("COC")
mol
Here there are no hydrogens (as expected from the SMILES)
mol = Chem.AddHs(mol)
mol
mol_f = Chem.FragmentOnBonds(mol, (2,))
mol_f
for a in mol_f.GetAtoms():
if (a.GetAtomicNum() == 0):
# convert the dummy into hydrogen a.SetAtomicNum(1)
# if you do not need the labels, you may clear them
a.SetIsotope(0)
mol_f
Cheers,
p.
On 18/02/2020 09:45, Puck van Gerwen wrote:
Dear Paolo
Thanks very much for your continuous help. I'm not sure I like
the idea of explicitly defining the valence, so I'll consider
switching to FragmentOnBonds(). From the example you gave
previously though, it quenched the fragments with dummy atoms
rather than hydrogen. Is it possible to quench with hydrogen
using FragmentOnBonds()?
Kind regards
Puck
On Mon, 17 Feb 2020 at 13:42, Paolo Tosco
<paolo.tosco.m...@gmail.com <mailto:paolo.tosco.m...@gmail.com>>
wrote:
Hi Puck,
sorry dor the delay in replying.
After removing the bond you will need to adjust the number of
explicit Hs on both ends with SetNumExplicitHs(), and then
add those Hs in the molecule graph as real atoms with
Chem.AddHs():
rwmol = Chem.RWMol(mol)
bonds = rwmol.GetBonds()
b = rwmol.GetBondWithIdx(2)
a1 = b.GetBeginAtom()
a2 = b.GetEndAtom()
rwmol.RemoveBond(a1.GetIdx(), a2.GetIdx())
a1.SetNumExplicitHs(a1.GetNumExplicitHs() + 1)
a2.SetNumExplicitHs(a2.GetNumExplicitHs() + 1)
rwmol = Chem.AddHs(rwmol, explicitOnly=True)
The rdmolops.FragmentOnBonds() functions adjusts the valences
for you, but you will need to adjust them manually if you do
the fragmentation at a lower level with RemoveBond().
I have attached the modified notebook.
Cheers,
p.
On 12/02/2020 10:03, Puck van Gerwen wrote:
Dear all,
I am trying to read in SMILES to generate mol objects which
I then break into fragments using rwmol.RemoveBond().
Thereafter I want to sanitize the fragments by saturating
with hydrogen. However, I am finding that rdkit often
doesn't sanitize the fragments consistently, leaving
trivalent carbon atoms. I've attached a jupyter notebook of
an example. Could anyone help me consistently generate
sanitized fragments?
Best regards
--
*Puck van Gerwen*
Doktorandin / PhD candidate
Departement Chemie
Klingelbergstrasse 80
CH-4056 Basel
https://chemspacelab.org/
_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
<mailto:Rdkit-discuss@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
--
*Puck van Gerwen*
Doktorandin / PhD candidate
Departement Chemie
Klingelbergstrasse 80
CH-4056 Basel
https://chemspacelab.org/
--
*Puck van Gerwen*
Doktorandin / PhD candidate
Departement Chemie
Klingelbergstrasse 80
CH-4056 Basel
https://chemspacelab.org/
_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss