反应性,可重复,协作:计算笔记本进化

2021-05-05 20:44:16

自Ipython笔记本发射以来,今年标志着十年。开源工具,现称为jupyter笔记本,已成为一个非常受欢迎的数据科学套件,其中包含数百万笔记本电脑,存入GitHub代码共享网站。

计算笔记本在单个文档中组合代码,结果,文本和图像,产生了Mathematica软件包的斯蒂芬Wolfram,称为“计算论文”。以及是否使用jupyter,mathematica,rstudio或任何其他平台写作,研究人员可以使用它们来迭代数据探索,沟通,教学等。

但计算笔记本也可能令人困惑和促进编码实践不良。他们难以分享,合作和繁殖。 2019年研究发现,GitHub上仅为863,878名公开的Jupyter笔记本电脑的24%可以成功地重新执行,只有4%的结果产生了相同的结果(JF Pimentel等人。2019年IEEE / ACM第16届国际挖掘软件存储库国际会议( MSR)507-517; IEEE,2019)。

“笔记本是凌乱的,”俄勒冈州俄罗斯州立大学的计算机科学家Anita Sarma说,Corvallis学习人机互动。 “你写的东西,你留下了旧的硬壳代码,难以弄清楚哪些细胞以哪种顺序执行,因为你正在尝试不同的东西。”

但是一套不断发展的平台和工具旨在平滑这些粗糙的边缘。一些制作笔记本电脑的反应性,使得代码在软件变量变化时重新执行;其他人专注于协作和版本控制。但所有所有人都为研究人员提供了探索,记录和与同事和世界分享数据的创新方法。

对于Sergei Pond,笔记本提供了一个用于记录大流行遗传学的出口。池塘是宾夕法尼亚州费城寺庙大学的计算生物学家,已经创造了与SARS-COV-2相关的大约三十名文件,这是导致Covid-19的病毒。他说,“我的默认设置”是“写下交互式笔记本并将其发送到我的合作者,以便他们可以玩数据,[所以]他们可以立即看到有什么。”

他的笔记本平台被称为可观察。它位于加利福尼亚州旧金山,并于2019年由两个Google Alumni成立:Mike Bostock,D3 JavaScript库的开发人员今天为Web提供了许多互动数据可视化以及旋律Meckfessel。该公司的基于Web的笔记本系统允许用户创建,共享和重用以JavaScript编写的复杂的交互式可视化,由Web浏览器理解的编程语言。根据Meckfessel的说法,每个月的用户的“数十万人”这样做。

与Jupyter不同,将代码传递给执行它的外部'内核',可观察代码在浏览器本身中运行。 Bostock说,这使得平台快速响应。但是因为JavaScript不是典型的数据 - 科学语言,研究人员经常使用可观察到的数据处理,而是用于可视化。

例如,池塘使用可观察到的分享彩色地图,图形,蛋白质结构和序列对齐,该序列对齐表示他在其他软件中生成的数据。可观察的模块化结构意味着其他程序员可以轻松地将这些可视化应用于自己的数据。但池塘的笔记本电脑也利用了另一个关键可观察功能:反应性。

假设您有一个绘图一行的Jupyter笔记本。在一个代码单元格中,您定义了斜率和y截距;在接下来,您绘制了图形。笔记本结构允许编码器返回到早期的单元格,以在绘制绘图后更改斜率。但这种变化不会导致图形自动重新绘制;用户必须手动重新执行绘制它的单元格。

此工作流程可以导致“状态问题”,其中笔记本电脑的输出不会反映其代码 - 例如,如果用户在执行后定义变量的单元格,则会发生。在2018年,Joel Grus是华盛顿西雅图,华盛顿西雅图人工智能研究所的软件工程师突出了这一行为,以及随后的困惑,在广泛看待“我不喜欢笔记本”的广泛看待谈话中。但是,“在很大程度上,拥有完全无功的笔记本电脑消除了该功能”现在说。

Bostock解释说,反应性笔记本类似于电子表格。正如Microsoft Excel知道重新计算公式,如果底层的单元格更改,则反应笔记本追踪代码单元的互相涉及,以确保笔记本电脑的输出始终反映其变量。

结合视觉小部件,例如滑块和下拉列表,这种行为使笔记本电脑交互,允许读者探索变量或假设如何影响结果的变化。例如,马萨诸塞大学大学的生物奥斯曼博士学生,例如,Massachusetts Amherst,例如,使用反应文件来解释统计概念。 “真的可以帮助我获得更多的内心感受这些统计事物如何工作,”他说。 (即表示,反应性并不总是可取的,特别是如果小区需要长时间执行,或者数据集非常大。)

对于不使用JavaScript的研究人员,存在其他无功笔记本系统。例如,Susmann为R程序员建立了一个反应性笔记本,称为反应堆。柏林的软件工程师Fons Fons Van der Plas创建了一个用于编程语言朱莉娅的反应笔记本平台。 Cambridge Massachusetts理工学院气候物理研究生德雷克德雷克用冥王星在气候科学中展示概念。 “作为一个互动冥王星笔记本编写编码,使其成为一项更加吸引第一次用户的方式,”德雷克说,“并且真的可以帮助人们了解我正在建造的模型。”

伯克利加州大学项目Jupyter的联合创始人FernandoPérez,注意到Jupyter本身“在反应性的话题是不可知的”。到目前为止,大多数内核都是非反应性的,但他们不必是:加州理工学院的前Jupyter实习生Richa Gadgil,例如,在San Luis Obispo,她的实习合作开发了一个实验的反应核Python。 “这是对Jupyter架构的考验,jupyter架构通过了该测试,”这位致命她的工作Brian Granger说。

另一个名为Vizier的开源系统侧重于数据驱动的反应性,纽约大学计算机科学家Juliana Freire表示,他共同指导了该项目。通过内置数据验证功能和电子表格接口,Vizier用户可以按摩他们的数据来修复不一致的数据 - 例如由包含'y / n'和'是/否'响应的列引起的那些。当他们这样做时,笔记本重新执行。 “你分析,你清洁,你分析,你清洁,”弗雷斯说。 “在你这样做,你拯救了整个过程的出处。”因此,用户可以恢复到清理阶段的阶段,并重试,所有时间记录他们所做的更改。 (Vizier笔记本可以处理Python,SQL和Scala代码。)

一些商业反应系统,包括可观察,深迹和码头的DataLore(其中的最后两个是基于捷克共和国),也强调了另一个笔记本痛点:合作。例如,可观察到的允许实时协作编辑,就像Google文档一样,以及评论。有两个计划层:个人(在同一互动文件中免费获得5名成员)和团队(6个或更多成员:每月每月15美元,每月为您的观众)。

研究英国剑桥大学分子建模的GáborCsányi使用Deepnote(免费最多3名合作者,然后每月每月12美元)在他的教学中。与他的大学以前的系统,寻求帮助的学生可以共享一个带有Csányi的笔记本副本,但他们都不可能同时查看和编辑相同的文件。 “这是一种痛苦,”他说。但随着Deepnote,他可以帮助学生实时调试代码。 “就像你用Google文档一样,我们看到彼此的光标。我们正在编辑相同的笔记本,并且在单元格上按Shift-Enter键,我会看到结果。这是一个令人难以置信的经历,以有效地完成个性化的支持。“

Pérez说,实时协作是Jupyter项目中的“大规模活动”主题,并在GitHub上提供了开发的原型。 “我很乐观,这将会发生这种情况,”他说。

Jupyter笔记本电脑的文件格式包括代码,元数据和计算输出。由于这些输出通常是二进制图像,版本控制 - 开发人员使用要跟踪文件更改的过程,这对于纯文本文件进行了优化 - 可能会变得困难。复杂性问题,程序员可以努力使标准版本控制工作流量适应数据探索的快速迭代性质。结果,至关重要的实验细节可能会丢失。

商业平台往往提供内置笔记本版本控制。对于那些喜欢坚持jupyter的人,可以使用两个插件:nbdime,它提供了一个智能的文件变化的智能结构化视图,包括图形输出;和临时,它提供了一种跟踪Cells修改,重新排序和执行的图形界面。

据开发商玛丽贝斯卡伊(Carnegie Mellon大学)在宾夕法尼亚州匹兹堡的Carnegie Mellon University研究人力计算机互动,竞争对手可以平滑与合作者和同行评审员的互动。 “有人会说,哦,你在模型中尝试过吗,或者你试过这个分析吗?”她说。很多次,答案是肯定的,但由于分析不起作用,代码被删除。 “你想在会议期间想做什么只是把它拉回来,就像,哦,是的,我做到了,这就是为什么它不起作用。我们的工具让您实际上这样做。“

这些功能可以使已经是用户友好的计算范式,即使是友好的,也更容易分享。这使得它们更加强大的科学沟通。 “如果你真的很棒的科学,而且没有人理解它或没有人可以访问它,那么这一点是什么?”德雷克说。 “这些笔记本可以真正让人们兴奋,让人们暴露于诸如唯一可行的概念。”