Basepairでのカスタムワークフローの作成
Basepair を使用すると、いくつかの簡単な手順でカスタム バイオインフォマティクス ワークフローをインポートして実行できます。
移植性、バージョン管理、再現性を確保するために、ワークフローの個々のステップを Docker コンテナーにパッケージ化することをお勧めします。 次に、YAMLテキスト ファイルを使用して、個々のステップ (モジュール) を定義し、つなぎ合わせてワークフローを作成できます。YAML形式はすべての主要なプログラミング言語でサポートされており、編集と読み取りが簡単で、モジュールとワークフローをバージョン管理することができます。ワークフローを作成した後は、当然のことながら、ワークフローが適切に実行され、期待どおりの結果が得られることを確認するためにテストする必要があります。
*または、カスタム パイプラインをそのまま Basepair に提供することもでき、パイプラインを Dockerize/構築することもできます。
詳細については、Docker イメージの作成 と 保存に関するページを参照してください。
モジュールを定義する
「モジュール」とは、単一のツール、または単一のユニットとして実行されるツールのグループを指します。
たとえば、モジュールは次のようになります。
- Picard MarkDuplicates を使用して BAM ファイルから重複読み取りを削除する単一コマンド
または
- データを整列させるための BWA の呼び出しと、整列の並べ替えとインデックス付けを行う SAMtools の呼び出し
上記の2番目の例では、多くのツールがダウンストリーム分析に並べ替えられたBAMファイルとインデックス付きBAMファイルの両方を必要とするため、BWA 呼び出しと SAMtools 呼び出しが 1 つのモジュールに結合されています。 このようにして、モジュールは 2 つの異なるソフトウェア ツールを呼び出しているにもかかわらず、調整という完全な論理タスクを実行します。
重要なのは、モジュールは複数のワークフローにわたって使用されることが多いため、コマンド オプションと入力ファイルをハードコーディングせず、代わりに docker run 呼び出しのパラメーターとして公開することです。
モジュール YAML ファイルは、次の 3 つの主要な情報を定義します。
- 実行可能ファイルへのパスとコマンド構造
- 入力
- 出力
ワークフローを定義する
Basepair ワークフローは、一緒に実行されるモジュールのコレクションです。
ワークフローには、単一のモジュールを含めることも、QC、位置合わせ、図形の生成などを実行する 20 個以上のモジュールを含めることもできます。ワークフローは有向非巡回グラフ (DAG) として定義され、各モジュールはグラフ内のノードになります。 この構造により、モジュールが複数の親モジュールを持つことが可能になり、ワークフローの設計がさらに柔軟になります。
ワークフロー YAML ファイルは、次の 3 つの主要な情報を定義します。
- ノードのコレクション。各ノードは一意のノード ID を持つモジュールを表します。 ワークフロー内でモジュールが複数回必要な場合、各インスタンスには異なるノード ID が割り当てられます。 さらに、モジュールごとにデフォルトのパラメータを設定できます。
- エッジのコレクション。各エッジはすべてのモジュール間の親子関係を表します。 ルート モジュールから始まり、他のすべてのモジュールは、ワークフローの実行方法を定義する方法で接続されます。
- マッピング: 使用されているゲノム アセンブリなど、共通のグローバル メタデータがモジュールに直接渡されます。
テスト
Basepair は、次の 2 つの目的のためのテスト フレームワークを提供します。
- 技術テスト: モジュールとワークフローの構造をテストして、パラメータが正しく渡されるか、コマンドが期待どおりに形成されるか、データの流れが期待どおりに移動するかなどを確認します。
- 科学的テスト: データが正しく分析されていることを確認するために、検証された結果を含むワークフローの出力ファイルをテストします。 このテストは、ワークフローの科学的な正確さを確立するために重要です。