Salmon で遺伝子の発現量を定量する
Salmon は、転写産物の塩基配列ファイルと次世代シークエンスの fastq ファイルを用いて、各転写産物の発現量を高速で定量するツールです。Star などの他のマッピングツールと比べると、動作が軽い点や、リファレンスの gtf ファイルなどがなくても発現量を出すところまで簡単にできる点が魅力です。
Salmon とは何か
-- ChatGPT --
Salmon は、バイオインフォマティクスで広く使われている RNA-Seq データのトランスクリプト発現量を高速かつ高精度に定量するツールです。
・主な機能
✅ 超高速な発現定量
✅ トランスクリプトレベルの定量
✅ GCバイアス補正
✅ ライブラリタイプの自動検出
✅ 軽量なインデックス構築
✅ マルチスレッド対応
(以下略)
----
Salmon を使用することで、Trinity でアセンブリした転写産物に対して、特定の条件のサンプルでそれぞれがどの程度発現しているかを高速で計算することができます。
Salmon で発現量を定量する
Salmon は conda でインストールできるので、以下のコマンドでインストールしてください。
仮想環境は、前回と同じものを使用できます。
# 以前作成した仮想環境に入る
mamba activate bioinfo
# インストール
mamba install bioconda::salmon -y
インストールできたら、発現量を定量します。はじめに、リファレンスの配列に対して、インデックスを作成します。インデックスは、擬似マッピングの際に検索を高速に行うために使用されます。Blast で使用したデータベースと同じような役割になります。
インデックスの作成には、以下のコマンドを使用します。
# fasta ファイルのインデックスを作成する
salmon index -p 8 -t transcripts.fasta -i salmon_index
処理が終わると、「salmon_index」 というフォルダが作成されます。中には bin ファイルなどが複数含まれていますが、基本的には見なくて大丈夫です (というか、一部のファイルは表示できないはず)。
インデックスが作れたら、以下のコマンドで発現量の定量を行います。「-p」には使用する CPU の数を入れてください。
salmon quant -i salmon_index -l A -1 fastp_1.fastq -2 fastp_2.fastq -p 8 -o salmon_result
「salmon_result」というフォルダができたら成功です。フォルダ内にある、「quant.sf」というファイルが発現量のファイルになります。
ファイルは1列目から、遺伝子名、塩基数、定量に使用される長さ、TPM、リードカウントになっています。
このうち TPM が、リードカウントに補正をかけて遺伝子の発現量を表すようにしたものです。具体的には、遺伝子の長さによる補正 (1000塩基になるように補正) と、転写産物の総量を一定にする補正 (転写産物全体が100万になるように補正) を行っています。これらの補正によって、異なるサンプル、異なる遺伝子でも、TPM を比較することで遺伝子の発現量を比べることができるようになります。
詳しく知りたい方は、こちらの論文をお読みください。
サンプルが複数ある場合は、出力フォルダを「sample1」などのようにして、サンプルの数だけ実行を繰り返してください。
データを解析しやすい形に整形する
サンプル間で発現量を比較するときに、毎回複数の quant.sf を開いて比べるのは面倒なので、複数サンプルの結果を一つのファイルにまとめる方法を解説します。
具体的には、ファイルの1列目に遺伝子名、2列目以降に各サンプルの TPM、またはリードカウントを含むファイルを作成します。このようなフォーマットを、「発現量行列」と呼びます。
今回は Excel や Numbers で表示できるように、「tsv」形式のファイルを作成します。以下のコマンドを実行してください (例では、サンプルが4つあることを想定して、それぞれのフォルダ名を salmon_result1, salmon_result2, salmon_result3, salmon_result4 としています。)。
# 1列目の名前を抜き出す
cut -f 1 salmon_result1/quant.sf > salmon_result1/result_gene_id.txt
# TPM とリードカウントを抜き出す (for の使い方がわからない場合は、1サンプルずつ順番に処理してください。)
SALMON=(1 2 3 4)
for num in ${SALMON[@]}
do
cut -f 4 salmon_result${num}/quant.sf > salmon_result${num}/result${num}_tpm.txt
cut -f 5 salmon_result${num}/quant.sf > salmon_result${num}/result${num}_count.txt
done
# 1行目を作成 (4サンプル分)
echo "Name sample1 sample2 sample3 sample4" |sed -e "s/ /\t/g" > salmon_tpm.tsv
echo "Name sample1 sample2 sample3 sample4" |sed -e "s/ /\t/g" > salmon_count.tsv
# TPM を列方向に結合 (>> を使うことで、上で作った tsv に追加する)
paste salmon_result1/result_gene_id.txt salmon_result1/result1_tpm.txt salmon_result2/result2_tpm.txt salmon_result3/result3_tpm.txt salmon_result4/result4_tpm.txt |tail -n +2 >> salmon_tpm.tsv
# リードカウントを列方向に結合
paste salmon_result1/result_gene_id.txt salmon_result1/result1_count.txt salmon_result2/result2_count.txt salmon_result3/result3_count.txt salmon_result4/result4_count.txt |tail -n +2 >> salmon_count.tsv
「salmon_tpm.tsv」と「salmon_count.tsv」ができて、中には4サンプル分の TPM、リードカウントがそれぞれ含まれているはずです。
グラフや散布図を書くときや、他のツールを用いて発現変動遺伝子を取り出すときなどに、このフォーマットにしておくと便利です。
今回は以上です。
おまけ: 書籍紹介
バイオインフォマティクスの勉強に役立つ本をいくつか紹介します。
リンクをクリックすると、Amazon のページに飛びます。
・バイオインフォマティクス入門
生物学、コンピュータ、バイオインフォマティクスについて、基礎的な知識を習得するのに役立つ本です。見開きのページごとで内容がまとめられているので、毎日少しずつ勉強したいという方にもおすすめです。
・RNA-Seqデータ解析 WETラボのための超鉄板レシピ
具体的な解析方法が載っている本です。