On Wed, Apr 1, 2009 at 8:37 PM, George Oakman <[email protected]> wrote:
>
> Can delocalized bonds be represented using SMILES strings? (this might be a
> silly question, please excuse my limited level of understanding of this
> domain).
It's not a particularly silly question, but the answer is still "not
directly". You need to localize the bonds to represent the molecule
with SMILES. The four bond types supported by SMILES are single,
double, triple, and aromatic (which only applies to ring systems).
Recognizing that a certain system of single and double bonds is
delocalized would be the job of the cheminformatics system. In the
RDKit you can ask if bonds are conjugated, which might be a first step
in deciding if they are delocalized:
#---------
[6]>>> m = Chem.MolFromSmiles('CCC(=O)O')
[7]>>> m.GetBondWithIdx(0).GetIsConjugated()
Out[7] False
[8]>>> m.GetBondWithIdx(1).GetIsConjugated()
Out[8] False
[9]>>> m.GetBondWithIdx(2).GetIsConjugated()
Out[9] True
[10]>>> m.GetBondWithIdx(3).GetIsConjugated()
Out[10] True
[11]>>> m = Chem.MolFromSmiles('C=CC(=O)O')
[12]>>> m.GetBondWithIdx(0).GetIsConjugated()
Out[12] True
[13]>>> m.GetBondWithIdx(1).GetIsConjugated()
Out[13] True
#---------
But then this is all determined after the molecule has already been read in.
-greg