FASTQ文件格式是測序儀展示數(shù)據(jù)的標(biāo)準(zhǔn)格式,可以看成FASTA文件的變種(FASTA+Q)残腌,因?yàn)槠浒藢?duì)序列中每個(gè)堿基的Qualify Measurement凌盯。(如:堿基A出錯(cuò)的可能性是1/1000)
FASTQ格式詳述
FASTQ格式包括4個(gè)部分徐矩,每個(gè)部分1行粮宛,格式同F(xiàn)ASTA相似窥淆,但缺陷也更多:
- 類似FASTA的頭部卖宠,以@而非>起始,后跟ID和描述文本
- 測定的序列忧饭,通常為1行扛伍,但有時(shí)也會(huì)換行,最后以+指示下一部分
- 由+表示(后面有時(shí)會(huì)跟著和第一部分相同的id和header)
- 編碼第2部分測定序列的質(zhì)量值眷昆,長度必須同第2部分相同蜒秤,換行方式也要同第2部分相同
第4部分看著有點(diǎn)奇怪,其實(shí)是通過轉(zhuǎn)碼將兩位數(shù)字的Phred Score轉(zhuǎn)換為1個(gè)字符的Quality Score
第一行為FASTQ quality codes
第二行為Quality Score (Q)/Phred Score (P)
錯(cuò)誤率公式:Error=10?(-P/10)
以前還用過一種老的+64格式的FASTQ編碼:
可以使用
seqtk
命令進(jìn)行轉(zhuǎn)換seqtk seq -Q64 input.fq > output.fa
FASTQ文件header中的額外信息
EAS139:儀器帅刊,
136:run編號(hào),
FC706VJ:流通池編號(hào)漂问,
2:泳道赖瞒,
2104:tile編號(hào),
(15343,197393):xy坐標(biāo)蚤假,
1: the member of a pair, 1 or 2 (paired-end or mate-pair reads only)
Y: Y if the read is filtered, N otherwise
18: 0 when none of the control bits are on, otherwise it is an even number
ATCACG指索引序列
此信息針對(duì)特定儀器/供應(yīng)商栏饮,可能會(huì)隨儀器的不同版本或版本而變化。但對(duì)于回答可能影響儀器的質(zhì)量控制或系統(tǒng)性技術(shù)問題是很有用的磷仰。
通過命令行轉(zhuǎn)換FASTQ質(zhì)量編碼
略袍嬉,在書p185
進(jìn)階FASTQ處理
介紹使用SeqKit操作FASTA/Q,SeqKit支持FASTA/Q文件和FASTA/Q的壓縮格式:
seqkit的學(xué)習(xí)筆記可參考
《fasta/fq文件處理萬能工具——Seqkit學(xué)習(xí)記錄》http://www.reibang.com/p/f0e65738b7c7
還需要使用csvtk(CSV/TSV):
下載
https://github.com/shenwei356/csvtk/releases
安裝csvtk的方式:
https://bioinf.shenwei.me/csvtk/#installation
#作者目前尚不推薦使用conda進(jìn)行安裝
curl http://app.shenwei.me/data/csvtk/csvtk_linux_amd64.tar.gz > csvtk_linux_amd64.tar.gz
tar -zxvf csvtk_linux_amd64.tar.gz
sudo cp csvtk bin
1. 示例數(shù)據(jù)
使用一個(gè)FASTQ文件(Sample Reads灶平,1M)和兩個(gè)FASTA文件(NCBI RefSeq數(shù)據(jù)庫中的病毒DNA和蛋白質(zhì)序列伺通,60M+40M)。
#wget -nc指若要覆蓋已有文件則不要下載
wget -nc http://data.biostarhandbook.com/reads/duplicated-reads.fq.gz
wget -nc ftp://ftp.ncbi.nih.gov/refseq/release/viral/viral.2.1.genomic.fna.gz
wget -nc ftp://ftp.ncbi.nih.gov/refseq/release/viral/viral.2.protein.faa.gz
# fna文件和faa文件
# *.fna = FASTA Nucleic Acid file
# *.faa = FASTA Amino Acid file
2. FASTQ文件概覽
seqkit stat *.gz
3. 得到GC含量
seqkit fx2tab
將FASTA/Q轉(zhuǎn)換為3列表格形式(1:名稱/ID逢享,2:序列罐监,3:質(zhì)量),還可以在新列中提供各種信息瞒爬,包括序列長度弓柱、GC內(nèi)容/GC skew、alphabet
seqkit fx2tab -n -i -g viral.2.1.genomic.fna.gz | head
-n, --name
only print names (no sequences and qualities)
-i, --only-id
print ID instead of full head
-g, --gc
print GC content
可以嘗試分別去掉這些參數(shù)
4. 得到感興趣堿基的含量
假設(shè)想要獲得A侧但、C矢空、A+C的含量
seqkit fx2tab -H -n -i -B a -B c -B ac viral.2.1.genomic.fna.gz | head -5
-H, --header-line
輸出header line
-B, --base-content strings
輸出堿基含量,忽略大小寫俊犯,支持N等alphabet
5. 抽出部分序列和name/list文件
seqkit sample
根據(jù)數(shù)量或比例對(duì)序列進(jìn)行抽樣
-n, --number int
根據(jù)數(shù)量抽樣(匹配可能不精確)
-p, --proportion float
根據(jù)比例抽樣
seqkit seq
seq命令對(duì)序列進(jìn)行操作妇多, (包括revserse, complement, extract ID等...)
-n, --name
只輸出名字
-i, --only-id
只輸出id而不輸出full head
seqkit sample --proportion 0.001 duplicated-reads.fq.gz | seqkit seq --name --only-id > id.txt
head id.txt #id.txt中的記錄要用于seqkit grep的檢索,格式為每行1個(gè)記錄
seqkit grep
根據(jù)ID/名稱/序列/序列motif檢索序列燕侠,允許錯(cuò)配
-f, --pattern-file string
pattern file (one record per line)
seqkit grep --pattern-file id.txt duplicated-reads.fq.gz > duplicated-reads.subset.fq.gz
#用id.txt中的pattern在duplicated-reads.fq.gz中進(jìn)行匹配
6. 找到包含簡并堿基(degenerate base)的序列并定位
seqkit fx2tab --name --only-id --alphabet viral.1.1.genomic.fna.gz | csvtk --no-header-row --tabs grep --fields 4 --use-regexp --ignore-case --pattern "[^ACGT]"
代碼的長參數(shù)版本
seqkit fx2tab -n -i -a viral.2.1.genomic.fna.gz | csvtk -H -t grep -f 4 -r -i -p "[^ACGT]"
seqkit fx2tab
將FASTA / Q轉(zhuǎn)換為表格格式者祖,并可以在新列中輸出序列字母:
-a, --alphabet
輸出alphabet
然后可以使用文本搜索工具來過濾表立莉。
csvtk
下的參數(shù)
-H, --no-header-row
輸入的CSV文件沒有header行
-t, --tabs
input CSV file由tabs分隔。覆蓋-d和-D
csvtk grep
下的參數(shù)
-f, --fields string
comma separated key fields, column name or index. e.g. -f 1-3 or -f id,id2 or -F -f "group" (default "1") 這個(gè)參數(shù)沒看懂
-r, --use-regexp
給出的pattern為正則表達(dá)式
-i, --ignore-case
忽略大小寫
-p, --pattern strings
query pattern (multiple values supported) 這個(gè)參數(shù)沒看懂
pattern為"[^ACGT]" 是一個(gè)正則表達(dá)式 這個(gè)正則表達(dá)式?jīng)]看懂
參考博文:《csvtk——CSV_TSV文本處理萬能工具》
http://www.reibang.com/p/3aa6231ed5c3
保存這些包含簡并堿基的序列的ID
seqkit fx2tab -n -i -a viral.2.1.genomic.fna.gz | csvtk -H -t grep -f 4 -r -i -p "[^ACGT]" | csvtk -H -t cut -f 1 > id2.txt
使用seqkit grep命令去除
seqkit grep --pattern-file id2.txt --invert-match viral.1.1.genomic.fna.gz > clean.fa
#或
seqkit grep -P id2.txt --invert-match viral.1.1.genomic.fna.gz > clean.fa
csvtk cut
下的參數(shù)
-f, --fields string
僅保留fields中的列七问,例: -f 1,2即保留第1蜓耻、2列