【问题标题】:Validate protein sequence验证蛋白质序列
【发布时间】:2018-08-23 03:19:40
【问题描述】:

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

>ISAnsp8_orf1
MRKSRFTEEQIAHALRQVDAGVPAAELCRKLGISEQTFYAWKKKYAGMGIAEMRRVKQLEDENRRLKTLVADLTLDKHMLQEVLRKKF
>IS3_orf1
UGAAGAGCUGGCUAUCCUCCAAAAGGCCGCGACAUACUUCGCGAAGCGCC
>IS3_orf2
..............................(((((((((((......[[[
>IS3_orf3
UGAAAUGAAGUAUGUCUUUAUUGAAAAACAUCAGGCUGAGUUCAGCAUCA
>IS3_orf4
[[[..)))))))))))..............]]]]]]
>IS3_orf5
AAGCAAUGUGCCGCGUGCUCCGGGUGGCCCGCA
>IS3_orf7
MTKTVSTSKKPRKQHSPEFRSEALKLAERIGVTAAARELSLYESQLYNWRSKQQNQQTSSERELEMSTEIARLKRQLAERDEELAILQKAATYFAKRLK

因为我想在保存到另一个文件之前验证序列,所以我写了这个来测试验证方法。这很少见,因为我习惯了不同的序列,其中包括非蛋白质字符“(”,但它仍然给了我正确的答案。

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

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'

【问题讨论】:

    标签: python bioinformatics biopython


    【解决方案1】:

    Biopython 目前在您启动Seq 或类似对象时不提供字母验证(主要原因是性能成本高)。围绕这一点有很多讨论,未来情况可能会发生变化;事实上,第一个 Biopython Enhancement Proposal (BEP) 是关于 Biopython 中字母的使用。

    无论如何,为了暂时解决您的问题,Biopython 中隐藏了一个 _verify_alphabet 函数,虽然它是“私有”的,但我认为没有理由不使用它:

    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
    

    【讨论】:

      猜你喜欢
      • 2012-06-27
      • 2013-01-16
      • 2020-12-22
      • 2013-01-22
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      • 2021-02-16
      相关资源
      最近更新 更多