【问题标题】:RDkit fingerprintRDkit指纹
【发布时间】:2022-01-05 07:53:49
【问题描述】:

我有 100 种聚合物,我想通过指纹比较它们的溶解度。

通过使用 rdkit,我得到了每个聚合物的位列表,例如 [39, 80, 152, 233, 234, 265, 310, 314, 321, 356, 360, 406, 547, 650, 662, 726, 730, 801, 819, 849, 935]',但我遇到了这个错误:“它无法将字符串转换为浮点数:”

我的第一个问题是,如何才能使每种聚合物只达到一个位? 以及如何将每个位定义为 rdkit 中的单个功能?

【问题讨论】:

  • 分子的指纹是向量。它们不能转换为单个数字。例如,一个样本 ECFP 指纹可以是 [1, 0, 0, 0, 1, 0, ......等等]。如您所见,它是一个向量,不能表示为单个值。
  • 谢谢!所以我想知道您能否告诉我您对如何通过指纹比较所有聚合物的看法?
  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: polymer fingerprint rdkit


【解决方案1】:

根据您的问题,我相信您使用的是半径=2 和 fpSize=1024 的摩根指纹。但是,计数指纹会产生散列值列表。 如果你想处理比较,我建议你应该在这里#1中使用rdkit.Chem.rdMolDescriptors.GetMorganFingerprintAsBitVect

如果您想使用计数指纹,请参见此处 #2 并搜索此查询:The types of atom pairs and torsions are normal (default), hashed and bit vector (bv). The types of the Morgan fingerprint are bit vector (bv, default) and count vector (count).

如果你想得到np.array的结果,你可以运行bv = GetMorganFingerprintAsBitVect(mol, radius=your_radius, nBits=1024, *args, **kwargs).ToBitString(),然后运行np.frombuffer(bv.encode(), dtype=np.uint8) - 48

但是,如果没有代码,我无法提供明确的描述和解决方案,因此请提供它以获得进一步的支持。谢谢。

#1:https://www.rdkit.org/docs/source/rdkit.Chem.rdMolDescriptors.html?highlight=getmorganfingerprintasbitvect#rdkit.Chem.rdMolDescriptors.GetMorganFingerprintAsBitVect

#2:https://www.rdkit.org/docs/GettingStartedInPython.html

【讨论】:

  • 如果要得到np.array的结果,可以运行bv = GetMorganFingerprintAsBitVect(mol, radius=your_radius, nBits=1024, *args, **kwargs).ToBitString(),然后运行np.frombuffer(bv.encode(), dtype=np.uint8) - 48
猜你喜欢
  • 2019-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-21
  • 1970-01-01
  • 1970-01-01
  • 2021-09-11
相关资源
最近更新 更多