Salmon 进行转录本定量

Salmon 是转录本定量软件,使用转录本定量主要优点一是更准确,比如不同样本同一基因使用不同 isoform 此时基因长度并不相等,直接基因定量无法顾及;二是方便进行可变剪切分析。Salmon 提供2种运行模式,一是直接读取 reads 文件(姑且称为 fastq 模式);二是读取比对好文件 sam/bam (姑且称为比对模式)。

在文章《StringTie + DESeq2 进行 RNA-seq 差异基因分析》《featureCounts 计算基因 reads 数目》我介绍了一个基本的 RNA-seq 差异基因分析流程,Salmon 能用来替代这里的 StringTie 和 featureCounts, DESeq2 也专门有导入 Salmon 数据的函数。这篇文章我用人种 RNA-seq 数据演示一遍 Salmon 流程,下篇文章将用 Salmon 数据进行可变剪切分析。

Reads 乱序
Salmon 要求 reads 是无序的,如果你的文件将 reads 排序过,用 Salmon 前要先重新乱序。

线程数
fastq 模式差不多使用线程越多运行越快,不过实际操作也没必要给整个几十个线程去跑;比对模式线程到达一定数目后,总体速度就不怎么加快了,设置 8-12 线程是相对合适的。

文库类型(library type, LIBTYPE)
RNA-seq 有多种多样文库类型,使用 Salmon 应设置好这个参数,因为 Salmon 自动检测也许会出现错误。下面图示是 Salmon 定义的文库类型分类。

Salmon 文库类型

所以 LIBTYPE 设定包含了三个部分,一是 reads 的相对方向,分别用 I/O/M 表示;二是文库有无链特异性,分别用 S/U 表示;三是,假如文库有链特异性,指明链方向,分别用 F/R 表示。如果第二部分是 U 就不需要设置这里。下面是这些字母代表的全称。

I = inward
O = outward
M = matching
S = stranded
U = unstranded
F = read 1 (or single-end read) comes from the forward strand
R = read 1 (or single-end read) comes from the reverse strand
A = automatically determine

要注意 Salmon 用 F/R 表示链方向,其他软件可能喜欢用 F2R1/F1R2形式。

流程示例

第一步是建立索引,建议先用 generateDecoyTranscriptome.sh 脚本产生一个 decoys.txt 文件,下面是我命令示例。
注:generateDecoyTranscriptome.sh 脚本在 GitHub - COMBINE-lab/SalmonTools: Useful tools for working with Salmon output 下载,或者 Github 搜索 SalmonTools.

/Example/Project/SalmonTools/scripts/generateDecoyTranscriptome.sh -a gencode.v33.annotation.gtf -g bigZips/hg38.fasta -t gencode.v33.transcripts.fa -o hsa_decoy

这里 -a-t 参数用到文件可以在 Gencode 网站下载(人种),这个命令我跑了2天时间,所以别以为出错了强制中断,没报错就等待。结束后 -o 目录会输出 decoys.txt 文件。
完成后建立 index 命令:

salmon index -t gencode.v33.transcripts.fa -i hsa_transcripts_index --decoys hsa_decoy/decoys.txt -k 31 --gencode

设置 -k 31 适合 75 bp 及更长 reads,如果你的 reads 更短需要设置小点。或者你觉得比对率有些偏低,可以将 -k 设小些,提高灵敏度。建立索引完成后 -i 参数指定目录会有许多文件。

$ls hsa_transcripts_index
complete_ref_lens.bin  ctg_offsets.bin         eqtable.bin  mphf.bin  pre_indexing.log  refAccumLengths.bin  reflengths.bin  seq.bin
ctable.bin             duplicate_clusters.tsv  info.json    pos.bin   rank.bin          ref_indexing.log     refseq.bin      versionInfo.json

fastq 模式
注意 -l 参数放 -1/-2 前面。

salmon quant -l MU -i /share/database/openData/GRCh38_hg38/hsa_transcripts_index --validateMappings -1 5637_50nm_1_Clean_Data1.fq.gz -2 5637_50nm_1_Clean_Data2.fq.gz -o Test1

运行后有 quant.sf 文件就是转录本定量信息。

Name    Length  EffectiveLength TPM     NumReads
ENST00000456328.2       1657    1372.105        0.034568        1.000
ENST00000450305.2       632     348.480 0.000000        0.000
ENST00000488147.1       1351    1066.105        3.604749        81.025
ENST00000619216.1       68      69.000  0.000000        0.000
ENST00000473358.1       712     427.508 0.000000        0.000
ENST00000469289.1       535     255.958 0.000000        0.000
ENST00000607096.1       138     5.557   0.000000        0.000
ENST00000417324.1       1187    902.105 0.000000        0.000

定量后 Salmon 工作也完成了,后面就是 DESeq2, limma 等软件进行下游分析。

部分参数解释

  • --validateMappings 启用选择性比对到转录本。能够提高比对的灵敏度和特异性从而提高了定量的准确度。
  • --mimicBT2--mimicStrictBT2 让比对模仿一些 Bowtie2 行为。
  • --recoverOrphans 这个参数应与 --validateMappings 一起用。如果只有一端 reads 能比对或者两端 reads 比对不在同一个转录本,Salmon 会在比对上位置的上下游寻找另一端 reads 的比对。
  • --hardFilter 这个参数仅在 --validateMappings 模式使用,关闭软过滤(soft filter)。
  • --allowDovetail 默认丢弃“燕尾比对”(Dovetailing mapping),开启这参数后不丢弃。“燕尾比对”见下面 Bowtie 的示意。
  • -p/--threads 线程数,默认会使用所有线程,想要用少些线程就设置。
  • --incompatPrior 与文库类型(library type)不兼容的比对先验概率。Salmon 默认设置了一个非常小但非0数值,如果一个插入片段(fragment)的唯一比对是这种非兼容比对,Salmon 会把这个比对计数。如果希望不计入,将这个参数设置数值 0.0 即可。
  • --minScoreFraction 最低比对得分限制,低于此比对被丢弃。
  • --rangeFactorizationBins 提高对“困难”转录本的定量准度。配合比对模式的 --useErrorModel 参数或者 fastq 模式的 --validateMappings 参数使用。
  • --seqBias 从输入数据学习然后矫正测序偏差。
  • --gcBias 进行 GC 偏差矫正。建议根据质控的 GC 偏差情况设置。
  • -g/--geneMap 提供基因注释文件 Salmon 就额外生成 quant.genes.sf 文件给出基因的定量。
    Bowtie2 mates

[参考]
Overview – Salmon: Fast, accurate and bias-aware transcript quantification from RNA-seq data
Bowtie 2: fast and sensitive read alignment

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容