将NR数据库diamond比对结果做物种注释

这篇具有很好参考价值的文章主要介绍了将NR数据库diamond比对结果做物种注释。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求:环境菌功能基因扩增子测序的OTU序列已经用diamond进行了NR全库的比对(blastx),还需得知其物种信息。

P.S.本人是没接触过扩增子比对相关内容,不保证该过程的合理性。

【流程主要参考这个,对于小白如我,该文很详细。本文也只是根据我的需求重新整理了这篇文章】一文完成nt库序列快速下载及blast结果注释物种 (qq.com)

【装所需文件主要参考这个】(20条消息) NR数据库的物种注释_songyi10的博客-CSDN博客

1. 安装所需软件(taxonkit和csvtk)

# 安装taxonkit 
conda create -n taxonkit 
conda activate taxonkit 
conda install -c bioconda taxonkit 

# 安装csvtk(也可以conda install -c bioconda安装,但我用的服务器突然镜像源有点问题就先直接装了(后来镜像源已解决)) 
# 进入自己放软件的文件夹 cd ./soft/csvtk 
wget https://github.com/shenwei356/csvtk/releases/download/v0.25.0/csvtk_linux_amd64.tar.gz 
mkdir -p $HOME/bin/; cp csvtk $HOME/bin/ 

2. 下载NR数据库所附的物种信息和taxid信息

2.1 下载

下载NR物种相关信息和taxid信息的网站:

https://ftp.ncbi.nlm.nih.gov/pub/taxonomy/

https://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid

用wget下载文件(或者直接手动下载再复制进去,但挺大的,最好在服务器里下载 ),加-c可以断点续传。

# 我把他们全部放在数据库的文件夹 
# cd ./db/nr

wget -c https://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz
wget -c https://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz.md5
wget -c https://ftp.ncbi.nlm.nih.gov/pub/taxonomy/taxdump.tar.gz 
wget -c https://ftp.ncbi.nlm.nih.gov/pub/taxonomy/taxdump.tar.gz.md5 

2.2 完整性检验

这里的两个.md5文件其实是用来做完整性检验的,如果下载那两个压缩包没有问题,不下载.md5文件且不做这步都没关系。

用md5sum和cat两个命令确认下下载的东西正常——如果两个结果一样,则文件完整,如下图(这个展示用的是另外的文件,不是我用的文件)。

nr库比对,python,开发语言

2.3 解压

tar -zxvf taxdump.tar.gz
gzip -d prot.accession2taxid.gz > prot.accession2taxid # 这个解压完41.79G

gzip解压可能会遇到“gzip: prot.accession2taxid already exists; do you wish to overwrite (y or n)”,输入y即可(但提交任务的话我不知道咋整),这样解压之后原本的.gz文件就消失了。

 gzip -d和gunzip功能一样 。

解压出这些文件。

nr库比对,python,开发语言

把names.dmp,nodes.dmp,delnodes.dmp,merged.dmp复制到taxonkit的默认路径下。根据其他博客的说明,names.dmp和nodes.dmp是必需的。

mkdir -p $HOME/.taxonkit
cp names.dmp nodes.dmp delnodes.dmp merged.dmp $HOME/.taxonkit

复制(cp)完可以看到用户根目录的隐藏文件夹taxonkit下有这些文件(不用亲自去看啦,我就展示一下而已)。

nr库比对,python,开发语言

3.提取细菌和古菌的taxid及其与物种的对应关系

运用软件:taxonkit

因为细菌和古菌的id号分别是2和2157,所以我只提--ids 2 ,2157。更详细的请去看我链接的那两篇文章。

taxid,顾名思义就是物种的id。

提取出来的taxid和taxonomy对应信息输出为一个文档prokaryotes_taxid_Ano.txt,之后可以手动(比如用Excel的vlookup或R语言的merge)与后面的生成的表格一起进行整理(5.中我还会再浅浅提及)。

# 建细菌和古菌的子库prokaryotes.taxid.txt
conda activate taxonkit
taxonkit list -j 2 --ids 2,2157 --indent "" > prokaryotes.taxid.txt

# 看看子库的基本信息(非数据处理过程)
wc -l prokaryotes.taxid.txt
head -n 5 prokaryotes.taxid.txt

# 提取taxid和taxonomy(界门纲目科属种)的对应信息到prokaryotes_taxid_Ano.txt
less prokaryotes.taxid.txt|taxonkit reformat -I 1 -r Unassigned -f "{k}\t{p}\t{c}\t{o}\t{f}\t{g}\t{s}\t{t}"| sed '1i\Taxid\tKingdom\tPhylum\tClass\tOrder\tFamily\tGenus\tSpecies\tStrain' > prokaryotes_taxid_Ano.txt

 [更新] 其实并不需要这一步提取子库!!!!看下面第四个步骤的红字

获取物种分类信息的方法(TaxonKit/ete3/Biopython)-CSDN博客

4.taxid和subject的对应,并抽出自己比对结果的这部分taxid

把diamond比对后12行结果中的第二列(subject id)复制到一个单独的.txt文件phoDAAAA.txt(tab分割),且把它放在工作文件夹./db/nr(这不是一个好行为,只是为了方便权且这样做)。

运用软件:csvtk

如果用conda装的csvtk要记得激活一下csvtk的环境哦。

# 得到taxid和nr的genebank ID(accession.version)的对应表,即prokaryotes.acc.taxid2.txt
cat prot.accession2taxid |csvtk -t grep -f taxid -P prokaryotes.taxid.txt |csvtk -t cut -f accession.version,taxid > prokaryotes.acc.taxid2.txt

# 和自己的blast结果(subject)对应上,得到sseq.acc.taxid2.txt
# 相当于从上面得到的prokaryotes.acc.taxid2.txt里抽出自己要的子集。
# 在-P中输入自己比对得到的subject这列(phoDAAAA.txt)
cat prokaryotes.acc.taxid2.txt |csvtk -t grep -f accession.version -P phoDAAAA.txt |csvtk -t cut -f accession.version,taxid > sseq.acc.taxid2.txt

prokaryotes.acc.taxid2.txt文件形如这样

【更新】如果跳过了上一步的子库提取,可以将这里获得的sseq.acc.taxid2.txt进行这个操作,这样的话也可以简化第5步的数据整理:

进入taxonkit环境

运行下面的代码

cut -f 2 sseq.acc.taxid2.txt \
| taxonkit lineage \
| taxonkit reformat -F -P | cut -f 1,3 >Test_taxoid2list.tsv 

得到的Test_taxoid2list.tsv 是taxid对应的物种注释(这就不需要自己vlookup或者merge了)

5. 后续自己进行信息的整理

下图是excel里用vlookup的图示。红字是对整个流程的一些总结。

R语言的merge函数也可以做类似操作,但少量数据就没必要了。

nr库比对,python,开发语言

但这样的流程下来,还是有一些在NCBI查ID号就是NCBI里有信息的细菌,但这套流程注释不到的,不知道是哪里的问题。文章来源地址https://www.toymoban.com/news/detail-676191.html

到了这里,关于将NR数据库diamond比对结果做物种注释的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • oracle查询数据库内全部的表名、列明、注释、数据类型、长度、精度等

    Oracle查询数据库内全部的表名、列明、注释、数据类型、长度、精度 效果图: 字段排序,根据表名对字段进行排序

    2024年02月06日
    浏览(55)
  • 导出Oracle数据库sqlplus命令行查询的结果到文件

    在Oracle数据库sqlplus命令行操作时,如果想将SQL查询出来的结果导出到文件中,可以使用SQLPlus中的 SPOOL 命令来将查询结果导出到文件。 1.开启日志记录:使用SPOOL命令,指定需要输出的文件路径及文件名。例如: SPOOL /存放路径/oracle.txt 2.执行SQL查询语句:你可以输入任何需要

    2024年02月15日
    浏览(37)
  • SQL Server数据库判断最近一次的备份执行结果

    在SQL Server的官方文档里面可以看到备份和还原的表,但是这些表里面只能找到备份成功的相关信息,无法找到备份失败的记录,比如 msdb.dbo.backupset 。对于一些监控系统未监控作业的情况下,想要监控数据库备份任务执行失败而触发告警规则,有些麻烦。 但是SQL server内部是

    2024年02月03日
    浏览(85)
  • (代码注释超详细)JavaWeb连接Mysql数据库完成登录注册业务

    登录:完成连接数据库判断登陆信息是否有误 注册:将信息填写完毕后点击注册,跳转到登陆页面 主页:展示项目信息并且可以在页面内进行增删改操作 完整文件目录如下: 文件目录: bean包中填写的代码为实体类 dao模型就是写一个类,把访问数据库的代码封装起来 serv

    2023年04月22日
    浏览(96)
  • 【Java】JDBC 获取数据库表名、字段名、注释 Comment 等信息

    需求:给定数据库信息和表名,扫描表的字段名、字段类型和注释。 要使用Java JDBC获取数据库表名、字段名和注释信息,你需要连接到数据库并执行适当的SQL查询。以下是一些示例代码,展示如何获取这些信息。请注意,这些示例代码假定你已经建立了数据库连接。你需要根

    2024年02月02日
    浏览(47)
  • 帝国cms将没有搜索到结果的关键字存入到数据库的方法

    在帝国cms网站前台搜索一个,如果在网站中查询到了,这个会被记录入搜索表中,但是如果在网站中没有搜索到,就不会记录入搜索表中,那怎么把没有搜索结果的才能记录到数据库中,方法如下: 打开/e/search/index.php 在$searchid=0上方加入以

    2024年02月03日
    浏览(42)
  • 《向量数据库指南》——用 Milvus Cloud和 NVIDIA Merlin 搭建高效推荐系统结果

    结果 以下展示基于 CPU 和 GPU 的 3 组性能测试结果。该测试使用了 Milvus 的 HNSW(仅 CPU)和IVF_PQ(CPU 和 GPU)索引类型。 对于给定的参数组合,将 50% 的商品向量作为查询向量,并从剩余的向量中查询出 top-100 个相似向量。我们发现,在测试的参数设置范围内,HNSW 和 IVF_PQ 的召

    2024年02月05日
    浏览(57)
  • JavaWeb登录注册系统/界面(邮箱验证码,数据库连接,详细注释,可作结课作业,可用于学习,可接入其他主系统)

    目录 1、致谢 2、前言 3、系统实机演示 4、系统分析与设计 (1)主要软件与工具 (2)系统分析 (3)系统规划 5、系统设计与构建 (1)JavaWeb创建 (2)JavaWeb运行 (3)先期依赖准备: 6、代码与关键注释、文件简析 (1)数据库 (2)前端 index.jsp和styleIndex.css: forgetPassword

    2024年02月08日
    浏览(58)
  • 图数据库_Neo4j学习cypher语言_使用CQL命令002_删除节点_删除属性_结果排序Order By---Neo4j图数据库工作笔记0006

    然后我们再来看如何删除节点   可以看到首先   我们这里   比如我要删除张三 可以看到 match (n:student) where n.name = \\\"张三\\\" delete n 这样就是删除了student集合中,name是张三的节点   然后我们再来看 如何来删除关系 match (n:student)-[r]-(m:student) where n.name=\\\"小

    2024年02月12日
    浏览(52)
  • Stable Diffusion之Scheduler模块比对生成结果

    diffusers包含多个用于扩散过程的预置scheduler function,用于接收经过训练的模型的输出,扩散过程正在迭代的样本,以及返回去噪样本的时间步长。在其他扩散模型又被称为采样器。 Schedulers define the methodology for iteratively adding noise to an image or for updating a sample based on model outputs

    2024年02月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包