大型数据在科学研究中随处可见,并且很难处理,本文将介绍处理大型数据集的11个技巧。

图片来源:
https://www.nature.com/articles/d41586-020-00062-z
保持你的原始数据是原始的,也就是不要再没有副本的情况下去操作它,可以将数据存储在能够自动备份的地方,并且在遵守机构内容隐私条款的前提下,使其他实验室成员也能够获取到该数据。因为你不需要经常访问这些数据,存储成本是相对较低的,例如亚马逊的冰川服务(Amazon’s Glacier Service)。你甚至可以将原始数据存储在不同位置的硬盘上,这可能会增加大数据文件的存储成本,因此要相应地做好预算。
加州大学戴维斯分校的生物信息学家Titus Brown称,“当数据集越来越大时,新的问题也会出现,在每个阶段,你都会遇到一些有价值的异常现象。”他建议多做图表寻找异常值。信息可视化可以看到工作流程在哪里出现了问题并及时重新运行。
粒子物理学家Peter Elmer在帮助11岁的儿子做数学作业时需要不断提醒他不要只写答案,要完整地记录下解题步骤,展示工作成果和完成工作一样重要。这意味着你也要完整地记录下数据工作流,比如所用数据的版本、数据清洗和规范过程、运行处理的任何代码等,这些信息对记录和重复你的研究方法至关重要。
版本控制系统能够帮助研究人员精确地了解一个文件是由谁在什么时间进行改变的,但是部分系统会限制文件的大小。Harvard Dataverse和Zenodo能够记录大型文件的版本变化,Dat也可实现通过免费的、点到点的、任何大小文件的共享和版本变化记录功能,用户还可通过Dat存档任一版本的文件,Dat目前是一个实用的命令行程序,相关团队正在努力研发友好的前端系统。
元数据能够描述数据是如何被收集、格式化和组织的。首先,要确定你要收集的元数据包括哪些内容,并将这些元数据与数据一起存储在用于收集结果的软件工具或README等专业元数据软件中。约翰霍普金斯大学的神经统计学家Joshua Vogelstein领导了一个名为“开放连接组”(Open Connectome)的项目。试着从长远考虑,也许有一天你会想把你的数据和其他实验室的数据整合在一起,积极主动使用元数据将会使此类集成变得更加容易。
西雅图艾伦脑科学研究所(Allen Institute for Brain Science)的数据与技术高级主管Shoaib Mufti称“自动处理大数据集是十分关键的,例如该所神经信息学小组使用了一个只接收正确格式、类型数据的脑细胞和遗传数据的模板。当需要将这些数据集成到更大的数据库中时,可以使用Apache Spark和Apache Hbase这两个开源工具自动执行数据质量保证任务,以实时验证和修复数据,包括云上数据,这可轻松实现扩展。”Open Connectome项目也提供了自动化质量保证功能,它可以使汇总数据可视化,用户可以在进行分析之前查看这些统计数据。
大数据集需要高性能计算(High Performance Computing,HPC),许多研究机构都有HPC设施。比如美国国家科学基金会所维护的高性能计算网络XSEDE,包括云计算网络Jetstream和遍布全国的高性能计算中心,研究人员可以在xsede.org,上申请资源分配,并在go.nature.com/36ufhgh上创建试用账户,其他选择还包括美国的ACI-REF网络、澳大利亚NCI、欧洲PACE和ELIXIR网络,以及Amazon、Google、Microsoft等商业提供商。对于高速计算来说,时间就是金钱,你可以先进行小规模测试,再将分析结果转移到HPC网络上,这样可能会更充分地利用时间。
若要复制分析结果,你需要使用相同版本的工具、该工具所需的相同的软件库以及操作系统,Docker可以帮助实现这一目标。Haibe-Kains及其团队使用在线平台Code Ocean(基于Docker)来捕获和共享他们的虚拟环境,其他工具还包括Blinder、Gigantum、Nextjournal等。即使在十年后,如果需要的话,你仍然可以用完全相同的方式来运行这些数据。
下载和存储大型数据集是不实际的。研究人员必须远程运行、分析和存储大数据。许多大数据项目使用Jupyter Notebook这一工具,它创建的文档可以将软件代码、文本和数据结合起来。研究人员可以通过文件或附近的数据服务器远程分析和发现数据,但该工具也是命令行程序,其他更加友好的工具还包括Terra和Seven Bridges Genomics。
即使对年轻的研究人员来说,数据管理也是至关重要的,所以要尽早开始培训。人们觉得自己从来没有时间去投资,但从长远来看,这样做可以为自己节省更多时间。Elmer称,“先从基本的命令行开始,再加上Python或R之类的编程语言,这两种语言对研究人员更重要。”
帮助是可以寻求到的,无论是线上还是线下的,比如向你所在机构的图书馆员咨询可用的资源以及需要培养的技能。实地培训是一个比较好的选择。