全球帕金森病遗传学研究计划(GP2)代码标准化政策概述

总体而言,全球帕金森病遗传学研究计划(GP2) 旨在制定“不出意外”政策,以公开透明的方式协调和交流分析、项目和手稿。GP2项目希望尽可能广泛和开放地使用数据和代码,因此需要在整个分析团队中实现代码的标准化。对于所有计划对GP2数据进行分析的所有GP2和外部非GP2成员,GP2都强调必须向科学界开放干净、有条理和可复制的代码。代码将遵循标准化准则,使用时要致谢GP2,代码将通过GitHub向社群提供。

简介

全球帕金森病遗传学研究计划(GP2)是一项国际性工作,旨在深入了解帕金森病(PD)的遗传基础,并实现结果和数据的大众化。GP2由帕金森科学联盟(ASAP,https://gp2.org/)资助,该计划的战略目标是支持协作,生成资源并实现数据的大众化。传播GP2代码和数据是GP2的主要目标,ASAP鼓励广泛、快速和公开地发布结果。 

概述 

制定该策略是为了确保实现以下目标: 

1.GP2联盟主导的分析中的GP2代码和工作流得到了全面、准确和及时的传播。

2.GP2联盟主导的分析中的GP2代码和工作流实现标准化和条理化,并且在GitHub上公开可用。

代码标准化准则是GP2发布政策的补充。请参考本文档,了解GP2联盟对非常情况的管理。 

《代码标准化政策》概述了GP2指导委员会所采纳的代码标准化最佳实践以及GP2联盟主导的分析对GP2联盟牵头发表的作品是很好的补充。强烈建议使用GP2数据的外部研究人员使用这些实践,确保高质量的分析和开放科学。由于该领域越来越倾向于使用Python/Jupyter Notebooks而非R,因此本文档重点介绍Python。我们许多GP2研究人员可能会使用R或其它工具,并继续在GP2社群中支持有组织、开放和可复制的代码。 

但请考虑一下,尽管清理代码很繁琐,但这是GP2设置代码的方式,我们鼓励您也遵循这些标准。如果代码不干净/清楚,不能有效沟通,这样的效果真的是您所希望的吗?干净的代码还意味着您可以在下游花费更少的时间来解释和再解释您的分析和概念,这是一种双赢的局面。干净的代码可实现复制和透明度。GP2 致力于实现开源科学,通过代码透明度实现协作,以及包容性

下面,我们描述一些基本信息和工作流程,Python为主要语言,Anaconda为首选的Python发行版,PEP8为要遵循的Python语言结构,存储在谷歌云环境中,分析在Terra分析云环境中进行。很重要的一点就是要为每一个分析提供一个清晰的文档,概述工作流程和基本原理,也被称为自述文件(README)。以下是GP2遵循的标准,希望更多社群也将遵守以下标准。

正式开始前,先讲讲Python和编码的基础

1.GP2的所有计算都可能在Terra, NHGRI’s The AnVIL或类似的基于云基础架构中完成

a.对于有后勤/财务限制的项目/小组,将提供分析和财务支持。

2.Python3 +将是GP2分析的主要语言; 对R和其它语言的支持将十分有限。这样可以利用美国国家老龄化研究所LNG数据科学小组当前的代码库。

3.要学习Terra,请注册AMP-PD 账户,这是一个很好起点。

a.他们有一些很棒的“入门”笔记本(可以在其中编写和运行代码),还有工作区和大量数据可供使用。Terra.bio上面的入门文件就很棒。

4.两周内学好Python……

a.每天运行一次

b.每周运行一次 (向NSA提交FOIA申请)

c.Google Colabs还是学习笔记本结构并熟悉Python的低开销/低压力的好地方。

5.好的代码简单、清晰、标准化,带有语法,就像食谱一样。

a.谷歌风格指南是一个不错的起点。

b.PEP8是Python首选的 “语法”。

c.Visual Studio Code是GP2首选的编辑器,因为它包含一些扩展,可以在样式上标准化您的代码,但是您可以使用您用起来最顺手的任何一款编辑器。

6.支持团队的主要语言是Python3,使用与我们相同的工具,将容许我们既可以与您共享工具,也可以更有效地支持您的项目。

a.工具和编码的所有内部构建均采用Python3。

b.对绝大多数项目而言,共享的GP2资源都在Python3里。

如何下载Anaconda / Python以供本地使用 

1.必须特别强调的一点是,我们在本地使用Python进行编程时,用的是Anaconda发行版来确保功能齐全的Python3环境。LNG制定了一份有关如何使用Anaconda进行设置的文档,可在此处找到。

要点和概述

1.您必须具有某种版本控制方法,以防止发生意外。您可以把它想象为您的电子实验室笔记本。GP2项目实验室有自己的GitHub,用于前向工作流。本着GP2的一贯精神,这里的一切都是公开的。

a.如果还没有完全做好准备公开,也没关系!可以创建一个私人的存储空间,代码完成后,您可以选择将其推送到公共位置。

b.GitHub使版本控制和协作变得非常简单,尤其是借助其新的桌面界面。有关如何开始的更多文档,请点击这里。

2.制作一份自述文件(README 文件) 至关重要我们的自述文件不仅是我们与他人交流的方式,而且还是活文档,它们在不断变化,但始终包含以下信息:

a.作者、合作者、项目名称、项目目标、建议的分析工作流程、开始日期、最后更新日期、工作目录路径、文件路径。

b.可以用来创建自述文件的一款免费又好用的Markdown编辑器是stackedit.io

3.GP2分析团队使用Google Colabs共同研究实验性概念验证代码,以利用免费的GPU,轻松共享,并在需要时轻松地在本地Jupyter环境上进行修改。

4.基本原则是,当一个项目上的协作小组有超过2个或3个人在同一小组中一起工作时,需要版本控制。

5.在与GP2网络共享项目/手稿之前,需要版本控制和某种类型的透明且可理解的编码资源。

a.如果使用了GP2的分析或财务支持资源,则此代码在发布批准之前需先经过审核。

整理我们的代码

1.整理代码的一种方式, 点击此处查看介绍

a.该资源探讨如何制作功能、模块,以及如何利用其它的巧妙方法来分隔工作。

b.如果您不习惯,您的编码可以不用遵循这一办法,但应遵循某种直观的组织方式。

c.将您的代码视为手稿的一部分,如果审稿人无法理解您的手稿,它将如何通过GP2开放科学的标准?代码也是同理。

d.虽然GP2中的代码没有锁定格式,但请尽一切努力使之清晰。

Python中的代码标准化

1.我们尽可能严格地遵循Python编程的Python增强建议(PEP8)标准。PEP8是概述如何最好地编写Python代码的文档,旨在提高Python代码的可读性和一致性。

a.可在此处找到既涉及全面又通俗易懂的资源。

b.大多数集成开发环境(IDE)都有一个插件来帮助确保该标准。

i.比如说,Visual Studio Code的autopep8插件。

2.在笔记本中,我们有一个样板模板,用于提醒我们和用户项目背后的动机。通过使用笔记本,Markdown是您的好帮手,可以帮助用户定向,同时还可以跟踪运行情况。

a.这里是我们最新的样板文件

i.您可以对其进行修改满足您的需求。

ii.直接接受GP2支持的项目在进行编程时,应遵循这个大致的框架。这有助于进行监督和故障排除。

云平台最佳实践

1.作为AMP-PD的一部分,可能用于GP2,我们将使用Terra平台编写、调整和运行分析工作流。

a.Terra由博德研究所和麻省理工大学设计,利用商业云基础架构(多个架构,提供多种选择),在笔记本结构(类似于Jupyter)中具有完整的交互式Python3环境。

i.如果不熟悉云计算,谷歌提供了出色的术语介绍点击查看,涵盖了项目、桶、容器和其它关键概念的基本知识,助您一臂之力。

ii.AMP-PD团队在此处汇总了Terra特定的示例。

iii.有关如何在云基础架构之间移动文件的一些基础知识可参考这份 备忘单

iv.您可以在 此处找到谷歌在命名、数据存储和数据管理方面的最佳做法。

2.在本地运行分析与在云上运行分析这二者之间有两个主要的差别。

a.在本地,您为存储付费(无论是在您自己的计算机上还是在机构的群集上),而在云上,存储由AMP-PD或者GP2来买单。

b.在本地,您无需支付运行分析工作流的费用(在自己的计算机上运行永远无需付费,而是否为集群付费要取决于研究所的具体情况),而在云计算中,用户则为他们运行的每个分析支付费用(例如通过其PI或机构)

3.AMP-PD和GP2分析团队编写了许多可以调整的不同分析工作流(链接)。

a.因为您要为设置的环境和访问的数据量付费,所以很重要的一件事就是要尽可能好地对您的分析进行设计和规划。

i.可以在这里找到可以用作指导的运行时成本示例。

b.由于可以在后端更新云环境,因此重要的是记录和版本化您有权访问的存储桶,以便以后直接引用它们。

c.因为您要为设置的环境和使用时间的长短付费,因此不用时请暂停使用或将其删除,只为使用过的东西付费。

最后对我们湿实验室的朋友们讲几句

透明度、开放性和可重复性不仅是为了计算。我们强烈建议您使用诸如protocols.io之类的工具,或者使用Rocket Notebook来实现实验室任务和实验的标准化。GP2的复杂疾病数据分析工作组以及复杂疾病数据和代码传播都希望采用强制性的湿实验室实践,以反映我们在计算方面的工作。我们也正在推动样本获取和样本命名的实践实现标准化,使其在线且透明,即使它们不在我们的工作范围之内。

致谢

所有使用GP2数据分析工作流产生的手稿、预印本和摘要/海报必须使用以下语言向ASAP和GP2致谢:

准备此工作流使用的代码是从全球帕金森病遗传学研究计划(GP2)获得的。GP2项目接受帕金森病科学联盟 (ASAP)和迈克尔· J ·福克斯帕金森研究基金会的资金支持 (www.gp2.org)。有关GP2成员的完整列表,请访问www.gp2.org。 Michael J. Fox基金会、ASAP和GP2指导委员会保留修改本协议条款的权利,并且可以在此页上发布有关此类修改的通知。所做的任何修改在发布修改后立即生效(除非另有说明)。您应该定期访问此页面以查看当前的使用协议条款。

“编码人员的行为准则”请参照此概念框架,以参与GP2中的编码项目协作。