宏基因組數據處理方法
數據下載
wget下載
宏基因組的數據主要分布在兩個數據庫:1. NCBI的SRA數據庫,2. ENA。近年來也有許多研究者將數據上傳到中國的數據庫:NGDC
你可以直接通過網頁下載數據,或者是通過各個網站提供的下載工具進行批量下載。也可以到 sra-exporter 這個網站上輸入項目號獲得樣本的下載鏈接。用wget或者其他下載工具進行下載,示例的命令如下:
wget -c ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR185/004/ERR1857004/ERR1857004_1.fastq.gz
wget -c ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR185/004/ERR1857004/ERR1857004_2.fastq.gz
這樣我們就下載了ERR1857004
樣本的雙端測序數據。
Aspera下載
除了wget下載以外,也可以通過安裝 Aspera
來進行加速下載,
# 建立安裝目錄
mkdir ~/app/aspera
cd ~/app/aspera
# 下載aspera軟件
wget https://download.asperasoft.com/download/sw/connect/3.6.2/aspera-connect-3.6.2.117442-linux-64.tar.gz
tar -zvxf aspera-connect-3.6.2.117442-linux-64.tar.gz
# 安裝aspera
sh aspera-connect-3.6.2.117442-linux-64.sh
mv ~/.aspera ~/app/aspera
# 測試Aspera能否使用
~/app/aspera/.aspera/connect/bin/ascp -h
# 設置環境變量
echo 'export PATH=~/app/aspera/.aspera/connect/bin/:$PAHT' >> ~/.bashrc
source ~/.bashrc
ascp -h
若鏈接失效,點擊這里 下載我的備份,或者使用conda下載
# 安裝aspera
conda install -c hcc aspera-cli
ascp -h
成功安裝aspera后,檢查下安裝目錄下是否有 asperaweb_id_dsa.openssh
文件,一般在 .aspera/connect/etc/asperaweb_id_dsa.openssh
同樣是到 sra-exporter 上獲取aspera下載鏈接,這個網站國內訪問可能會有一些問題。
紅框中填寫你的asperaweb_id_dsa.openssh的路徑。
黃框中沒有斷點續傳的參數很危險,建議加上 -k1
,如何加的問題——用正則,不演示了。
質量控制
FastQC安裝
在進行質量控制之前需要查看質量報告,質量報告可以使用FastQC軟件生成
# 安裝fastqc
cd [pathway/of/fastqc/]
wget -c http://www.bioinformatics.babraham.ac.uk/projects/fastqc/fastqc_v0.12.1.zip
unzip fastqc_v0.12.1.zip
# 設置執行權限
cd FastQC
chmod u+x fastqc
# 配置環境變量
vim ~/.bashrc
export PATH="/pathway/of/fastqc/FastQC:$PATH" # 添加至文件最后一行
source ~/.bashrc # 使配置文件生效
fastqc --help # 測試
同樣的備份鏈接 在這里 或者使用conda進行安裝
conda install -c bioconda fastqc
fastqc --help
fastqc只是一個觀看質控情況的軟件,需要根據fastqc的結果進行具體的質控,而具體的質控工作是由指控軟件來完成的,常見的質控軟件有 fastp
,trimmomatic
。本文以 fastp
為例,在安裝fastqc的同時請把fastp也安裝了
conda install -c bioconda fastp
FastQC的使用及報告詳解
fastqc [fastq] -o [out_file] -f [file_type]
# 當然也可以多個文件同時進行質控
fastqc [fastq_1] [fastq_2] ... [fastq_n] -o [out_file] -f [file_type]
常用參數說明
-o --outdir FastQC生成的報告文件的儲存路徑,生成的報告的文件名是根據輸入來定的
-f --format 指定輸入文件的格式
--extract 生成的報告默認會打包成1個壓縮文件,使用這個參數是讓程序不打包
-t --threads 選擇程序運行的線程數,每個線程會占用250MB內存,越多越快咯
--min_length 設置序列的最小長度,≥最長read的長度
-c --contaminants 污染物選項,輸入的是一個文件,格式是Name [Tab] Sequence,里面是可能的污染序列,如果有這個選項,FastQC會在計算時候評估污染的情況,并在統計的時候進行分析,一般用不到
-a --adapters 也是輸入一個文件,文件的格式Name [Tab] Sequence,儲存的是測序的adpater序列信息,如果不輸入,目前版本的FastQC就按照通用引物來評估序列時候有adapter的殘留
-q --quiet 安靜運行模式,一般不選這個選項的時候,程序會實時報告運行的狀況
這里是官網提供的一個壞的質控例子 >點擊此處查看<
fastqc的質控報告一共有11個模塊
Basic Statistics
這個模塊是不會報錯的,包含了文件名, 文件類型,處理的序列總數,序列長度,GC含量等基本信息
Per base sequence quality
這個模塊表示每個位置堿基的整體質量如何,橫軸表示read上堿基的位置(第幾個堿基),縱軸表示質量分數,是以Q值來展示的,Q30表示可信度為 99.9% ,Q20表示可信度為99%,Q10表示可信度為90%。
一般這個模塊報錯的修整方法是通過剪切掉低質量的堿基。
# 單端
fastp -i [seq] -o [outseq] -5 -W 4 -M 20
# 雙端
fastp -i [seq_1] -I [seq_2] -o [outseq_1] -O [outseq_2] -5 -W 4 -M 20
這個參數的意思是從5端開始以4bp堿基為窗口進行滑動,刪除質量低于Q20的堿基,雙端的以 -i 參數的5'端開始
Per Tile Sequence Quality
這個模塊中橫軸代表的是堿基的位置,縱軸代表的是tile的index編號,tile表示的是高通量測序儀上的一小塊矩形區域,冷色代表在平均質量附近,暖色代表比平均質量低,正常來講需要去除掉質量比較的低的部分tile,但是fastp中沒有針對于tile編號進行去除的參數,其他質控軟件中我也沒有找到,所以這一部分質控如何質控目前不清楚,我認為如果上一步, Per base sequence quality
的質控做到位了,所有的堿基都在Q20甚至Q30以上,這一部分質控應該是可以省略的,因為這個質控部分展示的是低于平均質量tile,但是平均質量本身就很高(Q30)那么即使低一些也能達到Q20的標準。
Per sequence quality scores
這個模塊是展示每個read平均堿基質量的”頻率圖“,橫軸代表的是read的平均堿基質量,縱軸代表read數量
同樣的如果第一步的質控到位了,這步也不會有太大問題,一般來說不需要過多關注。
fastp的默認參數會過濾掉平均堿基質量低于15的read。
# 單端
fastp -i [seq] -o [outseq] -q 15
# 雙端
fastp -i [seq_1] -I [seq_2] -o [outseq_1] -O [outseq_2] -q 15
如果這一項已經過關,或不想進行這項的過濾則 將 -q
參數替換為 -Q
即可
Per base sequence content
這張圖片展示了每個堿基位置的ATGC的比例,正常來講這四條線不會有太大波動,因趨于平行,且 ,如果出現了波動可能有以下原因:1. 由于在構造文庫的時候,引物對DNA片段開頭的堿基有一定的選擇性會導致開頭的堿基含量出現紊亂現象。2. 由于測序儀調整造成前幾個測序結果不準確。事實上大部分情況都是由原因1引起的,如果是原因1引起的紊亂現象大部分情況不會對下游分析產生影響[3] 。但是同樣的,如果你的序列足夠長,切掉開頭的一小部分對你序列整體的影響很小,那么我認為還是去除開頭的這一部分比較好。下面是fastp一刀切去除開頭序列的參數。這一部分消耗的計算資源很少。
# 單端
fastp -i [seq] -o [outseq] -f [cut_num] -t [cut_num]
# 雙端
fastp -i [seq_1] -I [seq_2] -o [outseq_1] -O [outseq_2] -f [cut_num] -t [cut_num]
-f
: 從 read1 的開頭開始剪切 [cut_num] 個堿基,當雙端測序選擇這個參數時也同時會剪切read2 開頭的堿基,如果想要雙端的兩個文件剪切不同的值則,加 -F
參數指定read2開頭剪切的數量
-t
:從 read1 的尾部開始剪切 [cut_num] 個堿基,同樣的也可以用 -T
指定 read2 尾端
Per sequence GC content
然后是每個序列的GC含量,橫軸表示GC含量的平均值,縱軸表示read數量,藍色線是標準線,是原始數據沒有被污染的理想分布情況,即符合正態分布。紅線是實際情況,偏差15%報warning,偏差30%報fail。如果紅線,也就是實際的GC含量分布圖偏離了正態,有以下幾種原因:1. 意味著存在污染物,如果是宏基因組數據那么意味著很大概率存在宿主污染。2. 某種序列過度表達,影響了整體的GC含量分布。
針對于宿主污染,fastp無法進行解決,因為宿主污染的去除需要依靠數據庫比對,fastp不具有這種功能,bowtie2和kneaddata等軟件可以用于宿主去污染。如果是重復序列的原因,下面會有介紹如何通過fastp去除重復序列,這里先按下不表。
Per base N content
這張圖表示序列的”N堿基“含量,所謂”N堿基“就是測序儀無法準確判斷某個堿基時用N來替代ATGC,表示未知。通常N含量不會太高。圖中,橫軸是堿基位置,縱軸是N堿基的數量。當任意堿基位置的N含量>5%時報warning,>20%時報fail。
這個質量控制fastp的默認參數會做掉,一般不需要調,參數是 -n
/--n_base_limit
默認值是5,即每個read若N堿基含量>5%,則這個read被丟棄。
Sequence Length Distribution
這個模塊展示的每個read的長度,橫軸是read長度的區間,縱軸是read的數量。一般來講這個質控不需要去管他,因為即使read存在一些不整齊也不影響后續的比對。fastp的默認參數是去除長度低于15bp的短read。你可以通過-L
參數關閉長度過濾,也可以通過 -l
參數指定過濾的長度。
Sequence Duplication Levels
這張圖表示了不同重復的read占比,橫軸是read重復的次數,縱軸是read的百分比。紅線和藍線的計算方式不同,總的來說都是反應read的重復情況。藍線的百分比是相對于總讀數計算的,紅線的百分比是相對于不同序列的總數計算的。
下面是一個具體的例子,思路來自于這篇文章。這里提供一個新的案例以供理解
案例:20 個 獨有的read + 3 個 read (每個read出現2次) + 2個 read(每個read出現3次)
且無論是紅線還是藍線折現下面積均為1。
也有人認為轉錄組數據這個部分偏高是沒有關系的[4],從原理上講,轉錄組數據的文庫是由mRNA反轉錄的cDNA構成的,而mRNA有大量重復的輸入是正常的。
如果你想進行這一部分的質控,也就是去除過多的重復序列,那么可以用 -D
參數,
# 單端
fastp -i [seq] -o [out_seq] -D
# 雙端
fastp -i [seq_1] -I [seq_2] -o [out_seq_1] -O [out_seq_2] -D
--dup_calc_accuracy
可以設置精度,1~6,1最低,6最高。
Overrepresented sequences
這個模塊表示某一個read或者某幾個read的含量過高,可能表示這幾個read具有高度生物學意義,或者是文庫受到了污染,fastp默認是不啟用過濾的,-p
參數開啟過量表達測序。
Adapter Content
這個模塊描述了接頭的去除情況,橫軸是堿基的位置,縱軸是是含有接頭序列的比例。fastp默認是開啟這個質控的不需要設置,如果你這個模塊的質量很好可以用 -A
關掉質控,fastp是默認帶有幾個常用平臺的接頭序列。如果用默認的參數沒有去除掉接頭,你可以用 --adapter_fasta
參數去指定你自己的接頭序列,這個接頭序列根據你測序平臺不同會出現不同的接頭。
到此為止,除了去除宿主污染其他所有的質控都做完了,宿主污染的質控方式留到下一章講。
fastp的具體參數
usage: fastp -i <in1> -o <out1> [-I <in1> -O <out2>] [options...]
options:
# I/O options 即輸入輸出文件設置
-i, --in1 read1 input file name (string)
-o, --out1 read1 output file name (string [=])
-I, --in2 read2 input file name (string [=])
-O, --out2 read2 output file name (string [=])
-6, --phred64 indicates the input is using phred64 scoring (it'll be converted to phred33, so the output will still be phred33)
-z, --compression compression level for gzip output (1 ~ 9). 1 is fastest, 9 is smallest, default is 2. (int [=2])
--reads_to_process specify how many reads/pairs to be processed. Default 0 means process all reads. (int [=0])
# adapter trimming options 過濾序列接頭參數設置
-A, --disable_adapter_trimming adapter trimming is enabled by default. If this option is specified, adapter trimming is disabled
-a, --adapter_sequence the adapter for read1. For SE data, if not specified, the adapter will be auto-detected. For PE data, this is used if R1/R2 are found not overlapped. (string [=auto])
--adapter_sequence_r2 the adapter for read2 (PE data only). This is used if R1/R2 are found not overlapped. If not specified, it will be the same as <adapter_sequence> (string [=])
# global trimming options 剪除序列起始和末端的低質量堿基數量參數
-f, --trim_front1 trimming how many bases in front for read1, default is 0 (int [=0])
-t, --trim_tail1 trimming how many bases in tail for read1, default is 0 (int [=0])
-F, --trim_front2 trimming how many bases in front for read2. If it's not specified, it will follow read1's settings (int [=0])
-T, --trim_tail2 trimming how many bases in tail for read2. If it's not specified, it will follow read1's settings (int [=0])
# polyG tail trimming, useful for NextSeq/NovaSeq data polyG剪裁
-g, --trim_poly_g force polyG tail trimming, by default trimming is automatically enabled for Illumina NextSeq/NovaSeq data
--poly_g_min_len the minimum length to detect polyG in the read tail. 10 by default. (int [=10])
-G, --disable_trim_poly_g disable polyG tail trimming, by default trimming is automatically enabled for Illumina NextSeq/NovaSeq data
# polyX tail trimming
-x, --trim_poly_x enable polyX trimming in 3' ends.
--poly_x_min_len the minimum length to detect polyX in the read tail. 10 by default. (int [=10])
# per read cutting by quality options 劃窗裁剪
-5, --cut_by_quality5 enable per read cutting by quality in front (5'), default is disabled (WARNING: this will interfere deduplication for both PE/SE data)
參考鏈接
[2] fastp似乎無法處理per tile sequence quality