Hello All,

I just inserted the test smile string as shown in the code below.  This should 
just test the function and not how molecule information is passed to it.  I can 
see that the molecular formula is indeed updated for both formal charge and the 
additional hydrogen atom. The bond order also seems correct. The sdf file looks 
correct as well with the proper charge and 4 bonds on nitrogen.

However, a printing of the smiles string shows an odd placement of the Hydrogen 
atom  [N+]([H]) is not what I would expect....


The test output is:
Tertiary nitrogen found:  ((1, 2, 3, 5),)
This is the symbol and charge for the tertiary nitrogen before:  N 0 CCN(CC)CC
This is the symbol and charge for the tertiary nitrogen after:  N 1
test3-10:  SANITIZE_NONE C6H15N C6H15N+ C6H16N+ 4 
[H]C([H])([H])C([H])([H])[N+]([H])(C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])[H]

test code
def tertNitrogenProt(molecule0,molName1,w_sdf,w_smi):
      patt=rdkit.Chem.MolFromSmarts('[#6]-[#7]([#6])-[#6]')
      molecule=rdkit.Chem.MolFromSmiles('CCN(CC)CC')
      matches=molecule.GetSubstructMatches(patt)
      tertNHnum=0
      if matches:
        print "Tertiary nitrogen found: ", matches
        for i in matches:
         moleculeStrings=rdkit.Chem.MolToSmiles(molecule,isomericSmiles=True)
         molecule.UpdatePropertyCache()
         atomSymbol9=molecule.GetAtomWithIdx(i[1]).GetSymbol()
         formalCharge9=molecule.GetAtomWithIdx(i[1]).GetFormalCharge()
         print "This is the symbol and charge for the tertiary nitrogen before: 
",atomSymbol9,formalCharge9,moleculeStrings
#set the formal charge on the protonated tertiary nitrogen to zero
         test7=rdkit.Chem.AllChem.CalcMolFormula(molecule)
         molecule.GetAtomWithIdx(i[1]).SetFormalCharge(1)
         atomSymbol9=molecule.GetAtomWithIdx(i[1]).GetSymbol()
         formalCharge9=molecule.GetAtomWithIdx(i[1]).GetFormalCharge()
         test8=rdkit.Chem.AllChem.CalcMolFormula(molecule)
         print "This is the symbol and charge for the tertiary nitrogen after: 
",atomSymbol9,formalCharge9
#update property cache and check for nonsense
         molecule.UpdatePropertyCache()
         moleculeH=rdkit.Chem.AddHs(molecule)
         test3=rdkit.Chem.SanitizeMol(moleculeH)
         test9=rdkit.Chem.AllChem.CalcMolFormula(moleculeH)
         test10=moleculeH.GetAtomWithIdx(i[1]).GetDegree()
         moleculeStrings2=rdkit.Chem.MolToSmiles(moleculeH,isomericSmiles=True)
         print "test3-10: ",test3,test7,test8,test9,test10,moleculeStrings2


________________________________
From: Greg Landrum [[email protected]]
Sent: Wednesday, August 31, 2016 7:49 PM
To: Bennion, Brian
Cc: [email protected]
Subject: Re: [Rdkit-discuss] protonating proper tertiary amines



On Thu, Sep 1, 2016 at 1:01 AM, Bennion, Brian 
<[email protected]<redir.aspx?REF=1_QAwwFys5nWzdGqcay7l6taiJ8_m14GE1RaNuSsBZ4c1bl1itLTCAFtYWlsdG86YmVubmlvbjFAbGxubC5nb3Y.>>
 wrote:

On one compute node with one thread, two reagents are combined in a synthesis 
function and then the tertNitrogenProt function is called and the current 
molecule is passed through to be searched for the tertiary nitrogen and 
protonated if found.

What I am not clear on, is whether the properties are passed properly from the 
synthesis function to the tertNitrogenProt function.

Yeah, given that the function works correctly when it's called on its own, I 
think the problem is likely to be in the way it's being called.

Question, what are the outputs of UpdatePropertyCache()?  When I test for 
output, only the word _none_ is printed.  I don't know if that means there were 
no properties present, or they did not need to be updated.

UpdatePropertyCache() doesn't return a value, that's why you're seeing None. 
The method just causes the implicit properties on each of the molecule's atoms 
to be re-computed, but it doesn't return anything.

-greg

------------------------------------------------------------------------------
_______________________________________________
Rdkit-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

Reply via email to