如何解决使用 RDKit 将序列转换为 SMILES 的问题
我有一个酶序列数据集和一个要预测的目标变量。
我正在做的过程是将序列转换为微笑,然后为机器学习模型获取数值输入。
问题是:rdkit 无法转换某些序列,但不能转换所有序列。在这种情况下变换被停止了索引= 5,其对应于以下序列:“PQITLWQRPIVTIKIGGQLIEALLDTGADDTVLEXXNLPGRWKPKXIGGIGGFXKVRQYDQVPIEIXGHKTXSTVLVGPTPVNIIGRNLMTQIGCTLNFPISPIETVPVKLKPGMDGPKXKQWPLTEEKIKALMEICKELEEEGKISKIGPENPYNTPVFAIKKKNSTKWRKLVDFRELNKRTQDFWEVQLGIPHPAGLKRKKSVTVLDVGDAYFSIPLDKDFRKYTAFTIPSINNETPGIRYQYNVLPQGWKGSPAIFQSSMTKILEPFRKQNPDIVIYQYVDDLYVGSDLEIEQHRTKIKELRQYLWKWGFYTPDXKHQEEPPFHWXGYELHPDKWTVQPIVLPEKESWTVNDIQKLVGKLNWASQIYAGIKVKQLCKLLRG”
解决方法
问题似乎在于您的序列中有 X。这不是氨基酸代码,而是未知/非典型氨基酸的占位符。似乎 RDKit 无法处理这种情况:
amino_acids = {'G','A','L','M','F','W','K','Q','E','S','P','V','I','C','Y','H','R','N','D','T'}
seq = 'PQITLWQRPIVTIKIGGQLIEALLDTGADDTVLEXXNLPGRWKPKXIGGIGGFXKVRQYDQVPIEIXGHKTXSTVLVGPTPVNIIGRNLMTQIGCTLNFPISPIETVPVKLKPGMDGPKXKQWPLTEEKIKALMEICKELEEEGKISKIGPENPYNTPVFAIKKKNSTKWRKLVDFRELNKRTQDFWEVQLGIPHPAGLKRKKSVTVLDVGDAYFSIPLDKDFRKYTAFTIPSINNETPGIRYQYNVLPQGWKGSPAIFQSSMTKILEPFRKQNPDIVIYQYVDDLYVGSDLEIEQHRTKIKELRQYLWKWGFYTPDXKHQEEPPFHWXGYELHPDKWTVQPIVLPEKESWTVNDIQKLVGKLNWASQIYAGIKVKQLCKLLRG'
edited_seq = ''
for aa in seq:
if aa not in amino_acids:
print('Non-standard/missing amino acid:',aa)
else:
edited_seq += aa
m1 = Chem.MolFromSequence(seq)
m2 = Chem.MolFromSequence(edited_seq)
print('Read seq successfully:',m1 is not None)
print('Read edited_seq successfully:',m2 is not None)
[Out]:
Non-standard/missing amino acid: X
Non-standard/missing amino acid: X
Non-standard/missing amino acid: X
Non-standard/missing amino acid: X
Non-standard/missing amino acid: X
Non-standard/missing amino acid: X
Non-standard/missing amino acid: X
Non-standard/missing amino acid: X
Non-standard/missing amino acid: X
Read seq successfully: False
Read edited_seq successfully: True
当我们移除 Xs 时,RDKit 正确解析了序列。我并不是说仅仅删除这些是正确的解决方案,只是强调了这个问题。处理这些情况可能有更好的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。