追記:2019-01-31 一部更新(--helpの説明や、コメント追加、--make-templateについて)
自分の使いたいコマンドを、CWLにするときのTIPS
まずは、自分の使いたいコマンドを、 CommandLineTool
に変換することw考える。
具体的な事例は、別の記事にする予定です
使いたいコマンドがコンテナになっていると便利である。
もし、biocondaのパッケージなら、
biocontainersで探してみると良い。
- 公式の、検索機能 BioContainers Registry UI が、うまく動かないときは
-
Quay Container Registry · Quay で、
biocontainers
とツールの名前
で検索するとみつかることがある。- Tags をみると、利用できるバージョン一覧が得られる。
- biocontainers/metavelvet · Quay
まずは、バージョンを確認しておく。
のちのちの、再現性のために。
コマンド --version
つぎに、ヘルプやGettingスタートを見ながら、
コマンドを起こしていく。
コマンド --help
コマンドにわたす順番が問題になるならば、順番を指定しながら起こしていく。
サンプルは、このあと埋めます。
書いたCWLをバリデートしてくれる
cwltool --validate 今回作ったCWLファイル
書いたCWLのヘルプをだせる(docをかけば。 labelではでてこなかった)
cwltool --help 今回作ったCWLファイル
追記上の方法だと、ツールのヘルプがうまくでてこなかった
ただしくは
cwltool --tool-help 今回作ったCWLファイル
もしくは
cwltool 今回作ったCWLファイル --help
順番依存であった。
書いたCWL用のテンプレートを作ってくれる
ここで、できたテンプレートに入力パラメータを書く。
もし入力パラメータが、変更になったら、このファイルを書き換えればよく、今回作ったCWLファイルを書き換える必要はない。
このファイルを使わずに、直接コマンドラインから入力パラメータを指定することも可能。(実例は別の記事にて)
cwltool --make-template 今回作ったCWLファイル
解析したものは、標準出力に出るので、それを保存するようにする
cwltool --make-template 今回作ったCWLファイル > template.yml
キャッシュについて
キャッシュを使うと、ワークフローの作成時に
A->B->C
というフローだったときに、
A->B
まで動いていたら、そこまでのデータを、キャッシュしておける。
cwltool --cachedir cache
ツールの開発時によいかもしれない。
実際にテストデータを使って動かす。
このとき、実行するマシンが、サンプルデータを動かせるか(メモリの最低要求量など)を満たしているかわかっているとよい。
とにかく小さなデータを、用意すると、すぐに結果がえられてよい。
うまく動くことがわかってから、より大きなデータを実行したほうが効率的だろう。
注意点(どうしても、入力ファイルのあるディレクトリに出力をしたいとき)
CWLは使用上、基本的に入力データは、ReadOnlyで、コンテナにマウントされる。
これにより、不慮の事故でデータを失うことがない。
しかし、何かの理由で、入力データと同じディレクトリに、出力データを起きたいときに、以下の InitialWorkDirRequirement
と writable
オプションを使うと読み込み以外に書き込みもできるようになる。
追記2019-07-03 entry
について書き足した
requirements:
InitialWorkDirRequirement:
listing:
- entry: ディレクトリ $(inputs.datadirとか) (なにかちょっとここにかかれる)
writable: true
書き込みができるので、事故がおこる可能性がでてくる。