从基因组到物种的时空变化:2018生物多样性大数据青年论坛见闻

12月18、19日两天,深圳国家基因库举办了“2018生物多样性大数据青年论坛”。我本人有幸作为报告人,参加了此次论坛。

会议规模很小,共16个报告。据召集人杨拓博士说,这是考虑到小型会议更有利于参会者交流。国内从事生物多样性大数据处理的专家很多,但这次邀请的大多数报告人是博士毕业几年内的青年科学家,他们大都在博士期间做了很出色的工作,也取得了丰硕的成果。

当然,像我这样博士毕业8年,并没有在科研一线奋斗的“生态学家”居然能获得邀请,感觉像中了大奖。11月中旬接受邀请以来,我就一直处在惶恐不安中,因为一直想不出特别合适的话题,担心会辜负重托。最后时刻,我终于想到能把自己所在植物标本馆的工作放在大数据背景下,介绍植物标本记录与小标本馆之间的关系,继而分析标本分布数据里问题的来源,并提出相应解决方案。

报告涉及生物多样性大数据分析的方方面面,大部分是对某一个或几个问题的研究成果,即便研究方法类似,所关注的类群也不同,涵盖植物分类学、植物地理学、昆虫地理学、鸟类生态学、植物标本馆学、植物基因组学、动物比较基因组学、物种潜在分布区预测和保护区规划等等。

会议留给人的最重要的印象,在我看来有三方面:

1. 博士生自身努力且经过很好的科研训练之后,能够做出骄人的成绩

车荣晓博士2017年在中国科学院大学获得博士学位,在云南大学入职不久。读博期间,他在青藏高原采集了大量土壤样品,研究微生物在青藏高原草地生态系统中的功能。长期以来,生态系统功能,特别是元素循环,凋落物方面的研究,大多只提到微生物起着重要作用,但是生态学家并不知道究竟是哪些微生物起了作用。而车博士对土壤样品测序,弄清楚了哪些微生物在青藏高原草地固氮过程中起着重要作用,还通过微生物培养实验检验了一系列生物地理相关假说,阐明了相应机制。研究思路非常清楚,结果也令人信服。论文发表在土壤和微生物领域的顶级期刊上。

另一位代表,中山大学杨立博士,通过搜集古代文献以及近现代以来的方志、林业系统内部资料、地方网站等,将物种种群变化的历史信息引入物种潜在分布区预测中。在推断物种潜在分布区时,提出cost layer的方法,将人为干扰因素放入模型,从而优化物种保护规划。杨博士对数据的收集、处理等各种问题都有深刻而独到的见解。在读博时,如果没有系统阅读文献,没有认真钻研数据分析的理论和技术,没有认真钻研研究的问题,是不会取得这样优异的成绩的。

2. 部分领域的软件,我国青年学者已做到国际领先水平

生物信息学自创立以来,我国的科研工作者还很少发表算法,也很少编写软件,这可能跟人才培养模式有很大关系。当初,很多人选择生物学一般因为生物学的数学门槛低,学习过程中,不需要太多数学知识和计算机技能,即使自己想学习,专业课程设置也不一定让人能获得很好的训练,但随着研究的深入,生物数据处理越来越需要数学和计算机辅助,生物信息学对这方面的要求非常高。数学和计算机能力的欠缺,在很大程度上限制了科研人员对算法和数学原理的深入研究,这也成为国内生物信息学研究的一块短板。这种情况似乎正在改变。这次会议中,中国科学院昆明植物所的金建军博士就介绍了他编写的GetOrganelle程序包。该程序包能快速从头组装叶绿体全基因组,算法也是他提出的,相比同类软件,获得结果更准确,需时也更短,软件同时能给出所推断叶绿体全基因组各种可能的拓扑结构,因此很快受到了研究人员的欢迎。在算法和软件上有所创新,才是生物信息学的核心技术,博士研究生在这方面有所突破,是十分难能可贵的。

此外,昆明植物所徐洲锋老师团队开发的手机应用Biotracks可用来记录植物标本采集信息,Kingdonia可用来管理植物标本,也达到了业界领先水平。Biotracks可用手机GPS信号记录轨迹,标注和识别拍摄的植物,自动生成标本采集号,用GPS坐标解析地名,自动生成标本采集标签等。而多个用户还可以在Biotracks上合作开展一些项目。Biotracks2019版不仅可以辅助采集植物标本,更是扩展到其他类群,功能也更完善。该软件将极大推动物种监测等相应的项目。Kingdonia标本管理系统能与Biotracks无缝衔接,用于数字化之后的标本管理以及植物图库的管理。在Kingdonia系统中,植物标本的鉴定信息、名称变动、科属变动等细节问题都已妥善解决。目前,中科院华南植物园、西双版纳植物园已经在使用Kingdonia系统管理标本。Biotracks和Kindonia都是面向用户的需求开发的,所以很多细节更人性化,如Biotracks在手机信号不好的地方也能正常使用,极大方便了野外工作。

3. 基因组学等方面的新技术发展迅速,全基因组测序势不可挡

最明显的例子就是二代测序让全基因组测序较为廉价。DNA已经严重降解的样品,如几十年、上百年的标本也能进行基因组测序,通常是利用二代测序技术生成几十个G的DNA片段,再进行拼接、组装,重建出物种的全基因组。

深圳国家基因库在这方面开展的测序计划十分宏伟,如万种鸟类全基因组计划,就希望在获得现存所有鸟类的全基因组之后,再在基因组水平重建它们的进化历史,通过比较基因组学探讨各基因的功能及其与性状的关系等。

朱鹮,国家一级保护动物,曾处于灭绝的边缘。朱鹮原本是东亚地区一种非常常见的鸟类,分布在秦岭淮河以北、华北平原、东北东部,南到长江下游以及朝鲜半岛和日本,但由于栖息地的破坏,朱鹮种群在上世纪六、七十年代雪崩式衰退。八十年代,我国动物学家在陕西洋县发现仅存的两窝共7只朱鹮,立即开展保育和繁殖工作,在投入大量人力物力之后,朱鹮种群得以逐渐恢复。现存的2000多只朱鹮,均为这7只朱鹮的后代。华大基因的冯少鸿老师对博物馆中保存的朱鹮标本和现存朱鹮中的8个个体进行了基因组测序,分析了遗传多样性的变化。她发现,朱鹮历史标本的遗传多样性要远高于现存种群。虽然现存的朱鹮已恢复到2000只以上,但是由于遗传多样性极低,这个种对疾病的抗性等将存在各种问题,同时,要人为增加遗传多样性是极为困难的。因此,朱鹮种群的维持还需要人为协助。报告中还提到,利用一个种,一个个体的全基因组数据就可以重建该种在过去几十年甚至几万年以来种群大小的变化。结果表明,早在农耕文明成熟之初,人类对朱鹮的种群大小就已经产生了影响。

会议还请到了台湾中央研究院的刘世慧博士,她之前在美国密苏里植物园学习,现在在钟国芳教授研究组。她利用基因组学的方法,研究丁香蓼属(Ludwigia)、秋海棠属(Begonia)下若干个组(section)杂交物种形成和系统发育关系。传统上,发表新种或者进行系统修订多只是基于形态特征,虽然近些年分类学家也都开始利用生物信息学手段建立进化树,如利用叶绿体基因片段以及部分核基因重建进化树,但是一般来说,研究结果仍以描述为主。突破之处在于,刘博士在分类学研究是基于假说检验的:她将一些分类学问题以假说的形式提出来,再用基因组学数据进行验证,澄清了若干杂交种的起源,以指导分类学修订。也许类似的方法将来也会成为分类修订的标准配置。这样一来,植物分类学家不仅要学会描述植物,也必须要在转录组、基因组等水平进行深入探讨,如果真是这样,植物学家的门槛又高了一大截。

报告内容不能一一详述,感兴趣的读者可以参考会议共享的幻灯片。这里只简单提一下其他报告:中科院植物所刘博博士系统收集了东南亚各国的植物标本数据以及志书资料,获得了每个国家的初步植物名录,探讨了东南亚植物多样性的空间分布格局。北京师范大学饶米德博士重建了山茶科的进化树,基于地理分布数据检验了物种分布相关的两个假说。广东省生物资源应用研究所张强博士报道了南岭鸟类群落构建机制的研究进展,特别是物种丰富度、系统发育多样性和功能多样性沿着海拔梯度的变化规律及其可能机制。同单位的权擎博士介绍了中国陆生脊椎动物的系统发育多样性及其分布格局,并分享了关于数据共享,特别是数据格式方面的一些想法。成都理工大学陈圣宾博士介绍了昆虫宏生态学的一系列研究进展。华大基因杨婷博士介绍了瑞丽植物园植物的全基因组测序项目。北京林业大学毛建丰博士介绍了云南松、高山松、油松的地理分布和遗传结构,探讨了植物的适应性和遗传结构的关系,详细介绍了种间杂交及其在物种适应性方面的意义,不过由于我本人着急回香港,报告的最后一部分没有能听完。杨拓博士的《中国被子植物的时空格局》也非常遗憾没有能够听到。

会议唯一一个英文报告是GigaScience杂志的编辑Scott Edmunds做的,主要是推广开放科学(Open Science)和公众科学(Citizen Science),呼吁科学家要把数据要公开,把分析方法公开,把计算机代码公开,从而让普通人重新相信科学,重新信任科学家,这项工作任重道远。Scott关于开放科学的呼吁正好与我本人的想法契合:科研数据要公开,分析方法要写成分析指南,供别人参考,分析用的计算机代码要公开,让别人能够重复你的工作,论文也要开放获取。而科学工作者自身,如果可能的话,也最好能开展一些公众参与度比较高的项目,以推动公众能够进一步理解科研及其重要意义。

想不到的是,虽然本次报告的内容之间很少重叠,但是讨论却非常热烈:每个报告结束后,差不多都有四五个人提问,并且回答问题可能就要十几分钟,这在大型会议是不能想象的。也许确实如召集人杨拓所说,讨论会需要控制好规模和报告时间,这样每个参会人的收获才能更多,效果才能更好。晚饭后,参会人仍然饶有兴致地交流和讨论到晚上十点以后,足以体现此次会议有多么成功。

两天会议一下子就结束了,离开让人非常不舍,总让人有一种意犹未尽的感觉。再次见到陈圣宾、毛建丰、刘博、饶米德、张强等老师同学,也让人感慨时光荏苒,原来,一些同学已经五六年没见了。

本次会议的食宿和路费全部由国家基因库资助,这里一并表示感谢。同时,也要再次感谢杨拓博士的精心组织,感谢会务组热情周到的安排。

2018年12月19日 记于 香港大埔 12月20日 修改

用tmap程序包绘制带指北针、图例和经纬网的采样点地图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
setwd("C:/Users/jlzhang/Desktop/sample_map")
#### 导入所需要的程序包
library(rgdal)
library(tmap)
library(tmaptools)
library(sp)
rm(list = ls())
## 读取地图
country <- readOGR("bou1_4l.shp")
province <- readOGR("province_polygon.shp")
world <- readOGR("ne_50m_admin_0_countries.shp")
# Source: https://www.naturalearthdata.com/downloads/50m-cultural-vectors/
world <- set_projection(world, "longlat")
country <- set_projection(country, "longlat")
province <- set_projection(province, "longlat")
province <- set_projection(province, "longlat")
data(World)
# 城市
city <- read.csv("simplemaps-worldcities-basic.csv", header = TRUE)
city <- city[sample(1:nrow(city), 400),] # 随机筛选400个
coordinates(city) <- ~lng+lat
proj4string(city) <- CRS("+proj=longlat +datum=WGS84")

World$name[World$name == "Taiwan"] <- NA
# 转换为spatial dataframe
# 绘图
tm_shape(world,
xlim = c(60, 140),
ylim = c(0, 60)) +
tm_borders("grey40", lwd = 1.5) +
tm_grid()+
tm_shape(province) +
tm_fill(col = "lightgrey") +
tm_borders("grey60", lwd = 0.8) +
tm_shape(country) +
tm_lines(col="grey40", lwd = 1.5) +
tm_scale_bar(position=c(0.05,0.0)) +
tm_compass(type = "4star",
position=c("left", "top")) +
tm_layout(inner.margins=c(0.12,0.03,0.08,0.03),
legend.stack = "horizontal") +
tm_shape(city) +
tm_bubbles("pop",
col = "red",
scale=.5,
border.col = "red") +
tm_text("city", size=0.5) +
tm_legend(legend.position = c(0.05, 0.08)) +
tm_shape(World) +
tm_text("name", size=1.0)

怎样在Windows10系统中编译和运行r8s

r8s是用于进化树订年的重要软件。然而作者Mike Sanderson只提供了MacOS的可执行程序,对于Windows用户,将r8s从源文件编译为.exe可执行文件,很多人不一定熟悉。这里介绍用Cygwin将r8s源代码编译为r8s.exe的方法。用Cygwin编译r8s软件,之前在Windows XP系统中,我在科学网博客上有介绍过,但是当时生成的r8s.exe在Windows10中已经不能运行。在Win10中,相应的操作也发生了一些变化,因此这里重新撰写了指南。

1 所需软件
本说明是为Window10专业版,64位操作系统而写的。要编译和运行r8s,需要用到的软件包括:

r8s源代码: https://sourceforge.net/projects/r8s/
Cygwin: https://www.cygwin.com/install.html 用于将r8s源代码编译为.exe文件。
示例数据: AAA.nex ,这是nexus文件, 包含一棵需要订年的进化树以及若干r8s命令。
Notepad++: https://notepad-plus-plus.org/download/v7.5.9.html 这是一个加强版的记事本程序,用于编辑nexus文件,查看运行结果。
2 安装Cygwin
Cygwin是Windows下运行的软件,用于模拟Linux/Unix操作系统,常用于将Unix/Linux操作系统下的命令行软件编译为Windows下的可执行文件(维基百科)[https://zh.wikipedia.org/wiki/Cygwin]。由于r8s是用C和Fortran为Linux编写的, 编译时会用到gcc和make,因此需要在Cygwin安装时选取好安装这些组件。

2.1 64位计算机应选择setup-x86_64.exe
img

2.2 双击setup-x86_64.exe开始运行
img

选择从网络安装即可,但是要注意选择合适的镜像,部分镜像链接可能已经过期,或者由于其他原因不能正常访问。

2.3 安装时注意选取安装gcc和make
img

2.4 开始下载并安装Cygwin程序包
img

3 编译r8s
3.1 解压缩已经下载好的 r8s1.81.tar.gz
img

3.2 cd到src文件夹
img

3.3 在Windows查找Cygwin64 Terminal
img

3.4 复制r8s/src的路径
img

3.5 在Cygwin Terminal中输入r8s/src的路径,注意斜杠向右
第一行表示直接拷贝路径不能识别,要转换为向右的斜杠

第一行表示直接拷贝路径不能识别,要转换为向右的斜杠

3.6 输入make,回车,开始编译
img

3.7 编译生成的r8s.exe
img

4 运行r8s
4.1 将r8s.exe拷贝到一个新的文件夹(如run_r8s),注意路径不能有中文
img

4.2 在Window中搜索CMD,即命令提示符Console
img

4.3 用cd转换到新文件夹run_r8s
img

4.4 查看并编辑AAA.nex文件夹的r8s命令模块
命令的相关解释请参考r8s软件书的说明各命令的说明详见 r8s使用指南 http://blog.sciencenet.cn/upload/blog/file/2010/3/201032420201531842.0.pdf

4.5 运行nexus文件中的r8s命令模块
img

4.6 用Notepad++打开生成的out.txt文件
img找到已经校对好分化时间的newick进化树即可。

5 参考资料
张金龙(2010)进化时间的估算:r8s软件使用指南 http://blog.sciencenet.cn/blog-255662-305898.html

黑龙江畔的森林

黑龙江畔的森林 –收到王洪峰博士赠书有感

 

题记:22日晚,收到东北林业大学王洪峰博士的著作《东北主要森林植物及其解剖图谱》,非常感动。回想多年前在黑龙江哈尔滨、尚志帽儿山、平山、七台河桃山、勃利县西大圈、庆安、伊春凉水、五营、牡丹江镜泊湖等地拍照片、采标本,不由得想起那时候的人和事。时光荏苒,这么多年过去了,但一切又好像是在昨天,无尽思念和伤感。希望老师、同学、朋友们一切都好。

 

一百九十六种草木

从黑龙江畔的森林

跋涉九千里

到达南海之滨

 

心意已经收到——

那时

黑夜正在降临

来自北国的一片阳光

照亮了谁的孤独?

 

深秋里的那一天

白桦林一片金黄

山杨睁大了眼睛张望

山葡萄沾满清晨的露水

冻青盼望着初冬的暖阳

 

这一晚

北国森林的呼吸

还有十五年以来

那片森林里

所有的萌芽

所有的绽放

所有的漂泊

所有的热情

所有的收获

夹在黑土地的气息中

铺面而来

 

今晚

北国深秋的阳光

让人年轻了十五岁

倘若能回到那片土地

那一片森林

就一定要在那里生活

直到地老天荒

 

10月23日凌晨 于香港大埔

样方调查数据怎样转换成群落-物种矩阵?

图片

:spaa程序包的data2mat函数可将样方调查数据转换为矩阵,用于计算生物多样性指数 (http://blog.sciencenet.cn/blog-255662-310032.html),但是data2mat只能处理个体数为整数的情况。如果要处理的数据是小数, 该怎么办?

:请参照以下的例子,用reshape2的acast函数转换。下面的R代码先将spaa程序包内置的datasample数据集转换为调查用的长格式,再将长格式转换为矩阵格式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
library(reshape2)library(spaa)
data(datasample)# melt需要将行名作为data.frame中的一列datasample2 <- cbind(plot = row.names(datasample), datasample)# 将修改后的matrix转换为数据记录的常用格式aaa <- melt(data = datasample2,
id.vars = "plot",
measure.vars = 2:ncol(datasample2),
variable.name = "species",
value.name = "abundance",
factorsAsStrings = TRUE)# 因有些样方中物种没有出现, 所以是0.00aaa1 <- aaa[aaa$abundance > 0, ]
head(aaa1)
## plot species abundance
## 1 1 Castanopsis.eyrei 25.58
## 2 2 Castanopsis.eyrei 28.41
## 3 3 Castanopsis.eyrei 39.43
## 4 4 Castanopsis.eyrei 11.53
## 5 5 Castanopsis.eyrei 35.01
## 6 6 Castanopsis.eyrei 51.34
# 将长数据转换为矩阵格式,行(row)这里是plot,置于 ~ 之前, # 列(column)这里是species,置于 ~ 之后。 # value.var当然就是 abundance。# 缺失值用0补齐。bbb <- acast(aaa1,
formula = plot ~ species,
value.var = "abundance",
fill = 0)

谈谈科研论文的追踪、管理和阅读

阅读文献是了解各研究领域内新动态的最重要途径。通过阅读最近出版的论文,研究人员可以了解国内外同行做了什么,怎么做的,得到了什么重要结论等。及时找到感兴趣的专业文献,并尽可能将重要文献吃透,对于研究是至关重要的。

当前,检索文献的主要方式是直接在数据库,特别是谷歌学术搜索关键词,找到关键论文后,再查看引用这些论文的论文,下载pdf全文,甄选后阅读。

随着研究工作的深入,文献也逐渐积累,绝大多数研究人员积累的PDF文件可能达几百个,几千甚至几万个。这么多pdf文件,如果不按照一定规则管理,并按照一定顺序优先阅读,很容易让人陷入文献的海洋。读文献宜精不宜多。时间有限,不能漫无目的地在文献的海洋中漂流。

本文分享一些跟踪、整理和阅读文献的方法,主要是希望对生态学研究生有所帮助。与标题的顺序稍有不同,按照阅读、追踪和整理的顺序介绍。

阅读文献

为什么要阅读文献?

阅读文献的最终目标是为自己在所研究的领域构建最前沿、最深刻的认知。最终目标能否达到,是一个人能否成为一流学者的重要因素。每一位研究人员都要做好文献阅读和整理,这是学术研究能历久弥新的重要保证。

具体来说,阅读文献主要有以下三个原因:

  1. 获得新的认知
  2. 学习新的方法
  3. 熟悉研究领域

这三点就不展开了。而读文献时最重要的一点就是目的明确,也就是知道想从这篇文献中获得什么。

学术论文的常见类别

\1. 研究论文

主要是收集数据,通过一定的方法进行假设的检验,展示结果,讨论。这也是研究论文最常见的格式。研究论文最核心的内容,就是原创性和新的知识。因为这是人们从科学领域获得并且记录新知识的最重要方式。

2. 方法和技术论文

这种论文一般介绍新的软件或者新的方法、新的工作流程或数据标准,如Darwin Core数据交换标准,植物标本图像采集的流程和具体要求等。生态学中常用的vegan程序包,分子系统学中建立进化树的RAxML软件,作者都撰写了相应的论文。论文中介绍软件研发的背景、目的,实现的主要功能以及和其他软件相比的优势等,一般还会提供一个或者几个研究实例。如果软件或算法得到的了广泛关注,文章的引用率往往会很高。

3. 数据论文

一般只介绍数据以及数据采集和生成的过程,或者标准化的过程,并提供初步的统计图表等。例如介绍CHELSA气候图层的论文,介绍植物功能性状数据库TRY的论文等。一般来说,数据都在Dryad, Figshare, Github等网站,或者专门设立网站将数据公开。这类论文可能比较短,而且不包括对数据的深入分析。数据论文也可能是某地区的生物多样性编目,如某地区的物种名录及其濒危等级评估等。

4. 综述

综述是对某一个领域的研究现状进行总结、评述和展望的论文。国际上的主流学术期刊,一般以研究性论文为主,但也会发表少量综述,一般为约稿。部分期刊,如Trends in Ecology and Evolution, Annual Reviews上的论文以综述为主。这些论文,大多是某学者取得很高的学术声望后,由期刊的编辑发邀请函,请该学者围绕领域内的某一问题撰写的。综述论文往往涉及大量文献。一般的研究论文,参考文献数量很少超过100篇, 且一般在80篇以下,而综述性论文,为了详细介绍研究进展等,往往从学科的历史、现状、问题、展望等多方面进行论述,因此参考文献也较一般的研究论文多得多。阅读好的综述论文,有助于快速了解某一个领域的动态,把握学科的发展方向,也能帮忙快速找到以前忽略的重要文献,因此是了解某一领域的首选。

5. 观点述评

一般是学者对某一研究进展,或者现象表达个人观点的论文,在一定程度上接近综述,但由于篇幅所限,很难展示某一领域的全貌。一般来说,对某一问题持不同观点的学者, 可能在期刊的同一期,或者附近的几期内刊登论文。例如植物分类学家Maarten J. M. Christenhusz将蕨类植物的属名分类系统进行了大量合并,而一些蕨类专家对此持反对态度,因此在Taxon杂志上发表论文互相驳斥对方的观点。观点述评一类的论文,当然也要用数据支撑自己的观点,做到有理有据。

6. 编者按

一般是主编对某一期的若干篇论文进行简要的评述,也可能是基于该期发表的论文做进一步的呼吁(如怎样有效保护野生动植物)等。编者按一般是期刊编委会成员或者特邀编委撰写的,对于了解学科动态有一定的指导意义。

7. meta分析

一般是从不同的研究论文提取数据, 再进一步分析,一般也进行假说检验,形式上介于研究论文和综述之间。

读文献的基本要求

无论是读哪种类型的论文,最重要有三点要了解:

  1. 研究人员做了什么
  2. 得到了什么结果
  3. 作者持什么观点

研究论文阅读的顺序

一般来说,论文都可以从头到尾通读。如果时间太紧张,或者对技术细节不感兴趣,则可以按照以下顺序阅读:

  1. 先读摘要,确定是否有读下去的必要
  2. 再看图表,确定结果是否足够吸引人
  3. 再读结论,即论文最重要的信息是什么
  4. 再读讨论,了解结果的意义
  5. 若对材料与方法的细节感兴趣,则应全面阅读全文
  6. 若自己对研究内容与问题不太熟悉,则要从前言开始顺序阅读

阅读笔记

阅读笔记,就是在读论文过程中记录看文献时得到的重要信息以及自己的想法。一般用一两句话总结该论文做了什么,得到了什么结果或者结论,有什么不足等。以后要回忆文献的内容,直接看笔记就能想起来大部分。阅读笔记可在文献管理软件中撰写和保存。

用好文献管理软件

文献管理软件,对于每个读论文、写论文的的学生,都是必须要熟练掌握的。

常用软件包括Mendeley, Zotero, JabRef, Endnote等,只需要选择一种自己认为顺手的软件即可。这些软件一般都包括以下功能:

  1. 自动提取PDF中的文字信息, 通过查询文档的DOI或者对PDF内容进行识别,而在软件中自动填写文献的作者、标题、期刊、页码等信息
  2. PDF的文字部分导入数据库中,以便搜索时能顺利找到
  3. 做笔记的功能
  4. 按照一定格式,在Word, OpenOffice, LaTeX文档中插入参考文献,能极大节省论文撰写的时间。

在文献管理软件中,阅读笔记一般可以和标签一样检索。如果阅读笔记总结得合适,一般在检索时能快速找到文献。

什么时候读论文,每天读多少?

写文章之前一般要大量阅读论文,以确保自己对学科状态有全面和客观的认识。科研人员来说,最好需要养成在空闲时间阅读和思考的习惯,只是要懂得如何选择最适合自己的论文,去粗取精。对于博士研究生来说,最好每天能读一篇文献。

读文献遇到不懂的地方怎么办?

任何人在读论文时,都会有疑惑,或者对概念或者方法等不清楚。如果是关键性的方法,而作者在论文中介绍的不清楚,建议直接联系作者。其他情况下,建议按照以下顺序搜索或者请教问题。

  1. 谷歌 Google。善用搜索引擎已经是信息社会的基本生存能力。
  2. 维基百科 Wikipedia。对于一些基本概念,部分背景知识,维基百科介绍得可能更清楚。不过,因为所有人都能编辑维基百科,相关内容的可信度要经过认真评价。
  3. 在QQ群、微信群、Stackoverflow、统计之都等专业论坛咨询: 这些群或者论坛主要用来求助技术问题,特别是数据处理问题,如R,Python等的问题。国外就有研究生拍毕业照时,致谢Stackoverflow.
  4. 向同行求助。一些科研人员,愿意将自己的代码、模型等在网站上共享,一般来说,他们也非常愿意帮助别人。如果在QQ群、微信群、专业论坛等都没能解决,则可以尝试联系这些人,看能否帮忙解答问题。

文献检索

怎样获得研究领域的最新进展?

一般包括以下几种方式:

  1. 关注在谷歌学术设立个人页面的主要科学家,并让谷歌学术在作者有新论文发表时,发email提醒;
  2. 在Google Scholar创建若干核心论文的引用提醒(citation alert),这些论文在有新的引用后,谷歌学术就会发邮件提醒。
  3. 在ResearchGate, Twitter, facebook上跟踪感兴趣的学者;
  4. 订阅Wiley, Springer, Science Direct, Oxford等数据库中感兴趣期刊的Content Alert。有新论文发表时,系统会发邮件通知;
  5. 订阅期刊的RSS,有新的论文上线时,通过RSS Reader 等就能方便查看;
  6. 浏览学会或者期刊的网站或者博客,如英国生态学会(BES),Methods in Ecology and Evolution网站等都有相应的博客,介绍出版的重要论文;
  7. 专业论坛、QQ群、微信群等分享的文献

寻找文献的过程

通过Google Scholar等找到引用率较高的核心论文之后(又称为种子论文, seed paper),继续查找引用这些文献的论文,以及这些文献本身引用了哪些论文,防止将重要文献遗漏。综述论文一般可以作为种子论文,帮你找到更多的论文。

怎样下载论文的全文?

一般是在Google Scholar检索到之后,打开期刊的网页,找到DOI,然后在SCI-Hub搜索DOI,就可下载到PDF全文。绝大部分英文论文都可以在Sci-hub下载到全文,由于Sci-Hub侵犯了一些出版商的知识产权,目前不清楚还能坚持多久。当然,如果能够合法下载,可能还是合法下载更好。

文献整理

  1. 综述或者引用率很高的研究论文要归类为核心论文,这些是必须要精读的。可在文献管理软件中添加特定标签,方便查阅。
  2. 下载的论文应立即导入文献管理软件,并按照关键词分类,并加上适当标签,便于查找和做笔记。
  3. 用文献管理软件给PDF重命名,建议为 “第一作者,年份,杂志”,这样,不但在管理软件中能快速找到文件,在单机版搜索软件(如Everything)也能快速找到。Zotero, Mendeley等软件都具有批量重命名PDF文件的功能。

参考:

本文同时在ecoinformatics上发布

img

怎样为学术期刊审稿?

本文主要根据Elisabeth Pain编写的 How To 系列内容编译(见文末网址)。

为什么要为学术刊物审稿?

  1. 评价稿件质量,确保研究的原创性和创新性
  2. 提高稿件质量,减少错误使用研究方法或错误阐述研究发现等
  3. 帮助编辑确定稿件是否应该发表

审稿对审稿人有什么好处?

  1. 了解学科最新进展
  2. 促进职业生涯的发展,特别是年轻学者可在审稿中提高自己的业务水平
  3. 提高批判性思考的能力

匿名审稿重要吗?

答:重要。

  1. 审稿最好匿名,因为作者不一定很客观地看待审稿意见,稿件被拒时可能会“记仇”。这对正处于事业上升期的年轻人来说,可能会有所影响。
  2. 要遵守期刊的审稿规定,一般不要向外透露审稿信息,以免招来不必要的麻烦。

审稿的要求

  1. 公平公正:不要因为作者的国籍、种族、性别、籍贯、宗教信仰等对论文本身做出有偏颇的评价
  2. 客观与实事求是:对稿件不要因个人对研究方向的偏爱与厌恶,做出不恰当的评价
  3. 审稿意见要有建设性:最好对稿件本身进一步提升有所帮助,如研究方法中的问题,结果的展示等提出建设性的意见
  4. 写清楚稿子的可取之处与不足之处:这是编辑评价是否接受发表该稿件的重要参考

什么时候接受审稿?

  1. 在自身的专业知识和技能范围内,确实能为稿子提供建设性的意见或者建议
  2. 对稿件报告的研究要很感兴趣
  3. 有足够的时间,能保证在规定的时间内完成
  4. 无利益冲突,如果作者里面包括现在或者三年以内的同事、主要合作人,或者同学校的研究人员,或者存在其他方面的利益冲突,应该避免审稿

审稿的一般流程

  1. 收到审稿邀请,现在一般是通过电子邮件发送邀请函
  2. 根据题目和摘要,确定是否接受审稿。接受审稿后,可查看全文PDF
  3. 快速阅读全文,获得第一印象
  4. 精读全文,全程在PDF上标注
  5. 检查格式并标记
  6. 撰写审稿意见
  7. 检查审稿意见
  8. 在审稿系统提交审稿意见

审稿过程中要关注的主要问题

审稿之中最关键是对研究质量的客观评价。

  1. 前言部分,研究的问题的重要性是否阐述清楚了?
  2. 为阐述研究背景,相关的重要文献是否都已经引用了?
  3. 要检验的假说是否符合逻辑与当前主流认知?
  4. 其他研究者根据材料与方法部分的描述,是否能重复该研究?
  5. 数据的样本量是否充足?研究方法是否正确?是否有错漏?
  6. 结果部分的文字部分是否清晰而条理?是否与图表内容重复而存在冗余?
  7. 图表设计是否合理?单位是否正确?图例是否清楚?
  8. 讨论部分是否将新发现放在大背景中,以突出新发现的意义?是否存在过多异想天开?
  9. 各部分之间衔接是否顺畅?是否互相矛盾?
  10. 讨论部分是否在某些方面阐述得还不够充分?或者存在某些重要的纰漏?
  11. 结果能否支撑结论?
  12. 附件中的内容是否有效补充了正文的内容,附件文档中是否有很多错误?
  13. 论文处理动植物的方式是否妥当?如:是否有虐待动物?是否暴露了珍稀动植物的位置?

稿件的格式

  1. 格式是否符合刊物的要求?
  2. 行文否流畅,无语法错误?
  3. 图表设计是否符合刊物要求,大小和分辨率是否合适?
  4. 文献格式是否正确?
  5. 物种的学名等是否正确拼写?是否需要斜体?缩写是否正确?

写审稿意见的注意事项

  1. 先写总体感受,即一般性的意见。这篇稿件主要是关于什么的,有什么发现。读者会不会对稿件感兴趣
  2. 列出论文各部分存在的主要问题,特别是样本量、统计方法等方面的缺陷
  3. 指出或者建议语法问题等能够即时修改的问题
  4. 避免使用强烈感情色彩甚至带歧视性和侮辱性的词汇评价稿件,更不能借此攻击稿件作者
  5. 审稿意见中的对稿件的每一句评论,都要有充足的证据
  6. 审稿意见写成之后,要问一下自己:如果我是作者,愿意看到自己的稿件被别人这样评价吗?

怎样处理语法错误?

  1. 如果正文的语法错误非常多,审稿人通常不用全部指出错误,而是建议作者认真修改
  2. 如果语法错误很少,发现之后可指出,并给出自己的建议
  3. 注意不要用自己的行文风格要求作者重写句子。虽然这可能是在帮作者,但是这会让人感觉受到冒犯

审一篇论文要多长时间?

一般加起来要几个小时甚至一天左右的时间,但一般会分开在几天中完成。

参考网址

本文同时发布在ecoinformatics微信号

R绘制中国地图:你去过哪些省份? (tmap版)

前段时间,一个去过哪些省份的微信小程序刷爆朋友圈:用户设定去过的省份之后,后台就自动生成地图。本人之前编写了ggplot2版本的R代码,用来绘制去过哪些省份。不过ggplot2的代码较为繁琐。这里给出tmap版。相比ggplot2,tmap的代码更容易理解。

本代码也适宜批量生成物种分布图。闲言少叙,直接贴代码了。

数据下载:http://blog.sciencenet.cn/home.php?mod=attachment&id=208159

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
setwd("...")
library(rgdal)
library(dplyr)
library(tmap)
library(tmaptools)
rm(list = ls())
## 直接读取地图shp文件
country <- readOGR("bou1_4l.shp") ## 国界
province <- readOGR("province_polygon.shp") ## 省界
sort(province$ID)
## 指定去过的省份
visited <- c( "Beijing", "Chongqing", "Fujian", "Guangdong", "Guangxi",
"Guizhou", "Hainan", "Hebei", "Heilongjiang", "Henan",
"Hubei", "Hunan", "Jiangsu", "Jiangxi", "Jilin", "Liaoning",
"NeiMongol", "Shanghai", "Sichuan", "Tianjin", "Xianggang",
"Yunnan", "Zhejiang")

province$ID <- as.character(province$ID)
province$ID2 <- ifelse(province$ID %in% visited, "Visited", "Not Visited")
province$ID2 <- as.factor(province$ID2)
## 投影转换:西安80坐标系(EPSG 2343),高斯-克吕格投影
country <- set_projection(country, projection = 2343)
province <- set_projection(province, projection = 2343)

## 保存高分辨率地图
## tiff(filename = "visitation.tiff",
## width = 4200, height = 4600, units = "px", pointsize = 12,
## compression = "lzw", res = 600)
## 显示地图

tm_shape(country) +
tm_lines(col="dodgerblue3") +
tm_shape(province) +
tm_fill("ID2",
title ="Provinces I have been to:",
palette="Pastel2") +
tm_borders("grey40", lwd = 1) +
tm_scale_bar(position=c("left", "bottom")) +
tm_compass(type = "4star", position=c("left", "top")) +
tm_layout(inner.margins=c(0.12,0.03,0.08,0.03))

## 保存地图
dev.off()

参考

为什么要开通“ecoinformatics”公众号?

十年前,不少人对研究所用软件的操作过程和计算机代码讳莫如深,当时中文学习资源也不多。不仅如此,也有一些人不太理解软件背后的原理而用错数据分析方法,以至影响了研究。与此同时,大量硕士生、博士生在科研过程中缺乏正确的训练和指导,十分无助。

我从那时开始写博客(http://blog.sciencenet.cn/u/zjlcas),主要记录数据分析方法以及自己对一些问题的感想。十年之间,我编写或翻译了数据分析博文150篇左右,通过电子邮件回答问题1800多封。

十年来,生物多样性研究中的数据的整理、统计分析方法、理论等发生了很多变化。现有的数据分析技术和方法,虽然有很多现成的资料可供参考,可实际操作上仍有很多困难。为此,博客中的内容仍需不断更新与完善,这在排版时比较麻烦,而且科学网博客与读者之间的互动也不是特别方便。

微信公众号的影响力已经逐渐取代博客。在若干老师和同学的鼓励下,我在2018年10月1日开通了公众号ecoinformatics。本公众号的目标是促进国内生物多样性和保护生物学的相关研究。推送的内容将涉及:生物多样性研究进展,生态学数据资源分享,数据分析笔记和本人对一些问题的评论。

未来的生态学研究应该是开放的:从论文、数据、计算机代码各方面都应该开放。未来的生态学应该以团队合作的方式实现的,做到“各尽所能,各出所知”。希望本公众号能够和我国生物多样性研究共同步入开放时代,也祝我国生态学家们做出辉煌的成绩。

天文爱好者Brandon Rhodes和他的程序包PyEphem, Skyfield

昨天在Youtube听了Brandon Rhodes的讲座 ,Skyfield and 15 Years of Bad APIs(https://www.youtube.com/watch?v=FVEEndIwOSA ),颇有感触。

Brandon Rhodes是Dropbox公司的高级架构师, 精通Python,同时也是一位天文爱好者( http://rhodesmill.org/brandon/ )。他在2000年左右编写了一个Python程序包PyEphem并且维护至今,这个程序包现在还在使用。PyEphem主要用于计算天体的位置与星历表,例如某地日出日落时刻,天体升降和中天时刻,给定轨道根数计算小行星、彗星和人造卫星在某一时刻、某一历元下的位置以及各种天文坐标系之间的转换等。

PyEphem程序包的名称来源于Ephem软件(http://www.clearskyinstitute.com/xephem/)。Ephem是用C语言写的, Ephem是Ephemeris,即历书的缩写。Ephem软件的作者Elwood C. Downey是位天文学家,在上世纪九十年代编写了Ephem软件并公布了源代码。经过Elwood允许,Brandon Rhodes将Ephem中用于天文计算的引擎libastro提出来, 利用Python胶水语言的特性,编写了一个Python外壳,用于历算。他将这些Python脚本打包发布,就是我们见到的PyEphem。

PyEphem程序包的星历表基于VSOP87行星运动理论(https://en.wikipedia.org/wiki/VSOP_(planets)#VSOP87), 精度已经非常高。在VSO87星历表中,在历元2000.0前后各4000年,水星、金星、地月质心和火星的精度在1角秒以内;木星、土星前后在历元2000.0各2000年,精度在1角秒内;天王星和海王星,前后各6000年,精度在1角秒以内。这样的精度对于绝大多数天文观测、望远镜控制以及中长期的日月食计算都绰绰有余了。但完美主义世家出身的Brandon Rhodes对PyEphem的表现并不满意。

一方面,由于PyEphem的运算核心是用C编写的,而C是一种编译语言,在不同的平台上编译时难免出现各种问题。而且Ephem本身编写的时间比较早,那时候C 语言有些特性现在某些版本的编译器可能已经不支持了,如Windows下用MinGW就不能正常编译PyEphem,而用Visual Studio就可以。虽然大部分人绝大多数时间都用不到Visual Studio,但为了从源代码编译PyEphem,Windows用户不得不安装几个G的Visual Studio。Brandon想了各种办法编译主要平台的二进制版本供用户下载使用,但是某些操作系统不能编译的情况仍然困扰着他。求助他的人太多,光PyEphem程序包相关的问题,他就收到2000多封邮件。

另一方面,随着Python语言的进一步发展,人们逐渐转移到Python3。而从Python3上调用代码的写法和方式的标准来看 (应用程序界面,Application programming interface, API), PyEphem的函数参数以及调用方法等有时让人十分费解。与此同时还有各种各样的潜在问题,一不留神, Python对象就可能因调用某种方法(Method)而发生了变化,以致而得到意想不到的结果,因此这些是要避免的。

为此,Brandon非常想用纯Python重新写一遍PyEphem,不过重新编写一个功能与PyEphem完全一样的程序包,本身就非常无聊,所以他一直没有动力。直到有一天,有位网友问他关于PyEphem结果精度的问题,咨询他怎样将计算结果与瑞士星历表比较,于是他进一步检索到了美国国家航空航天局喷气推进实验室(NASA JPL)的星历表源数据。他获得这些星历表后大喜过望 ,立即着手编写新工具。

JPL是干什么的?了解航空航天的朋友知道,JPL是负责为美国的太空探索计算星历表的,也就是说NASA所发射航天器的轨道,要经过JPL设计并计算,因此,JPL对星历表准确性的要求极高。JPL将一系列高精度星历表公开了,用户可以免费下载和使用(https://pypi.org/project/jplephem/), 其中,著名的 DE405星历表覆盖公元 1600年 到2200年的大行星运动数据。既然星历表的元数据已经公布了,就很容易通过说明文档,计算出星历表规定范围内行星的位置。而通过JPL的DE系列星历表计算大行星位置,直接写一个小程序包是最好不过了。于是Brandon编写了jplephem程序包。他说,与其用很长时间埋头写大项目的代码,一年的之中什么都拿不出来,不如将项目分割成小项目,写一段时间代码就先拿出来,以小项目的形式管理,这样才不至于让自己过于焦虑。

在使用JPL的星历表之后,Brandon不断编写PyEphem类似的功能,这次是用符合现代编码规范,且易于理解的python代码,于是就有了Skyfield程序包 (http://rhodesmill.org/skyfield/)。

Brandon非常看重skyfield。在Skyfield的主页上,他甚至直接说, skyfield对于天文计算来说是“优雅”的。而skyfield程序包,也确实是用优雅的方式进行各种星历表计算和转换,值得天文爱好者们了解和学习。有了它,在个人电脑上实现更高精度的天文计算成为可能。

PyEphem和skyfield受到天文爱好者的欢迎,在业余甚至专业天文学界都有很大的影响,这为Brandon Rhodes赢得了盛誉。他在演讲中提到,有一天,他收到一封求助邮件,发信人向他咨询,能不能帮忙解决美国海军天文台的NOVAS程序在Python中运行的问题,而发邮件的人居然是NASA某实验室的主管。这让他大为惊讶,不过这个忙最后还是帮了。现在在Pipy上novas的Python包 (https://pypi.org/project/novas/), 也是Brandon帮忙整理的。

这里再补充两句,美国海军天文台(United States Naval Observatory)成立于1830年,是天体测量学最为权威的机构之一,负责守时和授时,发布高精度的天文数据。香港天文台从1984年开始编写的《香港天文年历》(https://www.hko.gov.hk/gts/astron2018/almanac2018_index_uc.htm),部分内容就是根据美国海军天文台的数据而计算得出的。NASA的实验室主管请Brandon帮忙解决novas的问题,足以证明他的影响受到官方的重视。

不过,大家不要忘了,其实Brandon的正式职业是高级架构师,天文历算只是他的爱好,他只是一位天文爱好者而已。