为了账号安全,请及时绑定邮箱和手机立即绑定

验证蛋白质序列

验证蛋白质序列

30秒到达战场 2021-05-30 19:14:17
在某些情况下,我有与蛋白质不对应的字符的序列。>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


查看完整回答
反对 回复 2021-06-01
  • 1 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信