生物学越来越数字化,科学家们每天都在生成大量数据,将分子转化为序列和文本文件。
作为一名生物学家,你可能需要帮助分析所有数据,并与计算机科学家进行多次合作;对方也可能接受过一些计算生物学方面的培训,但他们的主要关注点一直是计算机科学(CS)……
在AI辅助药物研发这一新兴行业中,生物学家如何更好地与计算生物学家合作?这篇论文为各位提供了10 条建议。
01、不要试图把对方变成生物学家
千万别高估了协作成功所需的理解水平。生物学家的工作不是教计算机科学家多年来在生物学中学到的东西,而是为他们提供直觉,让他们以正确的方式思考问题,并激励提出问题。有多种方法可以实现此目的。
首先,画概念。科学家爱德华·凯伊诺夫斯基(Eduard Kejnovsky)总是带着一支笔和一张纸,用图画解释一切。这非常有帮助,因为这些难懂的概念变成了能记住的图像。
展开剩余 89 %
其次,提供具体的数值来作为分析基础。比如如果不能有数千条染色体, 那么这些序列是什么?什么是基因,您希望看到什么长度分布和内含子分布?作为一名生物学家,你对“哪些工作”有意义或没有意义有着很好的直觉。
定义数据中可以预测的极值。帮助计算机科学家将这种直觉转化为单元测试(当测试一小部分代码时),并带有警告。至少,你的药物管道需要清楚它们在数据中捕获的任何异常结果。
02、不要判断知识差距
如果你与合作者的知识领域少有交集,请暂停几秒钟,想想传达这个概念的最佳方式。不要表现得很惊讶、失望或者看起来很烦恼,简单冷静地解释这个概念。用“这有意义吗?”和“你有哪些问题?”来结束解释。
当需要谈论CS时,他们会回报这个人情。请记住,你们的合作是为了相互补充,而非为了竞争,所以你的合作者对你的主题没有深入了解实际上可能是一件好事,它使他们能够成为另一个领域的专家。
03、以对计算友好的方式存储数据和信息
下载了文件并不意味着它已正确下载,文件的完整性可能由于多种原因而受到损害,比如磁盘空间可能已用完、网络连接中断。
确保文件完好无损的一种方法是使用统一的命名方法。当从数据库下载数据或从协作者发送或接收数据时,请记住我们不查看整个文件,而是生成文件的命名。
复制文件时,学习使用rsync而不是cp/mv,这样就不必担心关闭笔记本电脑或断电,因为此命令可以在中断后成功继续。
最初,以适用于计算管道和软件包的方式格式化数据可能并不直观,但可以遵循一些约定,如小组成员应该同意将染色体编号为数字或字母、数字的组合(1 与chr1)。这是生物信息学中无数误解的根源,特别是当重新运行一周前运行良好但不知何故不适用于新数据的管道时。
另外,小心使用大小写、单复数的命名方案;缺少的数据不一定丢失,可能是空的单元格与真正缺少的数据点之间存在差异。
最后,生物学家的所有请求都必须附带示例或测试数据,这意味着给定输入的预期输出。比如,你可以提供一个期望在输出中看到和不希望看到的基因列表,以供计算科学家进行对照。
总之,选择一致的命名方案、仔细记录缺失数据等都是迈向“计算友好性”的好步骤。
04、以有利于协作的方式描述数据
CS有一个完整的领域来处理如何在数据库中存储信息,但是生物学家可以做一些事情来帮助他人重用相关数据。
首先,如果将数据存储在行中,则所有表都需要具有唯一标识符或键的列,并且此列需要有通用唯一性。如果您的样本被命名为猩猩,那么当您对另一只猩猩的数据进行测序后会发生什么?
日期也很有帮助。另外,以仅需“最少”的专业知识来理解的标准制作表格。如果您的所有样品都有一列它们是DNA还是RNA的描述,就不要在该列中写其他内容了。
提取内容之前,必须查看所有值的摘要。另外,不要重复信息并使用一致的分隔符,因为混合制表符、逗号和其他符号很少是好主意。
05、了解是否要加快代码速度(以及如何加速)
“过早优化是万恶之源”,这是CS中最著名的名言之一。
假设你决定加快代码速度,一些并行化是自然且相当简单的,例如按染色体运行脚本。在这种情况下,基础数据在统计上是独立的,通常没有理由“不”并行运行。
另一种选择是,使代码与多个中央处理器(CPU)一起工作,但不建议将其作为第一项措施。因为如果做得不好,可能会损害结果的完整性。对于许多应用程序,将数据拆分为批处理并使用同一脚本并行运行,然后合并结果是一个不错的选择。
作为一名生物学家,你可能还听说过某些编程语言比其他编程语言更快。但在日常科学中,我坚信可读性和可重复性先于速度。
与更快的低级C代码相比,其他科学家可能更愿意重用高级Python代码。当然,这里强调的是有关于核心研究结果的代码,它们很可能是已建立的管道和自定义脚本的组合。因此,不要在没有仔细考虑的情况下以加速为目的进行协作。
06、考虑概念和受众,而非编程语言
CS的关注要点是概念和抽象,而不是编程的语言。因此,传达你想要看到的产品内涵及其背后的概念即可。生物学家有时会过于执着某些解决方案(C++很快,SQL是必要的),以至于退后一步,去考虑他们最初的目标是否挑战性太高。
你可能听说过,“逐一错误”是生物信息学中最常见的错误之一。为什么?其一是生物学家通常从1开始计数,而计算机科学家被训练为从 0 开始。
为了有效地协作,生物学家需要了解基于0的间隔和基于1的间隔、半开放和开放间隔之间的区别等。如常用的间隔格式是 .bed(从 0 开始)和 .gff(基于 1);同样Python 和 R这两种流行的编程语言,也倾向于分别以0和1开始编号。
07、以透明、可重复为目标,及时共享代码
部分生物科学家会选择立即开放他们的代码,以刺激合作,并在公共领域获得科研想法的切实证据。但有时,不分享的原因是对代码的“不完美”感到尴尬。
事实上,代码审查(其他人检查你的代码并指出不一致和错误)不应该是一种令人不舒服的做法,而应该像CS和工程一样成为标准流程。
此外,请提供指向你正在使用的存储库的链接,并按提交 ID 或日期引用特定版本。否则的话,通过电子邮件发送代码,你可能会有一个包含正在编写代码的 50 个不同版本的文件夹。
如今,可以通过浏览器中的图形界面方便地将代码提交到存储库,甚至不需要打开终端。如GitHub(https://github.com)、Snakemake (https://snakemake.readthedocs.io)和LaTeX(https://www.latex-project.org)等使协作更顺利的工具。
如果你不确定是否值得花时间学习其中一个工具,可通过参加(在线)研讨会或在其他人提到它们时进行了解。
08、了解学科之间的优势和局限
CS和生物学在处理抽象和复杂性方面有所不同。
首先,计算科学家希望发明新的CS工具,就像生物学家希望发现新的生物学研究一样。其次,以工具形式实现的新颖CS可以与将其应用于真实数据的生物学论文同时发表。不过计算机科学家的出版物通常相当简洁,而生物学论文有许多合著者和大量的补充材料。
计算机科学家有着悠久的开源传统,而生物学家往往依赖专有的方法和知识。生物学家经常处理实验错误(和“嘈杂”数据),而前者处理这些错误的经验通常有限。但其可以定义每个实验和模型的条件/局限性,应该尽可能给予空间。
建立双方的共同目标,并了解每个学科的优势和局限性,对于长期维持合作至关重要。
09、明确如何验证协作结果
尽早明确验证协作结果的方式,合作者才能清楚地了解湿实验室验证的可能性和可行性。是否只对少数优质候选化合物感兴趣?算法模型是否能够验证数百个发现?讨论问题也会增加双方的深度合作。
就像写作是一个迭代的改进过程一样,与计算机科学家联合进行项目开发,管道也会在每次迭代中被细化,直到获得令人满意的输出。
质量控制是每个管道的重要组成部分,需要双方共同开发,以解释预期的生物变异和数据处理过程中可能的错误(例如,正向/反向链的不当处理)。
计算机科学家可能会建议一些额外的实验来校准管道,生物学家可能会选择让其对经过测试的假设视而不见,以免他们偏向特定结果。最后,药物管道可以由此得到改进。
10、不要卷入什么是“真正科学”的讨论
这可能是其中最重要的规则。
你可以触摸和操纵的东西,如用棍子戳或在显微镜下看都是常见的试验手段,然而有些实验室只做计算生物学。当已故的詹姆斯·泰勒(James Taylor)加入约翰霍普金斯大学的生物系时,他做的第一件事就是从他的新实验室移除不必要的湿实验室工作台。
我们都习惯于处理我们看不见或摸不到的东西,但为什么计算驱动的生物学是例外?
没有生物学专业知识,就没有数据;没有计算专业知识,就不会有分析,这是合作带来的美妙之处。幸运的是,这种合作也已经越来越被大家所认可。
写在最后
跨学科合作可能令人沮丧、乏味且充满误解。然而,它也可能是最令人惊奇和最令人满意的科学之旅——“如果”你把一群有正确学习态度和互补背景的人结合起来。
计算机科学家会提出一些生物学家从未想过的见解,他们的知识被粉碎成数千个松散连接的部分。当这些连接被共同放大时,你们将会一起探讨领域里没有人知道答案的问题。
引用:
1.高德纳德.结构化编程,转到语句。ACM Comput Surv 1974;6:261–301.
2.门罗·值得花时间吗?从xkcd检索 https://xkcd.com/1205/
3.生物之星手册。2020. https://www.biostarhandbook.com
4.Altman N, Krzywinski M. P值和对显著性的搜索。Nat Methods 2017;14:3–4.
5.拉泽布尼克·生物学家能修理收音机吗?
参考链接:
https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1008281
—The End—