Salmon-超快速、准确的基因丰度计算

文章目录

  • Salmon简介
  • 文章引用及适用物种
  • 获取转录组并建立索引
  • 比较salmon和coverm定量差异

Salmon简介

Salmon 是一款速度极快的程序,能从 RNA-seq 数据中生成高精度的转录本水平的量化估计值。Salmon 通过一系列不同的创新实现了其准确性和速度,包括使用选择性比对(准确的传统读段比对的但快速计算的替代方法)和大规模并行随机坍缩变异推断。因此,该工具用途广泛,能很好地融入许多不同的工作流程。例如,您可以选择使用我们的选择性比对算法,向 Salmon 提供原始测序读数,或者,如果更方便的话,您可以向 Salmon 提供常规比对(例如,用您最喜欢的比对器生成的与转录组比对的未排序 BAM 文件),Salmon 将使用同样快速、最先进的推断算法为您的实验估算转录本水平丰度。

  • salmon也可对核酸的contig序列索引,6G的参考基因组,双端60G fq文件耗时仅仅16m(150 core)
    在这里插入图片描述

文章引用及适用物种

Salmon于2017年在Nature Methods发表以来,Salmon provides fast and bias-aware quantification of transcript expression, Nature Methods, 2017已经被多次引用,其中包括在人、细菌及真菌等多个物种。

获取转录组并建立索引

为了量化转录本水平的丰度,Salmon需要目标转录组。 该转录组以多FASTA序列文件(可以是压缩的)的形式提供给Salmon,每个序列均是转录本。 在此示例中,我们将分析拟南芥的一些数据,因此我们将下载拟南芥转录组并为其编制索引。

  • 下载参考转录组
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

在这里插入图片描述

  • 构建index
    Next, we’re going to build an index on our transcriptome. The index is a structure that salmon uses to quasi-map RNA-seq reads during quantification. The index need only be constructed once per transcriptome, and it can then be reused to quantify many experiments. We use the index command of salmon to build our index:
salmon index -p 40 -t athal.fa.gz -i athal_index 

-t [ --transcripts ] arg Transcript fasta file.
-i [ --index ] arg salmon index.
-p [ --threads ] arg (=2) Number of threads to use during indexing.

耗时:1m35.946s
生成athal_index目录:
在这里插入图片描述

  • 注意:若构建index时不加--keepDuplicates,则会去掉一些重复的转录本,导致最后定量的转录本数量比输入的少,会在log日志记录这些信息
    see here
[2021-07-22 17:46:23.310] [jointLog] [warning] Removed 351 transcripts that were sequence duplicates of indexed transcripts.
[2021-07-22 17:46:23.310] [jointLog] [warning] If you wish to retain duplicate transcripts, please use the `--keepDuplicates` flag

去重复的转录本保存在duplicate_cluster.tsv,第一列是保存的转录本,第二列是去掉的重复片段,以下是一个例子,保留的是RWS.20.06_k141_357096_5,发现两条序列确实一样,可能是因为之前去冗余残留了极少量这类片段

>RWS.20.06_k141_357096_5        # 2137 # 2244 # 1 # ID=776723_5;partial=00;start_type=ATG;rbs_motif=AGGAG;rbs_spacer=5-10bp;gc_cont=0.630
MPEARQEHTTQRMSRVDTAWLRMDNDVNLMMIVGV*
>TGLI3.17_k141_676506_1 # 66 # 173 # -1 # ID=111959_1;partial=00;start_type=ATG;rbs_motif=AGGAG;rbs_spacer=5-10bp;gc_cont=0.639
MPEARQEHTTQRMSRVDTAWLRMDNDVNLMMIVGV*
  • 定量paired sequence
salmon quant -i athal_index -l A  -1 ${samp}_1.fastq.gz   -2 ${samp}_2.fastq.gz  -p 8  --validateMappings -o ${samp}_quant

参数解释:

-i: salmon index 
-l A: 告诉Salmon,它应该自动确定测序reads的库类型(例如,链状与非链状等)。(e.g. stranded vs. unstranded etc.). 
-1 and -2: 参数告诉salmon在哪里可以找到这个样本的左右读数(注意,salmon会直接接受gzipped FASTQ文件)
-p 8: threads 
-o: 输出目录
--validateMappings: [Quasi-mapping mode only] ,使用基于比对的核实。如果这个传递这个标志,标准映射将被验证以确保它们能产生一个合理的比对方式,然后再进一步用于量化

结果:
主要的输出文件(称为quant.sf)是相当不言自明的。例如,看一下quants/DRR016125/quant.sf中DRR016125样本的定量文件,你会看到一个简单的TSV格式文件,列出每个转录本的名称(Name)、长度(Length)、有效长度(EffectiveLength)(更多细节见文档),以及它在每百万转录本(TPM)中的丰度和源自该转录本的估计读数(NumReads)。
在这里插入图片描述

比较salmon和coverm定量差异

(salmon) [yutao@globin test]$ ll ../GGG_1134OTUs_prokka/ERR1201173_maxbin2_bin.0.ffn
-rw-r--r-- 1 yutao husn 5.6M Feb 28 23:44 ../GGG_1134OTUs_prokka/ERR1201173_maxbin2_bin.0.ffn
(salmon) [yutao@globin test]$ ll ../GGG_130samples_10k_fastq/ERR1201173_?.fastq
-rw-r--r-- 1 yutao husn 2.5M Feb  7 20:12 ../GGG_130samples_10k_fastq/ERR1201173_1.fastq
-rw-r--r-- 1 yutao husn 2.5M Feb  7 20:13 ../GGG_130samples_10k_fastq/ERR1201173_2.fastq

# coverm
(coverm) [yutao@globin test]$ time coverm contig -1 ../GGG_130samples_10k_fastq/ERR1201173_1.fastq  -2 ../GGG_130samples_10k_fastq/ERR1201173_2.fastq --reference ERR1201173_maxbin2_bin.0.ffn --methods count  --output-file ERR1201173_coverm_tpm.tsv --no-zeros
[2023-03-03T07:23:32Z INFO  coverm] CoverM version 0.6.1
[2023-03-03T07:23:32Z INFO  coverm] Writing output to file: ERR1201173_coverm_tpm.tsv
[2023-03-03T07:23:32Z INFO  coverm] Using min-covered-fraction 0%
[2023-03-03T07:23:32Z INFO  bird_tool_utils::external_command_checker] Found minimap2 version 2.17-r941
[2023-03-03T07:23:32Z INFO  bird_tool_utils::external_command_checker] Found samtools version 1.14
[2023-03-03T07:23:32Z INFO  coverm] Not pre-generating minimap2 index
[2023-03-03T07:23:33Z INFO  coverm::contig] In sample 'ERR1201173_maxbin2_bin.0.ffn/ERR1201173_1.fastq', found 3904 reads mapped out of 20000 total (19.52%)

# salmon
(salmon) [yutao@globin test]$ time salmon quant -i ERR1201173_maxbin2_bin.0_salmon/ -l A  -1 ../GGG_130samples_10k_fastq/ERR1201173_1.fastq   -2 ../GGG_130samples_10k_fastq/ERR1201173_2.fastq  -p 8  --validateMappings -o ERR1201173_salmon
(salmon) [yutao@globin test]$ time salmon quant -i ERR1201173_maxbin2_bin.0_salmon/ -l A  -1 ../GGG_130samples_10k_fastq/ERR1201173_1.fastq   -2 ../GGG_130samples_10k_fastq/ERR1201173_2.fastq  -p 8  --validateMappings -o ERR1201173_salmon
#  Mapping rate = 18.9%

# 比较(基于reads count)
# 1.coverm比salmon定量到更多序列(covem可能更灵敏)
(coverm) [yutao@globin test]$ awk '$5>0' ERR1201173_salmon/quant.sf |wc -l
1425
(coverm) [yutao@globin test]$ awk '$2>0' ERR1201173_coverm_tpm.tsv|wc -l
1905
# 每个序列平均丰度coverm更高
(coverm) [yutao@globin test]$ awk '{sum+=$2}END{print sum/NR}' ERR1201173_coverm_tpm.tsv
2.04934
(coverm) [yutao@globin test]$ awk '{sum+=$5}END{print sum/NR}' ERR1201173_salmon/quant.sf
0.303322

# 2.定量最大的序列二者基本一致
(coverm) [yutao@globin test]$ sort -k2 -nr ERR1201173_coverm_tpm.tsv|head
CMLNLAJI_01761  36
CMLNLAJI_03398  23
CMLNLAJI_00817  17
CMLNLAJI_03401  16
CMLNLAJI_03403  11
CMLNLAJI_05922  10
CMLNLAJI_05660  10
CMLNLAJI_00085  10
CMLNLAJI_03402  9
CMLNLAJI_03067  9
(coverm) [yutao@globin test]$ sort -k5 -nr ERR1201173_salmon/quant.sf |head
CMLNLAJI_01761  924     526.586 4518.043434     18.000
CMLNLAJI_03398  1542    1144.360        1386.006957     12.000
CMLNLAJI_00817  396     65.543  24199.067240    12.000
CMLNLAJI_03401  1284    886.360 1192.962147     8.000
CMLNLAJI_03403  609     216.428 4274.954676     7.000
CMLNLAJI_03402  528     146.759 5403.730684     6.000
CMLNLAJI_05922  1500    1102.360        599.505802      5.000
CMLNLAJI_05660  2899    2501.360        264.204769      5.000
CMLNLAJI_03067  1428    1030.360        641.398359      5.000
CMLNLAJI_00085  4419    4021.360        164.340235      5.000

# tpm比较:salmon定量的更大(大概大10倍)
(coverm) [yutao@globin test]$ sort -k4 -nr ERR1201173_salmon/quant.sf |head
CMLNLAJI_00817  396     65.543  24199.067240    12.000
CMLNLAJI_04753  117     10.074  13120.238381    1.000
CMLNLAJI_03636  120     13.074  10109.645579    1.000
CMLNLAJI_03582  336     45.517  8711.538955     3.000
CMLNLAJI_01682  198     32.678  8089.537307     2.000
CMLNLAJI_06231  258     38.674  6835.329307     2.000
CMLNLAJI_01988  273     40.469  6532.134741     2.000
CMLNLAJI_02618  231     42.394  6235.487025     2.000
CMLNLAJI_03253  291     43.659  6054.827349     2.000
CMLNLAJI_03808  297     45.390  5823.973634     2.000
(coverm) [yutao@globin test]$ sort -k2 -nr ERR1201173_coverm_tpm.tsv|head
CMLNLAJI_00817  9356.189
CMLNLAJI_01761  8491.334
CMLNLAJI_00818  6918.8647
CMLNLAJI_00737  6054.0054
CMLNLAJI_03403  3936.5942
CMLNLAJI_03402  3714.958
CMLNLAJI_03398  3250.789
CMLNLAJI_04876  3228.8027
CMLNLAJI_05910  2985.5366
CMLNLAJI_05661  2945.1917

参考
Salmon provides fast and bias-aware quantification of transcript expression, Nature Methods, 2017
Salmon github
Salmon tutorial

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/158457.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

预发部署时机器总是重启两次的“简单”排查

作者:曲池 一、问题 前天同学反馈, 搜索业务的核心应用 magellan 在预发环境部署时总是重启两次,刚部署好,开始联调,突然又重启了,也导致老是被人抱怨搜索环境不稳定。 第一反应是,大概率是应用…

下载huggingface预训练模型到本地并调用

写在前面 在大模型横行的时代,无法在服务器上连接外网的研究僧真的是太苦逼了,每次想尝试类似于CLIP,BLIP之类的大模型都会得到“requests.exceptions.ConnectionError: (MaxRetryError("HTTPSConnectionPool(host‘huggingface.co’, …

【Spring】加载properties文件

文章目录 在Spring Context中加载properties文件测试总结 在Spring Context中加载properties文件 分为三步&#xff0c;如下图所示&#xff1a; 完整代码&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.…

2019年12月 Scratch(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 以下程序执行后,角色面向的方向是? A:右上 B:右下 C:左上 D:左下 答案:B 面向-135度,是面向左下角,向右旋转-90度等于向左旋转90度。所以会旋转到右下角。 第2题 以下程…

opencv dnn模块 示例(23) 目标检测 object_detection 之 yolov8

文章目录 1、YOLOv8介绍1.1、概述1.2、骨干网络和 Neck1.3、Loss 计算1.4、数据增强1.5、训练策略1.6、推理过程 2、测试2.1、官方Python测试2.2、Opencv dnn测试2.3、测试统计 3、训练4、Yolov8-pose 简单使用 1、YOLOv8介绍 YOLOv3之前的所有YOLO对象检测模型都是用C语言编写…

从算法到应用:直播美颜滤镜SDK的全面解读与评测

直播美颜滤镜SDK技术逐渐成为直播平台不可或缺的一环。本文将对直播美颜滤镜SDK进行全面解读&#xff0c;深入探讨其算法原理和应用效果&#xff0c;并通过评测分析展现其在直播领域的实际价值。 一、算法原理解读 直播美颜滤镜的背后是复杂而精密的算法&#xff0c;旨在提升…

OpenCV快速入门:绘制图形、图像金字塔和感兴趣区域

文章目录 前言一、绘制图形1. 绘制直线2. 绘制圆3. 绘制矩形4. 绘制椭圆5. 绘制多边形6. 绘制文字7. 可选参数8. 手工绘制OpenCV的logo 二、图像金字塔1. 高斯金字塔2. 拉普拉斯金字塔 三、感兴趣区域&#xff08;ROI&#xff09;数组切片方式OpenCV截取方式 总结 前言 OpenCV…

修改服务器端Apache默认根目录

目标&#xff1a;修改默认Apache网站根目录 /var/www/html 一、找到 DocumentRoot “/var/www/html” 这一段 apache的根目录&#xff0c;把/var/www/html 这个目录改 #DocumentRoot "/var/www/html" DocumentRoot "/home/cloud/tuya_mini_h5/build" 二、…

echarts 横向柱状图示例

该示例有如下几个特点&#xff1a; ①实现tooltip自定义样式&#xff08;echarts 实现tooltip提示框样式自定义-CSDN博客&#xff09; ②实现数据过多时滚动展示&#xff08;echarts 数据过多时展示滚动条-CSDN博客&#xff09; ③柱状图首尾展示文字&#xff0c;文字内容嵌入图…

【C++】内存管理

目录 C/C内存分布 C语言中动态内存管理方式 C内存管理方式 operator new与 operator delete函数 匹配使用的相关问题-内存泄漏: delete与delete [ ] malloc/free和 new/delete的区别 内存泄漏 C/C内存分布 栈又叫堆栈--非静态局部变量/函数参数/返回值等等&#xff0c;栈…

人工智能引领环境保护的新浪潮:技术应用及其影响

在全球范围内&#xff0c;环境保护已经成为一个迫切的话题。随着人工智能技术的发展&#xff0c;它开始在环境保护领域扮演越来越重要的角色。AI不仅能够帮助更有效地监测环境变化&#xff0c;还能提出解决方案来应对环境问题。 污染监测与控制&#xff1a; AI系统可以分析来自…

redis运维(十)列表

一 列表 强调&#xff1a; 知道原生redis具备的能力,以便后续API调用 ① 基础概念 备注&#xff1a; 单个list最多2^32-1个元素 列表操作常用命令,涉及&#xff1a;CURD ② lpush 左插入 说明&#xff1a; 如果key不存在就会初始化,否则就是插入元素备注&#xff1a; l…

指针——C语言初阶

一.指针基本概念&#xff1a; 指针是内存中一个最小单元的编号&#xff0c;也就是地址平时口语中说的指针&#xff0c;通常指的是指针变量&#xff0c;是用来存放地址的变量 #include<stdio.h> int main() {int a 0;//a是整型变量&#xff0c;占用四个字节的内存空间&a…

Linux系统(CentOS7)上安装MYSQL8.x

Linux系统是CentOS7版本&#xff0c;今天在新电脑上安装MYSQL&#xff0c;跟着网上的文章&#xff0c;尝试了好几次&#xff0c;都是启动失败&#xff0c;删了安&#xff0c;安了删&#xff0c;搞了一下午&#xff0c;头昏脑胀&#xff0c;网上的一些文章太乱了&#xff0c;每种…

SSM框架

SSM SSM框架说明SpringBootMyBatis整合MyBatis数据库中表的设计Pojo对象设计Dao接口设计Dao单元方法进行测试 XML管理整合MyBatis框架映射配置文件的位置XML配置SQL标签常用的SQL标签 动态SQL语句动态删除数据动态修改数据 SSM框架说明 Spring 指 Spring Framework&#xff0c…

前段-用面向对象的方式开发一个水管小鸟的游戏

首先准备好各类空文件 index.js css html 和图片 图片是下面这些&#xff0c;如果没有的可在这里下载 2 开发开始 好了&#xff0c;基础准备工作完毕&#xff0c;开发开始&#xff0c; 首先&#xff0c;先把天空&#xff0c;大地&#xff0c;小鸟的盒子准备好&#xff0c;并…

Redis数据库双写一致性解决方案

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一份大厂面试资料《史上最全大厂面试题》&#xff0c;Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

好用的企业防泄密软件盘点

企业防泄密软件是专门设计用于保护企业敏感信息不被泄露的软件产品。这类软件通常采用多种安全技术和策略&#xff0c;以增强企业数据的安全性和保密性&#xff0c;防止核心知识产权和商业机密的泄露。 企业防泄密软件的主要功能包括数据加密、访问控制、审计和监控、文件和数据…

CSS样式穿透

当我们在vue项目中使用第三方组件时&#xff0c;有时候需要去修改某些元素的样式&#xff0c;但有时写的css样式不会覆盖组件的样式&#xff0c;所以要用到样式穿透。 常用的方法有这几种&#xff1a;&#xff08;1&#xff09;>>> &#xff08;2&#xff09;/deep/ …

flink中配置Rockdb的重要配置项

背景 由于我们在flink中使用了状态比较大&#xff0c;无法完全把状态数据存放到tm的堆内存中&#xff0c;所以我们选择了把状态存放到rockdb上&#xff0c;也就是使用rockdb作为状态后端存储,本文就是简单记录下使用rockdb状态后端存储的几个重要的配置项 使用rockdb状态后端…