Docker-composeで解析(RNAseq)
これを見ればあなたもすぐにRNAseq解析ができる!!
※Dockerインストール済みの場合
前回に引き続き、解析ツールをDocker-composeで作成してみた。
Docker-composeを使ってみよう
今回やりたいこと
RNAseq解析
docker-composeでsraファイルをbamファイルにしてみせます。
手順
sra
↓(parallel-fastq使用)
fastq
↓(fastp使用)
trim.fastq
↓(STAR使用)
bamファイル
(全てbiocontainerのコンテナを使用)
biocontainersのリポジトリURL:biocontainers
内容としては、下記リンクのスクリプトと同様のことができます。※exec_bam2readcount_STAR.Rを除く。
下記スクリプトを動かすためには様々なパッケージのインストールが必要になりますね・・・。
GitHub:https://github.com/petadimensionlab/STAR
参考URL:
RNAseq解析について:遺伝子発現量解析RNA-Seq
持ち物・下準備
・リードデータ(SRR7508944.sra)
・genome
・アノテーションファイル
をホストPC内任意のディレクトリに保存。(ディレクトリ構成は下記の通り 参照)
※今回の対象データ:SRR7508944
・genomeとアノテーションファイル名を同じ名前に変更しておこう。
例)genome=TAIR10.fa、annotation=TAIR10.gff3
参考URL:
持ち物の中身の詳細:STAR による RNA-Seq リードのマッピングSTAR (A. thaliana, paired-end RNA-Seq)
ディレクトリ構成は下記の通り
.(/yourlocal_dir)
├── docker-compose.yml
├── .env
├── input/ # リードデータ.sra保存
├── (output/) # 解析結果の出力ファイル用ディレクトリ(docker-composeをスタートさせると作成)
└── STARidx/ #genome、アノテーション保存 (STARindexの保存先)
Docker-compose.yml 作成
docker-compose.ymlの中身
#env in .env file
version: "3"
services:
parallel-fastq:
image: quay.io/biocontainers/parallel-fastq-dump:${VER_1}
container_name: parallel-fastq
tty: true
volumes:
- ${DIR}:/tmp/wk
working_dir: /tmp/wk
command: >
bash -c "parallel-fastq-dump --sra-id input/${ID}.sra --threads ${THREADS} --split-files --gzip &&
mkdir -p output/${ID} &&
mv *.fastq.gz output/${ID}/"
fastp:
image: quay.io/biocontainers/fastp:${VER_2}
container_name: fastp
tty: true
volumes:
- ${DIR}:/tmp/wk
working_dir: /tmp/wk
command: sh wait-for-it.sh output/${ID}/${ID}_1.fastq.gz fastp -w ${THREADS} -h output/${ID}/${ID}.html -j output/${ID}/${ID}.json -i output/${ID}/${ID}_1.fastq.gz -I output/${ID}/${ID}_2.fastq.gz -o output/${ID}/${ID}_trim_paired_1.fastq.gz -O output/${ID}/${ID}_trim_paired_2.fastq.gz
star:
image: quay.io/biocontainers/star:${VER_3}
container_name: star
tty: true
volumes:
- ${DIR}:/tmp/wk
working_dir: /tmp/wk
command: >
bash -c "sh wait-for-it.sh output/${ID}/${ID}.html STAR --runThreadN ${THREADS} --runMode genomeGenerate --genomeDir STARidx --genomeFastaFiles STARidx/${SPECIES}.fa --sjdbGTFfile STARidx/${SPECIES}.gff3 ${STARidxopt} &&
STAR --runThreadN ${THREADS} --readFilesCommand gunzip -c --genomeDir STARidx --readFilesIn output/${ID}/${ID}_1.fastq.gz output/${ID}/${ID}_2.fastq.gz --outFileNamePrefix output/${ID}/${ID}. ${STARopt}"
.envの中身
VER_1=0.6.5--py_0 #バージョン
VER_2=0.20.0--hdbcaa40_0 #バージョン
VER_3=2.7.1a--0 #バージョン
THREADS=6 #スレッド
DIR=/yourlocal_dir #ローカルのディレクトリ
ID=SRR7508944 #対象データのID
SPECIES=TAIR10 #対象データの種類
STARidxopt=--sjdbOverhang 100 --genomeSAindexNbases 12 #STARコマンドのオプション
STARopt=--outFilterMultimapScoreRange 1 --outFilterMultimapNmax 10 --outFilterMismatchNmax 5 --alignIntronMax 500000 --alignMatesGapMax 1000000 --sjdbScore 2 --alignSJDBoverhangMin 1 --genomeLoad NoSharedMemory --limitBAMsortRAM 0 --outFilterMatchNminOverLread 0.33 --outFilterScoreMinOverLread 0.33 --sjdbOverhang 100 --outSAMstrandField intronMotif --outSAMattributes NH HI NM MD AS XS --outSAMunmapped Within --outSAMtype BAM Unsorted --outSAMheaderHD @HD VN:1.4 #STARコマンドのオプション
さて、docker-compose.ymlの解説です。
ざっくり解説すると、
3つのコンテナイメージをコンテナ化し (=parallel-fastq・fastp・star)
マウントするディレクトリはどれも同じで (=ホストは.envに記載した”/yourlocal_dir”・コンテナはそれぞれtmp/wk)
それぞれコマンドを与えている。(=それぞれcommand以下に記述)
それぞれのコマンドのざっくり解説は下記にて。
内容→SRA Toolkitのfastq-dumpを並列実行して高速化する parallel-fastq-dump
・parallel-fastq
SRR7508944.sra から SRR7508944_1.fastq.gz・SRR7508944_2.fastq.gz を出力。
・fastp
SRR7508944_1.fastq.gz・SRR7508944_2.fastq.gz から SRR7508944_trim_paired_1.fastq.gz・SRR7508944_trim_paired_2.fastq.gz・SRR7508944.json・SRR7508944.html を出力。
・star
1. index作成。
2. SRR7508944_trim_paired_1.fastq.gz・SRR7508944_trim_paired_2.fastq.gz から SRR7508944.Aligned.out.bam・そのたlogファイル を出力。
sraファイルがbamファイルになりましたね。
動かしてみよう!
genomeとか探すんめんどくせ。って方、下記Githubからどぞー!
.env の/yourlocal_dir
を変更するだけ!
※sraは容量でかいのでアップロードできませんでした。自力でダウンロードしてください。(docker run --rm -v /yourlocal_dir/Docker_compose_STAR/input:/root/ncbi/public/sra inutano/sra-toolkit prefetch SRR7508944
でダウンロードできます。)
Github:https://github.com/petadimensionlab/Docker_compose_STAR
動かし方
まず、docker-conpose.ymlのあるディレクトリに移動。
cd /yourlocal_dir
起動
イメージがない場合は自動でインストールしてくれます。
docker-compose up -d
logをみる。
途中経過もわかる。
docker-compose logs
終わったらおしまい。
いらないので捨てましょう。
docker-compose rm -f
これであなたもRNAseq解析ができた(はず)!!
もっと詳しくDocker-compose.ymlを知りたい方
fastpとstarのcommandに書いてるwait-for-it.sh
ってなに?
→順番にコンテナのコマンドが動作するようにシェルスクリプトです。(いっぺんにコンテナが動き出すといろいろやばいです。)
wait-for-it.shの中身
#!/bin/sh
set -e
waitfile="$1"
shift
cmd="$@"
until test -e $waitfile
do
>$2 echo "Waiting for file [$waitfile]."
sleep 1
done
>&2 echo "Found file [$waitfile]."
exec $cmd
command記入例
コンテナ①:
(略)
command: touch test.txt
コンテナ②:
(略)
command: sh wait-for-it.sh test.txt touch test2.txt
説明:コンテナ①でできる予定のファイル(text.txt)の存在を確認するまでコンテナ②は待機、ファイル(text.txt)見つけたら指定したコマンド(touch test2.txt)動かす。
参考URL:docker-composeでDBの起動完了を待ってからWebアプリを実行する
tty: ture ってなに?
→起動したコンテナが落ちないようにするためです。
参考URL:docker-compose up したコンテナを起動させ続ける方法
そのた
STARを使用しているので、PCのメモリ・CPUをよく確認して動かしましょう。
→仮想環境でも自分のPCのスペック以上のことはできません。。。
スペック最強PC!!なのに動きません。
→Dockerの設定を変更しましょう。
右上(Macの場合)のクジラクリック→Preferences → Advancedで設定できます。
参考URL: macOSでDocker環境構築
使用したいデータに置き換えてやってみようー!!
(!注意!本件のはペアードエンド用となります。)
7.おまけのおまけ
沢山sampleがデータあるとき用のpythonスクリプトを作成しました。
このpythonを動かしてほったらかしにできますzzz(( _ _ ))..zzzZZ
※ついでにSRAデータもinstallできる特典付き!!
※まさかの未完!!(失敗したので工事中)
おわり
おわりではないけどおわり。
工事終了しましたら、「おまけのおまけ」が更新されます。