在某些情况下,我有一些字符不对应于蛋白质的序列。
>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'发布于 2018-08-22 14:23:59
在启动Seq或类似对象时,Biopython目前不提供字母表验证(主要原因是性能成本过高)。围绕这一点有很多讨论,未来的情况可能会改变;事实上,第一个Biopython增强提案(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))输出(在Python3.6中,Bio版本1.73dev):
TGEKPYVCQECGKAFNCSSYLSKHQR True
((((((((((( False发布于 2022-09-14 15:46:50
显然Biopython删除了Bio.Alphabet
从https://www.biostars.org/p/102/复制
您可以使用:
import re
def validate(seq, alphabet='dna'):
alphabets = {'dna': re.compile('^[acgtn]*$', re.I),
'protein': re.compile('^[acdefghiklmnpqrstvwy]*$', re.I)}
if alphabets[alphabet].search(seq) is not None:
return True
else:
return False
sequences = ['TGEKPYVCQECGKAFNCSSYLSKHQR', '(((((((((((']
for sequence in sequences:
print(validate(sequence, 'protein'))产出:
True
Falsehttps://stackoverflow.com/questions/51962651
复制相似问题