4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GalaxyAdvent Calendar 2019

Day 12

Docker-composeで解析(RNAseq)

Last updated at Posted at 2019-12-09

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の中身

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の中身

.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 を出力。

内容→高速なfastqの前処理パイプライン fastp

・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 を出力。

内容→
高速なRNA seqのマッピングツール STAR

・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の中身

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できる特典付き!!
※まさかの未完!!(:pick:失敗したので工事中:pick:

おわり

おわりではないけどおわり。
工事終了しましたら、「おまけのおまけ」が更新されます。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?