Fry in the Web

次からこうしようと思ったことを書き残しておきます

遺伝研スパコンでRNAseqを最速・自動で行う

遺伝研スパコンにログインする方法や、sshの使い方については解説しません。 多少RNAseq解析に対して知識があり、RNAseqをもっと高速にできないか、または自分でできないか?と考えている方向けに解説します。

使うもの

Nextflow 遺伝研スパコン

Nextflowとは

ワークフローツールです。発現解析ではsamtoolsや、fastQC,salmon....など大量のツールをインストールする必要があります。また、時間がかかる処理の出力を何度も次のツールに入れなくてはならない上に、サンプルデータが10種類を超えることも珍しくありません。また、ツールの依存関係やバージョン管理も非常に煩雑です。これらをまとめて解決してくれるのがワークフローツールです。更にDocker,Singularity などのコンテナを用いることで再現可能な実行環境を構築します。 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を勝手に作って投げてくれる。

結果は主にresults/star_salmon/salmon.merged.transcript_counts.rdsです、これをRStudioで開いて、DEseq2とかでDEG検出してください。