查看原文
其他

纯文本可视化FASTQ质量数据

Y叔叔 biobabble 2020-02-07

去年曾老师发来一个github repo,虽然有意思,但在我看来就是乱用emoji,用一个人类不可读(你怎么能够记住表情如何与数值对应上?!)来表示另一个人类不友好(质量编码)的数据,这绝对不是个好主意。


这只是代码中对应关系中的一部分,你看表情能看出FASTQ数据质量如何?你做得到,我算是服了!

可视化我们有很多方法,但这其实不是可视化,而是一长串字符,这本身是好想法,我们可以在console里直接看一下,大概了解下数据质量,而不需要真正去画图。

现在终端上能显示的字体已经非常多样化了,比如我的终端及桌面底部的状态栏:

所以我们完完全全可以用文本的形式画个柱状图出来,甚至于加上颜色!测序质量怎么样?用柱状图有高低可以看,用emoji根本就不适合, 和#$&@!~这些有甚区别么!

做为回应,我写点简单的代码,你给个fastq文件,就可以画出来柱状图:

这图就可以看到,前面质量很好,尾部差一点。

▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆

这篇文章本发表于2017年6月,但由于里面用到了colformat包已经不存在,代码更新了一下,所以重新推送,如果你有兴趣玩一下,请使用下面的代码。

qbar <- function(x, verbose=TRUE) {
  enc = encoding(quality(x))

  qual <- sapply(seq_along(x), function(i) enc[to_char_vector(x[i])])
  mq <- rowMeans(qual)
  if (verbose) {
    names(mq) <- NULL
    print(mq)
  }
  pillar:::spark_bar(mq/max(enc))
}

to_char_vector <- function(x) {
  toString(x@quality@quality) %>% strsplit(split='') %>% unlist
}


质量不好的时候,可能就是凹凹凸凸的:

▇▇▇▇▂▇▇▇▇▂▁▂▂▁▁▂▁▁▁▂▇▂▇▇▇▅▇▇▇▇▇▇▇▇▇▇▃▃▇▇▇▇▇▇▇▇▇▇▇▂▆▆▆▆▆▆▆▆▆▆▆▆▂▆▆▂▆▃▆▆▆▆


往期精彩

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存