python - 验证蛋白质序列
问题描述
在某些情况下,我的序列中的字符与蛋白质不对应。
>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'
解决方案
Biopython 目前在您启动一个或类似的对象时不提供字母验证Seq
(主要原因是性能成本大)。围绕这一点有很多讨论,未来情况可能会发生变化;事实上,第一个 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
推荐阅读
- python - 将数组转换为矩阵,其元素填充 Tensorflow 中矩阵的上三角形
- swift - 视图中没有工具栏的屏幕截图
- go - 如何组合 2 个结构内容,一个具有相同的键
- css - 为什么字体真棒图标在使用 :hover 缩放其大小时会旋转回原始位置?
- linux - gps 模块的 Linux 设备驱动程序
- node.js - 将文件从 React 上传到 S3 会出现 CORS 错误
- java - 如何将最有用的评论推到顶部?
- html - 如何解决:单击我的内部链接时,页面为空白
- javascript - 在打字头上获取 id 和 name
- user-interface - 缩小孩子以适应行