希望可以批量处理,输出化合物的官能团(如羧基、氨基、特殊原子P等)
10条回答 默认 最新
I'm angru�? 2023-02-16 10:13关注解决方案如下
from rdkit import Chem from rdkit.Chem import FunctionalGroups smiles_list = ['CCO', 'CC(=O)O', 'C1=CC=CC=C1N', 'C[P@@](C)(O)O'] #给定SMILES并转化为Mol对象 mols = [Chem.MolFromSmiles(smile) for smile in smiles_list] FGHierarchyNodes = FunctionalGroups.BuildFuncGroupHierarchy() #获取已定义的官能团节点对象并转为tuples functional_groups = [] for FGhierarchy in FGHierarchyNodes: functional_groups.append((FGhierarchy.name, FGhierarchy.smarts)) #基于官能团Smarts进行子结构搜索,并输出结果 for mol in mols: counts = {} for (name, smarts) in functional_groups: matches = mol.GetSubstructMatches(Chem.MolFromSmarts(smarts)) count = len(matches) if count > 0: counts[name] = count for name,count in counts.items(): print("Molecule: {}".format(Chem.MolToSmiles(mol))) print(f"{name}: {count}") print('\n')本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 1无用