我还需要和我的猫一起发文章吗?
前些天在朋友圈偶然发现一个有趣的图片及其GitHub,想邀请作者分享相关可视化知识,被婉拒后,只好发任务给学徒,让他们帮我学习,并且分享出来!
下面看(中科院武汉植物园硕士)学徒的表演:
前言
早年一个学术界的段子一直让我印象深刻,有一些作者独立完成了自己的工作,却囿于投稿杂志的陈规,无法只写一个作者,无(愉)奈(快)间(地)加上了自己的猫,或者邀请其他萌萌哒的小助手作为co-authors。而随着时间的发展,根据学科本身的特点,越来越多的学者喜欢独行侠式科研,毕竟,全栈即自由嘛~正所谓一个人就是一个队伍,那么至今生物信息领域中的独行侠有多少呢,让我们看看大神是怎么统计的。
目的很单纯 玩法很多样
进入大神的github,从README文件上看,他可能只是对2019年Pubmed上发表的bioinfomatics相关的文章做了一个数据分析并可视化,但点开代码,运行一下,就发现了新世界,小提琴图下的第一行正在奏响独行侠之歌呢!乍一看,生信领域发表文章,一人即可成团的,还真不少!大神先从NCBI收集了一波数据,然后用R语言进行了统计,最后用经典的R包ggplot2包对自己的统计结果做了可视化。
同时,大神还统计了投稿最多的前20个期刊的发表文章速度,这也是广大投稿人群的关注热点之一了。天下武功,为快不过,投稿也是一样,接收速度深深地牵动着毕业学子的小心脏,这位大神太懂了。
这么有意思 果断重复之
按照README文件说的从PubMed搜索bioinformatics,选择右侧的"send to File",再选择"MEDLINE"格式,按照发表日期排序,选择"Create File".
https://www.ncbi.nlm.nih.gov/pubmed/
这个文件有些巨大,电脑有些处理不了,放在服务器上打开看看,可以看到PMID、作者、接收时间、发表时间、杂志名称、文章摘要等等信息,现在要将其中有用的信息提取出来,这里我们需要的是与每一篇文章PMID对应的杂志名、接收时间、发表时间和作者信息,运用shell脚本提取为文本文件并压缩,导入R的时候出现了一点格式问题,发现是回车符号的问题,使用shell三大小助手之一换掉它。
sed -i s'/
//g' pubmed_author.txt #替换掉文件中所有的回车符号
gzip pubmed_author.txt #压缩
然后将文件都导入Rstudio,进行统计分析。
library(tidyverse)
a1 <- read_tsv("data/01_extract/pubmed_journal.txt.gz", col_types = cols("pmid" = "c"))
a2 <- read_tsv("data/01_extract/pubmed_author.txt.gz", col_types = cols("pmid" = "c"))
a <- a1 %>%
count(journal) %>% #统计杂志个数
arrange(desc(n)) %>% #以n为矢量降序排列
head(20) %>% #选取前20
inner_join(a1, by = "journal") %>% #用journal连a1的其他信息
inner_join(a2 %>% mutate(author_count = sapply(strsplit(author, "; "), length)), by = "pmid") #用pmid连a2的其他信息
现在我们就得到了统计的结果——截至2019年8月26号前的所有含有bioinformatics的文章中,接受投稿最多的前20本杂志接受文章的作者数量信息,接下来就是可视化成第一张图的样子。
在进行发表速度的统计中,导入时出现了一个error,4月31日是不被R识别的,确实4月也没有这一天,改它。
Ra2[13700,3]<-as.Date('2009-04-30',format='%Y-%m-%d') #修改单个单元格
实际上用到的就是这两列信息。
ggplot太复杂,ggpubr考虑下?
实不相瞒,大神的的ggplot用得十分之娴熟,小细节都做得非常精致,新手小白可能只能run一下,那么作为发表友好型的R包ggpubr是否可以让我们真正用起来呢?答案是,随缘吧。
我们来尝试一下,首先按照大神的方法做好统计,选择投稿最多的20个杂志,将pmid和作者信息连接上去,再统计出每一篇文章的作者数。接下来加载ggpubr包,设定变量x和y,主标题和副标题,调整小提琴图的宽度,去掉y=1以下的图,去掉图例,将杂志名旋转75°,代码简单了许多,能够画出一个类似的图,但是数据信息还是没能放到图片上显示出来,我们只能看到生物信息领域的独行侠不少,但是无法从图片直接获得详细数据,这里还需要再钻研一下。
if(!require(ggpubr))install.packages('ggpubr') #安装ggpubr
library(ggpubr) #加载包
ggviolin(a,x='journal',y='author_count', color = "journal",
fill = "journal", title = "Search 'Bioinformatics' on PubMed",
xlab="#Journals",ylab = "#Authors",size = 0.8,width = 1.0,
,yscale = "log10", trim = 1,legend = "NULL",
ggtheme=theme(axis.text.x = element_text(angle = 75, hjust = 1)))
ggsave(filename = "author1.png", width = 12, height = 12) #保存图片
实在是意难平的话,PS一下?皮一下很开心~
小结
从结果来看,现在的科研环境显然允许一个人成团发文章了,这样的独行侠还不少,不用拿无辜的猫凑数啦,R语言博大精深,希望能够画出能展示所有信息的神图,practice,practice,practice!
大神的github地址
https://github.com/yanlinlin82/190825a_Bioinfo-Papers/blob/master/README.md
当然了,如果你在中国大陆,你可能需要神器加成才能成功下载GitHub文件:当 Salmon 构建 index 秒失败时应该反思哪里
又或者,你感兴趣昨天优秀学徒的表演: