Edited at

自分の使いたいコマンドを、CWLにするときのTIPS

追記:2019-01-31 一部更新(--helpの説明や、コメント追加、--make-templateについて)


自分の使いたいコマンドを、CWLにするときのTIPS

まずは、自分の使いたいコマンドを、 CommandLineTool に変換することw考える。

具体的な事例は、別の記事にする予定です

使いたいコマンドがコンテナになっていると便利である。

もし、biocondaのパッケージなら、

biocontainersで探してみると良い。

まずは、バージョンを確認しておく。

のちのちの、再現性のために。


コマンド --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で、コンテナにマウントされる。

これにより、不慮の事故でデータを失うことがない。

しかし、何かの理由で、入力データと同じディレクトリに、出力データを起きたいときに、以下の InitialWorkDirRequirementwritable オプションを使うと読み込み以外に書き込みもできるようになる。

追記2019-07-03 entry について書き足した

cwl

requirements:

InitialWorkDirRequirement:

listing:

- entry: ディレクトリ $(inputs.datadirとか) (なにかちょっとここにかかれる)

writable: true

書き込みができるので、事故がおこる可能性がでてくる。