转录组分析流程|基于salmon转录组批量定量流程(三)
TransDecoder那一步最终得到了*.cds
序列,之后就需要用到salmon进行下面操作
salmon介绍
Salmon
是不基于比对计数而直接对基因进行定量的工具,适用于转录组、宏基因组等的分析。Salmon通过许多不同的创新来提高其准确性和速度,包括使用选择性比对(传统读取比对中的准确但快速计算的代理)以及大规模并行的随机折叠变分推理。
其优势是:
- 定量时考虑到不同样品中基因长度的改变(比如不同isoform的使用)
- 速度快、需要的计算资源和存储资源小
- 敏感性高,不会丢弃匹配到多个基因同源区域的reads
- 可以直接校正GC-bias
- 自动判断文库类型
使用Salmon
salmon
有两种“操作模式”。首先,要求您为转录组建立索引,但随后需要直接处理读取。第二种模式仅要求您提供转录组的FASTA文件和包含一组比对的.sam
或.bam
准备转录组索引(mapping-based mode)
生成decoy-aware transcriptome的方法有两种:
-
第一种方法是通过将你想要索引的注释转录本映射到生物体基因组的hard-masked version来计算一组诱饵序列。可以通过minimap2来实现或者使用generateDecoyTranscriptome.sh脚本来实现
-
第二种是将生物的整个基因组用作诱饵序列。这可以通过将基因组连接到要索引的转录组的末端并填充decoys.txt染色体名称的文件。关于如何准备这种诱饵序列的详细说明可以在这里找到。
如果不使用预先计算的索引,则按以下方式运行salmon
1 | salmon index -t transcripts.fa -i transcripts_index |
定量(mapping-based mode)
以使用Salmon命令直接针对此索引来量化任何一组读取(say, paired-end reads in files reads1.fq and reads2.fq)quant
:
1 | salmon quant -i transcripts_index -l <LIBTYPE> -1 reads1.fq -2 reads2.fq --validateMappings -o transcripts_quant |
如果使用的是单端测序reads,则将它们带有如下-r
标记:
1 | salmon quant -i transcripts_index -l <LIBTYPE> -r reads.fq --validateMappings -o transcripts_quant |
向Salmon提供多个读取文件
建立索引
通过前面的trandecoder得到序列LXZ_30sample_longest.cds.fa
1 | salmon index -t LXZ_30sample_longest.cds.fa -i LXZ_30sample_longest.cds.fa_index -p 20 |
1 | LXZ_1_A_1.cor.p.fq.gz LXZ_1_A_2.cor.p.fq.gz |
整理样本信息表,命名为sampleFile,内容如下:
1 | Samp conditions individual |
循环定量多个样品的表达量
采用for循环进行批量定量
1 | for samp in `tail -n +2 sampleFile | cut -f 1`; do salmon quant -l A -1 ${samp}_1.cor.p.fq.gz -2 ${samp}_2.cor.p.fq.gz -i /home/lixingze/data/salmon/test/LXZ_30samples_longest.cds.fa_index -o ${samp}/${samp}.salmon.count -p 20 >${samp}.salmon.log 2>&1; done & |
最后可以批量在每个样本下面生成对应名称的文件每个文件中的quant.sf
即为定量结果,以下为示例:
1 | Name Length EffectiveLength TPM NumReads |
最后如果要将所有样品做成矩阵可以进行提取TPM那一列,最后合并
1 | awk ‘ {print $4} ‘ quant.sf >quant.sf_extracted |
最终处理完成!
整理Salmon定量文件用于DESeq2差异基因鉴定
此步骤参考生信宝典
公众号相关内容,具体内容本文不在复述,有需要的可以访问此处
大致内容为:
找到Salmon的输出文件并压缩起来,用于下载到本地进行差异分析。
1 | # 列出salmon的输出文件 |
./LXZ_1_A.salmon.count/quant.sf
./LXZ_2_B.salmon.count/quant.sf
./LXZ_3_C.salmon.count/quant.sf
./LXZ_4_D.salmon.count/quant.sf
./LXZ_5_E.salmon.count/quant.sf
生成辅助文件,指出每个样品对应的自己的quant.sf文件,便于导入tximport包。
1 | # 生成一个两列文件方便R导入 |
重要选项说明
Salmon向用户提供了许多有用的可选命令行参数,通过salmon quant -h
查看
-p
/--threads
设置线程数,根据配置自行选择
--validateMappings
在将测序读段映射到转录组时启用选择性比对。这可以提高映射的敏感性和特异性,结果可以提高定量准确性。
--useEM
使用“标准” EM算法代替变量贝叶斯EM算法来优化丰度估计。
--seqBias
能够学习和纠正输入数据中特定于序列的偏差。默认情况下,Salmon使用从输入开始的1,000,000次读取来学习特定于序列的偏差参数。如果要更改从中学习模型的样本数,可以使用--numBiasSamples
参数。
-l A
/--libType A
基于对齐方式的自动库类型检测,自动判断文库类型,尤其适用于链特异性文库.
--gcBias
校正测序片段GC含量,获得更准确的转录本定量结果
参考信息
如果有需要更详细的了解软件的具体内容请参照salmon官方文档,以及github。
点击前往Salmon官方文档 点击返回主页