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

歡迎光臨散文網(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ó)家法律
毕节市| 剑川县| 威远县| 乳山市| 富阳市| 太和县| 九江市| 巩义市| 莱芜市| 阿坝| 米脂县| 铜陵市| 肇东市| 额尔古纳市| 临高县| 怀集县| 明溪县| 台东县| 宁明县| 永康市| 巴马| 宜章县| 泰来县| 镇原县| 衡阳市| 沐川县| 石阡县| 石嘴山市| 高青县| 禄劝| 阳信县| 东城区| 博乐市| 池州市| 永胜县| 武强县| 西峡县| 镇坪县| 延长县| 油尖旺区| 白城市|