在某些情况下,我有与蛋白质不对应的字符的序列。>ISAnsp8_orf1MRKSRFTEEQIAHALRQVDAGVPAAELCRKLGISEQTFYAWKKKYAGMGIAEMRRVKQLEDENRRLKTLVADLTLDKHMLQEVLRKKF>IS3_orf1UGAAGAGCUGGCUAUCCUCCAAAAGGCCGCGACAUACUUCGCGAAGCGCC>IS3_orf2..............................(((((((((((......[[[>IS3_orf3UGAAAUGAAGUAUGUCUUUAUUGAAAAACAUCAGGCUGAGUUCAGCAUCA>IS3_orf4[[[..)))))))))))..............]]]]]]>IS3_orf5AAGCAAUGUGCCGCGUGCUCCGGGUGGCCCGCA>IS3_orf7MTKTVSTSKKPRKQHSPEFRSEALKLAERIGVTAAARELSLYESQLYNWRSKQQNQQTSSERELEMSTEIARLKRQLAERDEELAILQKAATYFAKRLK因为我想先验证序列,然后再保存到另一个文件中,所以编写此代码来测试验证方法。这很少见,因为我习惯了不同的序列,其中包括非蛋白质字符 '(' 但它仍然给我答案为 True。测试所有三种可能性以“排序”答案是相同的(错误)import sysfrom Bio.Seq import Seqfrom Bio.Alphabet import IUPAC, ProteinAlphabetsequence = sys.argv[1]#sequence = '((((((((((('#sequence = 'TGEKPYVCQECGKAFNCSSYLSKHQR'my_prot = Seq(sequence, alphabet=IUPAC.IUPACProtein)print isinstance(my_prot.alphabet, ProteinAlphabet) if isinstance(my_prot.alphabet, ProteinAlphabet) == True: print 'ok' , isinstance(my_prot.alphabet, ProteinAlphabet)else: print 'no'
1 回答
神不在的星期二
TA贡献1963条经验 获得超6个赞
当您启动一个Seq或类似的对象时,Biopython 目前不提供字母验证(主要原因是性能成本高)。围绕此问题进行了很多讨论,未来情况可能会发生变化。实际上,第一个Biopython增强建议(BEP)是关于在Biopython中使用字母的。
无论如何,为了暂时解决您的问题_verify_alphabet,Biopython 中隐藏了一个函数,尽管它是“私有的”,但我认为没有理由不使用它:
from Bio.Seq import Seq
from Bio.Alphabet import IUPAC, _verify_alphabet
sequences = ['TGEKPYVCQECGKAFNCSSYLSKHQR', '(((((((((((']
for sequence in sequences:
my_prot = Seq(sequence, IUPAC.protein)
print(my_prot, _verify_alphabet(my_prot))
输出(在 Python 3.6 中,Bio 版本为 1.73dev):
TGEKPYVCQECGKAFNCSSYLSKHQR True
((((((((((( False
添加回答
举报
0/150
提交
取消