可复现的计算科学研究十条简单规则,以及自己的一些经验
《Ten Simple Rules for Reproducible Computational Research》对做计算科学方面研究的同仁有非常好的借鉴意义,本文结合我自己的经验对其阐述。
科学研究的可重复性(replication)和可复现性(reproducibility)非常重要,然而很多科研论文普遍遗漏了对结果可复现性非常重要的实验细节。
可复现性不仅是对所属研究领域的精神上的责任,缺乏可复现性也会成为研究者的负担。对可复现性的良好实践对于让先前开发的方法有效应用于新的数据,或者对代码的复用,以及对结果应用于新项目都非常必要。
科学研究的可复现性确保同行能够重现你的结果,这能增加他人对你的科研工作的信任、兴趣、以及引用。
下面结合我自己的经验对其阐述。
- For Every Result, Keep Track of How It Was Produced
写文档记录每一个分析步骤的所有细节:软件的名称、版本、输入文件、精确的运行参数。尽量写脚本实现分析流程自动化。
- Avoid Manual Data Manipulation Steps
尽量用shell命令或者写脚本,实现数据处理的自动化,避免手动处理。
- Archive the Exact Versions of All External Programs Used
如果可能,打包所有外部程序,比如Interproscan5.0将软件和数据都组织好打包,方便他人使用。
- Version Control All Custom Scripts
运用版本控制系统,如Subversion、Git和Mercurial。比如我在Github上托管了一些开源项目的代码,如果不便公开,实验室内部也可以自己搭建与Github类似的Gitlab。
- Record All Intermediate Results, When Possible in Standardized Formats
这个我深有感触,特别是做大运算量、多步骤的分析时,保留中间结果让整个流程更清晰,也能避免因改变参数等情况花大量时间重头计算,此外也方便查错。
- For Analyses That Include Randomness, Note Underlying Random Seeds
记录随机数种子,这是我最近才意识到的。因为大多编程语言的随机数生成器并非完全的随机,均是伪随机,需要通过设置随机数种子来增加随机性。当随机数种子不变时,能够复现随机数。
- Always Store Raw Data behind Plots
最好把常见的图表绘制程序写成R包,再写R脚本自动读取原始数据来绘图,这样能保证图表风格的一致性,也能提高脚本的可复用性,轻松变换格式应对不同场合。
我同学从她师姐那儿儿只得到图表,没有原始数据,当编辑让他修改图片格式的时候,他就没办法了。
- Generate Hierarchical Analysis Output, Allowing Layers of Increasing Detail to Be Inspected
不仅单单给出最终的结论,还要良好地组织各子结果。文中推荐超文本文件(html文件),Blast2GO便是采用此方法。某家生物信息学公司还专门开发了一套软件来管理分析结果。
- Connect Textual Statements to Underlying Results
集成课题相关的材料,便于追踪课题思路和结果。我觉得可以为每一个课题专门建立网站来管理数据。
- Provide Public Access to Scripts, Runs, and Results
计算方面的论文一般都要提供软件下载、或者在线服务,实验所采用的数据通常也应该提供下载。这样能提高审稿的质量和速度,也能增加论文被接受的机会,也能增加论文发表后被引用的机会,更重要的是有利于研究工作的长远发展。
此外,还有一些文中没有涉及的东西。下面是我的血泪史换来的一些经验:
- 课题数据的文件组织,我常见的组织形式:/backup, /data, /analysis, /scripts/, /paper, /reference, /doc。
- 良好的软件架构/结构,代码的模块化,代码重构,可移植性。
- 编码的规范性,比如Perl要用use strict,要用perltidy格式化代码
- 做完整的单元测试,避免今后后悔莫及。
- 如果数据量太大,要么多线程编程,要么把数据分割。并行计算。
希望对大家有用,欢迎大家补充。
本文转自爪爪《可复现的计算科学研究十条简单规则,以及自己的一些经验》http://blog.shenwei.me/ten-simple-rules-for-reproducible-computational-research/
相关推荐:
- NCBI在线BLAST使用方法与结果详解 2938
- 神经网络术语:Epoch、Batch Size和迭代 527
- Consed的安装与使用教程 465
- 陈连福的NGS生物信息学培训教材V2.1 277
- WGCNA分析使用教程 272
-
***来自外部的引用: 1建立和维护科学名声的十条简单规则 1970-01-01 08:00#2
最新创建圈子
-
原料药研发及国内外注册申报
2019-01-25 10:41圈主:caolianhui 帖子:33 -
制药工程交流
2019-01-25 10:40圈主:polysciences 帖子:30 -
健康管理
2019-01-25 10:40圈主:neuromics 帖子:20 -
发酵技术
2019-01-25 10:39圈主:fitzgerald 帖子:17 -
医学肿瘤学临床试验
2019-01-25 10:39圈主:bma 帖子:58
你赞了!