グローバルパーキンソン病遺伝学プログラム(GP2)概要のGP2コード標準化ポリシー

グローバルパーキンソン病遺伝学プログラム(GP2)は、分析、プロジェクト、および文書がオープンで透明性のある方法で調整および伝達される「意外性のない」ポリシーを持つことを目的としています。GP2は、データとコードをできるだけ広くオープンに使用されることを望んでいるため、分析チーム間でのコードの標準化が求められます。GP2データの分析を行うことを計画しているすべてのGP2および外部の非GP2メンバーについて、GP2は、整理され、複製可能なコードを科学コミュニティに公開する必要性を強調しています。コードは標準化ガイドラインに従ってGP2が謝辞欄に掲載され、GitHubを介してコミュニティで利用できるようになります。

はじめに

グローバルパーキンソン病遺伝学プログラム(GP2)は、パーキンソン病(PD)の遺伝的基礎への重要な知見を生み出し、結果とデータの両方へのアクセスを誰でも可能にすることを目的とした国際的な取り組みです。GP2は、Aligning Science Across Parkinson’s (ASAP https://gp2.org/)によって資金提供されており、共同研究のサポート、資金の確保、データの民主化というこのプログラムの戦略目的の一環です。GP2のコードとデータの普及はGP2の主な目標で、ASAPは結果が迅速かつオープンに広く公開されることを奨励しています。 

概要 

このポリシーの目的は次を保証することです: 

1.GP2コンソーシアム主導の分析からのGP2コードとパイプラインは、完全、正確、そして迅速に広められること

2.GP2コンソーシアム主導の分析からのGP2コードとパイプラインは、標準化され整理された後、GitHubで公開されること

コード標準化ガイドラインは、GP2公開ポリシーを補完するものです。通常とは異なる状況のGP2コンソーシアム管理については、本文書を参照してください。 

コード標準化ポリシーは、GP2運営委員会およびGP2コンソーシアム主導の出版物を補完するGP2コンソーシアム主導の分析によって採用されるコード標準化のベストプラクティスの概要を示しています。GP2データを使用する外部の研究者は、これらの手法を統合して、高度な分析とオープンサイエンスを確保することを強くお勧めします。Rの代わりにPython/Jupyter Notebookを使用する傾向が高まっているため、本文書ではPythonに焦点を当てています。多くのGP2研究者が、Rまたは他のツールを使用して、GP2コミュニティで組織化されたオープンで複製可能なコードを引き続きサポートする可能性があることを認識しています。 

コードの整理は時間がかかりますが、これがGP2によるコードの設定方法です。これらの標準に従うことをお勧めします。整理されていないもしくは明確ではないが効果的なコミュニケーションが独自で可能な場合、期待している効果が表れていますか?整理されたコードは、分析や概念の説明に費やす時間が少なくなることも意味します。これは双方にメリットがあります。整理されたコードで複製と透明性が可能になります。GP2は、コードの透明性および包摂性によりオープンサイエンスとコラボレーションに取り組んでいます。

以下では、主要言語としてのPython、優先されるPythonディストリビューションとしてのAnaconda、従うべきPython言語構造としてのPEP8、Googleクラウド環境での保管、テラ分析クラウド環境で実行される分析に関する基本的な情報とワークフローについて説明します。また、各分析について、READMEと呼ばれるワークフローと理論的根拠を説明した明確な文書の重要性を強調しています。これらはGP2が従う基準であり、より広いコミュニティでも従っていただけることを望んでいます。

最初に、Pythonと一般的コーディングのいくつかの基本について

1.GP2の計算はほぼすべてTerraNHGRIのAnVIL、または同様のクラウドベースのインフラで行われます。

a.ロジスティック・資金面の制約のあるプロジェクトや団体を対象に、分析および財政支援があります

2.Python3+がGP2分析の主要言語です。 Rおよびその他の言語へのサポートは限られます。これは、米国国立老化研究所のLNGデータサイエンスグループの現在のコードベースを活用しています。

3.Terraを学ぶにはAMP-PDアカウントにサインアップしてください。素晴らしいスタート地点です。

a.複数の素晴らしい「Getting Started」ノートブック(コードを書いて実行する場所)だけでなく、ワークスペースと使用する多くのデータを持っていますTerra.bioのGetting Started文書はかなり優れています

4.Pythonを2週間で確実に習得するために、、、

a.これを1日1回実行します

b.これを週に1回実行して下さい(NSAの良き友人からFOIA経由)

c.Google Colabsは、ノートブックの構造を学びPythonに慣れるためのオーバーヘッドやストレスが少ない場所です。

5.優れたコードは、レシピのように、シンプルで明確、文法も標準化されています。

a.Googleスタイルガイドは最適なスタート地点です

b.PEP8はPythonの推奨される「文法」です

c.Visual Studio Codeは、コードのスタイルを標準化するための拡張機能が含まれているため、GP2で推奨されるエディターですが、最も使いやすいものを使用してください。

6.サポートチームの主な言語はPython3で、私たちと同じツールを使用することで、ツールを共有し、プロジェクトをより効率的にサポートすることができます。

a.ツールとコーディングのすべての内部構造はPython3の中にあります

b.大多数のプロジェクトで、共有GP2ツールはPython3の中にあります

ローカルで使用するためにAnaconda/Pythonをダウンロードする方法 

1.いつPythonをローカルでプログラミングするかを強調することが重要です。完全な機能を備えたPython3環境aを確保するために、Anacondaディストリビューションを使用しています。LNGは、Anacondaのセットアップ方法に関するドキュメントをまとめました。こちらです

要点と概要

1.事故を防ぐためにバージョン管理の方法が必要です。これを電子実験ノートと考えてください。GP2プロジェクトラボには、前向きパイプライン用の独自のGitHubがあります。一般的なGP2テーマの一部として、ここにあるものはすべて公開されています。

a.一般向けの準備が整っていない場合でも、大丈夫です!プライベートリポジトリを作成し、コードが完成したら、どこかに公開するプッシュオプションがあります

b.GitHub、特にその新しいデスクトップインターフェースによってバージョン管理とコラボレーションが非常に簡単になります。開始方法に関する詳細な資料はこちらです

2.READMEをまとめるのは非常に重要です。私たちのREADMEは、他者とのコミュニケーション方法だけでなく、常に変化する生きた資料でもあり、常に次のような情報が含まれています:

a.著作者、共同研究者、プロジェクト名、プロジェクトの目標、分析のために提案されたワークフロー、開始日、最終更新日、作業ディレクトリへのパス、ファイルへのパス

b.READMEを作成する無料で素晴らしいMarkdownエディターは、stackedit.ioです。

3.GP2分析チームは、Google Colabを使用して実験的な概念実証コードを共同で作成し、無料の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 StudioCodeのautopep8プラグインが一例です。

2.ノートブックには、プロジェクトの背後にある目的を忘れないために使用するテンプレートがあります。ノートブックを使用することで、Markdownは、実行されたものを追跡しながら、ユーザーの方向付けを支援します。

a.これが現在のひな形です

i.ご自身のニーズに合わせて調整できます

ii.GP2から直接支援を受けるプロジェクトに関するコードには、一般的なフレームワークを使用します。これは、監視と問題解決に役立ちます。

クラウド版プラットフォームのベストプラクティス

1.AMP-PDの一部として、おそらくGP2にも分析パイプラインの作成、調整、実行をするためにTerraプラットフォームを使用します。

a.TerraはBroadInstituteとMITによって設計され、産業用クラウドインフラ(複数オプション)を活用し、ノートブック構造(Jupyterに類似)で完全なインタラクティブPython3環境を備えています。

i.クラウドコンピューティングに慣れていない場合、Googleでプロジェクト、バケット、コンテナとは何か、および始める前に知っておくべき基本をカバーする用語がこちらで紹介されています。

ii.Terra固有の例は、AMP-PDチームによってまとめられました。こちらです

iii.クラウドインフラ間でファイルを移動させる方法の基本は、この便利なシートにあります。

iv.ネーミング、データストレージ、データ管理に関するGoogleのベストプラクティスは、こちらにあります。

2.ローカル分析とクラウド分析には、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は、Aligning Science Against Parkinson’s (ASAP)イニシアチブより資金を受け、パーキンソン病研究のマイケル・J・フォックス財団によって実施されています(www.gp2.org)。GP2の完全なメンバーリストはwww.gp2.orgを参照してください。 」マイケル・J・フォックス財団、ASAP、およびGP2運営委員会は、この契約の条件を変更する権利を持ち、変更は本ページに掲載・通知する事により可能です。変更がアップロードされ次第、有効になります(特に明記されている場合は例外)。このページに定期的にアクセスして、現在の使用契約条件を確認してください。

「コード担当者の行動規範」GP2でのコーディングプロジェクトで共同作業をする際は、この概念フレームワークを忠実に反映してください。