Salmon 概述
該軟件采用新的雙階段(dual-phase)統計推斷程序,以及針對每個樣本存在sequence-specific, fragment GC-content, 和 positional biases而應用的sample-specific bias models。
該軟件由三個部分組成:
一個輕量級的 mapping model, 一個估計初始表達水平的在線階段( an online phase that estimates initial expression levels) 和模型參數, 以及一個細化估計表達水平的離線階段 (an offline phase that refines expression estimates)。具體如下圖所示:
Salmon 既能通過使用quasi-mapping (一個快速且輕量級的mapping 程序)對reads直接進行mapping,也能對SAM/BAM文件進行mapping。
此外,由於取樣的隨機性和有些reads比對到多個轉錄本上造成對某些轉錄本的表達水平估計的不確定性,很多軟件無法較為准確的估計這些類型的轉錄本,而Salmon能較為准確的估計它們的表達水平。
Salmon的quasi-mapping-based mode的運行有兩階段:構建索引和用戶想要定量的reads文件。
Salmon的alignment-based mode的運行則不需要構建索引,而是僅需提供一個轉錄本的 FASTA文件(a FASTA file of the transcripts )和用戶想要定量的 SAM/BAM 文件。
補充簡述以下名詞的區別:
mRNA序列、cDNA序列、ORF序列、CDS序列、Promoter、STS、ETS
Salmon應用
查看幫助文檔
#查看可用的命令
###Salmon v0.9.1
salmon -h
#查看幫助文檔之Salmon's quasi-mapping-based mode
salmon --no-version-check quant --help-reads
#查看幫助文檔之Salmon's alignment-based mode
salmon --no-version-check quant --help-alignment
Quasi-mapping-based mode (including lightweight alignment)
目前,Salmon有兩種不同的方法---支持將reads比對到transcriptomes,分別是(SMEM-based) lightweight-alignment 和 quasi-mapping。SMEM-based mapping是Salmon自帶的輕量級的比對方法;而 quasi-mapping這種比對方法相對較新較快。這兩種方法的使用均是通過quant
命令來應用的,但是兩者比對方法所應用到的索引不同。
quasi-mapping 應用到的數據結構是:a combination of data structures—a hash table, suffix array (SA) and efficient rank data structure
quasi-mappings的詳情見:RapMap: a rapid, sensitive and accurate tool for mapping RNA-seq reads to transcriptomes
#構建quasi-mapping-based index
##注意,此處的-k值的設定。
####當reads長度長於75bp時,k值設為31是個理想的選擇;
####當reads長度短於75bp時,應該嘗試使用降低k值。
####另外,參數k能夠被傳遞給命令quant。因此,在構建索引階段提供的參數k能夠覆蓋在估計表達量階段的參數k的設定。
######即如果用戶使用quasi-mapping-based index,則估計表達量階段的參數k的設定對結果沒有任何影響。
####因為index命令中,--type參數的默認值是quasi,所以在構建quasi-mapping-based index時,--type quasi可以省略不寫。
salmon index -t transcripts.fa -i transcripts_index --type quasi -k 31
#構建SMEM-based mapping index
#### 雖然此處未給定參數k,但是程序的默認值是19。
#### 同上,在構建索引階段提供的參數k能夠覆蓋在估計表達量階段的參數k的設定。
salmon index -t transcripts.fa -i transcripts_index --type fmd
#對雙端測序數據reads表達量的估計
salmon quant -i transcripts_index -l <LIBTYPE> -1 reads1.fq -2 reads2.fq -o transcripts_quant
#對單端測序數據reads表達量的估計
salmon quant -i transcripts_index -l <LIBTYPE> -r reads.fq -o transcripts_quant
### 命令quant均適用於這兩個index(quasi-mapping or SMEM-based),此外,Salmon能夠自動檢測到使用的是哪種index,從而采用與之匹配的比對方法。
### 注意:參數-l必須指定在參數-1,-2和-r的前面。
### 生成一個目錄,內含文件quant.sf
Alignment-based mode
#使用aligner比對生成的結果文件aln.bam,對其進行表達量分析
### 生成一個目錄,內含文件quant.sf
salmon quant -t transcripts.fa -l <LIBTYPE> -a aln.bam -o salmon_quant
實戰:應用Salmon分析RNA-seq
#創建分析文件夾
mkdir salmon_tutorial
cd salmon_tutorial
#下載參考轉錄組數據
curl ftp://ftp.ensemblgenomes.org/pub/plants/release-28/fasta/arabidopsis_thaliana/cdna/Arabidopsis_thaliana.TAIR10.28.cdna.all.fa.gz -o athal.fa.gz
#創建索引
salmon index -t athal.fa.gz -i athal_index
#獲取測序數據
mkdir data
cd data
for i in `seq 25 40`;
do
mkdir DRR0161${i};
cd DRR0161${i};
wget ftp://ftp.sra.ebi.ac.uk/vol1/fastq/DRR016/DRR0161${i}/DRR0161${i}_1.fastq.gz;
wget ftp://ftp.sra.ebi.ac.uk/vol1/fastq/DRR016/DRR0161${i}/DRR0161${i}_2.fastq.gz;
cd ..;
done
cd ..
#估計樣本的表達量
for fn in data/DRR0161{25..40};
do
samp=`basename ${fn}`
echo "Processing sample ${samp}"
salmon quant -i athal_index -l A \
-1 ${fn}/${samp}_1.fastq.gz \
-2 ${fn}/${samp}_2.fastq.gz \
-p 8 -o quants/${samp}_quant
done
### 其他常用的參數
--seqBias #糾偏序列的bias
--gcBias #糾偏GC含量的bias[beta for single-end reads]
-g/--geneMap #提供轉錄本與基因之間對應關系的文件。如果提供了該文件,Salmon將會輸出文件:quant.sf 和 quant.genes.sf。
#其中quant.genes.sf 文件中含有對基因表達水平的估計。
#提供的文件可以是GTF文件,也可以是由TAB分隔符分隔文件,文件中的每一行含轉錄本名稱和對應的基因名。
#以'.gtf', '.gff' 或 '.gff3'結尾的文件名均被當做GTF格式做處理解析。
#以其他字符結尾的被當做由TAB分隔符分隔的簡單文件格式做處理解析。
-z/--writeMappings #若提供了該參數,則quasi-mapping的結果也會以SAM格式輸出。
#默認情況下,輸出結果是標准輸出,建議提供文件名存儲至文件中,以便后續分析的需要。
### 其他常用高級的參數
--useVBOpt #使用Variational Bayesian EM算法,而非傳統的EM算法。目的是批處理優化
--numBootstraps num #Number of bootstrap samples to generate。
#注意,該參數的使用與Gibbs sampling是相斥的。
#如果后續的分析差異表達搭配sleuth使用,則必須應用此參數。
#下游的差異表達分析
### 差異表達分析的包:DESeq2, edgeR, limma, or sleuth
### 使用tximport包導入salmon轉錄本表達量分析的結果文件
### 再根據 DESeq2 vignette(https://bioconductor.org/packages/DESeq2)提供的范例,將salmon轉錄本表達量分析的結果文件讀入DESeq2
Salmon輸出文件
Salmon輸出文件之Quantification File
Quantification File: quant.sf
quant.sf
文件有5列,分別是Name,Length ,EffectiveLength,TPM和NumReads。分別表示的含義如下所述:
- Name — target transcript 名稱, 由輸入的 transcript database (FASTA file)所提供。
- Length — target transcript 長度,即有多少個核苷酸
- EffectiveLength — target transcript 計算的有效長度。此項考慮了所有被建模的因素,這將影響從這個轉錄本中取樣片段的概率,包括片段長度分布和序列特異性和gc片段偏差(如果這些因素在建模時均被考慮的話)。 (It takes into account all factors being modeled that will effect the probability of sampling fragments from this transcript, including the fragment length distribution and sequence-specific and gc-fragment bias (if they are being modeled))。
- TPM — 估計轉錄本的表達量。
- NumReads — 估計比對到每個轉錄本的reads數。
補充:FPKM,RPKM,RPM以及TPM的關系之見解
RPKM (Reads Per Kilobase Million)
FPKM (Fragments Per Kilobase Million)
TPM(Transcripts Per Kilobase Million)
RPM (Reads per million)
CPM (Counts per million)
TPM:
Transcripts Per Kilobase of exonmodel per Million mapped reads (每千個鹼基的轉錄每百萬映射讀取的Transcripts),優化的RPKM計算方法,可以用於同一物種不同組織的比較。
TPM的計算公式:
\(N_i\):mapping到基因i上的read數;
\(L_i\):基因i的外顯子長度的總和。
在一個樣本中一個基因的TPM:先對每個基因的read數用基因的長度進行校正,之后再用校正后的這個基因read數\((N_i/L_i)\)與校正后的這個樣本的所有read數(\(sum( N_i/L_i+……..+ N_m/L_m )\))求商。由此可知,TPM概括了基因的長度、表達量和基因數目。TPM可以用於同一物種不同組織間的比較,因為sum值總是唯一的。
Salmon輸出文件之其他
cmd_info.json
: JSON格式文件,記錄salmon程序運行的命令和參數
lib_format_counts.json
: Observed library format counts。當運行salmon是 mapping-based mode時,則會生成改文件。 JSON格式文件,記錄有關文庫格式和reads比對的情況。
eq_classes.txt
: Equivalence class file。當Salmon運行時,應用參數--dumpEq
,則會生成此文件。
aux_info
: 輔助文件夾,內含多個文件
fld.gz
:在輔助文件夾中,該文件記錄的是觀察到的片段長度分布的近似值
obs5_seq.gz, obs3_seq.gz, exp5_seq.gz, exp5_seq.gz
: Sequence-specific bias files
expected_gc.gz, observed_gc.gz
: 當Salmon運行時,應用fragment-GC bias correction,在輔助文件夾中則會生成這兩個文件。記錄Fragment-GC bias。
meta_info.json
: JSON格式文件,記錄salmon程序運行的統計信息
ambig_info.tsv
: tab分隔符的文本文件,含有兩列。記錄的是每個轉錄本對應的 the number of uniquely-mapping reads 和 the total number of ambiguously-mapping reads
參考鏈接:
https://combine-lab.github.io/salmon/
http://salmon.readthedocs.io/en/latest/salmon.html#quasi-mapping-based-mode-including-lightweight-alignment
https://vip.biotrainee.com/d/63-rpkm-fpkm-rpm-tpm
http://blog.sciencenet.cn/blog-1113671-1038659.html