Virtual Network Computing (VNC) is a special way to remotely control a computer. Like Secure Shell (SSH), a computer user can login to a remote machine on the network and execute commands and access files on the system. However, VNC displays the remote system’s desktop while SSH displays a terminal shell. It may be beneficial to learn more about VNC and similar technologies.
notifier包实现了跨平台的桌面提醒功能,当然它是调用了外部的命令,比如windows使用了toaster,老版本windows使用的是notifu,在linux下使用notify-send,而在OSX下,则调用了terminal-notifier,通过了简单的封装之后,就可以给桌面发布消息提醒了。
比如:
library(notifier)
notify(
title = "15 Packages out of date",
msg = c("You can run update.packages() to update them.",
"Outdated packages: Boom colorspace desc memuse networkD3",
"pbapply revealjs rgl rmdformats timevis and 5 more")
)
效果如下:
导言
本文介绍了ggimage包,允许在ggplot2作图时嵌入图片,并支持aes
映射,可以把离散型变量映射到不同图片。目前有几个包可以使用图片嵌入做图,但都是针对特定的场景,这里使用ggimage来展示在这些特定领域里的应用,ggimage的设计是通用的,并不被特定场景所限定,文末又介绍了用R图标来画出R、用饼图来画气泡图等实例。
图上嵌图片
R 基础图形库(base graphics)可以在做图的时候嵌入图片,使用的是graphics::rasterImage
:
imgurl <- "http://phylopic.org/assets/images/submissions/295cd9f7-eef2-441e-ba7e-40c772ca7611.256.png"
library(EBImage)
x <- readImage(imgurl)
plot(1, type = "n", xlab = "", ylab = "", xlim = c(0, 8), ylim = c(0, 8))
rasterImage(x, 2, 2, 6, 4)
制作了一个banner,用来插入到文后,方便阅读到最后的时候,直接扫描关注。
这图当然用PS一下就可以得到,无非是拼图和加点文字。但做为天天写代码画图的人来说,必然是要纯代码来产生的,而且做科学的人,讲究自动化、可重复性。
就像有些人不理解data scentist为什么讨厌excel一样,觉得无非是工具,没什么好搞阵营的。试想一下,一个分析流程中间有一步要用到excel,需要人工去点点鼠标,这对于讲究自动化、可重复性的data scientist来说是不可接受的。
加载中文字体
为了打几个中文字,需要先加载字体,这里我用showtext。
require(showtext)
font.add("heiti", "/Library/Fonts/华文黑体.ttf")
showtext.auto()
比如下面的代码:
require(ggplot2)
d <- data.frame(x=c(0, 0.002, 0.00575), y = 1:3)
p <- ggplot(d, aes(x, y)) + geom_point() + xlab(NULL) + ylab(NULL)
print(p)
上面图中x轴的文本0.006,这个数字中的6几乎看不到,因为一半过界了。
为什么我要用某个基因组版本?
在上一篇文章中,我用了TxDb.Hsapiens.UCSC.hg19.knownGene
。 hg19的TxDb, 或者有人就要问了,为什么不用hg38?
这个问题,不是说要用那一个,不能用那一个。而是你必须得用某一个,这取决于你最初fastq用BWA/Bowtie2比对于某个版本的基因组,你最初用了某个版本,后面就得用相应的版本,不能混,因为不同版本的位置信息有所不同。
当然如果要(贵圈喜欢的)强搞,也不是不可以,你得有chain file,先跑个liftOver,实际上就是在两个基因组版本之间做了位置转换。
为什么说ChIPseeker支持所有物种?
背景注释信息用了TxDb就能保证所有物种都支持了?我去哪里找我要的TxDb?
我写ChIPseeker的时候,我做的物种是人,ChIPseeker在线一周就有剑桥大学的人写信跟我说在用ChIPseeker做果蝇,在BED文件一文中,也提到了最近有人在Biostars上问用ChIPseeker做裂殖酵母。
首先Bioconductor提供了30个TxDb包,可以供我们使用,这当然只能覆盖到一小部分物种,我们的物种基因组信息,多半要从UCSC或者Ensembl获得,我敢说支持所有物种,就是因为UCSC和ensembl上所有的基因组都可以被ChIPseeker支持。
因为我们可以使用GenomicFeatures包函数来制作TxDb对象:
- makeTxDbFromUCSC: 通过UCSC在线制作TxDb
- makeTxDbFromBiomart: 通过ensembl在线制作TxDb
- makeTxDbFromGRanges:通过GRanges对象制作TxDb
- makeTxDbFromGFF:通过解析GFF文件制作TxDb
面向对象有多种实现方式,R里面就有3种,class-based, method-based, object-based,R6与C++/JAVA一样是class-based的,S3/S4是method-based的,还有一种是object-based的,这在proto包中实现,很多人可能没听说过,但是ggplot2你们一定听过,ggplot2就是object-based的实现,它现在是自己的定制实现,称之为ggproto。
emojifont就是用proto实现的,属于我的练手之作,很高兴深受大家的喜欢。