【超絶初心者】SRAデータベースからRNAseq解析を初体験したメモ
超絶初心者ですが、自分のノートPCを使ってRNAseq解析の完遂を目指しました。このnoteは、解析を再現して行うためのメモnoteです。
自分の基礎実験に並行して解析を行ったため、結構時間がかかりました(慣れれば早くなると信じています…)
以下、解析にかかった時間
・1日目:SRA toolkitの用意からsalmonを用いたマッピングまで(1サンプルのみ)
・2日目:1日目と同じ工程を全サンプルで実施
⓪PCスペック
VAIO Z
CPU 11th Gen Intel Core i7 @ 3.40 GHz
RAM 32.0 GB
Storage 1TB
①SRA toolkitの用意
下記サイトを参考にnoteを作成している。
a) SRA toolkitのインストール
下記サイトからSRA toolkitをインストールする。SRA toolkitはSRA (Sequence Read Archives) 、つまり配列に関わるデータを扱うためのツール群らしい。このツールを使うことで、NCBI SRAやDDBIなどの公共データベースから、fastqファイルやSRAファイルをダウンロードすることが可能。
下記コマンドを入力して、SRA toolkitをインストールし、解凍とパスを通す。
#SRA-toolkitのインストール
wget http://ftp-trace.ncbi.nlm.nih.gov/sra/sdk/current/sratoolkit.current-ubuntu64.tar.gz
#解凍
tar xvzf sratoolkit.current-ubuntu64.tar.gz
#解凍したファイルの移動 (verによってsratoolのファイル名が異なるため注意)
sudo mv sratoolkit.3.0.10-ubuntu64 /usr/local/src/
#パスを通す(verによってsratoolのファイル名が異なるため注意)
sudo ln -s /usr/local/src/sratoolkit.3.0.10-ubuntu64/bin/* /usr/local/bin/
b) pigzのインストール(*不要かも)
*後述するgzip圧縮のが楽そうなので、これは要らないかも*
SRAファイルはとても重いので、pigz圧縮用のソフトをインストール。下記コマンドを入力。
#conda経由でpigzをインストール
conda install pigz
②公共データベースからデータを探す
公共データベース(NCBI SRA)からデータを用意する。今回は「腎臓内のマクロファージ」に注目するため、下記の様にキーワードを入力して検索。
すると、下図のようにいくつかのデータが表れる。この中から、見たいデータが見つかりそうな「renal mac in WT-UUO (or sham)」に注目した。
このデータをクリックすると、下図のようなページに移動する。下の方にあるテーブルにSRRから始まるサンプル名があり、この名前を使用してubuntuのコマンド経由でSRAファイル(もしくはfastqファイル)をダウンロードする。
③SRAファイルのダウンロード
**gzip圧縮の方がワンステップで楽かも!!**
次にSRA toolkit 中の「fastq-dump」コマンドを利用して FASTQ を抽出する。
fastq-dump は、NCBIのSequence Read Archive (SRA) Toolkitの一部であるコマンドラインツール。このツールは、SRAデータベースに格納されているシーケンシングデータを、一般的に使用されるFASTQ形式に変換してダウンロードするために使用される。
a-i) fastq-dumpを使用してpigz圧縮ファイルを取得する(*不要かも)
下記のコマンドを入力することで、ペアエンドのfastqファイルをダウンロードすることが可能。ただしファイル容量がとても重いので、下記コマンドを更に施行してファイルを圧縮する。
#SRAファイル(ペアエンド)を圧縮せずに取得
fastq-dump --split-files SRR12344183
#取得したファイルをpigz形式に圧縮
pigz SRR12344183_1.fastq
pigz SRR12344183_2.fastq
a-ii) fastq-dumpを使用してgzip圧縮ファイルを取得する(★)
ちなみに、下記コマンドで直接gzip形式で圧縮ファイルを作成してもいい。こっちの方が楽かもしれない。(gzipはpigzと似たような圧縮方法。pigzの方が圧縮速度が速いらしいが、下記のコマンドのようにfastq-dumpで一括で圧縮ファイルをダウンロードする方法がない)
#SRAファイル(ペアエンド)をgzip圧縮して直接ダウンロード
fastq-dump --gzip --split-files SRR12344183
④Trim Galoreを用いてトリミング
下記サイトを参考にした。
a) Trim Galore!のインストール
まずはconda経由でTrim Galore!をインストールする。
#conda経由でTrimGalore!のインストール
conda install trim-galore
b) cutadaptおよびFastQCのインストール
次に、brew経由でcutadaptとFastQCをインストールする。これらのアプリがないと、Trim Galoreが作動できない。
brew install cutadapt
brew install FastQC
c) Trim Galore!を用いたトリミング(★)
上記をインストールし、Trim Galoreのパスを通したら、実際にトリミングを行う。
まずはトリミングを行いたいファイルが存在するディレクトリに移動する。そのフォルダ内で③で取得したgzip圧縮されたペアエンドfastqファイルに対して、下記のコマンドを実行する。
*なかなかに時間がかかるので注意!!(1ペアエンドのみで30-40分かかった…)
trim_galore --paired SRR12344183_1.fastq.gz SRR12344183_2.fastq.gz
実行すると、下図のようなトリミングされたファイルが得られる。
出力は入力ファイル名_val_1.fq、入力ファイル名_val_2.fqとなる。
⑤Salmonを使ったマッピング
a) Salmonのインストール
今回はSalmonを用いてマッピングを進める。
まずはSalmonをHomebrewもしくはconda経由でインストールする。今回はbrewを使用してインストールした。
#condaを用いたインストール
conda install -c bioconda -y salmon
#Homebrewを用いたインストール
brew install salmon
b) 公共データベースからtranscript.fastqファイルの取得
次に、salmonを使ってtranscriptのfastqファイルにindexをつけるわけだが、まずはこのfastqファイルをデータベースから取得する。今回はhumanのcDNAデータを取得する。
transcriptのfastqファイルは、EnsembleのcDNAデータを使用する。下記からアクセス可能。今回はコマンドでダウンロードを試みる。
*参考までに、下図の様に辿り着けます。下図はヒトデータの場合です!マウスとヒトの取り間違いに注意してください!!(ヒトとマウスを間違って進めてたなんて言えない…)
では、下記のコマンドを入力して、今回は「Mouse transcript.fastq」ファイルを取得する。
#マウスのトランスクリプトファイルをコマンドで取得
mkdir -p ~/salmon_index/salmon_mouse
cd salmon_index/salmon_mouse/
wget ftp://ftp.ensembl.org/pub/release-110/fasta/mus_musculus/cdna/Mus_musculus.GRCm39.cdna.all.fa.gz
gunzip Mus_musculus.GRCm39.cdna.all.fa.gz
#ヒトサンプル用(トランスクリプトファイルの取得)
mkdir -p ~/salmon_index/salmon_human
cd salmon_index/salmon_human/
wget ftp://ftp.ensembl.org/pub/release-110/fasta/homo_sapiens/cdna/Homo_sapiens.GRCh38.cdna.all.fa.gz
gunzip Homo_sapiens.GRCh38.cdna.all.fa.gz
上手くいかないときは、サイトから直接ダウンロードしてもよい。
c) Indexの作成
次にダウンロードしたtranscriptファイルにindexをつける。
下記のコマンドを実施。
#ダウンロードしたトランスクリプトファイルにindexをつける
#マウス用!
cd salmon_index/salmon_mouse/
salmon index -t Mus_musculus.GRCm39.cdna.all.fa -i Mus_musculus.GRCm39_salmon_index
#ヒトサンプル用(トランスクリプトファイルにindexをつける)
cd salmon_index/salmon_human/
salmon index -t Homo_sapiens.GRCh38.cdna.all.fa -i Homo_sapiens.GRCh38_salmon_index
d) カウントの実施(定量化)(★)
まず、ここからフォルダやファイルの場所をしっかり決めないと、どれがどれだか分かりにくくなりそうなので注意。
→ 上(⑤-(c))で作成したindexフォルダと④で作成したトリミングフォルダを、同一フォルダ内に用意しておくといい。今回は、「salmon_index/salmon_mouse」の中に一緒に置いた。
フォルダを作成したら、このフォルダにディレクトリを移動。
続いて、ランを実行する。
下記のコマンドを入力して実行する。
実行後のファイルは、新しく「salmon_output」というoutputディレクトリに作成されるように指示。
**必ず出来上がるフォルダ名がサンプル毎に変わるように、下のコマンドを適宜修正すること(3か所変更する部位がある)!!フォルダ名が同じだと、過去のデータが上書きされてしまって、やり直しになる**
#ランの実施
#マウスサンプル用!
mkdir -p ~/salmon_index/salmon_mouse/salmon_output
cd ~/salmon_index/salmon_mouse/salmon_output
salmon quant -i ~/salmon_index/salmon_mouse/Mus_musculus.GRCm39_salmon_index \
-l IU \
-1 ~/salmon_index/salmon_mouse/SRR12344183_1_val_1.fq.gz \
-2 ~/salmon_index/salmon_mouse/SRR12344183_2_val_2.fq.gz \
--validateMappings \
-o ~/salmon_index/salmon_mouse/salmon_output/SRR12344183_fastq_salmon_quant
#ヒトサンプル用
mkdir -p ~/salmon_index/salmon_human/salmon_output
cd ~/salmon_index/salmon_human/salmon_output
salmon quant -i ~/salmon_index/salmon_human/Homo_sapiens.GRCh38_salmon_index \
-l IU \
-1 ~/salmon_index/salmon_human/SRRXXXXXXXX_1_val_1.fq.gz \
-2 ~/salmon_index/salmon_human/SRRXXXXXXXX_2_val_2.fq.gz \
--validateMappings \
-o ~/salmon_index/salmon_human/salmon_output/SRRXXXXXXXX_fastq_salmon_quant
実行後にoutputフォルダ内に、下記のように「quant.sf」ファイルができる!
⑥群間比較のためにサンプルの用意
a) すべてのサンプルで操作を繰り返す
ここまでの操作を全てのサンプルで繰り返す(目次の「★」がある項を全て)。
quant.sfファイルを作成したサンプルに関しては、SRAファイルやトリミング後のファイルは不要となるので、適宜削除して可。
ここはパワープレイ!!
b) できあがったファイルたちをフォルダにまとめる
この後のRstudioでの解析にむけて、出来上がったファイルたちをフォルダにまとめる。今回は⑤-dで出来上がったフォルダ「salmon_output」内に、下図のようにまとめた。
ここまでLinux (Ubuntu)で操作をしてきたが、ここからはRstudioを用いての解析に移る。操作をしやすくするため、この「salmon_output」フォルダをデスクトップとかドキュメントフォルダ内にコピペしておく。
⑦tximportによるデータの整理
a) Rstudioにtximportをインストールする
あまりにもRstudioに詳しくないので、ネットの情報を見様見真似で行いました。参考にしたの下記サイト。
まず、Rstudioのワーキングディレクトリをデータをまとめておいたフォルダに移動しておきます。下図の矢印(↑)のところから、「salmon_output」フォルダを選ぶ。
次に、tximportをインストールする。下記のコードをコンソールに入力し、実行する。
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("tximport")
b) tximportでquant.sfファイルを整理する
次に、tximportを使ってquant.sfファイルを整理し、この後の群間比較に使えるデータに変換する。
下記のコマンドをコンソールに入力し、実行する。
*ワーキングディレクトリ内に「SRRXXXXXX_fastq_salmon_quant」ファイルたちがあることを確認する!これらが無いとうまく走らない。
library(tximport)
library(jsonlite)
library(readr)
salmon_dirs <- list.files('.', pattern = 'fastq_salmon_quant')
salmon_dirs
salmon.files <- file.path(salmon_dirs, 'quant.sf')
names(salmon.files) <- c('UUO1', 'UUO2', 'UUO3', 'Sham1', 'Sham2', 'Sham3')
tx.exp <- tximport(salmon.files, type = "salmon", txOut = TRUE)
library(tximport)
library(jsonlite)
library(readr)
salmon_dirs <- list.files('.', pattern = 'fastq_salmon_quant')
salmon_dirs
salmon.files <- file.path(salmon_dirs, 'quant.sf')
names(salmon.files) <- c('UUO_1', 'UUO_2', 'UUO_3', 'Sham_1', 'Sham_2', 'Sham_3')
tx.exp <- tximport(salmon.files, type = "salmon", txOut = TRUE)
head(tx.exp$counts)
## UUO_1 UUO_2 UUO_3 Sham_1 Sham_2 Sham_3
## AT1G19090.1 0.000 0.000 0.000 0.000 0.000 0.000
## AT1G18320.1 12.232 34.056 27.443 10.766 15.972 12.213
## AT5G11100.1 154.000 183.000 170.000 162.000 180.000 167.000
## AT4G35335.1 455.000 509.000 514.000 399.000 492.000 467.000
## AT1G60930.1 158.000 200.000 176.000 120.000 171.000 157.000
## AT1G17000.1 0.000 0.000 0.000 0.000 0.000 0.000
続いて、転写産物の名前と遺伝子名の対応表(データフレーム)を作成し、遺伝子発現量に換算する(よく理解できていない…)。
tx2gene <- data.frame(
TXNAME = rownames(tx.exp$counts),
GENEID = sapply(strsplit(rownames(tx.exp$counts), '\\.'), '[', 1)
)
salmon.gene.exp <- summarizeToGene(tx.exp, tx2gene)
summarizing abundance
summarizing counts
summarizing length
データを書き出す
csvファイルとしてデータを書き出す。
table <- as.data.frame(salmon.gene.exp$counts)
write.csv(table, file = "salmon.gene.csv", row.names = TRUE)