From: Noel O'B. <bao...@gm...> - 2008-04-29 20:25:58
|
2008/4/29 Noel O'Boyle <bao...@gm...>: > ---------- Forwarded message ---------- > From: Florian Nigsch <fn...@ca...> > Date: 2008/4/29 > Subject: pybel: Addition of hydrogens > To: Noel O'Boyle <bao...@gm...> > > > > Hi Noel, > > And here we go with the next question: > > 1) I read in a molecule (sildenafil), remove the hydrogens, get a > canonical smiles > (CCOc1ccc(cc1c1nc(=O)c2n(C)nc(CCC)c2[nH]1)S(=O)(=O)N1CCN(C)CC1) which > I keep to create the same molecule again later. > 2) I read the molecule back in from the smiles with pybel.readstring() > 3) I delete the hydrogens with OBMol.DeleteHydrogens() > 4) I match with pybel.Smarts("[R]~[!R]") - i.e., get anything > non-ring that is connected to a ring > 5) print [m.atoms[x-1].OBAtom.GetType() for (y,x) in SmartsMatch] and get > > ['O3', 'So2', 'O2', 'C3', 'C3', 'So2', 'C3'] - which is fine. > > If I leave out step 3, then I find > > ['O3', 'So2', 'O2', 'C3', 'C3', 'H', 'So2', 'C3'] > > and there is suddenly a hydrogen in there. Where does it come from? I note that the canonical smiles in step 1 also contains a hydrogen. I have a feeling that the hydrogen is necessary to specify the protonation state of the N in the ring. Maybe someone else can comment. > Does OpenBabel add hydrogens internally when reading in from a smiles? > Why does it only match one out of all possible ring-hydrogens (there > are about 8 I think)? > > Thanks a lot, > > Flo > |