fastq&fasta 處理

fastq格式文件處理大全

fasta格式文件處理大全

FASTQ

FASTQ

完整性校驗(yàn)

md5sum
保證文件在傳輸過(guò)程中保持完整,沒(méi)有丟失內(nèi)容,一般采用md5校驗(yàn)方式,目前測(cè)序公司給定的測(cè)序數(shù)據(jù)都帶有md5文件,使用md5sum -c命令檢測(cè)文件,如果返回OK,說(shuō)明文件完整

md5sum -c SRR8651554_1.fastq.md5
md5sum -c SRR8651554_5.fastq.md5

文件統(tǒng)計(jì)

統(tǒng)計(jì)序列條數(shù),堿基總數(shù),reads讀長(zhǎng)分布等,可以使用seqkit
統(tǒng)計(jì)每條序列ATCG四種堿基組成以及質(zhì)量值分布,可以使用seqtk comp
統(tǒng)計(jì)每個(gè)位點(diǎn)所有序列ATCG以及質(zhì)量值分布,seqtk fqchk命令。結(jié)果可以繪制堿基質(zhì)量以及含量分布圖。

合并

可以使用seqtk mergerpe進(jìn)行合并多個(gè)fastq文件,其實(shí)cat或者zcat也可以合并,不過(guò)seqtk的合并方式有一些差別,cat是將一個(gè)文件追加到另一個(gè)文件結(jié)尾,seqtk mergerpe是每次取文件一個(gè)單位合并。

過(guò)濾短序列

Ion Torrent,pacbio,nanopore測(cè)序的fastq文件序列長(zhǎng)度并不相同,通常需要過(guò)濾較短的序列,例如過(guò)濾掉長(zhǎng)度小于150bp的序列。可以使用seqtk seq或者seqkit seq進(jìn)行操作。

轉(zhuǎn)換為列表

可以使用seqkit fx2tb
轉(zhuǎn)換為列表方便根據(jù)ID進(jìn)行處理。
將四行數(shù)據(jù)轉(zhuǎn)換為一行三列,可以使用awk列表處理程序來(lái)進(jìn)行處理
使用tab2fx將處理好的列表轉(zhuǎn)為fastq格式。

質(zhì)量值轉(zhuǎn)換

目前測(cè)序得到的fastq文件,都采用phred+33的格式,但是如果處理之前的文件,還有可能遇見(jiàn)phred+64的模式,一般軟件中包含--phred33或者--phred64選項(xiàng),當(dāng)然也可以直接在兩種質(zhì)量值之間進(jìn)行轉(zhuǎn)換。

QC

fastqc繪制堿基含量分布圖與堿基質(zhì)量分布圖,通過(guò)這兩個(gè)圖來(lái)判斷fastq文件質(zhì)量好壞。如果樣品太多可以使用multiqc合并多個(gè)結(jié)果。

過(guò)濾

去adapter

接頭adapter主要是指illumina測(cè)序時(shí)加入的P7接頭與P5接頭,理論上來(lái)說(shuō)測(cè)序從測(cè)序引物開(kāi)始,是測(cè)序不到接頭的,但是由于部分打斷片段或者由于adapter空載,會(huì)導(dǎo)致adpter自身連接,以上兩種情況都會(huì)導(dǎo)致測(cè)序reads中包含adapter序列。adapter序列非基因組本身的序列,會(huì)干擾分析,因此需要去除掉。一種是直接給定adapter序列,與reads比對(duì),比對(duì)上的就把整條reads去掉,另外一種是測(cè)序完成之后,給定一個(gè)adater list文件,其中包含了含有adapter序列的reads ID列表,給定一個(gè)閾值將這些reads去除掉。cutadapt可以根據(jù)給定的adapter序列進(jìn)行過(guò)濾。

去除低質(zhì)量

低質(zhì)量主要是指去除測(cè)序質(zhì)量錯(cuò)誤率較高的位點(diǎn),一般以Q20作為標(biāo)準(zhǔn),如果一個(gè)堿基質(zhì)量值低于Q20,則認(rèn)為一個(gè)低質(zhì)量,如果一條序列中低質(zhì)量堿基達(dá)到一定比例,例如達(dá)到40%以上,則過(guò)濾掉此條序列。seqtk工具seq功能通過(guò)-q,-n可以將低質(zhì)量堿基進(jìn)行標(biāo)記,例如替換為小寫(xiě)字母或者其他字符,但是不進(jìn)行過(guò)濾,有專(zhuān)門(mén)的數(shù)據(jù)過(guò)濾工具。

去除N堿基

如果測(cè)序儀無(wú)法準(zhǔn)確判斷出測(cè)序堿基的類(lèi)型,則選擇輸出N,N堿基無(wú)法進(jìn)行各種分析,因此需要去除掉序列中包含過(guò)多N堿基的數(shù)據(jù)。去除N堿基并不是講N堿基切除,而且去除包含N堿基過(guò)多的整條數(shù)據(jù),例如N堿基含量達(dá)到10%以上,則過(guò)濾掉數(shù)據(jù),有些程序按照連續(xù)N堿基比率進(jìn)行過(guò)濾。

去除Duplication

duplication是指一對(duì)完全一樣的測(cè)序數(shù)據(jù),是由于打斷不隨機(jī)或者PCR過(guò)程中導(dǎo)致的,duplication會(huì)干擾序列拼接,還會(huì)影響變異檢查,因此要去除掉。但是RNAseq和宏基因組測(cè)序由于本身序列短,并且豐度不同,因此不能去除duplication。去除dupilication 數(shù)據(jù)可以只保留一對(duì)數(shù)據(jù),去除多余一致的測(cè)序片段,但是在變異檢測(cè)過(guò)程中采取的是在bam文件中對(duì)比對(duì)到同一位置的duplication片段進(jìn)行標(biāo)記的方法,稱(chēng)為Mark Duplication。因?yàn)楸容^reads是否為duplication比較消耗資源,而采用標(biāo)記的方法更加快速。一般duplication與其他過(guò)濾條件一起過(guò)濾,或者采用比對(duì)之后標(biāo)記的方式。fastx-toolkit工具中可以去除duplicantion,但只能處理單端,因此用處不大。

截取頭尾

illumina測(cè)序一般頭部有些波動(dòng),尾部質(zhì)量較差,如果想截取部分區(qū)域,可以使用seqtk trim功能

數(shù)據(jù)過(guò)濾

有很多軟件可以一次性完成數(shù)據(jù)過(guò)濾工作,包括去除adapter,去除低質(zhì)量,去除N堿基,去除duplication,截取reads,常用的包括fastp,trimmomatic,SOAPnuke等,SOAPnuke很好用,但是去除adapter需要提供一個(gè)adapter reads ID的列表,從網(wǎng)上下載的數(shù)據(jù)沒(méi)有這個(gè)
fastp利用固定adapter序列,但是不能去除duplication
trimmomatic選項(xiàng)參數(shù)太長(zhǎng),而且也不是很好用。
這里推薦使用fastp。

排序

如果想對(duì)fastq格式文件進(jìn)行排序,可以使用seqkit sort功能

抽樣

有時(shí)候需要從全部文件中抽取一部分進(jìn)行分析,因?yàn)闇y(cè)序出來(lái)的數(shù)據(jù)本身就是隨機(jī)分布的,因此,即使從頭到尾開(kāi)始取數(shù)據(jù),出來(lái)的也是隨機(jī)的。當(dāng)然還是可以隨機(jī)抽樣的。seqtk和seqkit工具都提供了抽樣功能。

拆分?jǐn)?shù)據(jù)

有時(shí)候需要將fastq文件拆成多份,或者根據(jù)固定模式進(jìn)行拆分
例如測(cè)序時(shí)同一個(gè)lane的數(shù)據(jù)根據(jù)index進(jìn)行拆分,
16S測(cè)序中,同一個(gè)文件中序列根據(jù)barcode進(jìn)行拆分等。
seqtk split與split2可以用來(lái)拆分文件

轉(zhuǎn)換為fasta

一些軟件只支持fasta格式,例如只有fasta格式才能進(jìn)行blast比對(duì),將fastq轉(zhuǎn)換為fasta有多種方法,awk都可以,這里使用seqtk和seqkit分別演示一下。

提取序列

fastq格式文件需要使用bgzip壓縮,一般的fastq都是采用gzip壓縮,需要重新處理文件才行。

合并兩條序列

雙末端測(cè)序的reads來(lái)自一條片段的兩側(cè),如果文庫(kù)大小比較小,測(cè)序讀長(zhǎng)比較長(zhǎng),例如pairend 300,insertsize 500,就有一些片段中間具有overlap區(qū)域,因此可以將兩條reads進(jìn)行拼接,連成更長(zhǎng)的片段。有利于進(jìn)行序列拼接,也具有更好的唯一性,例如16S序列分析中常用此步驟。有很多工具例如cope,flash,fastq-join等。

kmer計(jì)數(shù)

kmer是一段序列,一般將fastq文件按照固定長(zhǎng)度(奇數(shù)),例如15,從頭到尾按照步移數(shù)為1開(kāi)始截取序列,例如1-15,2-16,3-17……然后對(duì)kmer頻率進(jìn)行計(jì)數(shù),kmer分析可以用來(lái)估計(jì)基因組大小等,通過(guò)kmer頻數(shù)分布也可以反應(yīng)測(cè)序錯(cuò)誤,或者雜合位點(diǎn)的分布。一般認(rèn)為kmer頻數(shù)為1的序列包含測(cè)序錯(cuò)誤位點(diǎn)??梢允褂胘ellyfish對(duì)fastq文件進(jìn)行kmer計(jì)數(shù)。

fastq到bam

很多分析的第一步就是通過(guò)短序列比對(duì)將fastq文件轉(zhuǎn)換為bam,包括變異檢測(cè),RNAseq等。一些測(cè)序儀直接輸出bam格式文件,例如Ion Torrent,屬于uBam格式??梢詫astq進(jìn)行短序列比對(duì)的工具很多,這里以bwa為例。除了需要fastq格式,還需要fasta格式作為參考序列。

FASTA

image.png

統(tǒng)計(jì)

統(tǒng)計(jì)序列條數(shù)
grep wc
seqkit的統(tǒng)計(jì)功能

格式化

調(diào)整,例如一行ID一行序列,或者讓每行顯示固定長(zhǎng)度內(nèi)容。

逐條統(tǒng)計(jì)

統(tǒng)計(jì)每條序列長(zhǎng)度
seqtk grep awk
統(tǒng)計(jì)長(zhǎng)度并按照長(zhǎng)度計(jì)算頻數(shù)
seqtk grep awk sort uniq

成分統(tǒng)計(jì)

計(jì)算每條序列的長(zhǎng)度以及ATCG堿基的組成,seqtk comp

提取序列

根據(jù)基因ID,提取序列。
方法一:利用samtools為fasta建立索引,然后提取
方法二:利用seqtk工具,給定一個(gè)ID列表

截取序列

如果想截取某條序列固定區(qū)域,需要給定一個(gè)bed格式ID列表

seqtk subseq

排序

seqkit sort

按照長(zhǎng)度過(guò)濾

使用seqtk或者seqkit的seq

反向互補(bǔ)

seqtk是一步完成反向互補(bǔ)操作,
seqkit可以單獨(dú)取反向序列,也可以單獨(dú)取互補(bǔ)序列。
-r -p

轉(zhuǎn)化大小寫(xiě)

seq -lu

查找重復(fù)序列

RepeatMasker

串聯(lián)重復(fù)序列

trf

blast比對(duì)

blastn

建立bwa索引

fasta序列可以作為BWA比對(duì)的參考序列,比對(duì)之前同樣創(chuàng)建索引。

翻譯成氨基酸

可以使用一些在線(xiàn)工具例如ExPaSy,EMBOSS等。

多序列比對(duì) 多序列比對(duì)可以用于構(gòu)建系統(tǒng)發(fā)育樹(shù),可以直接使用muscle,clustalw,mafft,megacc。

?著作權(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)容