DRMAA (分散リソース管理アプリケーションAPI)は、グリッド/クラスターに送信された作業の送信と管理の仕様を説明するオープンAPIのようです。 スケジューラがDRMAAに準拠している場合、 snakemake
の -drmaa
フラグを使用すると、それによって公開される追加のコントロールが提供されると思います。 API。
DRMAAサポートに関する質問で述べたように、送信されたジョブを強制終了または停止するために、コンソールのCtrl + Cがグリッドに渡されます。たとえば、 Sun Grid Engine
で qdel
コマンドを使用する必要があるタスク。
提案が有効になる理由がわかりました。 -drmaa
は、ジョブの送信と管理を少し簡単にする機能(ジョブの制御、ログとエラーの可用性など)を公開する可能性があるため、可能な場合は snakemake
。 snakemake
の経験がある人ならもう少し説明できるかもしれませんが、これがお役に立てば幸いです。
価値があるので、DRMAAなしでSun GridEngineを使用しています。 qstat
からの優れた情報、およびその qacct
ログ形式は、おそらく私が今まで遭遇した中で最悪のファイル形式です。 DRMAAは、 snakemake
(およびその他)がこの情報をより簡単に取得できる優れた(または少なくともより合理的な)APIを提供していると思います。
追加:
内部では、フラグは __ init __。py
内のPythonの argparse
モジュールによって解析されます。 相互に排他的なオプションのグループは、 -cluster
または -drmaa
(または -cluster-sync コード>)。
-cluster
または -c
では、引数を指定する必要があります。クラスターでジョブを送信するコマンド(例では qsub
という名前)。 -drmaa
フラグは、DRMAAが使用されることを snakemake
に示しているように見えます。これは、コンソールから実行するコマンドの方法に関してはあまり変わりません。 __ init __。py
または workflow.py
で処理されます。
ただし、スケジューラー( scheduler.py
で指定)、 elif
ステートメントは、クラスターモードとのいずれかの形式になっているかどうかを確認します。 else
は、代わりに -drmaa
フラグを立てた場合をキャッチします。
ここで魔法が起こります。これで、ジョブはデフォルトのエグゼキュータの代わりに executors.pyで指定されたDRMAAExecutor
。
さらに調査しなくても、 DRMAAExecutor
いくつかのクラス属性を備えており、他の属性と比較して追加の関数を公開しています。
これがもっと役立つことを願っていますか?繰り返しになりますが、私は自分でコードを見ただけですが、 snakemake
ユーザーがチャイムを鳴らす代わりに、私は鼻を持っていると思いました。