验证蛋白质序列

在某些情况下,我有与蛋白质不对应的字符的序列。


>ISAnsp8_orf1

MRKSRFTEEQIAHALRQVDAGVPAAELCRKLGISEQTFYAWKKKYAGMGIAEMRRVKQLEDENRRLKTLVADLTLDKHMLQEVLRKKF

>IS3_orf1

UGAAGAGCUGGCUAUCCUCCAAAAGGCCGCGACAUACUUCGCGAAGCGCC

>IS3_orf2

..............................(((((((((((......[[[

>IS3_orf3

UGAAAUGAAGUAUGUCUUUAUUGAAAAACAUCAGGCUGAGUUCAGCAUCA

>IS3_orf4

[[[..)))))))))))..............]]]]]]

>IS3_orf5

AAGCAAUGUGCCGCGUGCUCCGGGUGGCCCGCA

>IS3_orf7

MTKTVSTSKKPRKQHSPEFRSEALKLAERIGVTAAARELSLYESQLYNWRSKQQNQQTSSERELEMSTEIARLKRQLAERDEELAILQKAATYFAKRLK

因为我想先验证序列,然后再保存到另一个文件中,所以编写此代码来测试验证方法。这很少见,因为我习惯了不同的序列,其中包括非蛋白质字符 '(' 但它仍然给我答案为 True。


测试所有三种可能性以“排序”答案是相同的(错误)


import sys

from Bio.Seq import Seq

from Bio.Alphabet import IUPAC, ProteinAlphabet


sequence = 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'


30秒到达战场
浏览 134回答 1
1回答

神不在的星期二

当您启动一个Seq或类似的对象时,Biopython 目前不提供字母验证(主要原因是性能成本高)。围绕此问题进行了很多讨论,未来情况可能会发生变化。实际上,第一个Biopython增强建议(BEP)是关于在Biopython中使用字母的。无论如何,为了暂时解决您的问题_verify_alphabet,Biopython 中隐藏了一个函数,尽管它是“私有的”,但我认为没有理由不使用它:from Bio.Seq import Seqfrom Bio.Alphabet import IUPAC, _verify_alphabetsequences = ['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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python