Hi Jean-Marc, RDKit says that the oxygen is sp2 because it has a special rule that considers the conjugation. Whether that is the "true" hybridization for the oxygen could be a long debate; I sometimes hear that it's somewhere between sp2 and sp3, perhaps not as close to sp2 as the nitrogen in amides, but that's all fuzzy and in the end a cheminformatics toolkit needs to have a clear rule.
As far as I can tell here's the relevant code: https://github.com/greglandrum/rdkit/blob/d41752d558bf7200ab67b98cdd9e37f1bdd378de/Code/GraphMol/ConjugHybrid.cpp#L172 I'll quote the comment here (the "case 4" refers to the return value of numBondsPlusLonePairs() for the atom). case 4: // potentially SP3, but we'll set it down to SP2 // if we have a conjugated bond (like the second O // in O=CO) // we'll also avoid setting the hybridization down to // SP2 in the case of an atom with degree higher than 3 // (e.g. things like CP1(C)=CC=CN=C1C, where the P // has norbs = 4, and a conjugated bond, but clearly should // not be SP2) // This is Issue276 Hope this helps, Ivan On Tue, May 26, 2020 at 8:10 AM Jean-Marc Nuzillard < jm.nuzill...@univ-reims.fr> wrote: > Dear all, > > I recently arrived to this: > > >>> from rdkit import Chem > >>> m = Chem.MolFromSmiles("C(=O)OC") > >>> for x in m.GetAtoms(): > ... if x.GetSymbol() == 'O': > ... print(repr(x.GetHybridization())) > ... > rdkit.Chem.rdchem.HybridizationType.SP2 > rdkit.Chem.rdchem.HybridizationType.SP2 > >>> > > even though an oxygen atom is really SP2 but the other one is SP3. > I use version 2020.03.1 of RDKit. > > Best regards, > > Jean-Marc > > -- > > Dr. Jean-Marc Nuzillard > Institute of Molecular Chemistry, CNRS UMR 7312 > Faculté des Sciences Exactes et Naturelles, Bâtiment 18 > BP 1039 > 51687 REIMS Cedex 2 > France > > Tel : 33 3 26 91 82 10 > Fax : 33 3 26 91 31 > 66http://www.univ-reims.fr/icmrhttp://eos.univ-reims.fr/LSD/CSNteam.html > > ORCID: > 0000-0002-5120-2556http://www.univ-reims.fr/LSD/http://www.univ-reims.fr/LSD/JmnSoft/ > > _______________________________________________ > Rdkit-discuss mailing list > 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