Rosalind工具庫(kù):使用Biopython處理生物數(shù)據(jù)

DNA互補(bǔ)鏈 Complementing a Strand of DNA

根據(jù)Waston和Crick的雙螺旋學(xué)說(shuō),DNA是存在兩條鏈,并且根據(jù)A-T, C-G反向互補(bǔ)。

由于DNA存在兩條鏈,因此在分析基因組DNA序列時(shí),我們需要要對(duì)這兩條鏈分別處理。處理這個(gè)任務(wù)的工具有很多種,比如說(shuō)EMBOSS/revseq.

問(wèn)題:給定FASTA格式的DNA序列,判斷在這些序列中,有多少條序列的反向互補(bǔ)鏈和原來(lái)的鏈?zhǔn)窍嗤摹?/p>

解答:本來(lái)想用命令行工具,但是仔細(xì)一看這個(gè)題目居然還由條件判斷部分,那就只能上biopython了

from Bio import SeqIO
cout = 0
for record in SeqIO.parse("rosalind_rvco.txt","fasta"):
    if str(record.seq) == str(record.reverse_complement().seq):
        count += 1
print(count)

氨基酸翻譯 Protein Translation

給定一條DNA序列,我們希望知道這條序列是否是基因組的編碼區(qū),如果是編碼區(qū),那么我們就需要知道它會(huì)翻譯成什么樣的氨基酸。

DNA-AA

盡管大部分生物享有相同的翻譯機(jī)制,比如說(shuō)起始密碼子為(AUG),終止密碼子為(UAA,UAG,UGA), 但在部分物種和含DNA的細(xì)胞器上存在著遺傳密碼變體(genetic code variation),比如說(shuō)脊椎動(dòng)物的線粒體將AGA和AGG當(dāng)作終止密碼子。

問(wèn)題:給定一條DNA序列和AA序列,判斷從DNA到AA的翻譯使用了哪個(gè)翻譯表?

這個(gè)題目非常簡(jiǎn)單,但是卻讓我發(fā)現(xiàn)原來(lái)從DNA到AA的翻譯有那么多方式,NCBI上的編號(hào)顯示一共有將近30種。解題策略就是用Biopython使用不同的密碼表去翻譯,然后判斷結(jié)果和AA是否相同。

from Bio.Seq import translate
from Bio.Seq import CodonTable
def check_table(dna,aa):
    for i in CodonTable.ambiguous_dna_by_id:
        if translate(dna,table=i,to_stop=True) == aa:
            return i

data = [line.strip() for line in open("rosalind_ptra.txt")]
check_table(data[0],data[1])

序列質(zhì)量分布

這題是關(guān)于高通量測(cè)序下機(jī)數(shù)據(jù)(FASTQ)的質(zhì)量分布,題目非常的簡(jiǎn)單,就是對(duì)給定的序列統(tǒng)計(jì)低于某個(gè)閾值的read數(shù),原本打算使用fastp,但是做了好幾次都出錯(cuò)。后來(lái)發(fā)現(xiàn)發(fā)現(xiàn)是fastq的phred質(zhì)量編碼出了問(wèn)題,在歷史上曾經(jīng)出現(xiàn)過(guò)三種編碼方式

  • fastq-sanger: Phread+33
  • fastq-solexa: Phred+64
  • fastq-illumina: Phred+64

考慮到Rosalind這道題目的還是熟悉Biopython,為了通過(guò)就只能用Biopython了

from Bio import SeqIO

for record in SeqIO.parse("rosalind_phre.txt","fastq-sanger"):
    total = sum(record.letter_annotations['phred_quality'])
    mean = total / len(record.letter_annotations['phred_quality'])
    if mean < 27:
        count += 1

FASTQ質(zhì)量分布 Base Quality Distribution

對(duì)于測(cè)序儀器而言,一般剛開(kāi)始的幾個(gè)堿基由于機(jī)器剛啟動(dòng)會(huì)存在不穩(wěn)定導(dǎo)致質(zhì)量不夠,后面幾個(gè)堿基會(huì)因?yàn)榉磻?yīng)DNA聚合酶活性不夠等因素導(dǎo)致質(zhì)量不佳。

FastQC質(zhì)控過(guò)程就有一個(gè)指標(biāo)判斷每個(gè)位置上的堿基分布是否符合要求,稱之為"Per Base Sequence Quality"

問(wèn)題: 統(tǒng)計(jì)fastq文件每個(gè)位置上的堿基的質(zhì)量平均值,要求給出低于平均值的位置。

答案: 使用biopython讀取序列,使用numpy進(jìn)行矩陣運(yùn)算

from Bio import SeqIO
import numpy as np
lists = []
for record in SeqIO.parse("rosalind_bphr.fq","fastq-sanger")
    lists.append(record.letter_annotations['phred_quality'])
means = np.mean(np.array(lists), axis=0)
np.sum(means < 24)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容