目录
遇到的问题taxonkit 概述taxonkit安装安装下载依赖数据taonkit使用1)列出给定taxonomy id的子分类树2)从taxid获取完整谱系3)重新构造谱系的格式4)通过物种拉丁名查询回到问题一个也不能少参考
遇到的问题
在做宏基因组分析时,通过基因注释得到一个包含10k之多种微生物物种名list(scientific name),现在想统计这些物种在界、门、纲、目、科、属等不同分类水平的总的数量。这就是本篇推送想解决的问题,10000多种微生物的拉丁名称示例如下: [NeptuneYT$] head scientific_name.txt
Abiotrophia defectiva
Abiotrophia sp.
Absiella dolichum
Acaryochloris marina
Acetanaerobacterium sp.
Acetivibrio cellulolyticus
Acetoanaerobium noterae
Acetoanaerobium sticklandii
Acetobacter aceti
Acetobacter ghanensis
[NeptuneYT$] wc -l all_bacteria_genomic_fna.species
10146 all_bacteria_genomic_fna.species
打开NCBI Taxonomy输入一个拉丁名,如Acetobacter aceti,搜索之后默认获得完整的lineage信息,但我们这里只需要7个层次的,因此再点击一次Lineage获得缩略的谱系信息,如下:
得到的Lineage字段后以分号隔开的就是对应于7个分类层次的结果,后续以分号切割之后统计不同列的结果即可。
很自然的,我们想到爬虫,其搜索接口为https://www.ncbi.nlm.nih.gov/taxonomy/?term=拉丁名(空格以+号连接),如https://www.ncbi.nlm.nih.gov/taxonomy/?term=Acetobacter+aceti,然后对结果页面进行后续解析。但是10k之多的查询量,必然要设置爬取频率,否则就要被NCBI关小黑屋了,考虑时间代价,果断放弃。其实,从网上查询的原理也是基于Taxonomy后台的数据库,而这个文件在ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz,可以从解压之后的names.dmp和nodes.dmp文件写代码解析,但是其内容过于妖孽,为了少撸掉点头发,因此先看看网上是否有造好的轮子。
相比于另外两种工具,TaxonKit在处理大批量数据时更快,占用内存也可接受
taxonkit 概述
说完废话,进入今天的主题,说说TaxonKit这个工具的使用。
TaxonKit是处理NCBI Taxonomy数据库中结构性数据的良心工具,19年1月在bioRxiv上online,作者Wei Shen, Jie Xiong,隶属于Department of ClinicalLaboratory, General Hospital of Western Theater Command,特地查了一下,原来是位于成都的中国人民解放军西部战区总医院(好牛的感觉),看来生信真是无处不在。
它是Go语言编写的,可以在Windows,Linux和Mac OS X运行,直接使用NCBI Taxonomy的数据(需手动下载)而无需构建本地数据库。