查看: 80|回复: 0

[工具分享] [python]化学小代码,区分小分子的异同

[复制链接]
累计签到:336 天
连续签到:6 天

196

主题

480

回帖

1万

积分

督查

PAI-清风

名望
2000
星币
433
星辰
26
好评
490

夜猫子勋章实习版主勋章版主勋章中秋勋章灌水天才奖鼎力支持奖热心助人奖优秀会员奖明星会员奖魅力会员奖欢乐天使奖国庆节勋章在线大神动漫大使幸运猪伯乐奖星座专属勋章星辰勋章我是土豪督察勋章五一勋章

发表于 2024-4-3 23:03:52 | 显示全部楼层 |阅读模式

注册登录后全站资源免费查看下载

您需要 登录 才可以下载或查看,没有账号?立即注册

×
  1. from rdkit import Chem
  2. from rdkit.Chem import rdFingerprintGenerator
  3. from rdkit.Chem import DataStructs
  4. from rdkit.Chem import SDMolSupplier, SDWriter

  5. def similarity_filter_tversky(ref_smiles, sdf_filename, output_filename):
  6.     # 从参考分子 SMILES 字符串中构建 RDKit 分子对象
  7.     ref = Chem.MolFromSmiles(ref_smiles)
  8.     if ref is None:
  9.         print("无法解析参考分子的 SMILES")
  10.         return
  11.      
  12.     # 创建 RDKit 分子指纹生成器
  13.     fpgen = rdFingerprintGenerator.GetMorganGenerator(radius=2, fpSize=1024)
  14.      
  15.     # 从 SDF 文件中读取分子
  16.     suppl = SDMolSupplier(sdf_filename)
  17.     if suppl is None:
  18.         print("无法读取 SDF 文件")
  19.         return
  20.      
  21.     # 创建输出 SDF 文件的写入器
  22.     writer = SDWriter(output_filename)
  23.      
  24.     # 遍历每个分子
  25.     for mol in suppl:
  26.         if mol is None:
  27.             print("无法解析 SDF 文件中的分子")
  28.             continue
  29.          
  30.         # 计算参考分子和当前分子的 Tversky 相似性
  31.         fp1 = fpgen.GetCountFingerprint(ref)
  32.         fp2 = fpgen.GetCountFingerprint(mol)
  33.         simi = DataStructs.cDataStructs.TverskySimilarity(fp1, fp2, 0.05, 0.95)
  34.          
  35.         # 如果相似性大于 0.4,则将该分子写入输出文件
  36.         if simi > 0.4:
  37.             writer.write(mol)
  38.             print(f"分子与参考分子相似性: {simi}, 分子已保留")
  39.         else:
  40.             print(f"分子与参考分子相似性: {simi}, 分子被过滤")
  41.      
  42.     writer.close()
  43.     print("处理完成")

  44. # 使用示例
  45. reference_smiles = "C1(C2=CC=CC=C2)=CC=CC=C1"
  46. sdf_file = "input.sdf"
  47. output_sdf_file = "output_tversky.sdf"
  48. similarity_filter_tversky(reference_smiles, sdf_file, output_sdf_file)
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|偏爱技术社区-偏爱技术吧-源码-科学刀-我爱辅助-娱乐网--教开服-游戏源码

偏爱技术社区-偏爱技术吧-源码-科学刀-我爱辅助-娱乐网-游戏源码

Powered by Discuz! X3.5

GMT+8, 2024-5-2 16:21 , Processed in 0.076689 second(s), 33 queries .

快速回复 返回顶部 返回列表