Jupyter——开放科学的未来?
将科学论文提升到一个新的水平。
在最近的一篇文章中,我解释了为什么开源是开放科学的重要组成部分。正如我指出的那样,除了资助机构在使开源成为其战略的关键方面存在巨大失败之外,开源与开放科学的需求和挑战也缺乏类似的互动。自由软件世界在改变资助者的优先事项方面做得不多。但是,在另一方面,通过编写良好的开源代码来支持和加强开放科学,可以做很多事情。
从事科学研究的人员可以从每一段自由软件代码中受益——操作系统和应用程序,以及工具和库——因此,这些代码变得越好,它们对科学家就越有用。但是,有一个开源项目尤其已经对科学家们的工作方式产生了重大影响——Jupyter 项目
Jupyter 项目是一组开源软件项目,构成了可重现和多语言的交互式和探索性计算的构建块。Jupyter 提供的主要应用程序是 Jupyter Notebook,这是一个基于 Web 的交互式计算平台,允许用户创作将实时代码、方程式、叙述性文本、交互式仪表板和其他富媒体结合在一起的文档。
Jupyter 项目于 IPython 在 2014 年由 Fernando Pérez 衍生而来。尽管它最初是 Python 编程环境,但其雄心壮志已大大增长。如今,存在数十个 Jupyter 内核,允许使用其他语言。实际上,该项目本身谈到支持“跨所有编程语言的交互式数据科学和科学计算”。除了对编程语言的这种广泛支持之外,Jupyter 还以其强大功能而著称。它使用户能够创建和共享包含实时代码、方程式、可视化和叙述性文本的文档。用途包括数据清理和转换、数值模拟、统计建模、数据可视化和机器学习。
在某种程度上,Jupyter 项目是终极科学工具,因为它可以在任何学科和多种用途中使用。正如《大西洋月刊》上的一篇文章正确指出的那样,它也可以被认为是利用数字技术的可能性将科学论文提升到新的水平。一个关键方面是它是交互式的——读者可以使用嵌入式代码来探索数据并进行无限的“假设”情景。这是一个如此显而易见的想法,您可能会想知道为什么以前没有这样做过。答案是它已经存在了,尤其以 Wolfram Research 的 Mathematica 的形式存在。
Mathematica 是一个创新且功能强大的程序,但有一个巨大的缺陷:它是专有的。因此,它遭受了所有常见的缺点,其中一个缺点几乎使其不适用于科学:您无法检查代码。这意味着您并不真正知道它为什么会产生这样的结果;您只能相信它。这不是科学;那是巫术。
其闭源性质意味着 Mathematica 无法像开源项目那样利用用户社区。无论 Mathematica 曾经拥有什么优势,开源替代品(如 Jupyter)超越它只是时间问题。实际上,有趣的是,Google Trends 对 Mathematica 搜索和 Jupyter 搜索的比较表明,对后者的兴趣正在上升,而对前者的 Google 搜索正在下降。当然,这是一个不精确的指标,但 总体趋势是明确的:Mathematica,就像 Microsoft Windows 一样,是过去,而 Jupyter,就像 GNU/Linux 一样,是未来。
这不仅仅是关于开源开发的熟悉动态。正如学术界人士 Paul Romer 在一篇有见地的文章中解释的那样,Jupyter 击败 Mathematica 的关键原因在于:
Mathematica 失败了,尽管技术成就斐然,但因为其开发者的规范与其预期用户的规范明显冲突。Jupyter 正在成功,因为开发它的社区的规范与其用户的规范是一致的。
除了其文化之外,Jupyter 的另一个方面使其非常适合开放科学。在列出数十个 Jupyter Notebook(全部可免费访问)的页面上,有一个标题为“可重现的学术出版物”的部分
本节包含已在同行评审文献或预印本网站(如 ArXiv)上发表的学术论文,其中包括一个或多个笔记本,这些笔记本使读者能够(即使只是部分地)重现出版物的结果。
再加上底层代码的透明性,任何人都可以检查出版物的逻辑和结果的能力是开放科学的真正突破。目前,大多数学术论文只能肤浅地阅读。理论上,任何人都可以着手重现最终结论——至少,前提是相关数据集是免费提供的。但是,很少有人会费心这样做,因为没有学术激励来花费所有时间和精力。通过将论文作为动态 Jupyter Notebook 而不是静态文档发布,并附带完整的开放数据集,可以正确检查结果,以及插入其他数据集或调整基本假设。通过这种方式,Jupyter Notebook 是开源、开放访问和开放数据的完美结合。这正是开放科学应该如何运作的方式,但直到现在几乎从未实现过。
Jupyter 环境的强大功能和灵活性使其成为自由软件社区所热衷的那种开放式实验的坚实基础。此外,在这个领域进行编码可能会对使用 Notebook 格式的科学家以及他们产生的科学成果产生重大影响。这种令人满意的智力挑战与现实世界的实际好处相结合,使其成为寻求新的和有意义的挑战的开源编码人员的完美选择。