def remove_duplicates_smiles(smiles_list):
unique_inchikeys = set()
unique_smiles = []
for smiles in smiles_list:
mol = Chem.MolFromSmiles(smiles)
if mol:
inchikey = Chem.MolToInchiKey(mol)
if inchikey not in unique_inchikeys:
unique_inchikeys.add(inchikey)
unique_smiles.append(smiles)
return unique_smiles
# 示例用法
smiles_list = ["CCO", "CCO", "CCN", "CCN", "CCC"]
unique_smiles_list = remove_duplicates_smiles(smiles_list)
print(unique_smiles_list)
这个是简单的处理示例。本质上就是利用inchikey作为分子的唯一标识,来进行分子去除重复。
因为smiles这种方式表示分子,同一个分子可以有很多中smiles。没有有唯一性。
欢迎交流。