SlideShare a Scribd company logo
1 of 66
R+igraphではじめる
  生物ネットワーク解析
  竹本 和広
  九州工業大学 情報工学研究院 生命情報工学研究系
  科学技術振興機構さきがけ
      @kztakemoto
   takemoto@bio.kyutech.ac.jp




                 第2回 Rでつなぐ次世代オミックス情報統合解析研究会@
Mar 8, 2013               理化学研究所 横浜研究所
生物学の流れ
   顕微鏡の発明による「細胞生物学」(17世紀)

   メンデルによる「遺伝学」(19世紀)

   X構造回折解析などによる「分子生物学」(20世紀)
       ワトソンとクリックによる「DNA=遺伝子」


   Omics Science(20世紀後半)
        Genome, Transcriptome, Proteome, Metabolome, B
         iome
        ヒトゲノム計画など
生体分子相互作用の
全体像が徐々に明らかに




         異なる階層に、たくさんの役者




Biochemical Pathway Maps (http://web.expasy.org/pathways)   (Zoology, 2nd edition, Brown Publishers, 1994)
データの蓄積




    で、どうする?
Network Science
   Data-Driven Scienceの一種
       統計解析・数理モデル
       大量のデータを「知識」にする。


   19世紀頃から社会学の一分野として認識されてい
    た。
       Social network analysis
       Weak tieやStructural holeと富の関係など
       最近ではSNS解析・サービスで利用


   2000年頃から生物学で「精力的」に応用され始め
    る。
       データが利用可能になったことにより
参考文献
   Barabási A-L, Oltvai ZN (2004) Network biology: understanding the
    cell’s functional organization. Nat Rev Genet 5: 101–113.

   Barabási A-L, Gulbahce N, Loscalzo J (2011) Network medicine: a
    network-based approach to human disease. Nat Rev Genet 12: 56–
    68.

   Takemoto K (2012) Current understanding of the formation and
    adaptation of metabolic systems based on network theory.
    Metabolites 2: 429–457.

   Cho D-Y, Kim Y-A, Przytycka TM (2012) Chapter 5: Network biology
    approach to complex diseases. PLoS Comput Biol 8: e1002820.



    詳しくはWebの補足資料をご覧下さい
     https://sites.google.com/site/kztakemoto/r-seminar-on-igraph---supplementary-information
このセミナーの目的

        +igraphでネットワーク解析

   igraphの使い方の基礎

   実際によく使われる手法
     中心性解析
     ネットワークモチーフ
     コミュニティ抽出

                    http://igraph.sourceforge.net
なぜR+igraphか
   利点
     Rユーザーは多い
     他と比べてネットワーク解析の関数が豊富
     他のデータと統合して解析できる。
   欠点
       Visualizationは比較的劣る

   他のネットワーク解析を支援するツール
     Pajek (Windowsのみで動作)
     NetworkX (Python)
     Cytoscape, Gephi (描画がきれい)
igraphパッケージの
インストールと読み込み

> install.packages("igraph")
   いまからの説明はigraph ver. 0.6以上を想定しています。

    バージョンを調べるには

    > packageVersion("igraph")


      パッケージの読み込み

      > library(igraph)
ネットワークの読み込み

      > d <- read.table("eco_EM+TCA.txt")
      > g <- graph.data.frame(d,directed=T)
      > g <- simplify(g,
      +         remove.multiple=T,remove.loops=T

            eco_EM+TCA.txt                 graph.data.frame:
          Source         Target                データフレームからグラフに変換
2-Oxoglutarate       Oxalosuccinate
2-Oxoglutarate       Succinyl-CoA          simplify:
2PG                  3PG                       多重エッジや自己ループの削除
2PG                  PEP
3PG                  2PG
3PG                  BPG
                                            AB
Acetyl-CoA           Citrate                …
Arbutin              Arbutin_6-phosphate    AB
他の形式からの読み込み

 > g <- read.graph(filename,
 +                         format=“xxx”,
 +                         directed=T)

 有名どころでは・・・
 edgelist (default)                       01
 GML           yEdやCytoscape              12
                でもサポート
 GraphML                                  23
                                           …
 Pajek
ネットワークを描画
                  > plot(g,vertex.label=V(g)$name,
                  +        vertex.size=5,
                  +        layout=layout.kamada.kawai)
                                      V(g)$name:
                                          ノード名の参照
                                      layout:
                                          レイアウトアルゴリズム
                                                 layout.fruchterman.reingold




  layout.circle




  layout.sphere
                                           layout.grid
全体的なネットワーク特徴量を測る

   次数分布

   クラスタ係数

   Assortative coefficient

   最短パス
次数分布
           次数(結合次数):ノードが持つ枝数
                           次数kを持つノードの数
           次数分布=
                                   全体のノード数
             > degree.distribution(g)
                                                     3
            0.8                                          2
相対頻度 P(k)




            0.6
            0.4                              2
            0.2                                          1
              0                                  2
                    1          2        3
                           結合次数 k
現実ネットワークの次数分布
      スケールフリー性
                          アーキア   バクテリア
         次数分布がベキ関
          数で近似できる。
            明確な定義はない

         ランダムグラフと
          は大きく異なる。



                          真核生物   平均



Nature 407, 651 (2000)   例:代謝ネットワーク
次数分布とネットワークロバスト性


            ハブが無いと弱い




            ハブがあると偶発的
            なアクシデントに強
            い




            しかし、攻撃に弱い

           Scientific American 288, 50 (2003)
構造的な頑健性は生体システムの
     頑健性と対応する場合がある
      次数分布の均一性に注目
          次数エントロピー

      癌のシグナルネットワークの結合度の均一性と生
       存率には負の相関          PNAS 109, 9209 (2012)




次数エントロピーの計算
> dist <- subset(degree.distribution(g),
+                             degree.distribution(g)>0)
> -sum(dist*log(dist))

                                                          5年以内の生存率
クラスタ係数
     あるノードの近傍間においてエッジが張られ
      る確率               近傍ノード間
                                                              の辺数




                                   平均クラスタ係数




> cc <- transitivity(g,type="localaverage",isolates="zero”)
> mean(cc)
Assortative coefficient
   次数-次数相関の積率相関係数                Phys. Rev. Lett. 89, 208701 (2002)




                                    r>0                          r=0
      > assortativity.degree(g)



r<0



r>0

                                                              r<0
フォールディング速度との関連
   コンタクトマップ
     ノード:アミノ酸

     エッジ:近接関係




                 Bioinformatics 23, 1760 (2007)
最短パス
                                                               a
                                       距離行列                             b
                                                     e
                                                                            c
    > average.path.length(g)                               d
aからdまでの最短経路を探す。
                                                     a    b    c        d       e
> sum <-                                      a      -    1     1       2       1
+ get.all.shortest.paths(g,
+                “a",”d",mode="out")
                                              b      1    -     2       1       2
> V(g)[sum$res[[1]]]                          c      1    2     -       3       2
Vertex sequence:
[1]”a” “b” “d”                                d      2    1     3       -       1
> V(g)[sum$res[[2]]]
Vertex sequence:
                                              e      1    2     2       1       -
[1]”a” “e” “d”                                    > shortest.paths(g)
演習課題:代謝経路探索

      D-Glucose から 2-Oxoglutarate
      までのパスを見つけよう
      > sum <- get.all.shortest.paths(g,
      +     "D-Glucose","2-Oxoglutarate",mode="out")
      > V(g)[sum$res[[1]]
      Vertex sequence:
      [1] "D-Glucose" "G6P” "F6P" "F16BP"
      [5] "GAP"      "BPG” "3PG” "2PG”...

      > E(g)$color <- "grey"
      > E(g,path=sum$res[[1]])$color <- "red"
      > E(g,path=sum$res[[1]])$width <- 3

      > plot(g,vertex.label=V(g)$name,
      +           vertex.size=5,
      +           layout=layout.fruchterman.reingold)
重要(そうな)なノードを見つける

   どのノードが重要で
    しょうか?

   ネットワークにおける
    位置と機能に関係は?


    中心性解析
    Soc Networks 1, 215 (1979)
                                 Nature 411, 41 (2001)
良く知られた中心性(1)
   次数中心性 > degree(g) / (vcount(g) - 1)
     枝数の多い(次数の高い)頂点が重要




   近接中心性 > closeness(g)
     その他の頂点に短い距離でつながる頂点が重要
                         頂点i-j間の最短距離
良く知られた中心性(2)
   媒介中心性 > betweenness(g)
     各ノード間の最短パスを考える時、よく通過する
     頂点が重要
       ノードj–k間の最短パスにおいてノードiを通る最短パスの数
               ノードj–k間の最短パスの数


   固有ベクトル中心性 > evcent(g)$vector
     次数中心性の拡張版:近傍の中心性も考える

                        隣接行列     つまり
頂点iの中心性

                     Google page rankの基本的な考え方
中心性の比較




         Chpt. 2 in Statistical and Machine
         Learning Approaches for Network
         Analysis, John Wiley & Sons, 77 (2012).
Yeast PINにおいて相互作用数と
進化速度は負の相関がある
             Science 296, 750 (2002)




相互作用の多いタンパク質の進化速度は小さい
PIN/GRNにおいて中心度の
高いタンパク質は生存に必須




   PLoS Comput. Biol. 3, e59 (2007)
演習課題

(1) タンパク質相互作用ネットワーク
ecoli_ppi_Hu_etal_2009.txt
PLoS Biol 7, e96 (2009)

 b3396 b2609
 b4149 b3636
 b4149 b3301

(2) タンパク質と
                                                         Nature 411, 41 (2001)
    Essentialityの対応表
ecoli_proteins_essentiality_Baba2006MSB.txt
Mol Stst Biol 2, 2006.0008 (2006)

gene essential                                   Essentialityと
                                 Non-essential
b0001 N
…                                                中心性の関係に
                                 Unknown
b0005 u
…                                                 ついて調べる
b0026 E                          Essential
次数中心性を用いる場合
> d <- read.table("ecoli_ppi_Hu_etal_2009.txt")
> g <- simplify(graph.data.frame(d,directed=F),
+                           remove.multiple=T,remove.loops=T)

> ess <- read.table("ecoli_proteins_essentiality_Baba2006MSB.txt”,header=T)

> target <- intersect(ess$gene,V(g)$name)

> ess_select <- subset(ess,is.element(ess$gene,target)==T &
+                                                                duplicated(ess$gene)==F)
> ess_select_ord <- ess_select[order(ess_select$gene),]

> deg <- degree(g)
> deg_select <- subset(deg,is.element(names(deg),target)==T)
> deg_select_ord <- deg_select[order(names(deg_select))]


    b0001 E              b0002 2              共通部分を
                                            抜き出してソート                     b0001 E            b0001 1
    b0002 u              b0004 5
                                                                         b0002 u            b0002 2
    b0003 N              b0001 1

> boxplot(log(deg_select_ord)~ess_select_ord$ess,ylab="log(Degree)")
結果
      p < 2.2 × 10–16 using Wilcoxon test




                                            Nature 411, 41 (2001)




       Essential proteinは
     比較的多くの相互作用を持つ
ネットワークモチーフ       Science 298, 824 (2002)




              実ネットワークにお
              けるサブグラフの数




              ヌルモデルにおけ
              るサブグラフの数
              の平均と標準偏差


              >2なら有意に出現
                   (p=0.05)


 ランダム化されたネットワーク
(ヌル仮説)に比べて頻出するパタン
ネットワークモチーフ
   フィードフォワードループなどが出現
   ネットワークのBuilding block
   制御理論において、このモジュールは重要な
    役割を果たす。




                    Science 298, 824 (2002)
ネットワークモチーフを
みつけるツール
   mfinder
                            Science 298, 824 (2002)

   mDraw
     by      Uri Alon Group

MAVisto                                      FANMOD   高速




Bioinformatics 21, 3572 (2005)                        Bioinformatics 22, 1152 (2006)
n-ノードサブグラフを数える
      3ノードの場合(5以上は利用不可)
> c_real <- graph.motifs(g,3)
> c_real
 [1]   0   0 2444  0 3014 10 180913     811   4   317
[11]   0   0   0 277  1   0


サブグラフの種類を確認する。 x in [0,15](n=3の場合)
> plot(graph.isocreate(3,x),layout=layout.circle)




            x=0                   x=7                   x=11   x=15
サブグラフを構成する
    ノードの出力
       Feedforward loopの場合
> sum <- graph.get.subisomorphisms.vf2(g,graph.isocreate(3,7))
> sum
[[1]]
[1] 14 92 42

[[2]]
[1] 16 90 18
…

> V(g)[sum[[1]]+1]         ノード名での出力
Vertex sequence:
[1] "caiF" "narL" "fnr"
Randomized Networks
   データ解析におけるヌルモデル
     あるネットワークの構造的特徴が有意なのかどう
     かを検証する際に使われる。

   Configuration model
   Edge switching algorithm
     よく使われるが「適切な」ヌルモデルではないと
      いう批判もある。
     研究者の「適切さ」の数だけヌルモデル
      ヌルモデル戦争
Configuration Model                                        Phys. Rev. E 71, 027103 (2005)




 次数列を与える。
 Stubをランダムにつな
  ぐ。
                                                 Chpt. 2 in Statistical and Machine
> deg <- degree(g)                               Learning Approaches for Network
> g_rand <- degree.sequence.game(deg)            Analysis, John Wiley & Sons, 77 (2012).

連結性が保証されないことに注意
連結性を保証する場合にはvlモードを使う。
> deg_out <- degree(g,m="out")
> deg_in <- degree(g,m="in")
> g_rand <- degree.sequence.game(deg_out,deg_in,m=“vl”)

有向ネットワークの場合、相互エッジの数は保存されないことに注意
Edge Switching Algorithm
     現実のネットワークを入力として任意に二辺を
      選び、結合先を交換
> g_rand <- rewire(g,niter=n)
n: 辺を交換する回数
                                              次数分布は変化しない
nはどのように設定すればよいのか?                                    Science 296, 910 (2002)
                                                     Science 298, 824 (2002)
終了条件「全てのエッジが少なくとも1回は交換されている」
≈クーポンコレクター問題
             回、交換すると、全てエッジが少なくとも1回は交換されている確率

         ≈            e.g., c=5の時は0.993, c=10の時は0.99995

> rewire(g,niter=ecount(g)*(5+log(ecount(g)))/2)
  有向ネットワークの場合、相互エッジの数は保存されないことに注意
演習課題:
ネットワークモチーフを見つける
大腸菌遺伝子制御ネットワーク
(RegulonDB ver 5.0)
regDB5.txt
                                       実ネットワークのサブグラフを数える
Nucleic Acids Res 34, D394 (2006)         graph.motifs(g,3)
acrR acrA
acrR acrB
acrR acrR                                 Randomized networkを作る
ada ada
                                    degree.sequence.game() or rewire()
                                    Randomized networkのサブグラフを数える
注意

実際にはRandomized                        平均と標準偏差からモチーフを見つけだす。
networkを作る際に、
相互エッジの数を保存
するという制約が必要
工夫の例
                                      無向グラフに変換                  ランダム化して有向グラフに戻す


     グラフを分ける




                                                                                      統合する
                                                     ランダム化



> g_unid <- delete.edges(g,subset(E(g),is.mutual(g,es=E(g))==T))
> g_bid <- delete.edges(g,subset(E(g),is.mutual(g,es=E(g))==F))
> g_bid_u <- as.undirected(g_bid)
> c_rand <- data.frame()
> for(i in 1:100){
+ g_rand_unid <- rewire(g_unid,niter=ecount(g_unid)*(50+log(ecount(g_unid)))/2)
+ g_rand_bid_u <- rewire(g_bid_u,niter=ecount(g_bid_u)*(50+log(ecount(g_bid_u)))/2)
+ g_rand_bid <- as.directed(g_rand_bid_u)
+ g_rand <- graph.union(g_rand_unid,g_rand_bid)
+ c_rand <- rbind(c_rand,graph.motifs(g_rand,3))                  これだけでは不十分
+}
                                                                  ほかにどんな工夫が必要でしょう
結果
> (c_real-colMeans(c_rand))/sqrt(colMeans(c_rand**2)-colMeans(c_rand)**2)
      0      1      2      3       4      5     6
    NaN       NaN -6.8995100       NaN -2.8736176 -0.9491391 -3.0222612
      7      8      9     10       11     12     13
6.8581263 0.4525696 -1.9818274 -1.3719887 -0.3144855 -0.4264014 2.4857428
     14      15
1.6035675       NaN

> plot(graph.isocreate(3,7),layout=layout.circle)



                                                              > V(g)[sum[[1]]+1]
                                                              Vertex sequence:
                                                              [1] "caiF" "narL" "fnr”
                                                              [1] "chbR" "nagC" "crp“
                                                              [1] "csgD" "ompR" "crp”
                                                              [1] "csgD" "rcsA" "rcsB"


                         Feedforward loopが
                         ネットワークモチーフ
コミュニティ抽出
   比較的密に連結した部分グラフ同士が疎に連
    結しているような部分構造を見つけ出す。
     グラフクラスタリングに対応

              どんなメリットがあるの?
               PPIや相関ネットワークにおい

                て、機能的に類似な遺伝子が
                同じコミュニティに属する
                 機能予測ができる。

                 複雑なネットワークの俯瞰的
                  な理解ができる

               BMC Bioinformatics 7, 2 (2006)
大きく分けてふたつの形式がある



                               Overlapping


                               Non-overlapping
                                 まずはこちらから紹介
Phys Rev E 74, 016110 (2006)
コミュニティ検出の基礎
    コミュ二ティ内の辺密度が高く、コミュティ
     間の辺が疎であれば良い分割という前提
                隣接行列           (頂点 i と j が同じグルー
                               プに属していたら)
                               (そうでなければ)



     グループのアサインを変え      任意の次数列で構成されるラ
     てQを最大化する。         ンダムグラフの結合確率

Low Q                                  High Q
コミュニティの最適な
アサインをみつける必要がある
   Qが最大となるc=(c1,c2,…cN)を見つける。
     難しい(膨大な計算時間が必要)。

     近似アルゴリズムを使う。

     最適化アルゴリズムによってQが最大となるアサ
     インを見つける。

            アサイン変更
                            Q0<Q1: 採択
                            Q0>Q1: 棄却
           Q0          Q1
有名な手法(1)
   辺媒介性を用いた手法                    PNAS 99, 7821 (2002)


       媒介性の高い辺を削除して分割
    > edge.betweenness.community(g)                                Phys. Rep. 486, 75 (2010)



   貪欲アルゴリズムを用いた手法                                 Phys Rev E 70, 066111 (2004)


       Q値が高くなるように隣接(ノード・コミュニティ)
        ペアをまとめていく。
    > fastgreedy.community(g)                        (Q1–Q0) < (Q2–Q0)
                        Q1                   Q2
Q0
                                                                            採用
有名な手法(2)
                                    Phys Rev E 74, 036104 (2006)
   スペクトル最適化法                       PNAS 103, 8577 (2006)


     グラフラプラシアンを使ってQ値が最大となるよ
     うな分割(カット)を探す。
    > leading.eigenvector.community(g)

   焼きなまし法(Simulated annealing)
                                                             Phys Rev E 74, 016110 (2006)
    > spinglass.community(g)

               アサインを
               ちょっと変更                               Q0<Q1: 採択
                                                    Q0>Q1:
                                                                   の確率で採択
                                                    β(逆温度)を徐々に
         Q0                               Q1        大きくする(冷却)
計算結果の抽出
   最大Q値
    > max(data$modularity)
    [1] 0.6141498


   最大Q値におけるコミュニティ数
    > max(data$membership)
    [1] 5


   最大Q値におけるコミュニティメンバーシッ
    プ
    > data$membership
    [1] 4 1 1 5 2 2 1 5 2 1 2 3 2 2 1 1 4 3 5 4 5 5 2…
どれがいいの?
計算時間なら貪欲アルゴリズム
   貪欲アルゴリズムが最小:n(ln n)2   Phys. Rep. 486, 75 (2010)




    貪欲 < スペクトル法 < 辺媒介 < 焼きなまし法
      (ネットワークが疎の場合)
どれがいいの?
パフォーマンスなら焼きなまし法




辺媒介 < 貪欲 < スペクトル法 < 焼きなまし法
                     Phys. Rep. 486, 75 (2010)
Q値の問題点
   Resolution limit 解像度限界   PNAS 104, 36 (2007)


     小さなコミュニティを見逃してしまうことがあ
     る。
      疎なネットワークな場合がおおよそこれに当てはま
       る。                    m=5
             m-ノード完全グラフ  m=3
      コミュニティ内の次数の合計Kが




                m>4のとき、それぞれの完全グラフ
                がコミュニティとして認識される。

               モジュラリティのより良い定義が必要
より良い指標:
Modularity Density                     Phys Rev E 77, 036109 (2008)




   Simple definition:   コミュニティ外の平均次数




             コミュニティ内の平均次数
                                  D1
   More general definition




                                         <
               where


                                  D2
演習課題:
     代謝経路のコミュニティ抽出
                     eco_EM+TCA.txt




                                                 edge.betweenness.community(g)
                                                 fastgreedy.community(g)
                                                 leading.eigenvector.community(g)
                                                 spinglass.community(g)




貪欲アルゴリズムを使う場合
                                                                                    ?
d <- read.table("eco_EM+TCA.txt")
g <- simplify(
+            graph.data.frame(d,directed=F),
+            remove.multiple=T,remove.loops=T)
data <- fastgreedy.community(g)
V(g)$color <- data$membership
結果
> plot(g,vertex.size=5,
+           vertex.label=V(g)$name,            デンドログラムの表示
+           layout=layout.kamada.kawai)        > dend <- as.dendrogram(data)
                                               > plot(dend)
                  解糖系・糖新生の上部




                                     =>TCA
 解糖系・糖新生下部




                                             TCA (酸化)
                  TCA (還元)
Overlapping Communities
   コミュニティがオーバーラップしている(階
    層性を持っている)と考える方がより自然

                              Clique percolation
                                                  Nature 435, 814 (2005)


                              Edge partition
                                                  Phys Rev E 80, 016105 (2009)

                              Link communities
                                                  Nature 466, 761 (2010)


                              Overlapping cluster generator
    Nature 435, 814 (2005)                        Bioinformatics 28, 84 (2012)
                               利用可能なのはふたつ

                     > library(linkcomm)
Clique Percolation Method   Nature 435, 814 (2005)




   k-clique隣接に基づいたパーコレーションか
    らコミュニティを同定する。
   CFinderで計算できます (cfinder.org)
    k-clique隣接
    Yes     No




     k=3の場合
                 k=4の場合
Edge Partition                             Phys Rev E 80, 016105 (2009)




   Line graphに変換してからコミュニティ抽出
     Line graph変換




                        Softwareは利用可能です
                    https://sites.google.com/site/linegraphs/




エッジのクラスタリング
Link Communities                                         Nature 466, 761 (2010)



(1)エッジ間の類似性計算                   (2)適当な階層的クラスタリング法
                                    でクラスタリングする


                k
          eik       ejk
      i                   j




(3)分割密度Dが最大になる分割を探す
   (コミュニティ内が密になるように)

                                          論文では単連結法が使用されている


                              > data <- getLinkCommunities(g)
Link Community Method Shows High
Composite Performance
 Manually-curated Clustering:
 研究者(コンソーシアム)が決定した分類
 例:Gene OntologyやKEGG Pathway
Overlapping Cluster Generator

                  1. 適当な初期状態を設定

                  2. Q値(オーバーラップ
                     版)が高くなるように
                     オーバーラップしている
                     コミュニティを融合する
                     (貪欲アルゴリズム)

                    CFinderやLinkCommよりも
                    良いパフォーマンスを示
                    す。
              > data <- getOCG.clusters(g)
演習課題:代謝経路のコミュニ
   ティ抽出(Overlapを考慮)
                eco_EM+TCA.txt




linkcommはネットワークの読み込みが異なる
                                      ?
> g <- read.table("eco_EM+TCA.txt")

> data <- getLinkCommunities(g)
> data <- getOCG.clusters(g)

> plot(data,type="graph”)
> data$clusters
結果:LinkCommの場合
任意の分割密度での結果を表示
> lc <- newLinkCommsAt(data,cutat=0.84)
> plot(lc,type="graph")




                                          1本のエッジで構
 > data <- getLinkCommunities(g)
                                          成されるコミュ
 > plot(data,type="graph")
                                          ニティは表示さ
                                          れない
結果:OCGの場合
糖の取り込み

                            > plot(data,type="members")




解糖系・
糖新生
上部       TCA(還元)      TCA
                     (酸化)




                                 複数のコミュニティに
                                 属するものだけ表示

 解糖系・糖新生下部
             =>TCA
まとめ
   中心性解析
     ネットワークと生体分子機能の関係を調べる。

   ネットワークモチーフ
     意図的に構成された部分構造をみつける。

   コミュニティ抽出
     機能予測や俯瞰的な理解を助ける。



                   @kztakemoto
            takemoto@bio.kyutech.ac.jp
R seminar on igraph

More Related Content

What's hot

大規模ネットワーク分析 篠田
大規模ネットワーク分析 篠田大規模ネットワーク分析 篠田
大規模ネットワーク分析 篠田Kosuke Shinoda
 
Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Shintaro Fukushima
 
for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力imuyaoti
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定Akira Masuda
 
Rによるやさしい統計学第20章「検定力分析によるサンプルサイズの決定」
Rによるやさしい統計学第20章「検定力分析によるサンプルサイズの決定」Rによるやさしい統計学第20章「検定力分析によるサンプルサイズの決定」
Rによるやさしい統計学第20章「検定力分析によるサンプルサイズの決定」Takashi J OZAKI
 
最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向ohken
 
Rでソーシャルネットワーク分析
Rでソーシャルネットワーク分析Rでソーシャルネットワーク分析
Rでソーシャルネットワーク分析Hiroko Onari
 
PRML上巻勉強会 at 東京大学 資料 第1章前半
PRML上巻勉強会 at 東京大学 資料 第1章前半PRML上巻勉強会 at 東京大学 資料 第1章前半
PRML上巻勉強会 at 東京大学 資料 第1章前半Ohsawa Goodfellow
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類Shintaro Fukushima
 
Granger因果による 時系列データの因果推定(因果フェス2015)
Granger因果による時系列データの因果推定(因果フェス2015)Granger因果による時系列データの因果推定(因果フェス2015)
Granger因果による 時系列データの因果推定(因果フェス2015)Takashi J OZAKI
 
【論文紹介】How Powerful are Graph Neural Networks?
【論文紹介】How Powerful are Graph Neural Networks?【論文紹介】How Powerful are Graph Neural Networks?
【論文紹介】How Powerful are Graph Neural Networks?Masanao Ochi
 
{tidygraph}と{ggraph}によるモダンなネットワーク分析
{tidygraph}と{ggraph}によるモダンなネットワーク分析{tidygraph}と{ggraph}によるモダンなネットワーク分析
{tidygraph}と{ggraph}によるモダンなネットワーク分析Takashi Kitano
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門Kawamoto_Kazuhiko
 
PRML 8.2 条件付き独立性
PRML 8.2 条件付き独立性PRML 8.2 条件付き独立性
PRML 8.2 条件付き独立性sleepy_yoshi
 
金融時系列のための深層t過程回帰モデル
金融時系列のための深層t過程回帰モデル金融時系列のための深層t過程回帰モデル
金融時系列のための深層t過程回帰モデルKei Nakagawa
 
PRML 6.1章 カーネル法と双対表現
PRML 6.1章 カーネル法と双対表現PRML 6.1章 カーネル法と双対表現
PRML 6.1章 カーネル法と双対表現hagino 3000
 
Visual Studio CodeでRを使う
Visual Studio CodeでRを使うVisual Studio CodeでRを使う
Visual Studio CodeでRを使うAtsushi Hayakawa
 

What's hot (20)

大規模ネットワーク分析 篠田
大規模ネットワーク分析 篠田大規模ネットワーク分析 篠田
大規模ネットワーク分析 篠田
 
Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)
 
for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定
 
Rによるやさしい統計学第20章「検定力分析によるサンプルサイズの決定」
Rによるやさしい統計学第20章「検定力分析によるサンプルサイズの決定」Rによるやさしい統計学第20章「検定力分析によるサンプルサイズの決定」
Rによるやさしい統計学第20章「検定力分析によるサンプルサイズの決定」
 
最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向
 
Rでソーシャルネットワーク分析
Rでソーシャルネットワーク分析Rでソーシャルネットワーク分析
Rでソーシャルネットワーク分析
 
2 3.GLMの基礎
2 3.GLMの基礎2 3.GLMの基礎
2 3.GLMの基礎
 
正準相関分析
正準相関分析正準相関分析
正準相関分析
 
PRML上巻勉強会 at 東京大学 資料 第1章前半
PRML上巻勉強会 at 東京大学 資料 第1章前半PRML上巻勉強会 at 東京大学 資料 第1章前半
PRML上巻勉強会 at 東京大学 資料 第1章前半
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類
 
Rで学ぶロバスト推定
Rで学ぶロバスト推定Rで学ぶロバスト推定
Rで学ぶロバスト推定
 
Granger因果による 時系列データの因果推定(因果フェス2015)
Granger因果による時系列データの因果推定(因果フェス2015)Granger因果による時系列データの因果推定(因果フェス2015)
Granger因果による 時系列データの因果推定(因果フェス2015)
 
【論文紹介】How Powerful are Graph Neural Networks?
【論文紹介】How Powerful are Graph Neural Networks?【論文紹介】How Powerful are Graph Neural Networks?
【論文紹介】How Powerful are Graph Neural Networks?
 
{tidygraph}と{ggraph}によるモダンなネットワーク分析
{tidygraph}と{ggraph}によるモダンなネットワーク分析{tidygraph}と{ggraph}によるモダンなネットワーク分析
{tidygraph}と{ggraph}によるモダンなネットワーク分析
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
 
PRML 8.2 条件付き独立性
PRML 8.2 条件付き独立性PRML 8.2 条件付き独立性
PRML 8.2 条件付き独立性
 
金融時系列のための深層t過程回帰モデル
金融時系列のための深層t過程回帰モデル金融時系列のための深層t過程回帰モデル
金融時系列のための深層t過程回帰モデル
 
PRML 6.1章 カーネル法と双対表現
PRML 6.1章 カーネル法と双対表現PRML 6.1章 カーネル法と双対表現
PRML 6.1章 カーネル法と双対表現
 
Visual Studio CodeでRを使う
Visual Studio CodeでRを使うVisual Studio CodeでRを使う
Visual Studio CodeでRを使う
 

Viewers also liked

Rで野球データ解析がしたい ( pitchRxを使う )
Rで野球データ解析がしたい ( pitchRxを使う )Rで野球データ解析がしたい ( pitchRxを使う )
Rで野球データ解析がしたい ( pitchRxを使う )Takuma Hatano
 
Rで計量時系列分析~CRANパッケージ総ざらい~
Rで計量時系列分析~CRANパッケージ総ざらい~ Rで計量時系列分析~CRANパッケージ総ざらい~
Rで計量時系列分析~CRANパッケージ総ざらい~ Takashi J OZAKI
 
Rubyによるデータ解析
Rubyによるデータ解析Rubyによるデータ解析
Rubyによるデータ解析Shugo Maeda
 
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門Keiichiro Ono
 
潜在トピックとネットワーク分析
潜在トピックとネットワーク分析潜在トピックとネットワーク分析
潜在トピックとネットワーク分析s tanaka
 
Social network analysis & Big Data - Telecommunications and more
Social network analysis & Big Data - Telecommunications and moreSocial network analysis & Big Data - Telecommunications and more
Social network analysis & Big Data - Telecommunications and moreWael Elrifai
 
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―Hisao Soyama
 
Big Data: Social Network Analysis
Big Data: Social Network AnalysisBig Data: Social Network Analysis
Big Data: Social Network AnalysisMichel Bruley
 
Big Data Analytics : A Social Network Approach
Big Data Analytics : A Social Network ApproachBig Data Analytics : A Social Network Approach
Big Data Analytics : A Social Network ApproachAndry Alamsyah
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境Hisao Soyama
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of PythonTakanori Suzuki
 
python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集Hikaru Takemura
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識Katsuhiro Morishita
 
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjpShinichi Nakagawa
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門Hironori Sekine
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Etsuji Nakai
 
Python東海Vol.5 IPythonをマスターしよう
Python東海Vol.5 IPythonをマスターしようPython東海Vol.5 IPythonをマスターしよう
Python東海Vol.5 IPythonをマスターしようHiroshi Funai
 
RとPythonによるデータ解析入門
RとPythonによるデータ解析入門RとPythonによるデータ解析入門
RとPythonによるデータ解析入門Atsushi Hayakawa
 

Viewers also liked (20)

Rで野球データ解析がしたい ( pitchRxを使う )
Rで野球データ解析がしたい ( pitchRxを使う )Rで野球データ解析がしたい ( pitchRxを使う )
Rで野球データ解析がしたい ( pitchRxを使う )
 
Gephi Quick Start (Japanese)
Gephi Quick Start (Japanese)Gephi Quick Start (Japanese)
Gephi Quick Start (Japanese)
 
Rで計量時系列分析~CRANパッケージ総ざらい~
Rで計量時系列分析~CRANパッケージ総ざらい~ Rで計量時系列分析~CRANパッケージ総ざらい~
Rで計量時系列分析~CRANパッケージ総ざらい~
 
Rubyによるデータ解析
Rubyによるデータ解析Rubyによるデータ解析
Rubyによるデータ解析
 
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
 
潜在トピックとネットワーク分析
潜在トピックとネットワーク分析潜在トピックとネットワーク分析
潜在トピックとネットワーク分析
 
Social network analysis & Big Data - Telecommunications and more
Social network analysis & Big Data - Telecommunications and moreSocial network analysis & Big Data - Telecommunications and more
Social network analysis & Big Data - Telecommunications and more
 
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
 
Big Data: Social Network Analysis
Big Data: Social Network AnalysisBig Data: Social Network Analysis
Big Data: Social Network Analysis
 
Big Data Analytics : A Social Network Approach
Big Data Analytics : A Social Network ApproachBig Data Analytics : A Social Network Approach
Big Data Analytics : A Social Network Approach
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
 
python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
 
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
 
Python東海Vol.5 IPythonをマスターしよう
Python東海Vol.5 IPythonをマスターしようPython東海Vol.5 IPythonをマスターしよう
Python東海Vol.5 IPythonをマスターしよう
 
RとPythonによるデータ解析入門
RとPythonによるデータ解析入門RとPythonによるデータ解析入門
RとPythonによるデータ解析入門
 
Pythonで簡単ネットワーク分析
Pythonで簡単ネットワーク分析Pythonで簡単ネットワーク分析
Pythonで簡単ネットワーク分析
 

Similar to R seminar on igraph

Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)Koji Matsuda
 
文献紹介:TSM: Temporal Shift Module for Efficient Video Understanding
文献紹介:TSM: Temporal Shift Module for Efficient Video Understanding文献紹介:TSM: Temporal Shift Module for Efficient Video Understanding
文献紹介:TSM: Temporal Shift Module for Efficient Video UnderstandingToru Tamaki
 
PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説弘毅 露崎
 
みどりぼん3章前半
みどりぼん3章前半みどりぼん3章前半
みどりぼん3章前半Akifumi Eguchi
 
文献紹介:Gate-Shift Networks for Video Action Recognition
文献紹介:Gate-Shift Networks for Video Action Recognition文献紹介:Gate-Shift Networks for Video Action Recognition
文献紹介:Gate-Shift Networks for Video Action RecognitionToru Tamaki
 
距離まとめられませんでした
距離まとめられませんでした距離まとめられませんでした
距離まとめられませんでしたHaruka Ozaki
 
diffの真髄
diffの真髄diffの真髄
diffの真髄fuku68
 
Intoroduction of Pandas with Python
Intoroduction of Pandas with PythonIntoroduction of Pandas with Python
Intoroduction of Pandas with PythonAtsushi Hayakawa
 
OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読takuyayamamoto1800
 
「トピックモデルによる統計的潜在意味解析」読書会 2章前半
「トピックモデルによる統計的潜在意味解析」読書会 2章前半「トピックモデルによる統計的潜在意味解析」読書会 2章前半
「トピックモデルによる統計的潜在意味解析」読書会 2章前半koba cky
 
[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process Models
[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process Models[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process Models
[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process ModelsDeep Learning JP
 
KETpic できれいな図を書こう
KETpic できれいな図を書こうKETpic できれいな図を書こう
KETpic できれいな図を書こうYoshitomo Akimoto
 
MMDs10.6-7
MMDs10.6-7MMDs10.6-7
MMDs10.6-7mfumi
 
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)MITSUNARI Shigeo
 
大規模ネットワークの性質と先端グラフアルゴリズム
大規模ネットワークの性質と先端グラフアルゴリズム大規模ネットワークの性質と先端グラフアルゴリズム
大規模ネットワークの性質と先端グラフアルゴリズムTakuya Akiba
 

Similar to R seminar on igraph (20)

R intro
R introR intro
R intro
 
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
 
文献紹介:TSM: Temporal Shift Module for Efficient Video Understanding
文献紹介:TSM: Temporal Shift Module for Efficient Video Understanding文献紹介:TSM: Temporal Shift Module for Efficient Video Understanding
文献紹介:TSM: Temporal Shift Module for Efficient Video Understanding
 
PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説
 
Rを用いたGIS
Rを用いたGISRを用いたGIS
Rを用いたGIS
 
みどりぼん3章前半
みどりぼん3章前半みどりぼん3章前半
みどりぼん3章前半
 
文献紹介:Gate-Shift Networks for Video Action Recognition
文献紹介:Gate-Shift Networks for Video Action Recognition文献紹介:Gate-Shift Networks for Video Action Recognition
文献紹介:Gate-Shift Networks for Video Action Recognition
 
Information extraction 1
Information extraction 1Information extraction 1
Information extraction 1
 
距離まとめられませんでした
距離まとめられませんでした距離まとめられませんでした
距離まとめられませんでした
 
diffの真髄
diffの真髄diffの真髄
diffの真髄
 
Intoroduction of Pandas with Python
Intoroduction of Pandas with PythonIntoroduction of Pandas with Python
Intoroduction of Pandas with Python
 
CMSI計算科学技術特論A(14) 量子化学計算の大規模化1
CMSI計算科学技術特論A(14) 量子化学計算の大規模化1CMSI計算科学技術特論A(14) 量子化学計算の大規模化1
CMSI計算科学技術特論A(14) 量子化学計算の大規模化1
 
OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読
 
「トピックモデルによる統計的潜在意味解析」読書会 2章前半
「トピックモデルによる統計的潜在意味解析」読書会 2章前半「トピックモデルによる統計的潜在意味解析」読書会 2章前半
「トピックモデルによる統計的潜在意味解析」読書会 2章前半
 
Prosym2012
Prosym2012Prosym2012
Prosym2012
 
[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process Models
[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process Models[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process Models
[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process Models
 
KETpic できれいな図を書こう
KETpic できれいな図を書こうKETpic できれいな図を書こう
KETpic できれいな図を書こう
 
MMDs10.6-7
MMDs10.6-7MMDs10.6-7
MMDs10.6-7
 
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
 
大規模ネットワークの性質と先端グラフアルゴリズム
大規模ネットワークの性質と先端グラフアルゴリズム大規模ネットワークの性質と先端グラフアルゴリズム
大規模ネットワークの性質と先端グラフアルゴリズム
 

R seminar on igraph

  • 1. R+igraphではじめる 生物ネットワーク解析 竹本 和広 九州工業大学 情報工学研究院 生命情報工学研究系 科学技術振興機構さきがけ @kztakemoto takemoto@bio.kyutech.ac.jp 第2回 Rでつなぐ次世代オミックス情報統合解析研究会@ Mar 8, 2013 理化学研究所 横浜研究所
  • 2. 生物学の流れ  顕微鏡の発明による「細胞生物学」(17世紀)  メンデルによる「遺伝学」(19世紀)  X構造回折解析などによる「分子生物学」(20世紀)  ワトソンとクリックによる「DNA=遺伝子」  Omics Science(20世紀後半)  Genome, Transcriptome, Proteome, Metabolome, B iome  ヒトゲノム計画など
  • 3. 生体分子相互作用の 全体像が徐々に明らかに 異なる階層に、たくさんの役者 Biochemical Pathway Maps (http://web.expasy.org/pathways) (Zoology, 2nd edition, Brown Publishers, 1994)
  • 4. データの蓄積 で、どうする?
  • 5. Network Science  Data-Driven Scienceの一種  統計解析・数理モデル  大量のデータを「知識」にする。  19世紀頃から社会学の一分野として認識されてい た。  Social network analysis  Weak tieやStructural holeと富の関係など  最近ではSNS解析・サービスで利用  2000年頃から生物学で「精力的」に応用され始め る。  データが利用可能になったことにより
  • 6. 参考文献  Barabási A-L, Oltvai ZN (2004) Network biology: understanding the cell’s functional organization. Nat Rev Genet 5: 101–113.  Barabási A-L, Gulbahce N, Loscalzo J (2011) Network medicine: a network-based approach to human disease. Nat Rev Genet 12: 56– 68.  Takemoto K (2012) Current understanding of the formation and adaptation of metabolic systems based on network theory. Metabolites 2: 429–457.  Cho D-Y, Kim Y-A, Przytycka TM (2012) Chapter 5: Network biology approach to complex diseases. PLoS Comput Biol 8: e1002820. 詳しくはWebの補足資料をご覧下さい https://sites.google.com/site/kztakemoto/r-seminar-on-igraph---supplementary-information
  • 7. このセミナーの目的 +igraphでネットワーク解析  igraphの使い方の基礎  実際によく使われる手法  中心性解析  ネットワークモチーフ  コミュニティ抽出 http://igraph.sourceforge.net
  • 8. なぜR+igraphか  利点  Rユーザーは多い  他と比べてネットワーク解析の関数が豊富  他のデータと統合して解析できる。  欠点  Visualizationは比較的劣る  他のネットワーク解析を支援するツール  Pajek (Windowsのみで動作)  NetworkX (Python)  Cytoscape, Gephi (描画がきれい)
  • 9. igraphパッケージの インストールと読み込み > install.packages("igraph") いまからの説明はigraph ver. 0.6以上を想定しています。 バージョンを調べるには > packageVersion("igraph") パッケージの読み込み > library(igraph)
  • 10. ネットワークの読み込み > d <- read.table("eco_EM+TCA.txt") > g <- graph.data.frame(d,directed=T) > g <- simplify(g, + remove.multiple=T,remove.loops=T eco_EM+TCA.txt graph.data.frame: Source Target データフレームからグラフに変換 2-Oxoglutarate Oxalosuccinate 2-Oxoglutarate Succinyl-CoA simplify: 2PG 3PG 多重エッジや自己ループの削除 2PG PEP 3PG 2PG 3PG BPG AB Acetyl-CoA Citrate … Arbutin Arbutin_6-phosphate AB
  • 11. 他の形式からの読み込み > g <- read.graph(filename, + format=“xxx”, + directed=T) 有名どころでは・・・ edgelist (default) 01 GML yEdやCytoscape 12 でもサポート GraphML 23 … Pajek
  • 12. ネットワークを描画 > plot(g,vertex.label=V(g)$name, + vertex.size=5, + layout=layout.kamada.kawai) V(g)$name: ノード名の参照 layout: レイアウトアルゴリズム layout.fruchterman.reingold layout.circle layout.sphere layout.grid
  • 13. 全体的なネットワーク特徴量を測る  次数分布  クラスタ係数  Assortative coefficient  最短パス
  • 14. 次数分布  次数(結合次数):ノードが持つ枝数 次数kを持つノードの数  次数分布= 全体のノード数 > degree.distribution(g) 3 0.8 2 相対頻度 P(k) 0.6 0.4 2 0.2 1 0 2 1 2 3 結合次数 k
  • 15. 現実ネットワークの次数分布 スケールフリー性 アーキア バクテリア  次数分布がベキ関 数で近似できる。  明確な定義はない  ランダムグラフと は大きく異なる。 真核生物 平均 Nature 407, 651 (2000) 例:代謝ネットワーク
  • 16. 次数分布とネットワークロバスト性 ハブが無いと弱い ハブがあると偶発的 なアクシデントに強 い しかし、攻撃に弱い Scientific American 288, 50 (2003)
  • 17. 構造的な頑健性は生体システムの 頑健性と対応する場合がある  次数分布の均一性に注目  次数エントロピー  癌のシグナルネットワークの結合度の均一性と生 存率には負の相関 PNAS 109, 9209 (2012) 次数エントロピーの計算 > dist <- subset(degree.distribution(g), + degree.distribution(g)>0) > -sum(dist*log(dist)) 5年以内の生存率
  • 18. クラスタ係数  あるノードの近傍間においてエッジが張られ る確率 近傍ノード間 の辺数 平均クラスタ係数 > cc <- transitivity(g,type="localaverage",isolates="zero”) > mean(cc)
  • 19. Assortative coefficient  次数-次数相関の積率相関係数 Phys. Rev. Lett. 89, 208701 (2002) r>0 r=0 > assortativity.degree(g) r<0 r>0 r<0
  • 20. フォールディング速度との関連  コンタクトマップ  ノード:アミノ酸  エッジ:近接関係 Bioinformatics 23, 1760 (2007)
  • 21. 最短パス a 距離行列 b e c > average.path.length(g) d aからdまでの最短経路を探す。 a b c d e > sum <- a - 1 1 2 1 + get.all.shortest.paths(g, + “a",”d",mode="out") b 1 - 2 1 2 > V(g)[sum$res[[1]]] c 1 2 - 3 2 Vertex sequence: [1]”a” “b” “d” d 2 1 3 - 1 > V(g)[sum$res[[2]]] Vertex sequence: e 1 2 2 1 - [1]”a” “e” “d” > shortest.paths(g)
  • 22. 演習課題:代謝経路探索 D-Glucose から 2-Oxoglutarate までのパスを見つけよう > sum <- get.all.shortest.paths(g, + "D-Glucose","2-Oxoglutarate",mode="out") > V(g)[sum$res[[1]] Vertex sequence: [1] "D-Glucose" "G6P” "F6P" "F16BP" [5] "GAP" "BPG” "3PG” "2PG”... > E(g)$color <- "grey" > E(g,path=sum$res[[1]])$color <- "red" > E(g,path=sum$res[[1]])$width <- 3 > plot(g,vertex.label=V(g)$name, + vertex.size=5, + layout=layout.fruchterman.reingold)
  • 23. 重要(そうな)なノードを見つける  どのノードが重要で しょうか?  ネットワークにおける 位置と機能に関係は? 中心性解析 Soc Networks 1, 215 (1979) Nature 411, 41 (2001)
  • 24. 良く知られた中心性(1)  次数中心性 > degree(g) / (vcount(g) - 1)  枝数の多い(次数の高い)頂点が重要  近接中心性 > closeness(g)  その他の頂点に短い距離でつながる頂点が重要 頂点i-j間の最短距離
  • 25. 良く知られた中心性(2)  媒介中心性 > betweenness(g)  各ノード間の最短パスを考える時、よく通過する 頂点が重要 ノードj–k間の最短パスにおいてノードiを通る最短パスの数 ノードj–k間の最短パスの数  固有ベクトル中心性 > evcent(g)$vector  次数中心性の拡張版:近傍の中心性も考える 隣接行列 つまり 頂点iの中心性 Google page rankの基本的な考え方
  • 26. 中心性の比較 Chpt. 2 in Statistical and Machine Learning Approaches for Network Analysis, John Wiley & Sons, 77 (2012).
  • 27. Yeast PINにおいて相互作用数と 進化速度は負の相関がある Science 296, 750 (2002) 相互作用の多いタンパク質の進化速度は小さい
  • 29. 演習課題 (1) タンパク質相互作用ネットワーク ecoli_ppi_Hu_etal_2009.txt PLoS Biol 7, e96 (2009) b3396 b2609 b4149 b3636 b4149 b3301 (2) タンパク質と Nature 411, 41 (2001) Essentialityの対応表 ecoli_proteins_essentiality_Baba2006MSB.txt Mol Stst Biol 2, 2006.0008 (2006) gene essential Essentialityと Non-essential b0001 N … 中心性の関係に Unknown b0005 u … ついて調べる b0026 E Essential
  • 30. 次数中心性を用いる場合 > d <- read.table("ecoli_ppi_Hu_etal_2009.txt") > g <- simplify(graph.data.frame(d,directed=F), + remove.multiple=T,remove.loops=T) > ess <- read.table("ecoli_proteins_essentiality_Baba2006MSB.txt”,header=T) > target <- intersect(ess$gene,V(g)$name) > ess_select <- subset(ess,is.element(ess$gene,target)==T & + duplicated(ess$gene)==F) > ess_select_ord <- ess_select[order(ess_select$gene),] > deg <- degree(g) > deg_select <- subset(deg,is.element(names(deg),target)==T) > deg_select_ord <- deg_select[order(names(deg_select))] b0001 E b0002 2 共通部分を 抜き出してソート b0001 E b0001 1 b0002 u b0004 5 b0002 u b0002 2 b0003 N b0001 1 > boxplot(log(deg_select_ord)~ess_select_ord$ess,ylab="log(Degree)")
  • 31. 結果 p < 2.2 × 10–16 using Wilcoxon test Nature 411, 41 (2001) Essential proteinは 比較的多くの相互作用を持つ
  • 32. ネットワークモチーフ Science 298, 824 (2002) 実ネットワークにお けるサブグラフの数 ヌルモデルにおけ るサブグラフの数 の平均と標準偏差 >2なら有意に出現 (p=0.05) ランダム化されたネットワーク (ヌル仮説)に比べて頻出するパタン
  • 33. ネットワークモチーフ  フィードフォワードループなどが出現  ネットワークのBuilding block  制御理論において、このモジュールは重要な 役割を果たす。 Science 298, 824 (2002)
  • 34. ネットワークモチーフを みつけるツール  mfinder Science 298, 824 (2002)  mDraw  by Uri Alon Group MAVisto FANMOD 高速 Bioinformatics 21, 3572 (2005) Bioinformatics 22, 1152 (2006)
  • 35. n-ノードサブグラフを数える  3ノードの場合(5以上は利用不可) > c_real <- graph.motifs(g,3) > c_real [1] 0 0 2444 0 3014 10 180913 811 4 317 [11] 0 0 0 277 1 0 サブグラフの種類を確認する。 x in [0,15](n=3の場合) > plot(graph.isocreate(3,x),layout=layout.circle) x=0 x=7 x=11 x=15
  • 36. サブグラフを構成する ノードの出力  Feedforward loopの場合 > sum <- graph.get.subisomorphisms.vf2(g,graph.isocreate(3,7)) > sum [[1]] [1] 14 92 42 [[2]] [1] 16 90 18 … > V(g)[sum[[1]]+1] ノード名での出力 Vertex sequence: [1] "caiF" "narL" "fnr"
  • 37. Randomized Networks  データ解析におけるヌルモデル  あるネットワークの構造的特徴が有意なのかどう かを検証する際に使われる。  Configuration model  Edge switching algorithm  よく使われるが「適切な」ヌルモデルではないと いう批判もある。  研究者の「適切さ」の数だけヌルモデル  ヌルモデル戦争
  • 38. Configuration Model Phys. Rev. E 71, 027103 (2005)  次数列を与える。  Stubをランダムにつな ぐ。 Chpt. 2 in Statistical and Machine > deg <- degree(g) Learning Approaches for Network > g_rand <- degree.sequence.game(deg) Analysis, John Wiley & Sons, 77 (2012). 連結性が保証されないことに注意 連結性を保証する場合にはvlモードを使う。 > deg_out <- degree(g,m="out") > deg_in <- degree(g,m="in") > g_rand <- degree.sequence.game(deg_out,deg_in,m=“vl”) 有向ネットワークの場合、相互エッジの数は保存されないことに注意
  • 39. Edge Switching Algorithm  現実のネットワークを入力として任意に二辺を 選び、結合先を交換 > g_rand <- rewire(g,niter=n) n: 辺を交換する回数 次数分布は変化しない nはどのように設定すればよいのか? Science 296, 910 (2002) Science 298, 824 (2002) 終了条件「全てのエッジが少なくとも1回は交換されている」 ≈クーポンコレクター問題 回、交換すると、全てエッジが少なくとも1回は交換されている確率 ≈ e.g., c=5の時は0.993, c=10の時は0.99995 > rewire(g,niter=ecount(g)*(5+log(ecount(g)))/2) 有向ネットワークの場合、相互エッジの数は保存されないことに注意
  • 40. 演習課題: ネットワークモチーフを見つける 大腸菌遺伝子制御ネットワーク (RegulonDB ver 5.0) regDB5.txt 実ネットワークのサブグラフを数える Nucleic Acids Res 34, D394 (2006) graph.motifs(g,3) acrR acrA acrR acrB acrR acrR Randomized networkを作る ada ada degree.sequence.game() or rewire() Randomized networkのサブグラフを数える 注意 実際にはRandomized 平均と標準偏差からモチーフを見つけだす。 networkを作る際に、 相互エッジの数を保存 するという制約が必要
  • 41. 工夫の例 無向グラフに変換 ランダム化して有向グラフに戻す グラフを分ける 統合する ランダム化 > g_unid <- delete.edges(g,subset(E(g),is.mutual(g,es=E(g))==T)) > g_bid <- delete.edges(g,subset(E(g),is.mutual(g,es=E(g))==F)) > g_bid_u <- as.undirected(g_bid) > c_rand <- data.frame() > for(i in 1:100){ + g_rand_unid <- rewire(g_unid,niter=ecount(g_unid)*(50+log(ecount(g_unid)))/2) + g_rand_bid_u <- rewire(g_bid_u,niter=ecount(g_bid_u)*(50+log(ecount(g_bid_u)))/2) + g_rand_bid <- as.directed(g_rand_bid_u) + g_rand <- graph.union(g_rand_unid,g_rand_bid) + c_rand <- rbind(c_rand,graph.motifs(g_rand,3)) これだけでは不十分 +} ほかにどんな工夫が必要でしょう
  • 42. 結果 > (c_real-colMeans(c_rand))/sqrt(colMeans(c_rand**2)-colMeans(c_rand)**2) 0 1 2 3 4 5 6 NaN NaN -6.8995100 NaN -2.8736176 -0.9491391 -3.0222612 7 8 9 10 11 12 13 6.8581263 0.4525696 -1.9818274 -1.3719887 -0.3144855 -0.4264014 2.4857428 14 15 1.6035675 NaN > plot(graph.isocreate(3,7),layout=layout.circle) > V(g)[sum[[1]]+1] Vertex sequence: [1] "caiF" "narL" "fnr” [1] "chbR" "nagC" "crp“ [1] "csgD" "ompR" "crp” [1] "csgD" "rcsA" "rcsB" Feedforward loopが ネットワークモチーフ
  • 43. コミュニティ抽出  比較的密に連結した部分グラフ同士が疎に連 結しているような部分構造を見つけ出す。  グラフクラスタリングに対応 どんなメリットがあるの?  PPIや相関ネットワークにおい て、機能的に類似な遺伝子が 同じコミュニティに属する  機能予測ができる。  複雑なネットワークの俯瞰的 な理解ができる BMC Bioinformatics 7, 2 (2006)
  • 44. 大きく分けてふたつの形式がある Overlapping Non-overlapping まずはこちらから紹介 Phys Rev E 74, 016110 (2006)
  • 45. コミュニティ検出の基礎  コミュ二ティ内の辺密度が高く、コミュティ 間の辺が疎であれば良い分割という前提 隣接行列 (頂点 i と j が同じグルー プに属していたら) (そうでなければ) グループのアサインを変え 任意の次数列で構成されるラ てQを最大化する。 ンダムグラフの結合確率 Low Q High Q
  • 46. コミュニティの最適な アサインをみつける必要がある  Qが最大となるc=(c1,c2,…cN)を見つける。  難しい(膨大な計算時間が必要)。  近似アルゴリズムを使う。  最適化アルゴリズムによってQが最大となるアサ インを見つける。 アサイン変更 Q0<Q1: 採択 Q0>Q1: 棄却 Q0 Q1
  • 47. 有名な手法(1)  辺媒介性を用いた手法 PNAS 99, 7821 (2002)  媒介性の高い辺を削除して分割 > edge.betweenness.community(g) Phys. Rep. 486, 75 (2010)  貪欲アルゴリズムを用いた手法 Phys Rev E 70, 066111 (2004)  Q値が高くなるように隣接(ノード・コミュニティ) ペアをまとめていく。 > fastgreedy.community(g) (Q1–Q0) < (Q2–Q0) Q1 Q2 Q0 採用
  • 48. 有名な手法(2) Phys Rev E 74, 036104 (2006)  スペクトル最適化法 PNAS 103, 8577 (2006)  グラフラプラシアンを使ってQ値が最大となるよ うな分割(カット)を探す。 > leading.eigenvector.community(g)  焼きなまし法(Simulated annealing) Phys Rev E 74, 016110 (2006) > spinglass.community(g) アサインを ちょっと変更 Q0<Q1: 採択 Q0>Q1: の確率で採択 β(逆温度)を徐々に Q0 Q1 大きくする(冷却)
  • 49. 計算結果の抽出  最大Q値 > max(data$modularity) [1] 0.6141498  最大Q値におけるコミュニティ数 > max(data$membership) [1] 5  最大Q値におけるコミュニティメンバーシッ プ > data$membership [1] 4 1 1 5 2 2 1 5 2 1 2 3 2 2 1 1 4 3 5 4 5 5 2…
  • 50. どれがいいの? 計算時間なら貪欲アルゴリズム  貪欲アルゴリズムが最小:n(ln n)2 Phys. Rep. 486, 75 (2010) 貪欲 < スペクトル法 < 辺媒介 < 焼きなまし法 (ネットワークが疎の場合)
  • 51. どれがいいの? パフォーマンスなら焼きなまし法 辺媒介 < 貪欲 < スペクトル法 < 焼きなまし法 Phys. Rep. 486, 75 (2010)
  • 52. Q値の問題点  Resolution limit 解像度限界 PNAS 104, 36 (2007)  小さなコミュニティを見逃してしまうことがあ る。  疎なネットワークな場合がおおよそこれに当てはま る。 m=5 m-ノード完全グラフ m=3  コミュニティ内の次数の合計Kが m>4のとき、それぞれの完全グラフ がコミュニティとして認識される。 モジュラリティのより良い定義が必要
  • 53. より良い指標: Modularity Density Phys Rev E 77, 036109 (2008)  Simple definition: コミュニティ外の平均次数 コミュニティ内の平均次数 D1  More general definition < where D2
  • 54. 演習課題: 代謝経路のコミュニティ抽出 eco_EM+TCA.txt edge.betweenness.community(g) fastgreedy.community(g) leading.eigenvector.community(g) spinglass.community(g) 貪欲アルゴリズムを使う場合 ? d <- read.table("eco_EM+TCA.txt") g <- simplify( + graph.data.frame(d,directed=F), + remove.multiple=T,remove.loops=T) data <- fastgreedy.community(g) V(g)$color <- data$membership
  • 55. 結果 > plot(g,vertex.size=5, + vertex.label=V(g)$name, デンドログラムの表示 + layout=layout.kamada.kawai) > dend <- as.dendrogram(data) > plot(dend) 解糖系・糖新生の上部 =>TCA 解糖系・糖新生下部 TCA (酸化) TCA (還元)
  • 56. Overlapping Communities  コミュニティがオーバーラップしている(階 層性を持っている)と考える方がより自然  Clique percolation Nature 435, 814 (2005)  Edge partition Phys Rev E 80, 016105 (2009)  Link communities Nature 466, 761 (2010)  Overlapping cluster generator Nature 435, 814 (2005) Bioinformatics 28, 84 (2012) 利用可能なのはふたつ > library(linkcomm)
  • 57. Clique Percolation Method Nature 435, 814 (2005)  k-clique隣接に基づいたパーコレーションか らコミュニティを同定する。  CFinderで計算できます (cfinder.org) k-clique隣接 Yes No k=3の場合 k=4の場合
  • 58. Edge Partition Phys Rev E 80, 016105 (2009)  Line graphに変換してからコミュニティ抽出 Line graph変換 Softwareは利用可能です https://sites.google.com/site/linegraphs/ エッジのクラスタリング
  • 59. Link Communities Nature 466, 761 (2010) (1)エッジ間の類似性計算 (2)適当な階層的クラスタリング法 でクラスタリングする k eik ejk i j (3)分割密度Dが最大になる分割を探す (コミュニティ内が密になるように) 論文では単連結法が使用されている > data <- getLinkCommunities(g)
  • 60. Link Community Method Shows High Composite Performance Manually-curated Clustering: 研究者(コンソーシアム)が決定した分類 例:Gene OntologyやKEGG Pathway
  • 61. Overlapping Cluster Generator 1. 適当な初期状態を設定 2. Q値(オーバーラップ 版)が高くなるように オーバーラップしている コミュニティを融合する (貪欲アルゴリズム) CFinderやLinkCommよりも 良いパフォーマンスを示 す。 > data <- getOCG.clusters(g)
  • 62. 演習課題:代謝経路のコミュニ ティ抽出(Overlapを考慮) eco_EM+TCA.txt linkcommはネットワークの読み込みが異なる ? > g <- read.table("eco_EM+TCA.txt") > data <- getLinkCommunities(g) > data <- getOCG.clusters(g) > plot(data,type="graph”) > data$clusters
  • 63. 結果:LinkCommの場合 任意の分割密度での結果を表示 > lc <- newLinkCommsAt(data,cutat=0.84) > plot(lc,type="graph") 1本のエッジで構 > data <- getLinkCommunities(g) 成されるコミュ > plot(data,type="graph") ニティは表示さ れない
  • 64. 結果:OCGの場合 糖の取り込み > plot(data,type="members") 解糖系・ 糖新生 上部 TCA(還元) TCA (酸化) 複数のコミュニティに 属するものだけ表示 解糖系・糖新生下部 =>TCA
  • 65. まとめ  中心性解析  ネットワークと生体分子機能の関係を調べる。  ネットワークモチーフ  意図的に構成された部分構造をみつける。  コミュニティ抽出  機能予測や俯瞰的な理解を助ける。 @kztakemoto takemoto@bio.kyutech.ac.jp