case1 - nibb-unix/gitc202402-unix GitHub Wiki

実践演習1 RNA-Seq 解析結果の集計(1)

(以下の実戦演習はローカルPC上で行うこと)

RNA-Seq 解析のデータを使って、Unix やR の基本コマンドを使ってもう一歩先の解析を行ってみよう。

UNIXコマンドプロンプトで ~/Desktop/gitc/data/9_ex/rnaseq に移動しよう。この下の results ディレクトリには、12サンプルのRNA-Seq データをそれぞれ大腸菌ゲノムにマッピングした結果から、htseq-count コマンド(https://htseq.readthedocs.io/en/release_0.11.1/count.html)を使って、遺伝子 ごとにその領域に重なるリード数を単純にカウントした結果(ecoli.*.htseq)が格納されて いる。UNIX コマンドを使って、この結果を整理してみよう。

なお、ここで使うサンプルデータは、NCBI GEO データベースの GSE59468 からデータを間引いて作成したもので、「UNIX 基本コマンド」の講習で用いたものと同じものである(データのダウンロードについては、補足を参照)。大腸菌の2つの系統を、それぞれ2つの異なる条件で培養して、それぞれについて3つの反復をとった、 計12 個のサンプルのデータが含まれている。12 個のファイルには連番が振られており、各番号はそれぞれ以下の系統・条件の組合せに対応している。

番号 strain condition replicate SRA accession
1 MG1655 MPOS 1 SRR1515282
2 MG1655 MPOS 2 SRR1515283
3 MG1655 MPOS 3 SRR1515284
4 MG1655 Urine 1 SRR1515285
5 MG1655 Urine 2 SRR1515286
6 MG1655 Urine 3 SRR1515287
7 CFT_073 MPOS 1 SRR1515276
8 CFT_073 MPOS 2 SRR1515277
9 CFT_073 MPOS 3 SRR1515278
10 CFT_073 Urine 1 SRR1515279
11 CFT_073 Urine 2 SRR1515280
12 CFT_073 Urine 3 SRR1515281

以下コマンド先頭の $ はUnix のプロンプトを表すので、それ以降を改行なしで入力すること。

1.

*.htseq ファイルには、それぞれのサンプルにおける遺伝子ごとのリード数が記載されている。この12個のファイルを、以下のようにすべて横に並べて1つのファイルを作りたい。 スクリーンショット 2020-02-18 16 59 45

ファイルを行単位で結合するUNIX コマンドとして、paste がある。以下を実行してみよう。

$ paste results/ecoli.[1-3].htseq | less

paste は引数の順にファイルを結合するので、引数の順番に注意する必要がある。以下のワイルドカードを使った2つのコマンドの出力を比べてみよう。ただし、echo は受け取った引数をそのままの順で表示するコマンドである。

A) $ echo results/ecoli.*.htseq
B) $ echo results/ecoli.?.htseq results/ecoli.1?.htseq

ファイルが1, 2, 3, ...の順に並ぶのはどちらか。なお、コマンドB)は、以下のようにより簡潔に書くこともできる(試してみよ)

$ echo results/ecoli.{?,1?}.htseq

この結果を用いて、paste コマンドによって htseq の出力ファイルを 1, 2, 3, ...の順に結合したファイルを作成し、結果を ecoli.count_all.tmp1 というファイル名で保存せよ。

2.

ecoli.count_all.tmp1 は、b0001 などの遺伝子名が奇数列に繰り返し出現するため、冗長である。そこで最初の列だけ残して、あとの遺伝子名の列は除きたい。すなわち、 1,2,4,6,8,...,22,24 列目のみを残したい。

これは awk を使っても行えるが、cut の方がより簡潔に書ける。cut-f オプションによって指定された列のみを出力する。たとえば、cut -f 1,3,4 file は、file からタブ区切りで 1,3,4 番目の列を抜き出して表示する。cut コマン ドを使って上記の処理を行い、結果を ecoli.count_all.tmp2 というファイルに保存せよ。

3.

ecoli.count_all.tmp2 の最後の5行は、特定の遺伝子にきちんと対応づけられなかったリードに関する情報が記載されている。tail コマンドで確認しよう。

$ tail ecoli.count_all.tmp2

これらの行はいずれも __で始まっており、例えば、__nofeature は遺伝子領域以外にマップされたリードの数、__ambiguous は複数の遺伝子にまたがる領域にマップされたために1つの遺伝子には対応づけできなかったリードの数を表している。これらの行を、grep コマンドを使って除き、結果を、ecoli.count_all に格納せよ。

結果として、以下のようなファイルができるはずである。 スクリーンショット 2020-02-18 17 10 32