对于生信狗,天天黑白命令行,实验室的同事,经常对着我的Emacs说,这么小的字体你看得清吗?我只能无奈地回答,因为我要一个屏幕显示一整个函数。我自己平时写代码也很注意这一点,函数尽量小,太长就要考虑切分成几个函数,我说自己是脑容量不够,写不了长函数。我希望如果有人看我代码,他/她可以看得舒服点,虽然写的不见得好,但起码一个函数,你一个屏幕是装得下的。岁月留给我们的,是越来越厚的镜片!然而最近有一款神器,让我们在命令行里,可以高亮显示生物学常见的数据格式,包括SAM, VCF, GTF, PDB和FASTA。这款神器叫bioSyntax (http://bioSyntax.org) ,看着舒服多了,而且逼格十足,如果大家序列比对看多了,其实都会依赖于看颜色,黑白字体情况下,你很难去区分ATCG,即使有明显的pattern,你也很难看出来。
周日是港大医学院的198届毕业典礼,Y叔要去参加,今年也正好是医学院130周年,做为画图界的传说,我决定画一个蛋糕。
要画蛋糕,这有何难,我们有emojifont
啊,还记得《emojifont新功能(有视频哦)》一文中的geom_emoji
图层吗?
ChIPseeker系列传送门
- CS0: ChIPseq从入门到放弃
- CS1: ChIPseq简介
- CS2: BED文件
- CS3: peak注释
- CS4:关于ChIPseq注释的几个问题
- CS5: 吃着火锅,唱着歌,还把分析给做了
- CS6: ChIPseeker的可视化方法(中秋节的视觉饕餮)
- CS7:Genomic coordination的富集性分析(1)
- CS8:Genomic coordination的富集性分析(2)
- CS9: GEO数据挖掘
ChIPseeker这个系列,从《CS0: ChIPseq从入门到放弃》到现在CS10,总共11篇,第一篇以八卦开始,我想很有必要以八卦来结束。
ChIPseeker系列文章已经介绍了很多内容,包括注释的方方面面,也包括强大的可视化功能(《CS6: ChIPseeker的可视化方法(中秋节的视觉饕餮)》)。
今天要介绍一下数据挖掘,从大量已有的数据来产生新的hypothesis。正如我在ChIPseeker的文章里写的:
There are increasing evidences shown that combinations of TFs are important for regulating gene expression (Perez-Pinera et al., 2013; Zhu et al., 2008). However, systematically identification of TF interactions by ChIP-seq is still not available. Even if a specific TF binding is essential for a particular regulation was known, we do not have prior knowledge of all its co-factors. There are no systematic strategies available to identified un-known co-factors by ChIP- seq.
并没有方法可以大规模地预测未知的共同调控因子,而数据挖掘就是要给我们这种预测的能力。
我当年在写ChIPseeker的时候,我有纠结是写篇Bioinformatics的application note呢,还是写篇长文灌水NAR,毕竟NAR影响因子高一点,最后还是发了Bioinformatics,因为我没钱,囧,Bioinformatics不要版面费啊。然后限于篇幅,ChIPseeker有大量可视化的函数,我在文章中一张图都没放!!!如果当时决定发NAR的话,这个数据挖掘这一块我就会写多点。
meme无非是照片上加两行字,meme这个包本来是练手之作,用来模拟ggplot2的api。结果我后面又实现了字体阴影效果,这次我又带来了外部字体支持。
加载外部字体在R上面主要有extrafont和showtext两个实现,特别是showtext用起来还是非常简单的。我在meme包里写了font_import
函数,内部就是用showtext,只是简单的包装了一下,这样小白用户可以直接下个字体就开撸。有阴影效果,有搞笑字体,就万事具备了,这俨然是个专业的meme工具了。
在《CS7:Genomic coordination的富集性分析(1)》说到了seq2pathway这个包,其实是两部曲,seq2gene->gene2pathway,无非是把测序片段用临近的基因注释,包括和TSS overlap的基因,宿主基因,上下游的基因等,然后拿这些基因跑ORA,做富集,仅此而已,这个包支持的物种极有限,《CS4:关于ChIPseq注释的几个问题》这一文中讲到ChIPseeker支持所有有基因组注释的物种,而《clusterProfiler for enrichment analysis》也支持所有物种(即使你自己跑的电子注释,也能支持),那么使用ChIPseeker来做基因注释,然后衔接clusterProfiler就可以支持所有物种的测序片段进行功能富集分析了。
《CS3: peak注释》本身就支持几种注释,另外我写了一个seq2gene
的函数,套用seq2pathway
的思路,把一个基因位置上所有关联的基因全部返回来,我们可以使用它去把基因位置信息转换成基因列表,然后用于富集分析,还是熟悉的味道,还是熟悉的配方🦄
取子集对于进化树可视化来说是非常常见的,我们要区分内部节点和外部节点,我们也可能想针对某些特点的节点进行注释。
ggplot2现在所有图层都不支持直接取子集,所以呢ggtree就自己定义了一些修改的图层,包括geom_text2
, geom_label2
, geom_point2
和 geom_segment2
,这些图层和ggplot2的版本唯一差别就是支持取子集。这样对于我们做注释来说,就更方便了。
比如说我想给内部节点打点,可以用:
ggtree(tree) + geom_text2(aes(label=label, subset=!isTip), hjust=-.2) +
geom_point2(aes(subset=!isTip), color="red", size=3)