東京理科大学朽津研究室B4の前田です。シロイヌナズナのRNAseqやってます。
遺伝研スパコンにログインする方法や、sshの使い方については解説しません。
多少RNAseq解析に対して知識があり、RNAseqをもっと高速にできないか、または自分でできないか?と考えている方向けに解説します。
遺伝研スパコンのUGEの問題は試行錯誤しまくってやっとわかったので、もっとエレガントに解決できる方がいましたら教えて下さい :[
使うもの
Nextflow
遺伝研スパコン
Nextflowとは
ワークフローツールです。発現解析ではsamtoolsや、fastQC,salmon....など大量のツールをインストールする必要があります。また、時間がかかる処理の出力を何度も次のツールに入れなくてはならない上に、サンプルデータが10種類を超えることも珍しくありません。また、ツールの依存関係やバージョン管理も非常に煩雑です。これらをまとめて解決してくれるのがワークフローツールです。更にDocker,Singularity
などのコンテナを用いることで再現可能な実行環境を構築します。
https://www.nextflow.io/
-
もうpythonをインストールする必要はありません。
-
fastQCをインストールする必要はありません。
-
trimgaloreをインストールする必要はありません。
PCを変えても全く同じ環境を再現できます。そのため、手元で行った解析と全く同じことをスパコンで行ったり、他人が行った解析を自分が再現したりできます。
今回はNextflowで既に書かれたワークフローで世界中の人がメンテナンスしている既存パイプラインを使用します。
[https://nf-co.re/rnaseq]
基本的な使用方法はusageを見てください。
以下はnf-core/RNAseqと遺伝研スパコン特有の問題の解決方法です。
nf-core/RNAseqと遺伝研スパコン特有の問題の解決方法
sshで遺伝研のスパコンにログインします。
qlogin -l mem_req=16g,s_vmem=16G
この時memoryを指定するのはjavaを実行したいからです。
export MALLOC_ARENA_MAX=2
も実行します。
curl -s https://get.nextflow.io | bash
するとカレントディレクトリに実行バイナリが落ちてきます。
./nextflow run nf-core/rnaseq -profile test,singularity
で動くか確認してください。(エラー出たら権限関連かも、Linux 実行ファイル 権限とかで検索してください)
RNAseqを行う
遺伝研のスパコンはUGEというジョブ管理システムで動いています。
このUGE(or遺伝研の設定?)についてハマりどころが結構あるので気をつけてください
- 間違ったリソースパラメータを指定すると永遠にqw(que waited)の状態になる、エラーは出ない。
- 実行されないのは間違ったパラメータ指定してるからなのに、混んでるから実行されないんだと勘違いしてしまう!!!!
- キューはshort.qで十分。並行処理の1処理自体は時間がかからない。
- nextflowのconfigでmemoryを指定すると、h_rt/h_rss/mem_freeが勝手に指定される。遺伝研のスパコンではこれらを指定するとqwから脱出できなくなる。
h_rt/h_rss/mem_freeが勝手に指定される問題の解決法
profiles {
uge {
process{
executor = 'uge'
penv = "def_slot"
clusterOptions ="-S /bin/bash -l s_vmem=16G -l mem_req=16G -l short -cwd -o stdout -e stderr"
withName: '.*' {
time=null
memory = null
}
}
singularity.autoMounts = true
docker.enabled = false
singularity.enabled = true
podman.enabled = false
shifter.enabled = false
charliecloud.enabled = false
}
}
.nextflow/assets/nf-core/rnaseq/nextflow.config
に↑のようなプロファイルを追加する。
.nextflow/assets/nf-core/rnaseq/modules/nf-core/software/qualimap/rnaseq/main.nf
からdef memory = getMemory()+"G"
みたいなところを探す、だいたい33行目周辺にある。
これを def memory = 16 + "G"
に書き換える。
nextflowのmemoryをnullにしちゃったのでgetMemoryでぬるぽになる。
実行する
./nextflow run nf-core/rnaseq --input ./samplesheet.csv --genome TAIR10 -profile uge -resume --save_reference --max_memory 16.GB
を実行する。
qsubは使わないことに注意。
nextflowがqueを勝手に作って投げてくれる。