Here’s some more general code

Best regards, Jan


smiles_list = ["CCO","CCS","CC=O","Cc1ccncc1",'NCC(C)=C','CC(N)=N','o1cccc1']

reaction_list = 
['[C;H2:1]=[C,N:2]>>[CH3:1][*+:2]','[C;H1:1]=[C,N:2]>>[CH2:1][*+:2]','[C;H0:1]=[C,N:2]>>[CH1:1][*+:2]',
                 
'[N;H2:1]>>[*H3+:1]','[O,S,N;H1:1]>>[*H2+:1]','[O,S,N,F,Cl;H0:1]>>[*H1+:1]']

ions = []
ion_smiles = []
for smiles in smiles_list:
    mol = Chem.MolFromSmiles(smiles)
    Chem.Kekulize(mol,clearAromaticFlags=True)
    for i,reaction in enumerate(reaction_list):
        rxn = AllChem.ReactionFromSmarts(reaction)
        ps = rxn.RunReactants((mol,))
        for x in ps:
            smiles = Chem.MolToSmiles(x[0],isomericSmiles=True)
# First three reactions can create wrong protonation state on N
            if i <= 2:
                smiles = smiles.replace("NH2+","N+")
            if smiles not in ion_smiles:
                ion_smiles.append(smiles)
                print smiles
                ions.append(Chem.MolFromSmiles(smiles))


On 25 Mar 2019, at 10.12, HC.Ji 
<ji.hongc...@foxmail.com<mailto:ji.hongc...@foxmail.com>> wrote:

I m tring simulate the fragmentation of ESI mass spectra based on the [M+H]+ 
ions. Thus, I want to simulate the ionisation by the addition of one proton to 
heteroatoms. For example,
from rdkit.Chem import AllChem
from rdkit.Chem.Draw import rdMolDraw2D
from IPython.display import SVG
# read mol
mol = Chem.MolFromSmiles('O=C(O)C1=CC(=NNC2=CC=C(C=C2)C(=O)NCCC(=O)O)C=CC1=O')
# draw the mol
dr = rdMolDraw2D.MolDraw2DSVG(800,800)
dr.SetFontSize(0.3)
op = dr.drawOptions()
for i in range(mol.GetNumAtoms()) :
  op.atomLabels[i] = mol.GetAtomWithIdx(i).GetSymbol() + str((i+1))
  AllChem.Compute2DCoords(mol)
  dr.DrawMolecule(mol)
  dr.FinishDrawing()
  svg = dr.GetDrawingText()
  SVG(svg)
If I want to add one proton to the N atom with the index of #17 and to ionize 
the molecule, what should I do in rdkit?
_______________________________________________
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