简洁 | 优雅地整理 BLAST 比对结果

写在前面

用过 BLAST 进行基因功能注释的朋友应该常常遇到两个问题:

  1. BLAST 输出格式较多,选择哪一类输出格式更为实用?
  2. 输出结果信息较多,如果方便下游数据分析?

BLAST 的输出文件格式建议

基于我个人生信数据分析项目经验,一般用户会选择以下四种格式:

  1. pairwise
  2. blast tab ,即 -outfmt 6
  3. ASN
  4. 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 格式。主要原因有:

  1. 相比于 Pairwise 和 ASN 格式来说,XML 更容易使用 程序解析
  2. 相比于 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 整合成 一行(这个想法在三四年前,夏老师提过,不过...我一直懒得实现)。索性写了一下,输出结果如下。



说实话,不能太完美...
而且具体使用一样简单:

  1. 输入BLAST的XML格式输出文件,支持 DIAMOND XML,建议比对到 Swissprot
  2. 输出文件路径

具体界面如下,注意到新版本的 TBtools,直接整合了 三个表格转换功能




一切,就这么简单....
当然,其实新版本修复了一小部分 BLAST XML to Table 的小bug,建议各位更新,尽管,我已经推送了自动更新.....

写在后面

TBtools 的序列提取 和 BLAST 相关功能,是最老的功能,意味着他们的具体界面化和实现逻辑,都是一个具有不到半年 Java 编程经验(接触编程刚过一年)的小孩子写的。现在看来,多少显得粗糙。但回过头来,这个跟不少大佬说的一样:

  • 以前,有时间,但是没经费
  • 现在,有经费,但是没时间

而大佬终归是大佬嘛。对于我,那么情况是:没时间,也没经费。
哈哈哈哈哈哈哈哈

你可能感兴趣的:(简洁 | 优雅地整理 BLAST 比对结果)