Salmon---a tool for wicked-fast transcript quantification from RNA-seq data


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)。具體如下圖所示:

Overview of Salmon’s method and components and execution timeline

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的計算公式:

\[TPM_i={( N_i/L_i )*1000000 } / sum( N_i/L_i+……..+ N_m/L_m ) \]

\(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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM