在做宏基因组分析时,通过基因注释得到一个包含10k之多种微生物物种名list(scientific name),现在想统计这些物种在界、门、纲、目、科、属等不同分类水平的总的数量。这就是本篇推送想解决的问题,10000多种微生物的拉丁名称示例如下:
#-d 输出谱系树分割符,默认分号
上一步通过taxid提取的谱系信息复杂,往往需要根据我们的需求重新格式化
查询给定taxid9606的谱系,并按照门:科;属的格式输出
#{}内是分类等级,大括号之间是输出的连接符
按人的拉丁名查询taxid
可以看到,查询速度相当之快。
由于待批量查询的物种名不是规范的拉丁名称,导致出现两个问题,一是输入的list是10146个,转换id后(找到和未找到)的行数却增加了1个,统计之后发现是同一个物种名有两个taxid;二是没找到的高达541个!!!为了说明完整的处理过程,541个后面再说。
手工查询发现是两个种,但是根据部分拉丁名Deinococcus soli可以查到俩taxid我也是醉了。
现在就按照界门纲目科属种的层次变成整齐划一的格式了,通过简单处理即可统计不同层次的物种数量和分布,首先构建一个用于循环处理的分类标签
详细的物种分类层次数量统计:
首先看看没有找到的541个输入物种名长啥样:
将后面查到的taxid加到之前的taxid list再按之前的流程跑一遍即可,实在查不到的那就手工吧。(此时配乐起~“这是自由的感觉,鼠标咔哒咔哒点击这些可爱的物种名称,凭着一颗永不哭泣勇敢的心”)