前言
??今天來跟大家分享一個smallRNA的分析流程——sRNAnalyzer。這個流程是由perl語言寫的,對于老生信人來說應(yīng)該很熟悉,畢竟perl以前也是很受歡迎的編程語言,不過對于近幾年入行生信的來說就有點(diǎn)陌生了,因?yàn)楝F(xiàn)在做生信分析大多使用的是python和R語言了。所以對于這個流程的源碼我也是看的似懂非懂的狀態(tài),因?yàn)槲覍erl也是一點(diǎn)不懂。那為什么要分享這個流程呢?首先是這個流程可擴(kuò)展性比較好,就是你可以自己定義所使用的參考基因組的數(shù)量和順序;再者就是定量miRNA時直接定量為前體或者成熟的miRNA,相當(dāng)方便;還有就是在定量的時候可以考慮錯配的堿基數(shù)目,可以分別統(tǒng)計(jì)錯配0、1、2個堿基的定量情況。該流程做了很多工作還有一些其他額外的功能,大家可以根據(jù)需要自己去探索一下,我只是使用了其中定量的功能,下面也就定量的功能來做一個介紹。
準(zhǔn)備工作
??在使用這個流程之前先保證你的工作環(huán)境中已經(jīng)安裝好了fastx_toolkit、cutadapt、bowtie這三個軟件,流程中的數(shù)據(jù)預(yù)處理和比對會用到這些軟件。下面還需要準(zhǔn)備參考基因組,如果你沒有特別的要求可以直接去軟件的官網(wǎng)直接下載:
http://srnanalyzer.systemsbiology.net/。到官網(wǎng)后你可以看到如下圖所示的表格,第一個鏈接是流程的代碼,剩下的是配套的參考基因組鏈接,如果只是做簡單的定量,只需下載smallRNA數(shù)據(jù)庫文件sRNA_DBs就可以了(該文件包含了GtRNAdb 、miRBase 、MirGeneDB 、piRBase snoRNABase參考基因組),其他的數(shù)據(jù)庫文件挺大的下載起來需要很長時間。如果你覺得參考基因組不夠或不是自己想要的,你也可以直接用bowtile軟件自己構(gòu)建,注意是bowtile不是bowtile2。
數(shù)據(jù)預(yù)處理
??準(zhǔn)備好軟件和參考基因組,下面可以開始分析流程了,首先就是數(shù)據(jù)預(yù)處理,做這個步驟時,需要填寫一個流程的參數(shù)配置文件:
pipeline_config.conf:
preprocess:
kit: NEB
gzip: true
stop-oligo: false
alignment:
type: single
human_miRNA: 2
human_miRNA_sub: 2
human_piRNA: 2
human_snoRNA: 2
??可以看出來該配置文件包含了數(shù)據(jù)預(yù)處理和比對兩個步驟的參數(shù)設(shè)置,preprocess設(shè)置的是數(shù)據(jù)預(yù)處理的參數(shù):
??kit: NEB,設(shè)置建庫試劑盒,據(jù)此來設(shè)置不同的接頭序列,還有兩個參數(shù)為Illumina、4N
??gzip: true,設(shè)置fastq是否為壓縮格式
??stop-oligo: false,設(shè)置是否有結(jié)束序列
alignment設(shè)置比對時的參數(shù):
??type: single,設(shè)置數(shù)據(jù)是單端還是雙端
??human_miRNA: 2 #設(shè)置比對時最大的錯配堿基數(shù)
??human_miRNA_sub: 2
??human_piRNA: 2
??human_snoRNA: 2
??設(shè)置好配置文件,可以使用腳本做預(yù)處理了,將所有需要處理的fastq文件放置在一個文件夾里面,然后進(jìn)入到該文件夾里面,運(yùn)行如下的代碼,腳本就會將所有的文件都處理好,會在該文件加下生成處理好的文件:
preprocess.pl --config pipeline_config.conf
結(jié)果類似如下:
GSM3593646_Cutadapt_Prinseq.report
GSM3593646_Cutadapt.report
GSM3593646.fastq.gz
GSM3593646_Processed.fa
比對及定量
??當(dāng)做好數(shù)據(jù)預(yù)處理步驟后,就可以做比對及定量了,不過在此之前需要兩個配置文件,一個是上面準(zhǔn)備的配置文件,另一個是數(shù)據(jù)庫配置文件,如下所示:
DB_config.conf:
base: path/to/database
human_miRNA: miRBase/hairpin_hsa_anno
human_miRNA_sub: miRBase/hairpin_hsa_sub_anno
human_piRNA: piRBase/piR_human_v1.0
human_snoRNA: snoRNABase/snoRNABase
virus_miRNA: miRBase/hairpin_virus_anno
plant_miRNA: miRBase/hairpin_plant_anno
all_miRNA: miRBase/hairpin_anno
all_miRNA_sub: miRBase/hairpin_sub_anno
MirGeneDB_human_miRNA: MirGeneDB/MirGeneDB_hsa_precursor_anno
GtRNAdb_human_tRNA: GtRNAdb/hg38-tRNAs
GtRNAdb_bacteria_tRNA: GtRNAdb/bacterial-tRNAs
GtRNAdb_all_tRNA: GtRNAdb/GtRNAdb-all-tRNAs
??要注意path/to/database是所有數(shù)據(jù)庫的共同路徑,例如上面所示的human_miRNA參考基因組的絕對路徑就是path/to/database/miRBase/hairpin_hsa_anno。還有一點(diǎn)需要注意的是,數(shù)據(jù)庫的順序也是有意義的,因?yàn)樵诒葘r,會按照這里面的順序逐個去比對,沒有比對上的read會比對下一個參考基因組,直到所有的參考基因組都比對一遍。這樣有一個好處就是read只會比對到一個參考基因組,不存在同時比對到多個基因組的情況。
準(zhǔn)備好配置文件,就可以做比對及定量分析了,代碼如下:
align.pl fastadir pipeline_config.conf DB_config.conf
fastadir:數(shù)據(jù)預(yù)處理的文件夾
pipeline_config.conf:數(shù)據(jù)預(yù)處理時的流程配置文件
DB_config.conf:數(shù)據(jù)庫配置文件
做完比對和定量后,會在文件加下面多生成一些文件,類似如下所示:
GSM3593663_Cutadapt_Prinseq.report
GSM3593663.fastq.gz
GSM3593663_Processed.fa #處理后數(shù)據(jù),fasta格式
GSM3593663_Processed.profile #記錄了每一條read比對結(jié)果
GSM3593663_Cutadapt.report
GSM3593663_Processed.dist #reads長度分布文件
GSM3593663_Processed.feature #定量結(jié)果
GSM3593663_Processed_unMatch.fa #沒有比對上參考基因組的reads
??到此定量就完成了,但是流程為了方便大家,還準(zhǔn)備了一個匯總結(jié)果的腳本,也就是說如果有很多樣本,該腳本會將所有樣本的每一種結(jié)果都匯總到單獨(dú)的一個文件里面,代碼如下:
summarize.pl DB_config.conf --project smallrna
會在文件夾下面生成以下的文件:
smallrna_des.feature
smallrna_distCount.sum
smallrna.feature
smallrna_matchRate.sum
smallrna_stp.sum
smallrna_des.profile
smallrna.distRate.sum
smallrna_matchCount.sum
smallrna.profile
smallrna_trimRate.sum
??這樣所有的樣本的結(jié)果都匯總在一個文件中,方便后續(xù)的使用。到此,定量就全部完成了。其實(shí)這個流程還有一個特別之處,就是miRNA的參考基因組,使用的全部是前體的序列,只不過在head部分保留了成熟miRNA序列在前體中的位置信息,然后根據(jù)比對的結(jié)果落在成熟miRNA區(qū)域在整個read長度占比情況來判斷屬于前體或者成熟的miRNA,也就是說如果與成熟miRNA的區(qū)域重疊超過60%則屬于成熟的miRNA,否則屬于前體。
下面展示一下經(jīng)過處理的miRNA參考基因組的fasta文件:
>hsa-let-7a-1|0:79||hsa-let-7a-1-5p|5:26||hsa-let-7a-1-3p|56:76| MI0000060 Homo sapiens let-7a-1 stem-loop
TGGGATGAGGTAGTAGGTTGTATAGTTTTAGGGTCACACCCACCACTGGGAGATAACTATACAATCTACTGTCTTTCCTA
>hsa-let-7b|0:82||hsa-let-7b-5p|5:26||hsa-let-7b-3p|59:80| MI0000063 Homo sapiens let-7b stem-loop
CGGGGTGAGGTAGTAGGTTGTGTGGTTTCAGGGCAGTGATGTTGCCCCTCGGAAGATAACTATACAACCTACTGCCTTCCCTG
>hsa-let-7c|0:83||hsa-let-7c-5p|10:31||hsa-let-7c-3p|55:76| MI0000064 Homo sapiens let-7c stem-loop
GCATCCGGGTTGAGGTAGTAGGTTGTATGGTTTAGAGTTACACCCTGGGAGTTAACTGTACAACCTTCTAGCTTTCCTTGGAGC
??經(jīng)過處理miRNA參考基因組中雖然保留了成熟miRNA的信息,但是需要注意一點(diǎn),就是結(jié)果中成熟miRNA的ID可能與miRBase數(shù)據(jù)庫中不完全一致,例如“hsa-mir-101-1”前體的成熟miRNA在miRBase數(shù)據(jù)庫中的ID是“hsa-miR-101-3p”,但在sRNAnalyzer流程的結(jié)果中成熟miRNA的ID是“hsa-miR-101-1-3p”??赡茏髡咴谔幚韒iRNA參考基因組時,成熟miRNA的ID是根據(jù)直接前體ID來生成的而不是用的數(shù)據(jù)庫中的名稱,這一點(diǎn)大家一定要留意一下!?。?/p>
最后
??這個流程用來定量還是很方便的,如果想要做novel miRNA的預(yù)測可以結(jié)合使用miRDeep2。今天就分享到這里了~~~