10
7

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.

TCGAデータを用いた発現情報リストの作成

Last updated at Posted at 2018-12-31

#TCGAデータを用いた発現情報リストの作成

TCGAからの原始的なデータ取得の続きです。
行方向に遺伝子の発現情報、列方向に検体が並ぶ形の表を作ることを目標とします。
今回はTCGAのmelanomaの検体データ472例分なので、60483行、472列の表が最終形態となります。
####作りたいもの
FPKMの情報のファイルは、下記のような内容となっている。各行にEnsembl IDとFPKMの値が入っている。ヘッダーはなし。
FPKM.png

検体1のファイルの右端に、検体のファイルの2列目(FPKMの情報)をくっつけるという作業をします。
FPKM2.png
この作業を検体の人数分行い、
FPKM3.png
最終的に、全472検体の60483遺伝子の発現情報が含まれるリストを作成する。
FPKM4.png
####現状の確認
現在、作業フォルダの中には、
gdc-client
gdc_manifest.2018-12-03.txt
gdc_sample_sheet.2018-12-17.tsv
の3つと、FPKMの情報が入ったフォルダが472個存在しています。

####ファイルの移動と解凍
発現情報のファイルは、各フォルダの中にgz形式で存在しています。そのままでは色々面倒。
なのでひとところにまとめましょう。

mkdir FPKM
mv */*.gz FPKM
#フォルダ内のファイルを全てFPKMフォルダに移動
gunzip FPKM/*.gz
#解凍

FPKMをまとめたフォルダに移動し、Rを起動。

cd FPKM
sudo R

R version 3.2.3 (2015-12-10) -- "Wooden Christmas-Tree"
Copyright (C) 2015 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
(中略)
'q()' と入力すれば R を終了します。 
> 
> list.files()
  [1] "00e2c524-8a29-46d7-bf88-ed5f9c3dcf32.FPKM.txt"
  [2] "0170ee02-a63a-455c-b41d-bb72f3e515da.FPKM.txt"
  [3] "0224b65f-ac08-4f17-b22b-e17bff4d25f4.FPKM.txt"
  [4] "02262d0f-84d4-4683-80a4-48c890313132.FPKM.txt"
  [5] "0266d0b5-b87f-4356-93b8-c1e291292cc8.FPKM.txt"
...
[471] "ffc004ea-3ab7-41fb-9f49-d1cf8081d982.FPKM.txt"
[472] "fff8635a-798d-400c-83a5-2dd6b6ba5dba.FPKM.txt"

ご丁寧に、ファイル名に「FPKM」と記載してくれているのだが、なぜTCGA IDを付記してくれていないのか理解に苦しむ

> name <- list.files() 
#ファイル名をすべて取り込み、
> exp <- read.table(name[1],header=F)
#ファイル名の1番目に乗っているものをテーブルとして読み込んだ
> dim(exp)
[1] 60483     2
#60483行、2列のテーブルとして読み込まれていることがわかる。

> head(exp) #先頭を表示させるとこのようになる
                  V1        V2
1  ENSG00000242268.2  0.000000
2  ENSG00000270112.3  0.000000
3 ENSG00000167578.15  2.262299
4  ENSG00000273842.1  0.000000
5  ENSG00000078237.5  2.689470
6 ENSG00000146083.10 10.189685

####FPKMファイルの情報の連結
この「exp」と名付けたテーブルの右側に、他のファイルのFPKM情報をつなげていく。

> n<-length(name);n
[1] 472
> exp<-exp[order(exp[,1]),]
#mergeで表を連結する際には勝手に行がソートされるので、予めEnsemblIDの順に並べ替える

上記の「exp」の右側に、他のFPKMファイルを連結していくスクリプトを作成。
「exp」と同じく、EnsemblIDの順に行を並べ替えて、仮に行数や行の配列が異なっている場合にはその旨を表示させる。

> for (i in 2:n){
exp2<-read.table(name[i],header=F)
exp2<-exp2[order(exp2[,1]),]
ifelse(identical(exp[,1],exp2[,1]),
exp<-merge(exp,exp2,by="V1"),
print("行名がミスマッチ"))
print(ncol(exp))
}
#「exp」のテーブルの行・列数を確認
> dim(exp)
[1] 60483   473

作業終了後、「50件以上の警告がありました」という趣旨のメッセージが表示される場合があるが、その警告は「列名の重複」を示すもの。列名にはこのあとの行程でTCGA IDを嵌めこむし、表自体はちゃんと作成されるので気に留めなくてもよい。

####サンプルシートの読み込み
ファイル名からTCGA IDに変換するため、すでに入手済し、「TCGA-SKCM」フォルダにあるサンプルシートを読み込む。

> sample_sheet<-read.delim("/hoo/bar/TCGA-SKCM/gdc_sample_sheet.2018-12-17.tsv",header=T)

サンプルシートの一部を表示させてみる。2列目の「File.Name」を参考に7列目の「Sample.ID」を前出の「exp」の列名に加えることになる。

> head(sample_sheet)
                               File.ID
1 38dcc304-2c88-47b7-a5c3-4ec10bc044e9
2 e7967f37-29fb-4192-a888-57afc2df8bff
3 53cce68a-0155-4ab6-aac2-b61a95682695
4 f38a54a1-58b7-4dc5-b0a4-57ce288a93aa
5 7e3679d2-560c-431c-b564-9171aaec09ad
6 a4ad6c5d-02f2-4c7b-813b-93f99b4b5dee
                                         File.Name           Data.Category
1 0ef4e36a-8e8a-4d7e-8c4c-e194804d326d.FPKM.txt.gz Transcriptome Profiling
2 92020ebe-72a5-4ccd-8c42-713a0dc51866.FPKM.txt.gz Transcriptome Profiling
3 62532090-07c1-4594-b38e-9d1b1df7a715.FPKM.txt.gz Transcriptome Profiling
4 9d6e0aaf-5b49-4e0f-9fbc-1e9b932ce1c0.FPKM.txt.gz Transcriptome Profiling
5 9943770b-b3e2-42c9-a286-85b558de7da3.FPKM.txt.gz Transcriptome Profiling
6 960ada56-24bd-40ab-91ca-113237e390f9.FPKM.txt.gz Transcriptome Profiling
                       Data.Type Project.ID      Case.ID        Sample.ID
1 Gene Expression Quantification  TCGA-SKCM TCGA-EB-A6R0 TCGA-EB-A6R0-01A
2 Gene Expression Quantification  TCGA-SKCM TCGA-D3-A3CB TCGA-D3-A3CB-06A
3 Gene Expression Quantification  TCGA-SKCM TCGA-WE-A8K4 TCGA-WE-A8K4-01A
4 Gene Expression Quantification  TCGA-SKCM TCGA-EB-A3XE TCGA-EB-A3XE-01A
5 Gene Expression Quantification  TCGA-SKCM TCGA-FS-A1ZQ TCGA-FS-A1ZQ-06A
6 Gene Expression Quantification  TCGA-SKCM TCGA-EE-A29G TCGA-EE-A29G-06A
    Sample.Type
1 Primary Tumor
2    Metastatic
3 Primary Tumor
4 Primary Tumor
5    Metastatic
6    Metastatic

####行名、列名の挿入
このサンプルシートをファイル名の順でソートし、先ほど作った「exp」の列名にサンプルシートの7列目を当てはめるという作業を行う(下図参照)。
FPKM5.png

2列目のファイル名のうち、拡張子の「gz」が作業に邪魔なので削っておく。
そのあと、サンプルシートを2列目のファイル名に沿ってソートする。

> sample_sheet[,2]<-gsub(".gz","",as.matrix(sample_sheet[,2]))
> sample_sheet<-sample_sheet[order(sample_sheet[,2]),]

これで、サンプルシートの行の並びは先ほど作った「exp」のファイル順の元となった文字列のグループである「name」の並びと同じになったはずである。
「exp」の作成に使ったファイル名リスト「name」と同一の並びであるかをチェックする。

> identical(as.matrix(name),as.matrix(sample_sheet[,2]))
[1] TRUE

TRUEが出れば作業がうまくいっている。FALSEの場合、並べ変える列を間違えていないか、そもそもファイルが異なっていないかを今一度確認。

「exp」の1列目はEnsembl IDが書かれており、行名は行数となっている。行名にEnsembl IDを入れることをまず行う

> exp[,1] <- substring(exp[,1],1,15)
 #Ensembl IDは左から15文字めまでなので、小数点以下を削る
>rownames(exp) <- as.matrix(exp[,1]) 
 #行名に、1列めの情報をあてはめる
>exp<-exp[,-1]
 #1列目は不要になったので、削除

続いて、サンプルシートの7列目のTCGA IDを列名に入れる

> colnames(exp) <- as.matrix(sample_sheet[,7])

これで、行名にEnsembl ID、列名にTCGA IDを持つ発現情報リストが出来上がった。
忘れないうちに、保存しておこう。

> write.table(exp,"20181231_TCGA_SKCM_FPKM.txt", sep="\t")

とはいっても、この表は遺伝子名がEnsembl IDでしか表示されていないので、KRASだのTP53だのBRAFだのといったGene symbolでの発現量を得るには更に手間を加える必要がある。

続きは随時追加してまいります。

10
7
1

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
10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?