我正在尝试在化学数据库上执行子结构搜索,使用针对每种化合物预先计算的Avalon指纹。 有一种方法可以在RDKit中比较这些指纹:
DataStructs.AllProbeBitsMatch ( fp1, fp2 )
Docs描述这样的方法:“如果第一个参数中的所有位都匹配第二个参数中pickle定义的向量中的所有位,则返回True。”
他们谈论位向量,但这个指纹也可以计算为“As Words”(整数数组,通过RDKit中的GetAvalonFPAsWords方法,我可以存储在MongoDB中,希望在没有RDKit的情况下执行搜索,只使用数据库的力量) (必须快得多)。
所以这是我的问题:我需要对数组进行某种操作,这相当于位向量的AllProbeBitsMatch。理想情况下,此操作应在MongoDB上完成,可能使用聚合功能以获得更好的性能。
这是我用作参考的RDKit和Avalon指纹的文章:http://rdkit.blogspot.com/2013/11/fingerprint-based-substructure.html