Skip to content

Developer

Ai Okada edited this page Apr 2, 2020 · 15 revisions

このページの内容は開発者向けです。

ディレクトリ構成

GCATWorkflow パッケージは scripts/ と tests/ ディレクトリから構成されています。
scripts/ にはソースコードが、tests/ にはテストコードおよびサンプルシート、設定ファイルサンプルが入っています。
各ワークフローのソースコードは scripts/genomon_pipeline/ 配下のディレクトリにワークフロー名のディレクトリに配置されています。

  • data/snakefile.txt ... ワークフローの本体です。configure のとき、出力ディレクトリに snakefile としてコピーされます。
  • resource/xx.py ... 各ステージの実行スクリプトを作成します。
  • configure.py ... congiure のとき、config.yml を作成します。 (出力ディレクトリの作成や bam と fastq のリンク作成も行います)
  • sample_conf.py ... サンプルシート解読を行います。

scripts/genomon_pipeline/cores ディレクトリ配下は共通関数です。
編集するときは十分ご注意ください。

ワークフロー編集における基本的な考え方

1.各タスクは "genomon_runner" で実行します。
各ステージ (resourceディレクトリ配下) ではこの "genomon_runner" に入力するための shell_xx.sh, singularity_xx.sh, conf_xx.yml を作成します。
まずは手動で shell_xx.sh, singularity_xx.sh, conf_x.yml 3点セットを作成し、 "genomon_runner" で正しく動作することを確認したのち、ソースコードの編集を行うのが良いでしょう。

2.実際のワークフローは snakefile と config.yml で制御します。
各ワークフローの config.py では config.yml を生成しています。
まずは snakefile と config.yml を手動で編集したのち "snakemake -n" コマンドで正しく動作することを確認したのち、ソースコードの編集を行うのが良いでしょう。

既存のステージを仕様変更する

前述のとおり、各ステージは scripts/genomon_pipeline/resource/xx.py にあります。
適宜変更してください。

既存のワークフローに対し新しいステージを追加する

1.scripts/genomon_pipeline/somatic/sample_conf.py を編集します。

ステージに合わせて変更します。
よほどのことがない限り [bam_import] [bam_tofastq] [fastq] を編集する必要はないでしょう。
analysis stage をステージに合わせて編集します。

2.scripts/genomon_pipeline/somatic/configure.py を編集します。

さらに、ステージに合わせて変更します。 mutation や qc ステージを参考に追加するステージをコールするよう変更します。

3.scripts/genomon_pipeline/somatic/resource 配下にステージを追加します。

上述の「既存のステージを仕様変更する」を参照してください。

4.scripts/genomon_pipeline/somatic/data/snakemake.txt を編集します。

mutation や qc ステージを参考に追加するステージ追加します。

新しいワークフローを追加する

1.ワークフローのサブコマンド名を決める
→ここでは somatic とします。

2.scripts/genomon_pipeline/ ディレクトリ配下に somatic ディレクトリを作成し、既存のワークフローディレクトリの中身を一式コピーする。

コピーする元は作成するワークフローの特徴によって決めるとよいでしょう。

  • DNA でペアリード固定、出力は bam → dna/ ディレクトリ
  • DNA でペアリード固定、出力は cram → germ/ ディレクトリ
  • RNA でシングルリードもある。 → rna/ ディレクトリ

→ここではdnaディレクトリをコピーするものとします。

3.scripts/genomon_pipeline/somatic/sample_conf.py を編集します。

ステージに合わせて変更します。 上述の「既存のワークフローに対し新しいステージを追加する」を参照してください。

4.scripts/genomon_pipeline/somatic/configure.py を編集します。

"genomon_pipeline.dna" を "genomon_pipeline.somatic" に変更します。

さらに、ステージに合わせて変更します。 上述の「既存のワークフローに対し新しいステージを追加する」を参照してください。

5.scripts/genomon_pipeline/somatic/resource 配下にステージを追加します。

上述の「既存のステージを仕様変更する」を参照してください。

6.scripts/genomon_pipeline/somatic/data/snakemake.txt を編集します。

上述の「既存のワークフローに対し新しいステージを追加する」を参照してください。

7.scripts/genomon_pipeline/configure_if.py を編集します。

somatic ルートを追加します。

8.genomon_pipeline を編集します。

'analysis_type' に 'somatic' を追加します。

TODO

※ 将来的には snakemake コマンドを genomon_pipeline コマンドに入れ込むことも可能です。 詳しいオプションは snakemake 公式 を参照してください。

Pythonソースコード例

import snakemake
success = snakemake.snakemake(wdir + '/snakefile', workdir = wdir, dryrun = True)