使用RDKit提取肽段原子对指纹时报GetAtomPairFingerprint参数类型错误
报错原因
- 调用
rdkit.Chem.AtomPairs.Pairs.GetAtomPairFingerprint()时,输入参数要求为RDKit的Mol对象,你的代码中把Chem.MolFromFASTA(item)生成的Mol对象额外用MolToSmiles转成了SMILES字符串,传入字符串和要求的参数类型不匹配,因此触发类型错误。
修正后的代码
pos = "/content/drive/MyDrive/pepfun/Training_format_pos (1).txt" # pos sequences extract into list with open(pos, 'r') as f: data = f.read() newdatapos = data.splitlines() print(newdatapos) !pip install rdkit-pypi import rdkit from rdkit import Chem from rdkit.Chem.AtomPairs import Pairs fingerprintpos = [] for item in newdatapos: # 直接生成Mol对象,无需转SMILES mol = Chem.MolFromFASTA(item) # 增加合法性校验,避免FASTA解析失败返回None导致后续报错 if mol is None: print(f"警告:序列 {item} 解析失败,已跳过") continue atompos = Pairs.GetAtomPairFingerprint(mol) fingerprintpos.append(atompos) print(fingerprintpos)
额外优化建议
- 用
with open语法读取文件,可以自动关闭文件句柄,避免手动关闭遗漏的问题 - 增加Mol对象非空校验,避免部分无效FASTA序列解析失败后触发空值调用报错
内容的提问来源于stack exchange,提问作者Ash Roy
相关产品推荐
相关产品推荐

