第1目標:TCGA dataの各癌腫ごとのTPMデータの取得 (行動3:ある特定の癌腫のsubjectデータの抽出)

前回、行動2の中で今回のデータは行列に以下の情報が格納されていることが分かりました。 ・行:各geneの情報 ・列:subjectの情報

行動3 : 特定の癌種のsubjectデータの抽出(例. Breast Cancer/BRCAを抽出)

それでは、目的の癌種の情報を抽出するためには、各癌種のサンプルのみを抽出する必要があることが分かりました。 そこで、今回は、あらたに癌種の情報を取得して目的癌腫のsubjectデータの抽出を行います。

行動3-1 : 癌種情報の取得

癌腫情報を取得するために、再度UCSC xenaへ行って必要なデータを取得します。以下へaccessしてみてください。

dataset: phenotype - Curated clinical data UCSC Xena
ダウンロードしたファイルを、解析用のディレクトリに格納し、read_tableもしくはfreadいずれかの方法で読み込んだのち、どういった構造のデータかview() functionで眺めてみてください。

subject1 <- read_table("TSurvival_SupplementalTable_S1_20171025_xena_sp")
view(subject1) #読み込んだtableを表示させてみる。

データを見てみると、subjectの情報(列名: sample), データセット名(列名: cancer)をはじめとして、様々なデータを含んでいることが分かりました。
→列名のCancerに基づいてsubject列を抽出することができれば癌腫に限定されたデータになることが想定されます。

行動3-2 : どの癌種情報が含まれるかの確認

先ほどview() functionを用いてデータを見たところ、3列目が各sampleの癌種情報を定義する列であることが分かりました。ただし、このままでは、どういった癌腫が含まれるのか全く分からない状況です。
そこで、列の中でuniqueなデータのみを抽出するdistinct() functionを適応して、癌腫情報のlistを取得したいと思います。(Excelを使う方はわかるかもしれませんが、Excelでいうところのデータの重複除去と同様の操作になります。)

cancer_types<-distinct(subject1[ , 3]) 
#distinct() functionと3列目を指定することでcancerに含まれる情報の中から重複情報のみを選択する、
view(cancer_types) 


TCGA-PANCANのsubjectの情報と結びついている癌腫は以下のものがあることが分かりました。

重複除去後のCancer typeのlist


行動3-3 : BRCA(乳がん)の患者リストの作成

まずは、先ほど作成したsubject1というpatient情報のまとめから3列目の"cancer"がBRCAに該当しているsample IDのみを抽出したいと思います。

3-3-1) cancer 列が "BRCA"と一致するIDを抽出
このような場合、tidyverseに入っているfilter() functionを使います。コードは以下のようになります。

subject1_BRCA <- subject1 %>%
          filter(cancer == "BRCA")
print(subject1_BRCA[1:5, 1:5],rownames=TRUE,colnames=TRUE) #出力したsubject1_BRCAを表示します。

"%>%"という初めて出てくる記号がありますが、これはtidyverseにおいて非常に多用されるパイプ演算子というもので、処理を引き続けて十する際に使用します。今回はsubject1というデータセットに対してcancerが"BRCA"という文字列の行を抽出する(フィルタリングする)という操作を行っています。これで、BRCAのサンプルIDのみを抽出することができました。


3-3-2) 乳がんsubjectのSample IDをlistとして出力する

① 今は乳がんsubjectのsample IDだけあればよいので、該当するデータを含む列(ここでは1列目を選択します。)
② 前回読み込んだtpm1もしくはtpm2(ここではtpm2を使用します。)の列名のうち、RNAseqのデータを持っているsubjectのみを選択するために列名のリストを作成します。名前の通り、colnames() というfunctionを使用します。
③ ①(BRCAのサンプルリスト)と②(RNAseqデータがあるサンプルリスト)に共通しているsample nameのlistを、intersect() functionを用いて抽出します(=RNAseqデータを持っているBRCAサンプルのリストの作成)。イメージとしては集合の重なりを抽出する。
tpmのtibbleもしくはdata.frameの中から③のlistのサンプルのデータを抽出します。

# 操作① : subject1_BRCAから1列目を抽出して"Sample_ID_BRCA"に格納
Sample_ID_BRCA <-unlist(list(subject1_BRCA[,1]))

# 操作② : tpm1の列名(column names)を”Col_names_tpm1"に格納
Col_names_tpm1 <-colnames(tpm1) # tpm2の列名のlistを作成した。

# 操作③ : "Sample_ID_BRCA"と"Col_names_tpm2"に共通するsampleを"Intersect_BRCA"に格納
Intersect_BRCA <- intersect(Sample_ID_BRCA,Col_names_tpm1)

# 操作④ :  tpm2の中から、sample列(gene IDを含む列)と"Intersect_BRCA"の中に含まれる列名を持つデータを抽出して"tpm2_BRCA"に格納
tpm1_BRCA <- tpm1 %>%
  select(sample,one_of(Intersect_BRCA))

これで、一例としてBRCAのTPMデータを抽出することができました。 以降の解析で、ここからスタートできるように、csvファイルとしてwrite.csv() functionを用いて保存したいと思います。

write.csv(tpm1_BRCA, file = "TPM_BRCA.csv") 

時間ができたときに、今日使用したfunctionについてのメモを作りたいと思います。