Thank you so much for your help! This was very helpful Michal בתאריך יום ד׳, 21 ביוני 2023 ב-13:56 מאת Ivan Tubert-Brohman < ivan.tubert-broh...@schrodinger.com>:
> 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