首页 > 其他分享 >Mummer 用法简析

Mummer 用法简析

时间:2023-04-30 12:44:45浏览次数:35  
标签:Mummer -- 默认 用法 简析 nucmer delta 序列 fasta

动动发财的小手,点个赞吧!

4个工作流程

nucmer

由Perl写的流程,用于联配很相近(closely related)核酸序列。它比较适合定位和展示高度保守的DNA序列。注意,为了提高nucmer的精确性,最好把输入序列先做遮盖(mask)避免不感兴趣的序列的联配,或者修改单一性限制降低重复导致的联配数。

promer

​ 以翻译后的氨基酸序列进行联配,工作原理同nucmer.

rum-mummer1 run-mummer3

​ 两者是基于cshell写的流程,用于两个序列的常规联配,和promer,nucmer类似,只不过能够自动识别序列类型。它们擅长联配相似度高的DNA序列,找到它们的不同,也就是适合找SNP或者纠错。前者用于1v1无重排,后者1v多有重排

nucmer 参数详解

匹配:

--mum, --mumreference(默认), --maxmatch
--minmatch/-l: 单个匹配最小长度
--forwoard/-f, --reverse/-r: 只匹配正链或只匹配负链。

聚类:

--mincluster/-c: 用于聚类的匹配最低长度,默认65--maxgap/-g: 两个相邻匹配间的最大gap长度,默认90--diagdiff/-D: 一个聚类中两个邻接匹配,最大对角差分,默认5--diagfactor/-d: 也是和对角差分相关参数,只不过和gap长度有关,默认0.12

外延:

--breaklen/-b: 在对联配两端拓展式,在终止后继续延伸的程度,默认200--[no]extend:是否外延,默认是
--[no]optimize:是否优化,默认是。即在联配分数较低时不会立刻终止,而是回顾整条联配,看能否苟延残喘一会。

其他:

--depend: 显示依赖信息后退出
--coords: 调用show-coords输出坐标信息
--prefix/-p: 输出文件的前缀
--[no]delta: 是否输出delta文件,默认是

新增

# 在第四版新增的参数--threads/-t: 多核心
---delta=PATH: 指定位置,而不是当前
--sam-short=PATH:保存为SAM短格式
--sam-long=PATH: 保存为SAM长格式
--save=PREFIX:保存suffix array
--load=PREIFX:加载suffix array

实例

比较常见的用法是把一条连续的序列和另一条连续的序列比。比如说两个细菌的菌株,直接用mummer

两个完整度高的基因组

mummer -mum -b -c A.fasta B.fasta > out.mums

# -mum: 计算在两个序列中唯一的最大匹配数
# -b: 计算正向和反向匹配数
# -c: 报告反向互补序列相对于原始请求序列的位置

高度相似序列,不含重排

run-mummer1 ref.fasta qry.fasta ref_qry

# 仅报告负链匹配序列run-mummer1 ref.fasta qry.fasta ref_qry -r

高度相似序列,存在重排

run-mummer3 ref.fasta qry.fasta ref_qry

相似度不高

以上的run-mummer*比较关注序列的不同之处,那么对于相似度没有那么高的两个序列,就需要用到nucmernucmer关注序列的相似之处,所以它允许重排,倒置和重复现象。nucmer允许多对多的比较方式,当然比较常用的是多对一的比较。

nucmer --maxgap=500 --mincluster=100 --prefix=ref_qry ref.fasta qry.fasta

# --maxgap: 两个match间最大gap为500
#--minclster: 至少要有100个match才能算做一簇

有点差异

可以用翻译的氨基酸序列进行比较

promer --prefix=ref_qry ref.fasta qry.fasta

基因草图(scaffold, contig级别)

使用nucmerpromer构建序列间的可能联配。

# 首先过滤低于1kb的序列

awk -c fastx '{if (length($seq) > 1000) print ">"$name "\n"$seq}' A.fasta > A_1kb.fa

awk -c fastx '{if (length($seq) > 1000) print ">"$name "\n"$seq}' B.fa > HB_1kb.fa

# 处理,时间会比较久,因为分别有20109,17877条contig

nucmer --prefix A_B A_1kb.fa B_1kb.fa &

一个基因草图对一个完整基因组

nucmer  --prefix A_B A.fa B.fa

在第四版中新增了一个dnadiff,进一步封装nucmer和其他数据整理工具,基本上没啥参数,而输出很齐全,非常的人性化。在不知如何开始的时候,可以无脑用这个。

# 已有delta文件
dnadiff -d A_B.delta

# 未有delta文件
dnadiff A_B A.fasta B.fa

delta-filter 过滤

  • -i: 最小的相似度 [0,100], 默认0

  • -l: 最小的匹配长度 默认0.

  • -u: 最小的联配唯一度 [0,100], 默认0

  • -o: 最大重叠度,针对-r-q设置。 [0,100], 默认100

  • -g: 1对1全局匹配,不允许重排

  • -1: 1对1联配,允许重排,是-r-q的交集

  • -m: 多对对联配,允许重排,是-r-q的合集。

  • -q: 仅保留每个query在reference上的最佳位置,允许多条query在reference上重叠

  • -r: 仅保留每个reference在query上的最佳位置,允许多条reference在query上重叠

show-coord 显示匹配坐标

show-coords -r A_B.delta.filter > A_B.coord

# -r:以refID排序,相对的,还有-q,以queryID排序less IRGSP1_DHX2_i89_l1000_1.coord


实际应用

nucmer

nucmer --maxmatch -c 100 -b 500 -l 50 ref.fasta qur.fasta

#--maxmatch 使用所有锚匹配,而不管它们的唯一性
#--mincluster/-c: 用于聚类的匹配最低长度,默认65
#--breaklen/-b: 在对联配两端拓展式,在终止后继续延伸的程度,默认200
#--minmatch/-l: 单个匹配最小长度

delta-filter -1 -m -i 90 -l 100 out.delta > out.filtered.delta   

#-1: 1对1联配,允许重排,是-r和-q的交集
#-m: 多对对联配,允许重排,是-r和-q的合集
#-i: 最小的相似度 [0,100], 默认0
#-l: 最小的匹配长度 默认0.

show-coords -THrd out.filtered.delta > out.filtered.coords   

#-T 将输出切换为制表符分隔格式 
#-H 不打印输出头
#-r 按参考 ID 和坐标对输出行进行排序
#-d 在附加中显示对齐方向

sed ':a; N;s/\n/ /; ta' a.txt  ## 利用sed的跳转功能
#绘制共线性图谱
#需要提前安装gunplot ps2pdf程序(sudo apt-get install xxx)
mummerplot --postscript test.delta

#将图像转换为pdf文件
ps2pdf out.ps out.pdf

本文由mdnice多平台发布

标签:Mummer,--,默认,用法,简析,nucmer,delta,序列,fasta
From: https://www.cnblogs.com/swindler/p/17365133.html

相关文章

  • 现代cmake用法
    目录自己写代码使用方法源码组织格式cmake关键字建议前向声明引用第三方库/依赖find_package用法非默认安装路径内容来源:这个UP主课讲的很好小彭老师cmake课程自己写代码使用方法推荐使用这样的目录结构include目录下要套一层目录是为了在使用时避免同名头文件冲突源码组织......
  • c语言中inline用法
    使用inline函数可以提升程序效率,但是让inline函数生效是有条件的...打开Linux内核源代码,会发现内核在定义C语言函数时,有很多都带有“inline”关键字,请看下图,那么这个关键字有什么作用呢? inline关键字的作用在C语言程序开发中,inline一般用于定义函数,inline函数也被称作......
  • python高阶用法汇总——(1)高阶函数
    lambda1defsum(a,b):2returna+b3print(sum(1,5))45lab=lambdaa,b:a+b6print(lab(1,3))1-3行正常用法,5-6lambda用法。lambda:冒号之前的全是参数,即函数括号里面的 sum(a,b)冒号之后的是表达式,即return的结果。lambda只能写在一行。一般情况下,我们不使用......
  • 语法:neither的用法详解
    neither的用法详解 1.做副词,意为“也不”,此时相当于nor常用结构为:(1)“neither+连系动词be(am,is,are)/助动词(do/does/did)/情态动词(should,will,must,can,couldandsoon)+主语”表示“……也不”此时,可用nor替换,这是一个倒装结构,表示前面否定的情况也同样属于后者......
  • Chrome浏览器中的隐藏用法 - Google浏览器协议
    谷歌浏览器本身自带的协议其实这些协议当我们在打开设置的时候,地址栏也会显示的释放内存chrome://restart,使用这个命令后,浏览器会立刻关闭并重新开启,重新开启时会恢复之前打开的页面谷歌应用chrome://apps,该命令会打开谷歌浏览器的应用,是单独的一个不在浏览器页面的应用谷......
  • 15.mybatis-plus的QueryWrapper的查询、更新、删除的用法
    1.条件构造查询: 2.主装的查询语句:  3.主装排序的查询语句:   4.删除语句:  5.更新语句的应用:userMapper.update(A,B);QueryWrapperuserWrapper=newQueryWrapper <>();Useruser=newUser();应用:update(user,userWrapper)user:封装的是修改的内容;userWr......
  • 第四节:组件通信剖析(父传子、子传父、非父子)、组件插槽的用法剖析
    一.        二.        三.         !作       者:Yaopengfei(姚鹏飞)博客地址:http://www.cnblogs.com/yaopengfei/声     明1:如有错误,欢迎讨论,请勿谩骂^_^。声     明2:原创博客请在转载......
  • 并查集の进阶用法
    普通并查集我们在处理问题的时候,可能会遇到一些需要维护每个元素所在的集合的问题,而并查集却恰好完美解决了这个问题。对于普通的并查集,他支持的操作比较少,只有合并和查询,合并是指把两个集合合并成一个,而查询是询问两个元素是否在同一集合内;对于这两种操作,我们可以用一个数组\(......
  • Vue3 Hooks 的基础用法
    前言Vue3在API设计上引入了类似于ReactHooks的CompositionAPI,可以更方便地实现逻辑的复用和组合。本文将介绍Vue3Hooks的基础用法。基本使用Vue3Hooks中最简单的Hook就是setup。它是一个在组件创建时执行的函数,可以访问组件实例中的属性和方法,同时可以返回一......
  • while循环逻辑控制器+配置元件计数器的用法
    一、在线程组下添加逻辑控制器WhileController二、在逻辑控制器WhileController下添加Sample,BeanShellSampler,三、逻辑控制器WhileController下添加配置元件,计数器四、在线程组下添加监听器,察看结果树:注意while中设置的是${__javaScript("${number}"<"4")},而请求出......