我们分析metagenome
数据离不开使用NCBI的Taxonomy
数据,NCBI Taxonomy 提供了一棵物种树,其实每个节点(Node)都分配了一个数字标识符,可以唯一描述一个系统分类信息。
NCBI Taxonomy 数据库提供了一个 taxdump.tar.gz
, 并记录了节点的描述信息(names.dmp
)以及树的上下游信息(nodes.dmp
), 刚刚发布的更新版本提供了额外的lineage信息(rankedlineage.dmp
) 以及 host 信息。
另外NCBI已经不再给Strain水平分配这种数字标识符,所以NCBI Taxonomy 提供了 typematerial.dmp
文件用于关联种和菌株(strain)的映射关系。
利用新的数据库我们可以很容易对一些短序列分类器进行注释, 常用的操作如下:
1、 格式化数据库,一般可以使用 tsv-utils
cut -f1,5 fullnamelineage.dmp | sed 's/ $//' >fullnamelineage.db
cut -f1,5 taxidlineage.dmp | sed 's/ $//' >taxidlineage.db
cut -f1,3 host.dmp >host.db
2、 典型使用场景
下面以Kraken为例子,介绍如何格式化为有效信息, kraken的结果:
C E00552:27:HJ2JYALXX:4:1101:5233:1801 435590 203 816:40 435590:21 A:31 435590:13 0:53 435590:10 0:5
U E00552:27:HJ2JYALXX:4:1101:5781:1801 0 252 0:116 A:31 0:75
四列组成:
第一列: 序列分类标识符, C为分类,U为未分类
第二列: 序列ID
第三列: 命中的NCBI Taxonomy 数字ID,未命中为0;
第四列: Kmer匹配的信息;比如: 816:40,40个Kmer匹配Taxonomy ID 816;
现在可以生成一个关于序列分类的列表:
E00552:27:HJ2JYALXX:4:1110:28615:27257 12509 vertebrates,human \
Viruses; dsDNA viruses, no RNA stage; Herpesvirales; Herpesviridae; Gammaherpesvirinae; Lymphocryptovirus; Human gammaherpesvirus 4;
通过执行下面命令问题就解决了:
grep -P ^"C" GY.txt \
| cut -f2,3 \
| tsv-utils definition -c 2 fullnamelineage.db - \
| tsv-utils definition -c 2 host.db - \
>GY.taxonomy.tsv