最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

【ROSALIND】【練Python,學(xué)生信】05 計(jì)算DNA序列GC含量

2019-02-02 22:17 作者:未琢  | 我要投稿

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

題目:

計(jì)算DNA序列GC含量(Computing GC content)

Given: At most 10 DNA strings in FASTA format (of length at most 1 kbp each).

所給:不超過10條DNA序列,每條最少1kbp,以FASTA格式提供。

Return: The ID of the string having the highest GC-content, followed by the GC-content of that string. Rosalind allows for a default error of 0.001 in all decimal answers unless otherwise stated; please see the note on absolute error below.

需得:GC含量最高序列的ID,以及其GC含量。允許誤差0.001。

?

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

>Rosalind_6404

CCTGCGGAAGATCGGCACTAGAATAGCCAGAACCGTTTCTCTGAGGCTTCCGGCCTTCCC

TCCCACTAATAATTCTGAGG

>Rosalind_5959

CCATCGGTAGCGCATCCTTAGTCCAATTAAGTCCCTATCCAGGCGCTCCGCCGAAGGTCT

ATATCCATTTGTCAGCAGACACGC

>Rosalind_0808

CCACCCTCGTGGTATGGCTAGGCATTCAGGAACCGGAGAACGCTTCAGACCAGCCCGGAC

TGGGAACCTGCGGGCAGTAGGTGGAAT

測(cè)試輸出

Rosalind_0808

60.919540

?

背景

在分析語言時(shí),首先要做的往往是計(jì)算各個(gè)字母出現(xiàn)的頻率。這種思想可以推廣到生物學(xué)的序列分析中。在雙鏈DNA中,由于堿基互補(bǔ)配對(duì),G與C出現(xiàn)的頻率相同,A與T出現(xiàn)的頻率相同。同一物種內(nèi)的不同個(gè)體GC含量基本相同,物種間則存在差異,尤其是真核和原核生物之間差異較大,真核生物GC含量約為50%,原核生物則顯著高于50%。因此面對(duì)一段信息未知的DNA序列,可以利用GC含量初步判斷其種屬。

FASTA格式是一種基于文本用于表示核酸序列或多肽序列的格式,其第一行是由大于號(hào)“>”(較常用)或分號(hào)“;”打頭的任意文字說明,用于序列標(biāo)記;從第二行開始為序列本身,只允許使用既定的核苷酸或氨基酸編碼符號(hào),通常核苷酸符號(hào)大小寫均可,而氨基酸常用大寫字母。一般每行60~80個(gè)字母。FASTA格式已成為生物信息學(xué)領(lǐng)域的一項(xiàng)標(biāo)準(zhǔn)。

?

思路

本題出現(xiàn)了fasta格式文件,為了后續(xù)操作方便,做好的方法是定義一個(gè)專門讀入fasta文件的函數(shù),可以直接輸出兩個(gè)列表,分別包含序列說明和序列本身,且索引相同。隨后就可以用字符串本身帶的方法實(shí)現(xiàn)GC含量的計(jì)算。

?

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

Python使用def關(guān)鍵字定義函數(shù),將常用的操作封裝成函數(shù)可以實(shí)現(xiàn)代碼的復(fù)用,還可以將所用的工具函數(shù)寫在專門的文件里,使用時(shí)用import關(guān)鍵字導(dǎo)入,為閱讀方便,本系列不采用這種方法,所有的用到的函數(shù)都臨時(shí)定義。

?

代碼

def readfasta(lines):
???
"""讀入并處理FASTA文件的函數(shù)"""

??? seq = []

??? index = []

??? seqplast = ""

??? numlines = 0

??? for i in lines:

??????? if '>' in i:? # 判斷是序列行還是說明行

??????????? index.append(i.replace("\n", "").replace(">", ""))

??????????? seq.append(seqplast.replace("\n", ""))

??????????? seqplast = ""

??????????? numlines += 1

??????? else:

??????????? seqplast = seqplast + i.replace("\n", "")? # 把分行的序列拼接成一個(gè)字符串

??????????? numlines += 1

??????? if numlines == len(lines):

??????????? seq.append(seqplast.replace("\n", ""))

??? seq = seq[1:]

return index, seq

?

?

def countGC(list):
???
"""計(jì)算GC含量的函數(shù)"""

??? numGC = list.count('G') + list.count('C')

??? perGC = float(numGC) / len(list)

return perGC * 100

?

?

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

lines = f.readlines()

f.close()

?

(index, seq) = readfasta(lines)? # 接收序列名和序列

result = []

for i in seq:

??? result.append(countGC(i))

maxID = index[result.index(max(result))].replace('>', "").replace("\n", "")

seqGC = max(result)

print(maxID)

print(round(seqGC,6))


【ROSALIND】【練Python,學(xué)生信】05 計(jì)算DNA序列GC含量的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
南宁市| 宜兰县| 沙田区| 普洱| 奇台县| 定襄县| 贵定县| 方城县| 铁岭市| 靖安县| 县级市| 盈江县| 河间市| 三门县| 大新县| 商城县| 思茅市| 大化| 黑龙江省| 永川市| 龙山县| 星座| 汉阴县| 永兴县| 湘乡市| 宁陵县| 寻乌县| 象州县| 汉阴县| 蒲江县| 云龙县| 福安市| 车致| 万全县| 博乐市| 耒阳市| 沭阳县| 东源县| 上蔡县| 丰城市| 北安市|