TrinityでcDNAをアセンブル

TrinityはRNA-Seqのリードをアセンブルして、cDNAの配列をつくります。

リファレンス

Grabherr MG, Haas BJ, Yassour M, Levin JZ, Thompson DA, Amit I, Adiconis X, Fan L, Raychowdhury R, Zeng Q, Chen Z, Mauceli E, Hacohen N, Gnirke A, Rhind N, di Palma F, Birren BW, Nusbaum C, Lindblad-Toh K, Friedman N, Regev A. Full-length transcriptome assembly from RNA-seq data without a reference genome. Nat Biotechnol. 2011 May 15;29(7):644-52. doi: 10.1038/nbt.1883. PubMed PMID: 21572440.

インストール

dockerを使って環境をつくります。docker search trinityとしてみると docker.io/trinityrnaseq/trinityrnaseq (以下trinityrnaseq)が見つかりました。これをダウンロードします。

# docker pull docker.io/trinityrnaseq/trinityrnaseq
# docker inspect docker.io/trinityrnaseq/trinityrnaseq
        "Config": {
            (途中省略)
            "Cmd": [
                "/bin/bash"
            ],
            (途中省略)
            "WorkingDir": "/usr/local/src",

中身をdocker inspect で調べてみると、WorkingDirが/user/local/srcで、Cmdが/bin/bashとなっていることがわかります。docker runで起動すると/bin/bashが動くことがわかります。-dをつけていればattachで接続します。execで-dをつけるとバックグラウンドで実行します。

作業ディレクトリの設定

docker内のtrinityを実行するときに問題になるのが、fastqファイルの置き場所とtrinityの作業ディレクトリのパーミッションです。これらをコンテナ内のファイルとして用意する場合はdocker cpでファイルを移動する必要があります。コンテナの外に作ったファイルをマウントする場合は、所有権に注意する必要があります(docker内ではrootとしてふるまう)。

前処理 後処理 デメリット
ファイルをコピーする場合
# docker cp fastq_files trinity:/tmp
# docker cp trinity:/tmp/ ./
ファイルのコピーに時間がかかる。
マウントする場合
# mkdir working_dir
# chmod 777 working_dir
# chown user. -R working_dir
ファイルのパーミッションに悩まされる。

fastqファイルの指定

通常次世代型シーケンサーは一つのサンプルを複数のファイルに分けて出力します。最近のtrinityではこれらを一覧するファイルを作成し、それを–sample_filesオプションとして指定することができます。結構な数があると面倒なので以下のようにつくりました。

# ls Nco_Roots_*
Nco_Roots_S8_L001_R1_001.fastq.gz
Nco_Roots_S8_L001_R2_001.fastq.gz
Nco_Roots_S8_L002_R1_001.fastq.gz
Nco_Roots_S8_L002_R2_001.fastq.gz
Nco_Roots_S8_L003_R1_001.fastq.gz
Nco_Roots_S8_L003_R2_001.fastq.gz
Nco_Roots_S8_L004_R1_001.fastq.gz
Nco_Roots_S8_L004_R2_001.fastq.gz
# ls *_R2_*.fastq.gz | sed -e "s/_S[0-9]\+.*//" >sample
# ls *_R2_*.fastq.gz >R2
# paste sample sample <(sed s/_R2_/_R1_/ R2) R2 >samples_file.txt

dockerコンテナの作成

-dでバックグラウンド実行(コンテナが常時Upの状態)、-iで

# docker run -dit --volume /path/to/working_dir:/home --workdir /home --name trinity docker.io/trinityrnaseq/trinityrnaseq

trinityの実行

docker execに-dオプションをつけるとバックグラウンド実行となります。

# docker exec -d trinity Trinity --seqType fa --max_memory 64G --samples_file samples_file.txt

結局のところ

fastqファイルの指定はsamples_fileではうまくいかなかったので、オーソドックスにleft.fqとright.fqを用意しました。

# zcat *_R1_*.fastq.gz >left.fq
# zcat *_R2_*.fastq.gz >right.fq
# docker exec -d trinity Trinity --seqType fa --max_memory 64G --left left.fq --right right.fq