Python 使用RDKit将序列转换为微笑时出现问题

Python 使用RDKit将序列转换为微笑时出现问题,python,bioinformatics,fingerprint,rdkit,cheminformatics,Python,Bioinformatics,Fingerprint,Rdkit,Cheminformatics,我有一个酶序列的数据集和一个要预测的目标变量 我所做的过程是将序列转换为微笑,然后为机器学习模型获取数字输入 问题是:rdkit无法转换部分序列,但不是全部序列。在这种情况下,转换因索引=5而停止,对应于以下顺序:“PQITLWQRPIVTIKIGGGQLIALLDTGADDVLXNLPGRWKKxiggigfXKVRQYDQVPIEIXGHKTXSTvlvGPTpVNIIGNLMtQIGLKgTgTgTgTgTgTgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgP

我有一个酶序列的数据集和一个要预测的目标变量
我所做的过程是将序列转换为微笑,然后为机器学习模型获取数字输入
问题是:rdkit无法转换部分序列,但不是全部序列。在这种情况下,转换因索引=5而停止,对应于以下顺序:“PQITLWQRPIVTIKIGGGQLIALLDTGADDVLXNLPGRWKKxiggigfXKVRQYDQVPIEIXGHKTXSTvlvGPTpVNIIGNLMtQIGLKgTgTgTgTgTgTgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgEswtvndiqklvgklnwaskiyagikvkqlckllrg'

看起来问题在于序列中有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时,它正确地解析了序列。我并不是说仅仅消除这些问题是正确的解决办法,而是强调了这个问题。处理这些案件可能有更好的方法。

我们这里也有很多问题: