我正在使用RDKit
处理一些任务,但遇到了一些问题。
我正试图用SaltRemover()
函数清理我的数据集,但是ArgumentError
发生了,我无法理解它。你知道吗
使用的代码如下:
from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit.Chem.PandasTools import LoadSDF
A1 = LoadSDF('finaldata_A1.sdf', smilesName='SMILES')
A1 = A1['SMILES']
for mol in A1:
A1_mol = Chem.MolFromSmiles(mol)
if mol is None: continue
from rdkit.Chem import SaltRemover
remover = SaltRemover.SaltRemover(defnFormat='smiles')
A1_mol_SR = remover.StripMol(A1_mol)
运行代码后的错误消息是:
ArgumentError: Python argument types in rdkit.Chem.rdmolops.DeleteSubstructs(Mol, NoneType, bool) did not match C++ signature: DeleteSubstructs(class RDKit::ROMol mol, class RDKit::ROMol query, bool onlyFrags=False, bool useChirality=False)
我想有几件事你很困惑。你知道吗
至于
SaltRemover
,您试图用defnFormat
参数实现什么?使用此参数时,还应提供defnData
,定义要删除的盐,即如果初始化
SaltRemover
,如果没有这些参数,salt定义将从file读取,后者将作为一组SMARTS查询读取。当您将defnFormat
设置为'smiles'时,您告诉移除程序将文件作为一系列smiles字符串读取。当然,由于注释和格式错误,此文件不能作为字符串读取。在定义的salts中,随后会有“None”对象,这就是您接收ArgumentError
的原因。rdkit在内部使用函数DeleteSubstructs
,该函数被传递给您的查询分子和要删除的salt,现在可能是'None'。你知道吗你可能不需要定义你自己的盐。如果不使用默认参数:
您的另一个问题似乎是如何处理数据。你好像在计算
Mol
对象两次?当您使用'LoadSDF'函数时,mol被添加到名为'ROMol'的列中,除非在molColName
参数中指定。你也只想剥离一个分子?您可能应该考虑尝试将移除程序应用于A1数据框中的分子列。你知道吗相关问题 更多 >
编程相关推荐