大学教授力挺抄袭,强行洗地到裤衩都不要了,到底图什么?》这篇文章发出来之后,引起大家讨论,有一些小伙伴截了屏给我看。所以我想有必要再讲几句,我这篇文章写两个方面,一方面是重用代码,一方面是文章抄袭,这两方面可以是不相关的,这里的文章抄袭并不特指你抄了代码。

X教授《如何姿势正确的使用他人代码?》,总结起来两个点,一是开源代码随便用,二是文章有引用/致谢就OK。这两个点都是错误的。


Continue reading

连遮羞布都不要,难道这是个一被子的故事?

事情开始于我整理并曝光了西安电子科技大学一个讲师读在职博士期间抄袭了两篇文章,并顺利拿到学位晋升为副教授的故事。

这个故事很精彩

亮点1: 期间发现了一条抄袭链,GOSim被DOSim抄,而DOSim又被HPOSim抄,抄袭者都在文章中把抄来的算法实现当成自己做的东西来介绍。

亮点2: ppiPre抄袭GOSemSim的文章,我跟BMC Systems Biology反馈了,而编辑部竟然各种包庇,最后抄袭者两面三刀,和编辑部黑箱操作,在未告知我的情况下,出来一个洗地的Erratum,把抄袭说成不好意思,忘记引用了。

整个过程连载于以下四篇文章中:

如果想要分享这整个过程,可以分享以下这个汇总的文章:


Continue reading

Dear GuangChuangyu,

I’m trying to use the clusterProfiler package for GSE analysis on DGE data obtained from RNAseq. While I can run enrichKEGG, I’m unable to run gseKEGG basically because I don’t know how to obtain an order ranked gene list.

I work on R. I have a dataframe or matrix with gene names, log2 fold change values, pvalues and adjusted pvalues among others.

How can I get the order ranked gene list to feed in gseKEGG?

Moreover what is the more reliable way to obtain functional insight about each sample? enrichKEGG or gseKEGG?

Thank you in advance for your help.

best regards

bruno saubaméa

今天收到一封来自Université Paris Descartes的求助信,这个问题我被问过好多次了,显然很多新手都有这问题,根本不知道该怎么跑GSEA,搞不清GSEA的输入是什么。


Continue reading

薛宇这篇《BMC Systems Biology没有学术不端》写作水平还真是高啊,先来个不拉干的小事情,用了软件没引用,来铺垫并以此对抄袭事情进行定位/定性。再来一堆论据和结论不相关的逻辑来论证,好像很有道理的样子,不明真相(没有读我的4篇连载)的群众很容易就掉坑里了。

首先讲了他和R教授的故事,那只不过是用了工具没引用而已,和抄袭是两码事!试图把抄袭写成与此类似的「忘记引用」!

比方说我给R教授写信,就只是问有没有用我的工具。都是聪明人,话不需要说的那么透,点到为止就得了。那您要问,如果人家不回信或者耍赖说没用呢?很简单,三天不回信我会立马写信杂志社,说作者用了我的东西并且刻意没有引用也没有致谢,态度极其恶劣建议撤稿,并且把我三天前发的信抄给编辑作为证据。

为了把抄袭这种严重的事情与用了工具没引用这种简直太常见且不值一提的小事做类比,薛宇教授是用心良苦啊,把小事给说大了!

这就是牛逼之处,我不得不服,用小事与大事类比,将大事说小!将小事说大,让大事化小于无形中。

有德国学者使用了GOSemSim的代码设计了预测蛋白质相互作用的工具IntScore,发表在2012年的核酸研究上,作者专门写了一节来介绍GO的语义学相似性并且标明引用,所以这篇文章符合学术规范,没有问题。我们再看看DOSim,这篇文章里注明了GO注释的分析使用的是GOSim并且加了引用,所以也没有问题。

这段话很有水平,首先是不对等类比,以2012年NAR的符合学术规范的文章来类比一篇抄袭文章,试图化抄袭于无形中。

我们来看所谓的一节专门介绍和标明引用是怎样的:


Continue reading

有魔性的图来一发

不知不觉中我已经介绍了很多R包,有学术上的ChIPseekertreeioggtreeclusterProfilerGOSemSimseqcomboMSnbase等,当然免不了有吐槽还有抄袭有学R的更新R包,也有桌面小工具,还有画图的ggplot2怎么配色嵌入图片(比如pokemon), 以及emoji作图,也有好玩的贴纸装逼利器


今天要介绍另外一个R包,magick,是R里面玩图片的利器,今天要讲的是在静态图片上加动态图片,这样我们平时画一些学术的图,就可以加点搞笑的动态元素上去,有利于在博客和公众号上装逼。

无非是给我一张静态图当背景,再来一张动态图加在上面,为了让代码可以重用,首先打包个小函数:

add_gif <- function(bg_file, gif_file, out_file, offset, bg_size="500", gif_size="150") {
    library(magick)
    p <- image_read(bg_file)
    g <- image_read(gif_file)
    g <- image_scale(g, gif_size)

    background <- image_background(image_scale(p, bg_size), "white", flatten = TRUE)

    frames <- lapply(g, function(frame) {
        image_composite(background, frame, offset = offset)
    })

    animation <- image_animate(image_join(frames))
    image_write(animation, out_file)
}

然后就可以来玩了,首先用上次讲到的dotplot做为底图,再从网上找一个动图,调用函数,bingo:


Continue reading

陈同的‘生信宝典’公众号出了篇《R语言学习 - 富集分析泡泡图》,搞个shell脚本,一步绘图。讲了这个脚本可以适用于clusterProfiler和其它软件的富集结果。

浑身都是硬伤,我都不想吐槽,但由于作者邀请我提点,那就吐槽模式全开。

一个command出图,小白已经哭晕

从出的图看,应该是ggplot2画的(就算猜错,要吐槽的依然正确),小白在web-server上做了分析,存结果为xls文件,拿你这脚本,一跑报错。读xls文件(别告诉我你跟用户说读xls但其实是个tsv)和画图的依赖关系没解决!用户友好在那里?不要告诉我你的脚本0依赖,有个shell就能跑,即使我们熟悉的各种命令,很多都是独立程序,不关shell什么事。

所谓的一步出图

既然讲了clusterProfiler,那么clusterProfiler用户笑而不语了。我们用dotplot不也是一条命令出图,为什么要退出R,去跑你的shell脚本,这过程还得转换数据,存储数据。最后的这一步,是前面+N步为代价的。


Continue reading

Author's picture

Guangchuang Yu

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

Postdoc researcher

Hong Kong