Skip to content

shinichinamba/jobwatcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jobwatcher

Human Genome Center(HGC)スパコンおよびその基となるUniva Grid Engine(UGE)のコマンドをRから実行するRパッケージです(非公式).  {tidyverse}パッケージをベースにしており, 結果をtibble形式で得ることができます.  また, watch関数を使えばqsubおよびqrecallしたジョブを監視し, 予期しないエラーが出た場合はqsubないしqrecallし直すことができます.  {drake}パッケージをインストールすることでHuman Genome Center(HGC)スパコンでのパイプライン構築に使うことができます.

Install

インストールには, 次のコマンドを実行してください.

if (!requireNamespace("devtools", quietly = TRUE)) install.packages("devtools")
devtools::install_github("drres/jobwatcher")
library(jobwatcher)

Main functions

support functions

現在, qsub, qrecall, qreport, qacct, qstat関数をサポートしています.  実行環境がHuman Genome Center(HGC)スパコンまたはUniva Grid Engine(UGE)かどうかを内部で判定しており, 環境によって挙動が異なります.  qsubおよびqrecall関数はUGE環境でなくとも使うことができます. その場合, qsubは指定したファイルをsystem関数を用いてshで実行します. (もし一行目冒頭に#!が記述されている実行可能ファイルであった場合はbashを介さず直接実行します.) また, qrecallはHGC環境以外ではアクティブな変更を何も加えません.

functions HGC UGE Other
qsub qsub qsub send commands to terminal
qrecall qrecall (no effect) (no effect)
qreport qreport (error) (error)
qacct qreport -c qacct (error)
qstat qstat qstat (error)

現在の実行環境がどのように判定されたかを確認するには, これらの関数を1度でも実行した後にoptions(jobwatcher.mode)を実行してください.

watch

watch関数はqsubおよびqrecallしたジョブを監視し, 予期しないエラーが出た場合は指定したファイルをqsubないしqrecallし直す関数です.  監視にはqreportコマンドを利用しているため, ジョブの結果を取得するまでに実際のジョブの終了から数分程度の遅れが生じる可能性があります.  現在はHGC環境でのみ動作します.

また, qsubおよびqrecall関数にはwatch引数をとることができ, TRUEにすることでwatch関数を明示的に使わずともqsubないしqrecallしたジョブを監視することができます.  qsub関数をUGE環境でなく使用した場合, watch = TRUEの指定はsystem関数でwait = TRUEとすることに相当します.

qsub用のファイルを書く

make_qsubfileを使用することで, qsub用に適したリソースの指定を手軽に行えるようになります.  (SHIROKANE5への移行により,#$ -l os7などのOS指定が追加で必要になる場合が出てきました. 残念ながら専用の引数を用意していないため, other_req = "#$ -l os7"またはfirst_line = paste(binbash(), "\n#$ -l os7")などのように指定してください.)

また, write_qsubfileを使用すればスクリプトファイルのパスに書き込み時刻を含めることができます.  パイプライン中でよく似たファイルを自動で複製作成する場合などに, それぞれのファイル名を(ほぼ)一意にすることに使えます.

qrecall用には, write_and_qrecall関数があります. qrecallの対象ファイル群を引数にとり, ファイルに保存した上でqrecallにかけてくれる関数です.

Build a pipeline

qsub_function関数はqsubを行う関数を作成する関数です.  作成された関数を実行することでパイプラインの各qsub操作を行うことができます.  パイプライン作成部分は{drake}パッケージベースです. {drake}パッケージの日本語での説明はこちらの匿名技術者集団の解説がわかりやすいです.   {drake}パッケージはパイプラインを関数ベースで記述するため, qsub_functionを使ってパイプラインを構築していきます.  簡単な構築例はbuild_pipeline関数で得ることができます.  適宜編集してお使いください.

build_pipeline("your_pipeline_name", "your_pipeline_path", force = TRUE)
#> <U+2714> Directory 'your_pipeline_path' has been created.
#> 
#> <U+2714> Directory 'your_pipeline_path/log' has been created.
#> 
#> <U+2714> Directory 'your_pipeline_path/script' has been created.
#> 
#> <U+2714> Directory 'your_pipeline_path/config' has been created.
#> 
#> <U+2714> File 'your_pipeline_path/your_pipeline_name.sh' has been written.
#> 
#> <U+2714> File 'your_pipeline_path/your_pipeline_name.R' has been written.
#> 
#> ● Please edit 'your_pipeline_path/your_pipeline_name.R' for your own pipeline.
#> 
#> ● Then, run qsub("your_pipeline_path/your_pipeline_name.sh")
#> 

qsub_functionで作成される関数は動作に影響を与えないダミー変数を引数にとります.  ここにパイプラインの他の操作を記入することで, {drake}の機能のおかげで記入された操作がすべて完了してからその操作が実行されるようになります.

上述の通りqsubおよびqrecall関数はUGE環境でなくとも使うことができるため, #$によるリソースの指定はできませんが, デスクトップ環境でも構築したパイプラインを動かすことができます.  パイプラインをデスクトップ環境で構築・テストし, UGE環境にpushするといった使い方が可能です.

Updates

0.2.1

  • UGE環境ではqsubファイルをラップした実行ファイルを作成するよう修正
  • UGE環境ではexit codeをSGE_TASK_IDごとに作成したファイルに書き出すよう修正

0.2.0

  • qstat関数を修正
  • HGC環境以外でのサポートを向上
  • qsubのwatch引数のデフォルトをTRUEに変更

0.1.0

  • 関数名をラップ元の関数名と一致させた
  • qacct, qstat関数を追加
  • HGC環境以外でも動作するように変更
  • 仮引数が引数で指定可能な値の一覧となるよう仮引数を変更

0.0.1

  • パッケージ公開

About

An R package for building and running SGE pipelines

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages