TaxonKit

中文介绍 - TaxonKit - NCBI Taxonomy Toolkit (shenwei.me)

TaxonKit是采用Go语言编写的命令行工具, 提供Linux, Windows, macOS操作系统不同架构(x86-64/arm64)的静态编译的可执行二进制文件。 发布的压缩包不足3Mb,除了Github托管外,还提供国内镜像供下载,同时还支持conda和homebrew安装。 用户只需要下载、解压,开箱即用,无需配置,仅需下载解压NCBI Taxonomy数据文件解压到指定目录即可。

  • 源代码 https://github.com/shenwei356/taxonkit ,
  • 文档 http://bioinf.shenwei.me/taxonkit (介绍、使用说明、例子、教程)

选择系统对应的版本下载最新版 https://github.com/shenwei356/taxonkit/releases ,解压后添加环境变量即可使用。或可选conda安装

conda install taxonkit -c bioconda -y
# 表格数据处理,推荐使用 csvtk 更高效
conda install csvtk -c bioconda -y# 数据库准备
# 有时下载失败,可多试几次;或尝试浏览器下载此链接
wget -c https://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz
tar -zxvf taxdump.tar.gz# 解压文件存于家目录中.taxonkit/,程序默认数据库默认目录
mkdir -p $HOME/.taxonkit
cp names.dmp nodes.dmp delnodes.dmp merged.dmp $HOME/.taxonkit

TaxonKit为命令行工具,采用子命令的方式来执行不同功能, 大多数子命令支持标准输入/输出,便于使用命令行管道进行流水作业, 轻松整合进分析流程中。

子命令 功能
list 列出指定TaxId下所有子单元的的TaxID
lineage 根据TaxID获取完整谱系(lineage)
reformat 将完整谱系转化为“界门纲目科属种株"的自定义格式
name2taxid 将分类单元名称转化为TaxID
filter 按分类学水平范围过滤TaxIDs
lca 计算最低公共祖先(LCA)
taxid-changelog 追踪TaxID变更记录
version 显示版本信息、检测新版本
genautocomplete 生成shell自动补全配置脚本
  • 输出:

    • 所有命令输出中包含输入数据内容,在此基础上增加列。
    • 所有命令默认输出到标准输出(stdout),可通过重定向(>)写入文件。
    • 或通过全局参数-o--out-file指定输出文件,且可自动识别输出文件后缀(.gz)输出gzip格式。
  • 输入:
    • 除了listtaxid-changelog之外,lineagereformatname2taxidfilter 与 lca 均可从标准输入(stdin)读取输入数据,也可通过位置参数(positional arguments)输入,即命令后面不带 任何flag的参数,如 taxonkit lineage taxids.txt
    • 输入格式为单列,或者制表符分隔的格式,输入数据所在列用-i--taxid-field指定。

通过taxoid返回分类地位信息

head Test.txt
NZ_BMNY01000001.1   399579
NZ_BMNY01000002.1   399579
NZ_CP095390.1   1419050
NZ_CP095394.1   1419051
NZ_QPLR01000008.1   2282130
NZ_QPLR01000786.1   2282130cut -f 2 Test.txt \
| taxonkit lineage \
| taxonkit reformat -F -P | cut -f 1,3 >Test_taxoid2list.tsv #用csvtk进行美化
cut -f 2 Test.txt \
| taxonkit lineage \
| taxonkit reformat -f "{k}\t{p}\t{c}\t{o}\t{f}\t{g}\t{s}" -F -P \
| csvtk cut -t -f -2 \
| csvtk add-header -t -n taxid,kindom,phylum,class,order,family,genus,species \
| csvtk pretty -t >Test_taxoid2list2.tsv 

选项:

-F/--fill-miss-rank:

用更高层级的分类单元信息来补齐缺失的层级

-P/--add-prefix:

给每个分类学水平添加前缀,比如s__species。

-t/--show-lineage-taxids:

输出分类学单元对应的TaxID。

-r/--miss-rank-repl: 替代没有对应rank的taxon名称

-S/--pseudo-strain: 对于低于species且rank既不是subspecies也不是stain的taxid,使用水平最低taxon名称做为菌株名称。

ete3

ete全称为Environment for Tree Exploration,直译就是树探索环境,此工具可以直接在终端输入
pip install ete3 进行安装即可。ete包主要功能与构建系统发生树有关,若是有相关需求可以查看其介绍文档,地址:The ETE tutorial。我主要使用到了其中的分类工具,即处理NCBI 的Taxonomy数据库的工具。此工具用于物种信息和分类号的转换十分简便,使用时是根据NCBI的最新分类文件来运作的,因此分类信息十分可靠。

下载升级数据库
ete3使用NCBI 的Taxonomy数据,因此需要首次使用时需要先下载数据。在应用中主要用到的是ete3包的NCBITaxa模块。首次使用NCBITaxa模块时会检测是否有分类数据存在,没有的话会自动下载。长期未更新时可以直接使用升级选项获取最新的分类数据。即:

from ete3 import NCBITaxa                       # 导入此模块
ncbi = NCBITaxa()
ncbi.update_taxonomy_database()                 # 升级

使用脚本

from ete3 import NCBITaxa
ncbi = NCBITaxa()
#ncbi.update_taxonomy_database()def taxoid2taxo(taxo):lineage = ncbi.get_lineage(taxo)names = ncbi.get_taxid_translator(lineage)list = []for taxid in lineage:list.append(names[taxid])return list
def name2taxo(name):try:taxoid = ncbi.get_name_translator([name])[name][0]taxo_list = taxoid2taxo(taxoid)except:taxo_list = "NA"return taxo_list

函数使用说明:

taxoid2taxo:通过taxoid返回taxo列表

name2taxo:通过科学名返回taxoid,再由taxoid返回taxo列表

通过ncbi号查找taxoid

from Bio import Entrez
from Bio import SeqIO
from ete3 import NCBITaxa
ncbi = NCBITaxa()Entrez.email = 'XXXXXX@XXXX.com'
ncid_list = [i.strip() for i in open('ncid.list')]
output = []
for ncid in ncid_list:handle = Entrez.efetch(db='nucleotide', id=ncid,rettype="gb", retmode="text")records = list(SeqIO.parse(handle, "genbank"))[0]name = records.annotations['organism']taxoid = ncbi.get_name_translator([name])[name][0]output.append("{}\t{}\n".format(ncid,taxoid))with open('ncid_taxo.txt','w') as f:for line in output:f.write(line)

获取物种分类信息的方法(TaxonKit/ete3/Biopython)相关推荐

  1. wordpress 外部数据接口_使用接口方式获取WordPress用户信息的方法

    今天WordPress主题站简单介绍一下WordPress系统中用户信息获取方式,今天就讲讲使用接口方式获取WordPress用户信息的方法. 接口文件如下: if ('POST' != $_SERV ...

  2. Request获取url各种信息的方法

    Request获取url各种信息的方法 Request.UrlReferrer的用法 下列情况下,此属性值是有效的: (1)直接使用<a href>链接: (2)通过表单提交的方式,或者说 ...

  3. php获取文件夹中的音乐文件_PHP获取音频文件信息的方法

    本篇文章主要介绍PHP获取音频文件信息的方法,感兴趣的朋友参考下,希望对大家有所帮助. 项目需求:现在有一个音频文件上传的功能,在上传后PHP需要获取这个音频文件的相关信息,例如:时长等,由于这个文件 ...

  4. 获取视频位置信息的方法

    获取视频位置信息的方法public static String getVideoLocationInfo(String path) {MediaMetadataRetriever metadataRe ...

  5. laravel中单独获取一个错误信息的方法

    获取单独的错误信息的方法

  6. Qt开发中获取系统相关信息的方法,值得收藏参考

    本文转自https://zhuanlan.zhihu.com/p/111005951,这篇写的很详细,但是macos相关的只有一部分太少了,基本都是Windows的,我个人后续也会把相关的系统调用方式 ...

  7. java微信获取用户信息_SpringBoot中获取微信用户信息的方法

    前言 不知道你是否参加过拼多多上邀请微信好友砍价功能,这个功能实现首先需要考虑的就是获取微信用户的信息.获取用户信息就是获取公众号下微信用户的信息,今天我就来讲讲如何从公众号下获取微信用户信息. 需要 ...

  8. Android通过MediaStore获取音乐文件信息的方法

    Android系统提供了MediaScanner,MediaProvider,MediaStore等接口,并且提供了一套数据库表格,通过Content Provider的方式提供给用户.当手机开机或者 ...

  9. python抓取招聘数据_Python3获取拉勾网招聘信息的方法实例

    前言 为了了解跟python数据分析有关行业的信息,大概地了解一下对这个行业的要求以及薪资状况,我决定从网上获取信息并进行分析.既然想要分析就必须要有数据,于是我选择了拉勾,冒着危险深入内部,从他们那 ...

最新文章

  1. c语言程序开平方,关于开平方的c程序
  2. 深度学习之梯度下降法
  3. 经典游戏大合集,你的青春也许就在里面!
  4. 在Windows下安装chromedriver
  5. BugkuCTF-Misc:隐写3
  6. 青海行--(7月26日)翻越祁连山
  7. 熊猫多模式站群 模型handlers流程图
  8. 计算机网络 —— OSI参考模型
  9. scala基础之对象
  10. wifi的主动扫描和被动扫描
  11. STL 标准容器的选择
  12. c语言 树的遍历,c语言构造树及树的三种遍历
  13. python实现DDA算法
  14. Android 水瓶动画,贝塞尔Loading
  15. 幼儿园体育游戏电子计算机教案,幼儿园体育游戏活动教案8篇
  16. 201711671221第一周总结
  17. 连平县新视界-连平2018年公开招聘教职员66人
  18. 【opencv-python不规则多边形 ROI提取】
  19. 海康威视E200Pro固态硬盘(联芸MAS0901)SMART信息解析
  20. Beam Search与Prefix Beam Search的理解与python实现

热门文章

  1. python官网各个版本下载地址
  2. 测试用例设计工具PICT介绍
  3. fiddler显示连接不是私密连接
  4. 人脸皮肤高清xyz贴图库分享
  5. unicode 生僻字_[微软拼音小技巧] 如何用Unicode输入生僻字
  6. Qbo’s concept and design
  7. phpRedis函数使用总结
  8. Win7/Win10双系统安装方法图文教程
  9. seo优化什么意思?
  10. Could not load dynamic library ‘libcusolver.so.11‘; dlerror: libcusolver.so.11: cannot open shared o