LoginSignup
3

More than 3 years have passed since last update.

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

Last updated at Posted at 2018-12-06

追記: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

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3