其他
纯文本可视化FASTQ质量数据
去年曾老师发来一个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
}
质量不好的时候,可能就是凹凹凸凸的:
▇▇▇▇▂▇▇▇▇▂▁▂▂▁▁▂▁▁▁▂▇▂▇▇▇▅▇▇▇▇▇▇▇▇▇▇▃▃▇▇▇▇▇▇▇▇▇▇▇▂▆▆▆▆▆▆▆▆▆▆▆▆▂▆▆▂▆▃▆▆▆▆
往期精彩