小伙伴发来这个图,问我是不是bug,这真是犯了程序员的社交礼仪。

你如果对一个程序员说,“你的代码有bug。” 他的第一反应是:

  • 1. 你的环境有问题吧
  • 2. 傻逼你会用吗。

如果你委婉地说:“你这个程序和预期的有点不一致,你看看是不是我的使用方法有问题。”

他本能地会想:“操,是不是出bug了!”

这显然不是bug,这是绝大多数人对ggplot2的误解,他们认为用xlimylim是放置一个窗口去看你的图,然而在ggplot2是限定一个窗口去过滤你的数据,并重新画图!你的数据被过滤了!如果是放置窗口在图上,一条线从A到B,如果B在窗口之外,那么线被截断了,你看到半条线,但如果是过滤数据呢?B不复存在,那么线条A到B也不复存在,没有B,A到B的线画不出来。就是这样,所以这绝逼不是bug,而是程序员本能反应的第二种情况,你用错了。

那么怎么样不过滤数据,而只是设置可视化窗口呢?你基本上很少看到有人这么用,因为几乎99%的人都只知道xlimylim,一般人我也不告诉他,快点拿去小抄把下面的代码记录一下。

Continue reading

王八拳编程及其它

什么是王八拳

王八拳是四肢生物,包括人类天生会的一种本能打斗方式,男女都会,老少皆宜。 – 百度百科

显然从定义上来看,这是一套在人类存在以前早已有之的古拳法,当然做为人类我们还是希望找到人类创始的起源,给人类找一点体面。

据(百度百科)说,有三种可疑的起源说法:

  • 起源一:王朔的《看上去很美》中学会的一种中国古拳法。这种拳一般流行于幼儿园中,打这种拳,讲究的是打拳的小朋友眼睛紧闭,双拳握紧,两条胳膊以肩为圆心,向前乱轮圆圈,远里看就象乌龟爬坡爬不上去乱蹬的那个样子。这种拳一般不以击中目标为目的,主要是以一种盲目的抡拳动作在气势上威吓对你有攻击企图的小朋友。而如果打拳者在使出这种拳法的时候拌以大声的哭叫,更可以极大的增加威吓对方的力量。
  • 起源二:一夫多妻制的中国农村妇女发明的一种古拳法,起源于于公元前5世纪,具有广泛的妇女基础,王八拳吸取了猴、狗、猪诸拳种之长,把形意拳的手法、手型、步型、步法、腿法、平衡、跳跃等动作规格化。它的特点是姿势绝不优美,动作绝不快捷,出手阴,跳得低,蹦得不远。它的内容包括挠、掐、咬三种动作,还有一定数量的击打敌人下三路的跳跃、跌仆、滚翻动作。长拳在技术上有八点要求:①姿势。头正,颈直,沉肩,挺胸,直腰,敛臀,上肢舒展、挺拔,下肢稳定、匀称。②动作。在做踢、打、摔、拿等技击动作时,起止点、路线、力点都要清晰。
  • 起源三:巴塞罗那奥运会前,朱时茂和陈佩斯的表演的著名小品中,“陈小二”以一轮凶残猛烈的正反王八拳与当时的“拳王”朱时茂战成平手,并相约巴塞罗那再战。也正是因为这经典的一战,王八拳才被百姓所熟知。

Continue reading

生信界的网红Stephen Turner在github上有个msigdf的包,我在他写这个包的时候,就写了个gist,连接clusterProfiler,我写gist的时候是2016年的8月,很高兴网红还惦记着我的gist

msigdf这个包把著名的Broad Institute著名的Molecular Signatures Database (MSigDB)数据以data frame的形式打包成R包,这样子非常方便使用,当然他后来没有更新,而一个fork的版本,ToledoEM/msigdf把数据更新为最新版本v6.2,发布于2018年7月。

Continue reading

研究生是考出来的,博士生是联系出来的!

这句话早在10年前我一个师兄就告诉我。早在2006年我去上生面试的时候,我就发现已经有考生早就在实验室干了。反正我当年是fail了,然后我为何没能调剂到军事医学科学院,因为06年的时候,正是裁军的时候,军医科的名额很少,而导师手下也有一名同学初试过了,而且已经在实验室干了一年,名额必须给他。

所以在此处,我想跟大家说,十多年前尚且如此,现在行情只会更差,研究生也要联系了!

Continue reading

画图倒不如手绘

在《漫画版的进化树你见过吗?》一文中,我介绍过一个R包,可以把ggplot2转成漫画风格,今天介绍一个新的包,ggrough,它封装了一个叫roughjs的javascript库,可以把ggplot2转成手绘风格:

require(dplyr)
library(ggplot2)
count(mtcars, carb) %>%
  ggplot(aes(carb, n)) +
  geom_col() + 
  labs(title="Number of cars by carburator count") + 
  theme_grey(base_size = 16) -> p 
p

Continue reading

做学术终究是看脸...

做科研我们不爽的是没有结果,比结果更不爽的是结果不符合预期,故事不知道该怎么编,然而戏真的不要太多,学术不是以预期来驱动的,请尊重一下事实,还有你的小鼠。

we had a quick email exchange about this and I would like to report this. (I appologise for contacting you directly, rather than following the submission guideline). I have a dataset with 6166 proteins of which 201 proteins are upregulated. The problem is that specifying the background proteins using universe argument in clusterProfiler, decreases the number of significant GO categories (28 significant categories without the universe argument and 5 with this argument). At the same time when I use online GORILLA tool I get a lot of categories, with the background:

http://cbl-gorilla.cs.technion.ac.il/GOrilla/kwpgie9l/GOResults.html

and not categories without the background:

http://cbl-gorilla.cs.technion.ac.il/GOrilla/5y4n3hn1/GOResults.html

I am not sure whether this is a bug or not, so I decided to report it here

The dataset is presented below …

> allProtUGO <- enrichGO(gene = upRegProt, OrgDb = org.Hs.eg.db,  keyType = "UNIPROT",  ont='ALL', pool = TRUE, 
                       qvalueCutoff = 0.05)

>identifiedProtUGO <- enrichGO(gene = upRegProt, OrgDb = org.Hs.eg.db,  keyType = "UNIPROT",  ont='ALL', pool = TRUE, 
                             qvalueCutoff = 0.05,  universe = backgroundProt)

>dim (allProtUGO@result)
>dim (identifiedProtUGO@result)
>

要看数据集地请点击此处直达github issue

Continue reading

之前公众号上有人说,我回大陆了会有一波科学上网的教程,今天的推文算一个吧。真的是被你们言中了!

做为Bioconductor包作者,而git push传代码到Bioconductor上是被封的。这很是恼火,随着10月份将迎来新一版本的Bioconductor发布,不能够push代码是多么惨的一件事。

代理其实也挺恼火的,因为各种协议啊,你要各种设置啊,http/https/ssh/git都是各种配置,其实我只要有一个socks5的代理,然后你们所有需要走代理的程序都通过它就好了。

谁特么有空天天在琢磨怎么配置各种不同协议的代理!只要我们想得到的,一般都有人做了。

于是万能的github上找到了proxychains

A hook preloader that allows to redirect TCP traffic of existing
dynamically linked programs through one or more SOCKS or HTTP
proxies

它强制给定程序发起的TCP连接通过事先配置的代理。可以涵盖所有需要代理的情景。就以git为例,没有proxychains的话,就必须为每个协议(https, git, ssh)按照git文档的要求分别设置代理,过程复杂且不稳定。有了proxychains,这些完全可以不用管,当然应用场景不限于git,任何一个需要代理的命令行程序都是一样在运行的指令前面加proxychains完事。

Continue reading

Author's picture

Guangchuang Yu

a senior-in-age-but-not-senior-in-knowledge bioinformatician

Postdoc researcher

Hong Kong