Rosalind 017 Finding a Protein Motif

背景:

        如“将RNA翻译成蛋白质”中所述,蛋白质细胞中执行所有实际功能。 蛋白质的结构和功能单位是蛋白质结构域:就蛋白质的一级结构而言,结构是可以进化和 独立运行。

        每个结构域通常对应于蛋白质的单个功能(例如,将蛋白质与DNA结合,产生 或破坏特定的化学键等)。一些蛋白质,如肌红蛋白和细胞色素复合物, 只有一个结构域,但许多蛋白质是多功能的,因此具有多个结构域。 甚至可以人为地将不同的结构域融合成具有明确性质的蛋白质分子, 产生嵌合蛋白

        就像物种一样,蛋白质可以进化,形成称为蛋白质家族同源群体。 来自一个家族的蛋白质通常具有相同的结构域集,执行相似的功能。

        对其功能至关重要的域的一个组成部分称为主题,该术语通常 与核酸的含义相同,尽管也使用了许多其他术语 (块、签名、指纹等)通常蛋白质基序在进化上是保守的, 这意味着它们在不同物种中没有太大变化。

        蛋白质在世界各地的不同实验室中被鉴定,并收集到可免费访问的数据库中。 蛋白质数据的中央存储库是UniProt,它提供 详细的蛋白质注释,包括功能描述、结构域结构和翻译后修饰。 UniProt 还支持蛋白质相似性搜索、分类分析和文献引用。

https://rosalind.info/problems/mprt/

问题:

        为了允许其不同形式的存在,蛋白质基序由简写表示如下: [XY] 表示“X 或 Y”,{X} 表示“除 X 以外的任何氨基酸”。例如,N-糖基化基序 写为 N{P}[ST]{P}。

        我们可以通过访问ID查看特定蛋白质的完整描述和特征 UniProt 数据库中的“uniprot_id”,方法是将 ID 号插入

http://www.uniprot.org/uniprot/uniprot_id

或者,可以通过以下方式获得FASTA 格式的蛋白质序列
http://www.uniprot.org/uniprot/uniprot_id.fasta

例如,蛋白质B5ZC00的数据可以在 http://www.uniprot.org/uniprot/B5ZC00 找到。

        给出最多 15 个 UniProt 蛋白质数据库访问 ID。

        返回对于具有N-糖基化基序的每种蛋白质,输出其给定的访问ID 通过蛋白质串中可以找到基序的位置列表。

例子:

input:

A2Z669
B5ZC00
P07204_TRBM_HUMAN
P20840_SAG1_YEAST

output:

B5ZC00
85 118 142 306 395
P07204_TRBM_HUMAN
47 115 116 382 409
P20840_SAG1_YEAST
79 109 135 248 306 348 364 402 485 501 614

代码:

import re
import requests
proteins = []
with open('文件所在目录') as fp:
    for lines in fp:
        proteins.append(lines.replace('\n',''))
"""        
proteins = ['A2Z669','B5ZC00','P07204_TRBM_HUMAN','P20840_SAG1_YEAST']
"""
for i in proteins:
    res = []
    res.append(i)
    if '_' in i:
        i = i.split('_')[0]   #保留蛋白质编号
    seq = ''
    url = 'http://www.uniprot.org/uniprot/' + i + '.fasta'
    response = requests.get(url=url).text #爬虫爬取网页
    index_pos = response.find('\nM')   #找到蛋白质序列开始位置
    seq+=response[index_pos:].replace('\n','')  #组合成完整的蛋白质序列
    find = re.compile(r'N(?=[^P][ST][^P])')
    f = re.finditer(find,seq)
    for _ in f:
        res.append(str(_.span()[1]))
    if len(res)>1:
        print(res[0])
        print(' '.join(res[1:]))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值