minimap2安装与使用(v 2.28)生物信息学工具26

01 背景

Minimap2 是一个多功能的序列比对程序,可以将 DNA 或 mRNA 序列与大型参考数据库进行比对。典型的使用案例包括:(1)将 PacBio 或 Oxford Nanopore 基因组读长映射到人类基因组;(2)在误差率高达约 15% 的长读长之间找到重叠;(3)将 PacBio Iso-Seq 或 Nanopore cDNA 或直接 RNA 读长与参考基因组进行剪接感知比对;(4)对 Illumina 的单端或双端读长进行比对;(5)基因组装配与组装配的比对;(6)两个相似物种(差异小于约 15%)之间的全基因组比对。

对于约 10kb 的噪声读长序列,minimap2 比主流长读长比对程序(如 BLASR、BWA-MEM、NGMLR 和 GMAP)快几十倍。在模拟长读长上,它更准确,并生成生物学上有意义的比对,适合后续分析。对于大于 100bp 的 Illumina 短读长,minimap2 的速度是 BWA-MEM 和 Bowtie2 的三倍,并在模拟数据上同样准确。

bwa安装及使用(生物信息学工具-018)

Bowtie2安装与使用-bowtie2-2.5.2(bioinfomatics tools-011)

Blast安装及使用-Blast+2.14.0(bioinfomatics tools-001)

02 参考
https://github.com/lh3/minimap2   #官网
03 安装
git clone https://github.com/lh3/minimap2
cd minimap2 && make安装64位
curl -L https://github.com/lh3/minimap2/releases/download/v2.28/minimap2-2.28_x64-linux.tar.bz2 | tar -jxvf -
./minimap2-2.28_x64-linux/minimap2
04 使用
# 比对长序列到参考基因组
./minimap2 -a test/MT-human.fa test/MT-orang.fa > test.sam# 先创建索引再进行比对
./minimap2 -x map-ont -d MT-human-ont.mmi test/MT-human.fa
./minimap2 -a MT-human-ont.mmi test/MT-orang.fa > test.sam# 使用预设参数(没有测试数据)
./minimap2 -ax map-pb ref.fa pacbio.fq.gz > aln.sam       # PacBio CLR 基因组读长
./minimap2 -ax map-ont ref.fa ont.fq.gz > aln.sam         # Oxford Nanopore 基因组读长
./minimap2 -ax map-hifi ref.fa pacbio-ccs.fq.gz > aln.sam # PacBio HiFi/CCS 基因组读长(v2.19或更高版本)
./minimap2 -ax lr:hq ref.fa ont-Q20.fq.gz > aln.sam       # Nanopore Q20 基因组读长(v2.27或更高版本)
./minimap2 -ax sr ref.fa read1.fa read2.fa > aln.sam      # 短片段基因组成对读长
./minimap2 -ax splice ref.fa rna-reads.fa > aln.sam       # 拼接的长读长(链未知)
./minimap2 -ax splice -uf -k14 ref.fa reads.fa > aln.sam  # 噪声较大的 Nanopore 直接 RNA-seq
./minimap2 -ax splice:hq -uf ref.fa query.fa > aln.sam    # 最终的 PacBio Iso-seq 或传统 cDNA
./minimap2 -ax splice --junc-bed anno.bed12 ref.fa query.fa > aln.sam  # 优先使用注释的连接点
./minimap2 -cx asm5 asm1.fa asm2.fa > aln.paf             # 物种内部的基因组比对
./minimap2 -x ava-pb reads.fa reads.fa > overlaps.paf     # PacBio 读长重叠
./minimap2 -x ava-ont reads.fa reads.fa > overlaps.paf    # Nanopore 读长重叠# 获取详细的命令行选项
man ./minimap2.1
4.1 常规使用

在没有任何选项的情况下,minimap2 以参考数据库和查询序列文件为输入,生成近似比对(即坐标只是近似值,输出中没有 CIGAR),输出为 PAF 格式:

minimap2 ref.fa query.fq > approx-mapping.paf

你可以要求 minimap2 在 PAF 的 cg 标签中生成 CIGAR:

minimap2 -c ref.fa query.fq > alignment.paf

或输出为 SAM 格式的比对结果:

minimap2 -a ref.fa query.fq > alignment.sam

Minimap2 可以无缝处理 gzip 压缩的 FASTA 和 FASTQ 格式作为输入。你无需在 FASTA 和 FASTQ 之间转换或先解压 gzip 文件。

对于人类参考基因组,minimap2 在比对前需要几分钟生成参考基因组的最小化索引。为了减少索引时间,可以使用 -d 选项保存索引,并在 minimap2 命令行中用索引文件替换参考序列文件:

minimap2 -d ref.mmi ref.fa # 索引 minimap2 -a ref.mmi reads.fq > alignment.sam # 比对

重要的是,需注意一旦生成索引,在比对过程中不能更改索引参数(如 -k, -w, -H-I)。如果你为不同的数据类型运行 minimap2,可能需要保留使用不同参数生成的多个索引。这使得 minimap2 与 BWA 不同,后者总是使用相同的索引而不论查询数据类型。

4.2 长读序列

Minimap2 使用相同的基本算法来处理所有应用。然而,由于它支持不同的数据类型(例如,短读长与长读长;DNA 读长与 mRNA 读长),需要针对不同情况进行调优以实现最佳性能和准确性。通常建议使用 `-x` 选项选择一个预设参数,这会同时设置多个参数。默认设置与 `map-ont` 相同。映射长的噪声基因组读长

minimap2 -ax map-pb  ref.fa pacbio-reads.fq > aln.sam   # 用于 PacBio CLR 读长
minimap2 -ax map-ont ref.fa ont-reads.fq > aln.sam      # 用于 Oxford Nanopore 读长
minimap2 -ax map-iclr ref.fa iclr-reads.fq > aln.sam    # 用于 Illumina Complete Long Reads`map-pb` 和 `map-ont` 之间的区别在于,`map-pb` 使用同聚物压缩(HPC)最小化子作为种子,而 `map-ont` 使用普通最小化子作为种子。经验评估表明,HPC 最小化子在比对 PacBio CLR 读长时提高了性能和敏感性,但在比对 Nanopore 读长时效果不佳。`map-iclr` 使用调整后的比对评分矩阵,考虑到读长中整体误差率较低,且颠换错误(transversion errors)比转换错误(transition errors)更少。
4.3 限制

Minimap2 在处理长低复杂度区域时可能会生成次优比对结果,因为在这些区域中的种子位置可能不理想。不过,这不应该是一个大问题,因为即使是最优比对在这些区域也可能是错误的。

Minimap2 需要在 x86 CPU 上使用 SSE2 指令或在 ARM CPU 上使用 NEON 指令。虽然可以添加非 SIMD 支持,但这会使 minimap2 的速度降低好几倍。

Minimap2 无法处理单个查询或数据库序列长度约为 20 亿碱基或更长(确切来说是 2,147,483,647 碱基)。但是,所有序列的总长度可以远远超过这个阈值。

Minimap2 经常会遗漏小外显子。

05 参考文献

Li, H. (2018). Minimap2: pairwise alignment for nucleotide sequences. Bioinformatics34:3094-3100. doi:10.1093/bioinformatics/bty191

and/or:

Li, H. (2021). New strategies to improve minimap2 alignment accuracy. Bioinformatics37:4572-4574. doi:10.1093/bioinformatics/btab705

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

类和对象(补充)

1.static成员 1>静态成员变量在类外进行初始化 2>静态成员变量为所有类对象所共享,不属于任何具体对象,存放在静态区中 3>静态成员函数没有this指针,可访问其他静态成员,但不可访问非静态的 4>非静态成员函数可以…

jmeter做接口压力测试_jmeter接口性能测试

jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单。因为jmeter是java开发的,所以运行的时候必须先要安装jdk才可以。jmeter是免…

SQL Server 使用 OPTION (RECOMPILE) 和查询存储的查询

设置 我们正在使用 WideWorldImporters 数据库,您可以从 Github 下载【sql-server-samples/samples/databases/wide-world-importers at master microsoft/sql-server-samples GitHub】。我正在运行SQL Server 2017 的最新 CU【https://sqlserverbuilds.b…

[Vulnhub] digitalworld.local-JOY snmp+ProFTPD权限提升

信息收集 IP AddressOpening Ports192.168.101.150TCP:21,22,25,80,110,139,143,445,465,587,993,995 $ nmap -p- 192.168.101.150 --21,22,25,min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 21/tcp open ftp ProFTPD | ftp-anon: Anonymous FTP logi…

基于Java中的SSM框架实现求职招聘网站系统项目【项目源码】

基于Java中的SSM框架实现线求职招聘网站系统演示 研究方法 本文的研究方法主要有: (1)调查法 调查法就是在系统的构思阶段,设计者对系统的功能和系统的现状有些不了解,需要去实地的去和本系统相关的区域进行调查&am…

函数的形状怎么定义?

在TypeScript中,函数的形状可以通过多种方式定义,以下是几种主要的方法: 1、函数声明:使用function关键字声明函数,并直接在函数名后的括号内定义参数,通过冒号(:)指定参数的类型&a…

Mojo AI编程语言(六)异常处理:提升代码健壮性

目录 1. 概述 2. 异常处理的基本概念 2.1 什么是异常 2.2 异常处理的重要性 3. Mojo语言中的异常处理机制 3.1 异常的定义 3.2 抛出异常 3.3 捕获异常 4. 异常处理的详细实现 4.1 多重异常捕获 4.2 异常链 4.3 使用自定义异常 4.4 异常的嵌套捕获 4.5 使用 asser…

数据结构——单链表详解(超详细)(2)

前言: 上一篇文章小编简单的介绍了单链表的概念和一些函数的实现,不过为了保证文章的简洁,小编把它分成了两篇来写,这一篇小编紧接上一篇文章继续写单链表函数功能的实现: 目录: 1.单链表剩余函数的编写 1.…

Lua 运算符

Lua 运算符 Lua 是一种轻量级的编程语言,广泛用于游戏开发、脚本编写和其他应用程序。它具有一套丰富的运算符,用于执行各种数学和逻辑操作。本文将详细介绍 Lua 中的运算符,包括算术运算符、关系运算符、逻辑运算符和其他特殊运算符。 算术…

高级java每日一道面试题-2024年7月17日

面试官: java中都有哪些引用类型? 我回答: 强引用(Strong Reference) 描述:这是最常见和最直观的引用类型,我们通常在代码中创建的对象引用就是强引用。例如,Object obj new Object();。只要强引用存在,…

Idea如何快速高效的修改项目的包名

文章目录 前言一、全局替换的快捷键二、弹出如下的界面 前言 当我们有时候在做项目迁移的时候,需要快速的修改项目的包名!那么如何快速高效的修改项目的报名呢? 经过尝试了很多方法!最简单的方法就是利用全局替换来直接替换报名&…

微服务到底是个什么东东?

微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。 每个服务运行在其独立的进程中,服务和服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的…

通过反射机制给已知属性赋值

最近在看spring,在手写spring框架之前,需要巩固一下反射。 反射有这样一个简单的例子,记录一下。 假如你知道age这个属性名,但是不知道属性类型,也可以写: 可以获取到属性的类型

昇思25天学习打卡营第11天 | mindspore 实现 ResNet 50 迁移学习

1. 背景: 使用 mindspore 学习神经网络,打卡第 11 天;主要内容也依据 mindspore 的学习记录。 2. 迁移学习介绍: mindspore 实现 ResNet 50 迁移学习; 具体 ResNet 50 的模型原理以及实现,可以参考本博客…

谈谈我对李彦宏说的“不要卷模型,要卷应用”的理解

我理解李彦宏的发言是强调人工智能技术应该关注应用而不是仅仅关注模型的发展。他认为AI技术已经从辨别式(discriminative)转向了生成式(generative),意味着AI不再仅仅是识别和分类问题,而是能够创造新的内…

设计模式-领域逻辑模式-事务脚本(Transaction Script)

事务脚本的特点 多数应用可看成由多个事务组成事务脚本将多个业务逻辑组织成单个过程事务间相互修改各自产生的数据 事务脚本的运行机制 使用事务脚本时,领域逻辑主要通过系统所执行的事务来组织。例如:预定酒店过程。 事务脚本的组织 将整个事务脚本放…

【BUG】已解决:IndexError: list index out of range

已解决:IndexError: list index out of range 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,武汉城市开发者社区…

微信小程序:2.全局开发

app实例 简介 app.js中注册小程序实例的方法App拥有生命周期回调函数、错误监听函数、页面不存在监听函数等 生命周期回调函数 onLaunch(options) {//监听小程序初始化 console.log("监听小程序初始化",options); }, onShow (options) {//监听小程序启动或切前台…

Ubuntu串口调试单片机

来自🥬🐶程序员 Truraly | 田园 的博客,最新文章首发于:田园幻想乡 | 原文链接 | github (欢迎关注) 文章目录 brltty 导致 USB 转串口连接失败串口调试工具直接操作串口puttySerial Monitor | vscode 插件minicom(推荐)舍友在搞 c-sky 的单片机,囚来了一块玩玩,尝…

【C++】C++中的getcwd函数详解

目录 一.getcwd函数是什么 二.getcwd函数怎么用 一.getcwd函数是什么 在C中&#xff0c; getcwd 是一个用于获取当前工作目录的函数&#xff0c;它是POSIX标准的一部分&#xff0c;定义在 <unistd.h> 头文件中&#xff08;在Windows上&#xff0c;它定义在 <direct…