国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【ROSALIND】【練Python,學(xué)生信】16 尋找蛋白模序

2019-02-12 16:32 作者:未琢  | 我要投稿

如果第一次閱讀本系列文檔請(qǐng)先移步閱讀【ROSALIND】【練Python,學(xué)生信】00 寫在前面 ?謝謝配合~

題目:

尋找蛋白模序(Finding a Protein Motif)

Given: At most 15 UniProt Protein Database access IDs.

所給:最多15個(gè)UniProt ID。

Return: For each protein possessing the N-glycosylation motif, output its given access ID followed by a list of locations in the protein string where the motif can be found.

需得:對(duì)每個(gè)有N-糖基化模序的蛋白,輸出ID號(hào),其后輸出模序在蛋白序列中的位置。

?

測(cè)試數(shù)據(jù)

A2Z669

B5ZC00

P07204_TRBM_HUMAN

P20840_SAG1_YEAST

測(cè)試輸出

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

?

背景

蛋白基序的表示方法:[XY]意為X或Y,{X}意為除了X以外任意一種氨基酸。

N-糖基化基序可表示為N{P}[ST]{P}。

UniProt是Universal Protein的英文縮寫,是信息最豐富、資源最廣的蛋白質(zhì)數(shù)據(jù)庫(kù)。它由整合Swiss-Prot、 TrEMBL 和 PIR-PSD 三大數(shù)據(jù)庫(kù)的數(shù)據(jù)而成。數(shù)據(jù)主要來(lái)自于基因組測(cè)序項(xiàng)目完成后,后續(xù)獲得的蛋白質(zhì)序列,還包含了大量來(lái)自文獻(xiàn)的蛋白質(zhì)的生物功能的信息。

從UniProt數(shù)據(jù)庫(kù)獲取某個(gè)蛋白質(zhì)信息的網(wǎng)址為http://www.uniprot.org/uniprot/uniprot_id

獲取FASTA格式的某個(gè)蛋白序列可通過(guò)網(wǎng)址http://www.uniprot.org/uniprot/uniprot_id.fasta

?

思路

(本題不會(huì)做,代碼全部來(lái)自網(wǎng)絡(luò)╮(﹀_﹀)╭)

可以把該題目拆解成三個(gè)問題逐個(gè)理解。

第一,獲取蛋白fasta格式的序列。利用背景給出的方法我們可以通過(guò)UniProt ID得到每個(gè)蛋白的序列網(wǎng)址,比如對(duì)B5ZC00,網(wǎng)址為https://www.uniprot.org/uniprot/B5ZC00.fasta ,隨后利用urllib.request包中提供的方法,可以提取到網(wǎng)頁(yè)信息。我們直接打開網(wǎng)頁(yè)可以看到如下信息:

https://www.uniprot.org/uniprot/B5ZC00.fasta

? ?

與我們熟悉的fasta格式文件一樣,第一行是描述,換行(\n)后是序列以M開頭。因此我們遇到的第一個(gè)’\nM’肯定是序列開始部分,找到這個(gè)索引,加上2即為序列開頭M的索引,其后所有內(nèi)容都是蛋白序列,將格式稍事調(diào)整即得到完整序列。

第二,用正則表達(dá)式表示模序。題目和背景給出了N-糖基化蛋白模序,因此只需要掌握正則表達(dá)式即可(可惜我還未掌握)。

第三,在蛋白序列中匹配模序,有則輸出位置。用字符串帶的搜索方法即可。

?

?

Python知識(shí)點(diǎn)

正則表達(dá)式(Regular Expression,在代碼中常簡(jiǎn)寫為regex、regexp或RE)是計(jì)算機(jī)科學(xué)的一個(gè)概念。正則表達(dá)式通常被用來(lái)檢索、替換那些符合某個(gè)模式(規(guī)則)的文本。即用事先定義好的一些特定字符、及這些特定字符的組合,組成一個(gè)“規(guī)則字符串”,這個(gè)“規(guī)則字符串”用來(lái)表達(dá)對(duì)字符串的一種過(guò)濾邏輯。

網(wǎng)絡(luò)爬蟲是一種按照一定的規(guī)則,自動(dòng)地抓取萬(wàn)維網(wǎng)信息的程序或者腳本。

?

代碼

import urllib.request

import re

f = open('rosalind_mprt.txt', 'r')

names = f.readlines()

f.close()

i = 0

while i < len(names):

??? name = str(names[i]).strip()

??? url = 'http://www.uniprot.org/uniprot/' + name + '.fasta'

??? req = urllib.request.Request(url)

??? response = urllib.request.urlopen(req)

??? the_page = response.read()

??? start = the_page.find('\nM'.encode())

??? the_page = str(the_page)

??? seq = the_page[start + 2:].replace('\\n', '').replace('\'', '')

??? seq = ' ' + seq

??? regex = re.compile(r'N(?=[^P][ST][^P])')

??? out = []

??? index = 0

??? while index < len(seq):

??????? index += 1

?

??????? if? re.search(regex, seq[index:]) == None:

??????????? break

??????? if re.match(regex, seq[index:]) != None:

??????????? out.append(index)

?

??? if out != []:

??????? print(name)

??????? print(' '.join([str(i) for i in out]))

??? i += 1


【ROSALIND】【練Python,學(xué)生信】16 尋找蛋白模序的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
双鸭山市| 垦利县| 钟山县| 富顺县| 历史| 拜城县| 古浪县| 贵州省| 资阳市| 玉门市| 佛冈县| 上虞市| 翼城县| 格尔木市| 修武县| 新巴尔虎左旗| 寿宁县| 宝坻区| 蕉岭县| 黎城县| 南溪县| 中江县| 博罗县| 盐亭县| 安阳市| 体育| 周宁县| 渭南市| 遂平县| 博客| 宁夏| 舒兰市| 武胜县| 滁州市| 卓尼县| 新巴尔虎左旗| 广宗县| 全州县| 麻栗坡县| 安丘市| 中山市|