fastANI-基因组平均核酸一致性(ANI)计算

news2024/11/18 12:32:53

文章目录

  • 简介
  • 安装
  • 使用
    • Many to Man-使用基因组路径作为输入
    • One to One
  • 结果
  • 其他参数说明
  • 可视化两个基因组之间的保守区域
  • 并行化

简介

FastANI 是为快速计算全基因组平均核苷酸同一性(Average Nucleotide Identity,ANI)而开发的,无需比对。ANI 的定义是两个微生物基因组之间共享的同源基因对的平均核苷酸同一性。FastANI 支持对完整基因组和基因组草图进行成对比较。其基本程序与 Goris 等人 2007 年描述的工作流程相似。不过,它避免了费时的序列比对,而是使用 Mashmap 作为基于 MinHash 的序列映射引擎来计算同源比对和比对同一性估计值。根据我们对完整基因组和基因组草图的实测试,其准确性与基于 BLAST 的 ANI 的计算相当,而且速度提高了两到三个数量级。因此,它适用于大量基因组对的成对 ANI 计算。有关其速度、准确性和潜在应用的更多详情,请参考对 9 万个原核生物基因组的高通量 ANI 分析揭示了清晰的物种界限"(High Throughput ANI Analysis of 90K Prokaryotic Genomes Reveals Clear Species Boundaries)。

安装

conda install -c bioconda fastani

使用

Many to Man-使用基因组路径作为输入

(gtdbtk) [yutao@myosin Eisenbacteria]$ head fa.path
./GCA_001780165.1_genomic.fa
./GCA_003235575.1_genomic.fa
./GCA_005893165.1_genomic.fa.gz

(gtdbtk) [yutao@myosin Eisenbacteria]$ time fastANI --ql fa.path --rl fa.path  -o ANI.txt --matrix --visualize  -t 30
# -ql query list
# -rl reference list
# -o 成对ANI计算结果
# -matrix 同时输出矩阵,以-o选项后的名称加上".matrix"
# --visualize 可视化
# -t thread

One to One

计算单个查询基因组和单个参考基因组之间的 ANI

$ ./fastANI -q [QUERY_GENOME] -r [REFERENCE_GENOME] -o [OUTPUT_FILE] 

结果

在上述所有用例中,OUTPUT_FILE 将包含以制表符分隔的行,其中有查询基因组、参考基因组、ANI 值、双向片段比对计数和查询片段总数。比对分数(相对于查询基因组)是映射和片段总数的简单比率。用户还可以选择通过提供 --matrix 参数获得第二个 .matrix 文件,其中包含以 phylip 格式的下三角矩阵排列的标识值。**注意:如果 ANI 值远低于 80%,则不会报告基因组对的 ANI 输出。**这种情况应在氨基酸水平上计算,参见CompareM-平均氨基酸一致性(AAI)计算。

  • 示例1
(gtdbtk) [yutao@myosin Eisenbacteria]$ head ANI.txt ANI.txt.matrix
==> ANI.txt <==
# genomeA	genomeB ANI(%)		
GCA_001780165.1_genomic.fa      GCA_001780165.1_genomic.fa      100     1170    1176
GCA_001780165.1_genomic.fa      GCA_005893365.1_genomic.fa      78.8657 431     1176
GCA_001780165.1_genomic.fa      GCA_005893225.1_genomic.fa      78.8112 381     1176
GCA_001780165.1_genomic.fa      GCA_011357805.1_genomic.fa      78.7589 529     1176
GCA_001780165.1_genomic.fa      GCA_005893185.1_genomic.fa      78.4959 313     1176
GCA_001780165.1_genomic.fa      GCA_005893295.1_genomic.fa      78.2516 308     1176
GCA_001780165.1_genomic.fa      GCA_013140805.1_genomic.fa      77.7736 309     1176
GCA_001780165.1_genomic.fa      GCA_903921835.1_genomic.fa      77.3711 302     1176
GCA_001780165.1_genomic.fa      GCA_902826705.1_genomic.fa      77.3634 256     1176
GCA_003235575.1_genomic.fa      GCA_003235575.1_genomic.fa      100     881     888

==> ANI.txt.matrix <==
17
GCA_001780165.1_genomic.fa
GCA_003235575.1_genomic.fa      NA
GCA_005893165.1_genomic.fa      NA      77.231445
GCA_005893185.1_genomic.fa      78.464157       NA      NA
GCA_005893225.1_genomic.fa      78.779877       NA      NA      78.797363
GCA_005893265.1_genomic.fa      NA      NA      79.801826       NA      NA
GCA_005893275.1_genomic.fa      NA      NA      79.954613       NA      NA      84.944542
GCA_005893295.1_genomic.fa      78.282249       NA      NA      78.198181       78.400757    NA       NA
GCA_005893305.1_genomic.fa      NA      77.308350       77.910553       NA      NA      77.764481     77.908798       NA
  • 示例2
(gtdbtk) [yutao@myosin Krumholzibacteriota]$ head Krumholzibacteriota_ANI.txt Krumholzibacteriota_ANI.txt.matrix
==> Krumholzibacteriota_ANI.txt <==
GCA_002085285.1_genomic.fa      GCA_002085285.1_genomic.fa      100     425     435
GCA_002403075.1_genomic.fa      GCA_002403075.1_genomic.fa      100     772     776
GCA_002403075.1_genomic.fa      GCA_002403295.1_genomic.fa      86.9047 500     776
GCA_002403295.1_genomic.fa      GCA_002403295.1_genomic.fa      99.9999 599     615
GCA_002403295.1_genomic.fa      GCA_002403075.1_genomic.fa      86.8991 506     615
GCA_002747875.1_genomic.fa      GCA_002747875.1_genomic.fa      100     936     948
GCA_002747875.1_genomic.fa      GCA_002790835.1_genomic.fa      78.4217 265     948
GCA_002747875.1_genomic.fa      GCA_903847545.1_genomic.fa      78.1095 189     948
GCA_002747875.1_genomic.fa      GCA_003646045.1_genomic.fa      78.0435 186     948
GCA_002747875.1_genomic.fa      GCA_903859215.1_genomic.fa      77.8668 240     948

==> Krumholzibacteriota_ANI.txt.matrix <==
16
GCA_002085285.1_genomic.fa
GCA_002403075.1_genomic.fa      NA
GCA_002403295.1_genomic.fa      NA      86.901932
GCA_002747875.1_genomic.fa      NA      NA      NA
GCA_002790835.1_genomic.fa      NA      NA      NA      78.286392
GCA_003353795.1_genomic.fa      NA      NA      NA      NA      76.844803
GCA_003369455.1_genomic.fa      NA      NA      NA      NA      NA      NA
GCA_003369535.1_genomic.fa      NA      NA      NA      NA      NA      NA      77.283585
GCA_003646045.1_genomic.fa      NA      NA      NA      78.091743       78.153748       77.447433     NA      NA

其他参数说明

# version 1.32
-r <value>, --ref <value>
    reference genome (fasta/fastq)[.gz]

--refList <value>, --rl <value>
    a file containing list of reference genome files, one genome per line

-q <value>, --query <value>
    query genome (fasta/fastq)[.gz]

--ql <value>, --queryList <value>
    a file containing list of query genome files, one genome per line
-t <value>, --threads <value>
    thread count for parallel execution [default : 1]
--visualize
    output mappings for visualization, can be enabled for single genome to
    single genome comparison only [disabled by default]

--matrix
    also output ANI values as lower triangular matrix (format inspired from
    phylip). If enabled, you should expect an output file with .matrix
    extension [disabled by default]

-o <value>, --output <value> [required]
    output file name

可视化两个基因组之间的保守区域

FastANI 支持将两个基因组之间计算出的比对区域可视化。要获得这种可视化效果,需要如上所述使用 FastANI 进行一对一比较,但需要提供一个额外的标记–visualize。该标志会强制 FastANI 输出一个映射文件(扩展名为 .visual),其中包含所有互易映射的信息。最后,资源库中提供了一个 R 脚本,该脚本使用 genoPlotR 软件包绘制这些映射图。这里我们展示一个使用两个基因组运行的示例:Bartonella quintana(GenBank:CP003784.1)和 Bartonella henselae(NCBI 参考序列:NC_005956.1)。

$ ./fastANI -q B_quintana.fna -r B_henselae.fna --visualize -o fastani.out
$ Rscript scripts/visualize.R B_quintana.fna B_henselae.fna fastani.out.visual

在这里插入图片描述

并行化

FastANI(v1.1 及以后版本)支持多线程,使用-t配置线程数。要使 FastANI 的并行化超越单个计算节点,用户还可以选择简单地将参考数据库划分为多个分块,并将它们作为并行进程执行。我们在资源库中提供了一个脚本,用于随机分割数据库。

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

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

相关文章

【第七章】软件设计师 之 程序设计语言与语言程序处理程序基础

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 1、前言 正规式 2、编译过程 编译型&…

深度解析找不到msvcp120.dll相关问题以及解决方法

​在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“msvcp120.dll丢失”。这个错误通常会导致某些应用程序无法正常运行&#xff0c;给用户带来很大的困扰。那么&#xff0c;如何解决msvcp120.dll丢失的问题呢&#xff1f;本文将为大家介绍…

xml schema中的sequence的含义

https://www.w3.org/TR/xmlschema-1/#element-sequence xml schema中的sequence的含义&#xff1a;包含的元素必须按规定的顺序出现。通过属性maxOccurs和minOccurs可以定义最多、最少出现的次数。最多可以定义不限制次数&#xff0c;最少可以定义0次。默认是最少出现1次&…

pyTorch Hub 系列#4:PGAN — GAN 模型

一、主题描述 2014 年生成对抗网络的诞生及其对任意数据分布进行有效建模的能力席卷了计算机视觉界。两人范例的简单性和推理时令人惊讶的快速样本生成是使 GAN 成为现实世界中实际应用的理想选择的两个主要因素。 然而&#xff0c;在它们出现后的很长一段时间内&#xff0c;GA…

02:2440---时钟体系

目录 一:时钟控制 1:基本概念 2:时钟结构图 3:结构图分析 4:总线 5:寄存器 A:FCLK--MPLLCON B:HCLK和PCLK--CLKDIVN C:注意 二:上电复位 1:上电复位 2:时钟选择 三:代码 一:时钟控制 1:基本概念 S3C2440A中的时钟控制逻辑可以产生所需的时钟信号&#xff0c;包括C…

node插件express(路由)的插件使用(二)——cookie 和 session的基本使用区别

文章目录 前言一、express 框架中的 cookie0、cookie的介绍和作用1. 设置cookie2.删除cookie3.获取cookie&#xff08;1&#xff09;安装cookie-parser&#xff08;2&#xff09;导入cookie-parser&#xff08;3&#xff09;注册中间件&#xff08;4&#xff09;获取cookie&…

类和对象(3):拷贝构造函数

引入&#xff1a; class Stack { public:Stack(int capacity 3){_a (int*)malloc(sizeof(int) * capacity);if (nullptr _a){perror("malloc");exit(-1);}_top 0;_capacity capacity;}~Stack(){free(_a);_top _capacity 0;_a nullptr;}private:int* _a;int _…

终止进程,GPU显存仍被占用 | kill -9彻底杀死进程

问题描述&#xff1a;在Linux终端把进程终止后&#xff0c;发现显存没有被释放出来&#xff01; 显示所有进程 ps aux|grep python杀死单个进程 kill -9 PID杀死多个进程 kill -9 PID PID PID...结果如下&#xff0c;显存已经被释放出来了&#xff01;

【操作系统】1.1 操作系统的基础概念、功能以及特性

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

gpt支持json格式的数据返回(response_format: ‘json_object‘)

Api.h5.chatCreateChatCompletion({model: gpt-3.5-turbo-1106,token: sk-f4fe8b67-fcbe-46fd-8cc9-fd1dac5d6d59,messages: [{role: user,content:使用json格式返回十二生肖&#xff0c;包含中文名和英文名&#xff0c;[{id:"1", enName:"", cnName: &quo…

Python 多进程多线程

多任务 并发&#xff1a;在一段时间内交替执行多个任务 并行&#xff1a;在一段时间内同事一起执行多个任务 进程 Process 进程&#xff1a;一个程序运行在系统之上&#xff0c; 便称这个程序喂一个运行进程&#xff0c;并分配进程ID方便系统管理。操作系统进行资源分配和调…

Android开发之apk瘦身计划

为什么apk越来越大&#xff1f; 1.项目不断发展&#xff0c;功能越多&#xff0c;代码量增加的同时&#xff0c;资源文件也在不断的增多。 2.app支持的主流dpi越来越多&#xff0c;如ldpi、mdpi、hdpi、xh xxh xxxh等等&#xff0c;间接导致资源增多。 3.引入的第三方sdk或开…

Linux进程空间地址

程序地址空间回顾 问题引入 ---------------明天再写0.0

Linux提取RPM包文件

在讲解如何从 RPM 包中提取文件之前&#xff0c;先来系统学习一下 cpio 命令。cpio 命令用于从归档包中存入和读取文件&#xff0c;换句话说&#xff0c;cpio 命令可以从归档包中提取文件&#xff08;或目录&#xff09;&#xff0c;也可以将文件&#xff08;或目录&#xff09…

【Go入门】面向对象

【Go入门】面向对象 前面两章我们介绍了函数和struct&#xff0c;那你是否想过函数当作struct的字段一样来处理呢&#xff1f;今天我们就讲解一下函数的另一种形态&#xff0c;带有接收者的函数&#xff0c;我们称为method method 现在假设有这么一个场景&#xff0c;你定义…

Qt贝塞尔曲线

目录 引言核心代码基本表达绘制曲线使用QEasingCurve 完整代码 引言 贝塞尔曲线客户端开发中常见的过渡效果&#xff0c;如界面的淡入淡出、数值变化、颜色变化等等。为了能够更深的了解地理解贝塞尔曲线&#xff0c;本文通过Demo将贝塞尔曲线绘制出来&#xff0c;如下所示&am…

SPC 的一些小知识

在生产管理系统种&#xff0c;经常回涉及到质量管理分&#xff0c;我们经常听说SPC、SPC控制图等和SPC相关的词汇&#xff0c;那么SPC是什么意思呢&#xff1f;它有什么作用呢&#xff1f;在这里通俗一点介绍一下SPC。 SPC是统计过程控制&#xff08;Statistical Process Cont…

xsschallenge通关攻略详解

xsschallenge通过攻略 文章目录 xsschallenge通过攻略第一关第二关第三关第四关第五关第六关第七关第八关第九关第十关第十一关第十二关第十三关 简述 xsschallenge挑战攻略 ps: 终极测试代码 <sCr<ScRiPt>IPT>OonN"\/(hrHRefEF)</sCr</ScRiPt>IPT&g…

系列八、Mybatis一对多查询,只查询出了一条记录

一、Mybatis一对多查询&#xff0c;只查询出了一条记录 1.1、问题说明 典型的权限管理框架的数据库表中&#xff0c;一般会存在这样3种角色的表&#xff0c;即用户表、角色表、用户角色关联表&#xff0c;表设计好之后&#xff0c;往这三张表中初始化了一些测试数据&#xff0…

LOW-POWER AUDIO KEYWORD SPOTTING USING TSETLIN MACHINES

基于TM的低功耗语音关键字识别 摘要1介绍2TM的介绍3KWS的音频预处理技术4实验结果MFC4.1C设置分位数数量4.3增加关键词数量4.4 声音相似的关键词4.5 每个类别的子句数量对KWS-TM的比较学习收敛和复杂性分析 摘要 在本文中&#xff0c;我们探讨了一种基于TM的关键词识别&#x…