写在前面
用过 BLAST 进行基因功能注释的朋友应该常常遇到两个问题:
- BLAST 输出格式较多,选择哪一类输出格式更为实用?
- 输出结果信息较多,如果方便下游数据分析?
BLAST 的输出文件格式建议
基于我个人生信数据分析项目经验,一般用户会选择以下四种格式:
- pairwise
- blast tab ,即 -outfmt 6
- ASN
- XML
以下逐个解读。
Pairwise 格式
这一个是常见于绝大多数网站自行搭建的 BLAST 服务。比如拟南芥 TAIR 的 Blast 输出,大体如下,
清晰明了,对于少量序列,比如 一两个序列的 比对结果查看,那么这一格式非常合适。但一旦数据较多,比如我们上千个差异表达基因或者是关联出来的基因列表,那么就不太合适。于是一般会用 Table (--outfmt 6 或 7 )
Blast Tab 格式
Blast Tab 格式,这个名字,是我自己给的。因为这个格式其实就是纯粹的 制表符分隔 的 表格。一般情况下,blast+ 设置输出格式为 -outfmt 6 或者 7 (后者包含表头)即可。大体格式可以看看下方,
直接在 Excel 中查看即可。可以看出,一列一列摆放,以 HSP (也就是 高度相似片片段)为单位。这个序列的比对结果不太直观(具体见下文)。
ASN 格式
说实话,我估计绝大部分号称自己搞数据分析的,其实也不知道有这个格式。
ASN格式,类似 JSON,是 NCBI 自定义的格式,存储信息最全面,可以直接使用 Blast 软件转换为其他格式。唯一麻烦的可能是,用户需要转换一次,有些人不喜欢。当然我也不喜欢,毕竟...XML相对容易解析。
XML 格式
一直以来,我最新换的就是 XML 格式。主要原因有:
- 相比于 Pairwise 和 ASN 格式来说,XML 更容易使用 程序解析
- 相比于 Table 格式来说,XML 信息更全面
具体可看
对应所有 TBtools 用户来说,我个人是建议,如果只是一两条序列的 BLAST ,那么建议 Pairwise 格式,而其他所有情况,直接输出 XML 格式。因为 TBtools 下面有系列功能可以可视化 和 解析。
大体功能介绍
XML 转换为 BLAST Tab 格式
所有 BLAST XML 输出文件,可以直接使用 TBtools,转换为 BLAST Tab。非常方便。
TBtools Table 格式
正如前面体积,BLAST 默认的输出以 HSP 为单位,有时候并不太合适。比如,有些时候比对结果是这样的(即超过 1 个 HSP)
这种情况下,如果是 NCBI BLAST 默认的 表格输出,那么就是
我们完全可以想想,有不少时候,可能有 N 个hsp。而这些信息,本身冗余。此外,也无法直接看到比对覆盖率。为此.... 很久很久以前,我就开放了一个功能,自定义了一个 TBtools Table。具体如下,
可以看出,多个 HSP 的信息被整合为一行,也补充了覆盖率的计算等等。每行就是一个 Hit ,更符合实际用户观测数据需求。
仅仅如此?
当然不是。这两天,我又在折腾一些生物学问题相关的课题。于是需要看一堆基因大体注释信息。尽管上述说到的 TBtoosl Table 相对简洁。但还是不够直观,毕竟一个人序列还是对应了多个 hits。所以最好的做法就是,进一步把所有的 hits 整合成 一行(这个想法在三四年前,夏老师提过,不过...我一直懒得实现)。索性写了一下,输出结果如下。
说实话,不能太完美...
而且具体使用一样简单:
- 输入BLAST的XML格式输出文件,支持 DIAMOND XML,建议比对到 Swissprot
- 输出文件路径
具体界面如下,注意到新版本的 TBtools,直接整合了 三个表格转换功能
一切,就这么简单....
当然,其实新版本修复了一小部分 BLAST XML to Table 的小bug,建议各位更新,尽管,我已经推送了自动更新.....
写在后面
TBtools 的序列提取 和 BLAST 相关功能,是最老的功能,意味着他们的具体界面化和实现逻辑,都是一个具有不到半年 Java 编程经验(接触编程刚过一年)的小孩子写的。现在看来,多少显得粗糙。但回过头来,这个跟不少大佬说的一样:
- 以前,有时间,但是没经费
- 现在,有经费,但是没时间
而大佬终归是大佬嘛。对于我,那么情况是:没时间,也没经费。
哈哈哈哈哈哈哈哈