Taxontk 和csvtk创建NR数据库标准层级注释中报错:[ERRO] record on line 1583: wrong number of fields

NCBI上的NR数据库过于冗余,且物种注释的taxonomy文件中names.dmp和nodes.dmp的物种信较为复杂,因此我们可以通过taxontk这个工具将不同层级的物种信息整合成像下面一张表,里面包含普通的谱系,界门纲目科属种;

 

         根据这样的表,再结合比对数据库和prot.accession2taxid.gz获取的taxid对应序列名的文件,可获得物种注释信息。

1. Taxontk的下载和安装以及配置

https://bioinf.shenwei.me/taxonkit/download/  (十分详细的Taxontk安装和使用的教程)

2. 提取物种taxid

#taxontk list 提取物种taxid,以细菌为例,其ids为2
taxontk list --ids 2 --indent "" > bacteria_taxid.txt

#3090为plant 2为bacteria; 2157为Archaea;10239 为Viruses;2759为Eukaryota;4751为Fungi
#若是未能将taxonomy文件中的name.dmp和nodes.dmp文件复制到指定的./taxontk位置,可通过 --data-dir设置文件位置





 

3. reformat 生成标准层级物种注释

 TaxonKit可以用自定义内容替代缺失的分类单元,如用“__”替代,甚至,TaxonKit还可以用更高层级的分类单元信息来补齐缺失的层级 (-F/--fill-miss-rank)

less bacteria_taxid.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 > bacteria_taxid.txt 

输出格式可选只输出部分分类学水平,还支持制表符("\t"),再配合作者的另一个工具csvtk,可以输出漂亮的结果。

其它有用的选项:

  • -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名称做为菌株名称。

这个脚本运行后,可能会出现报错:

[ERRO] record on line 1583: wrong number of fields

这是因为一些taxid没有匹配到谱系,导致出现空行,在进行csvtk add-header 添加一行时就会报错。在查看csvtk add-header帮助文档后,发现了这一个参数:

-I, --ignore-illegal-row     ignore illegal rows

因此,在上行代码 csvtk add-header 后加上-I即可完美解决。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值