Hi Michal,

A key point to consider is that the default bond order in SMARTS is not
single, but "single or aromatic". If you really want to match single bonds
only, you can specify a single bond with "-".

However, it sounds as if you actually expect aromatic bonds to match as
well, since you expect Cc1ccccc1C to become CC=CC=CC=CC; but only bonds
that would show up as "single" on a Kekule structure? You _could_ do that
if you kekulize the molecule first (Chem.Kekulize(mol)), but the problem
there is that there is more than one Kekule structure and you'll only get
one of them, where the bond that you were thinking of breaking in this
example might be double.

Regarding "aromatic" non-ring atoms on the products, I think sanitizing the
products might help. (See Chem.SanitizeMol).

Hope this helps,
Ivan

‪On Wed, Jun 21, 2023 at 5:30 AM ‫מיכל רוט‬‎ <michalroth...@gmail.com>
wrote:‬

> Hello,
> I am trying to run reactions using RunReactants.
> I want to define a general reaבtion involving braking bond in a chain of
> one-single bonded carbons: '[#6:1][#6:2][#6:3][#6:4] >>
> ([#6:1][#6:2].[#6:3][#6:4])'.
> When the reaction does not involve any aromatic carbons all works fine,
> bun when I hava a reactant with aromatic carbons I get strange things..
> For example - if I use the following structure as reactant - 'Cc1ccccc1C'
> I expect to get after the reaction only one product - 'CC=CC=CC=CC'.
> But it seems that any chain in the aromatic ring recognized as one-single
> bonded carbons and I get many other fragments( - after converting the
> pruducts to smiles format using Chem.MolToSmiles):
> ['CccccccC',
>  'ccccc(C)cC',
>  'C',
>  'Cc1ccccc-1',
>  'ccccc(C)CC',
>  'cccc(C)c(C)C',
>  'C',
>  'Cc1ccccc-1',
>  'ccccc(C)CC',
>  'cccc(C)c(C)C',
>  'CccccccC',
>  'ccccc(C)cC',
>  'CcccccCC',
>  'C',
>  'Cc1c-cccc1',
>  'ccc(C)c(C)cC',
>  'Ccccc(C)cC',
>  'cc(C)c(C)ccC',
>  'cc(C)c(C)ccC',
>  'Ccccc(C)cC',
>  'ccc(C)c(C)cC',
>  'C',
>  'Cc1c-cccc1',
>  'CcccccCC']
>  More over, atoms are marked as aromatic eventhough they are not anymore.
>  When I try to change it back to mol object (using Chem.MolFromSmiles) I
> get an error message:
>  "non-ring atom 1 marked aromatic"
>
> I will be greatfull if anyone has an idea for solving this problem without
> specifing the aromatic ring in the reaction (I want to keep the reaction
> general so it could happen in any place in the molecule that has a chain of
> 3 single bonds).
>
> Thank you!
> Michal
>
> my code:
>
> def flatten(lst):  # take list of lists and convert them to one list.
>     return sum(([x] if not isinstance(x, list) else flatten(x)
>                 for x in lst), [])
>
> def flat_children(children):
>     return flatten(children)
>
> def mol_to_smile(MolList):  # convert mol to smiles
>     smiles = []
>     for x in range(len(MolList)):
>         new_smile = Chem.MolToSmiles(MolList[x])
>         new_smiles = split_smile(new_smile)
>         for n_s in new_smiles:
>             smiles.append(n_s)
>     return smiles
>
> def split_smile(smile):
>     """The function split two fragments in one smile into two smiles"""
>     smile = smile.split(".")
>     return(smile)
>
> smile = 'CC1=CC=CC=C1C'
> mol = Chem.MolFromSmiles(smile)
> rxn = AllChem.ReactionFromSmarts('[#6:1][#6:2][#6:3] >>
> ([#6:1][#6:2].[#6:3])')
> products = rxn.RunReactants((mol,))
> mols = []
> for product in products:
>     mols.append([x for x in product]) # converts the products from tuples
> (products) to list (mols)
>     mols = flat_children(mols)        # return [Mol, Mol, ..]
> smiles = mol_to_smile(mols)
> print(smiles)
>
> for smile in smiles:
>     m = Chem.MolFromSmiles(smile)
>     img = Draw.MolToImage(m)
>     img.show()
>
>
> output:
>
> ['CccccccC',
>  'ccccc(C)cC',
>  'C',
>  'Cc1ccccc-1',
>  'ccccc(C)CC',
>  'cccc(C)c(C)C',
>  'C',
>  'Cc1ccccc-1',
>  'ccccc(C)CC',
>  'cccc(C)c(C)C',
>  'CccccccC',
>  'ccccc(C)cC',
>  'CcccccCC',
>  'C',
>  'Cc1c-cccc1',
>  'ccc(C)c(C)cC',
>  'Ccccc(C)cC',
>  'cc(C)c(C)ccC',
>  'cc(C)c(C)ccC',
>  'Ccccc(C)cC',
>  'ccc(C)c(C)cC',
>  'C',
>  'Cc1c-cccc1',
>  'CcccccCC']
>
>  [12:06:11] non-ring atom 1 marked aromatic
> _______________________________________________
> 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

Reply via email to