Hi Sean,
You are right that using [#7:H] could be incorrect.
How about using explicit hydrogen and then “remove" it?
reaction = AllChem.ReactionFromSmarts('[#7:1]C(=O)OC(C)(C)C>>[#7:1][H]')
reactants_1 =
[Chem.MolFromSmiles('CC(C)(C)OC(=O)NC1(C(=O)O)CCN(C(=O)OCC2c3ccccc3-c3ccccc32)CC1')]
display(Draw._moltoimg(product, (450, 150), [], legend='mol_1'))
products = reaction.RunReactants(reactants_1)
product = products[0][0]
product = AllChem.RemoveHs(product)
display(Draw._moltoimg(product, (450, 150), [], legend='mol_1 deprotected'))
product.UpdatePropertyCache()
display(Draw._moltoimg(product, (450, 150), [], legend='mol_1 updated'))
Then you will get the correct products in both aromatic and aliphatic cases.
Best,
Hongbin Yang 杨弘宾, Ph.D.
Research: Toxicophore and Chemoinformatics
On 10/4/2019 05:04,Sean Stromberg<[email protected]> wrote:
Thanks Hongbin,
The problem is that there are two cases aliphatic and aromatic. If I add the
explicit hydrogen like you suggest then the aliphatic case has the incorrect
number of hydrogens. My question is how to contain the generality of the
chemistry in the reaction smarts. Is that possible with the reaction smarts
syntax, or should I just define two reactions, do a substructure search and
apply the appropriate reaction for every building block I want to deprotect?
Thanks again,
Sean
From: Hongbin Yang
Sent: Wednesday, October 2, 2019 10:09 PM
To: Sean Stromberg
Cc: [email protected]
Subject: Re:[Rdkit-discuss] Boc Deprotection
Hi Sean,
The problem in this case is that in a non-kekulized SMILES, an aromatic
nitrogen atom binding with a hydrogen should be symbolised as “[nH]”. The “H”
is compulsory.
So you can change your reaction into "[#7:1]C(=O)OC(C)(C)C>>[#7H:1]"
Best,
Hongbin Yang 杨弘宾, Ph.D.
Research: Toxicophore and Chemoinformatics
On 10/3/2019 04:53,Sean Stromberg<[email protected]> wrote:
Dear Rdkit Community,
I’m trying to learn reaction smarts with rdkit and would appreciate some
clarification. I’m doing Boc deprotection on a large set of building blocks and
the way I’ve defined my reaction, the number of hydrogens added after the
deprotection is always wrong. I normally can call UpdatePropertyCache() to fix
this, but when it’s an indole that is being deprotected when I call
UpdatePropertyCache() it raises:
ValueError: Sanitization error: Can't kekulize mol. Unkekulized atoms: 0 1 2 3
4 5 7 8 10
I know how to add hydrogens explicitly in the reaction smarts but not with
reference to the nitrogen’s original bonds. Can I add explicit hydrogens
conditionally? What is the best way to obtain results from the two reactant
cases in my example code?
from rdkit import Chem
from rdkit.Chem import AllChem
reaction = AllChem.ReactionFromSmarts('[#7:1]C(=O)OC(C)(C)C>>[#7:1]')
reactants_1 =
[Chem.MolFromSmiles('CC(C)(C)OC(=O)NC1(C(=O)O)CCN(C(=O)OCC2c3ccccc3-c3ccccc32)CC1')]
display(Draw.MolToImage(reactants_1[0], legend='mol_1'))
products = reaction.RunReactants(reactants_1)
product = products[0][0]
display(Draw.MolToImage(product, legend='mol_1 deprotected'))
product.UpdatePropertyCache()
display(Draw.MolToImage(product, legend='mol_1 deprotected and updated'))
reactants_2 =
[Chem.MolFromSmiles('CC(C)(C)OC(=O)n1cc(C[C@@H](NC(=O)OCC2c3ccccc3-c3ccccc32)C(=O)O)c2ccccc21')]
display(Draw.MolToImage(reactants_2[0], legend='mol_2'))
products = reaction.RunReactants(reactants_2)
product = products[0][0]
display(Draw.MolToImage(product, legend='mol_2 deprotected'))
product.UpdatePropertyCache()
display(Draw.MolToImage(product, legend='mol_2 deprotected and updated'))
Thanks for any clarification you can provide!
Sincerely,
Sean Stromberg
P.S. Does anyone know why I get so many products when I run these reactions?
_______________________________________________
Rdkit-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss