いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【R】タンパク質ネットワーク解析をSTRINGdbでやってみたい

・お題:タンパク質間相互作用解析をやると、いろいろなことが分かるらしい。RだとSTRINGdbなどのパッケージを使うとできるらしい。やってみたい。

 

・例のごとく、チュートリアルをなぞる。今回のチュートリアルは以下。

rpubs.com

・STRINGdbのインストールは割愛。

・GSE9008のデータを使う。どこにDEGのデータがあるのかよく分からなかったので、GEO2Rで自分で算出して、GSE9008.top.table.tsvとしてカレントディレクトリに保存した。

www.ncbi.nlm.nih.gov

・データを読み込む。今回はヒトの肺がん細胞に試験物質を作用させた際のDEGデータ。

> data <- read.delim("GSE9008.top.table.tsv")
> data <- dplyr::rename(data, gene = Gene.symbol)
> data %>% head()

・タンパク質間相互作用ネットワークをダウンロードする。今回はヒトのネットワークをとって来る。

> library(STRINGdb)
> string_db <- STRINGdb$new(version = "11.5",
+                           species = 9606,
+                           score_threshold = 200,
+                           input_directory="")
> class(string_db)
[1] "STRINGdb"
attr(,"package")
[1] "STRINGdb"

・DEGの遺伝子情報とSTRINGのタンパク質情報をくっつける。

> example1_mapped <- string_db$map(data,
+                                  "gene",
+                                  removeUnmappedRows = TRUE )
Warning:  we couldn't map to STRING 13% of your identifiers

> example1_mapped %>% head()

> example1_mapped %>% dim()
[1] 47613     9

・P.Valueで昇順になっているので、ここから200個の遺伝子を取り出してネットワークを描いてみる。

> hits <- example1_mapped$STRING_id[1:200]
> string_db$plot_network(hits)

・ちっちゃすぎて良く分からない。可視化には他のパッケージを使う方が良いかも…。。次に、特に変化が大きそうな遺伝子を強調するために、P.Valueが0.01以下またはlogFCの絶対値が0.5以上のものをとって来て色情報を与える。

> example1_mapped_sig <- string_db$add_diff_exp_color(subset(example1_mapped, log10(P.Value) >= -log10(0.01) | abs(logFC) >= 0.5),
+                                                     logFcColStr="logFC" )

> example1_mapped_sig$color

・図示する。post_payloadが何をしているのかよく分からない。。

> payload_id <- string_db$post_payload( example1_mapped_sig$STRING_id,
+                                       colors=example1_mapped_sig$color )

rdrr.io> string_db$plot_network(hits, payload_id=payload_id)

・特に変化が大きかったものは色のついたhaloで強調してある。

・次に、クラスタリングしてみる。string_db$get_clustersはSTRINGのIDを与えるとクラスタリングしてくれる関数らしい。

> clustersList <- string_db$get_clusters(example1_mapped$STRING_id[1:600])

> clustersList

・最初の4つのクラスターを図示してみる。

> par(mfrow=c(2,2))
> for(i in seq(1:4)){
+   string_db$plot_network(clustersListi)
+   }

・GO解析もできるっぽい。KEGGの方は利用の方法によっては有償なので、いったん控える。string_db$get_enrichment関数でエンリッチメント解析できる。本当はcategory = "Process"とかしたかったが、何も引っ掛からなかったので、デフォルトで投げた。

> enrichmentGO <- string_db$get_enrichment( hits )

 

いったんおわり。