Cytoscapeやネットワーク解析・可視化に関する情報の集め方

# Cytoscapeやネットワーク解析と可視化に関する情報リソース

これは[昨日の記事](http://qiita.com/keiono/items/0db6495c4d8bc215de67)を読んでこういったものを実際に作ってみたいと思われた方に向けての補足です。とても基本的な情報ばかりですので、経験者の方には少々物足りないと思いますが…


## はじめに
データ可視化という分野の中で、ネットワークの可視化は比較的ポピュラーな手法ですが、実務家向け（最新の計算機科学の研究論文ではなく、実務寄り、つまり実際にデータ解析を行う人々向け）の最新の情報は、あまりまとまった形で入手する事ができません。そして残念ながらほとんどの文献は英語で書かれています。ここでは、実際にネットワーク分析と可視化を行ってみたい方々に向けて、Cytoscape関連のリンクを中心としたいくつかのポインタを集めてみたいと思います。


## Cytoscapeの情報

![](http://www.cytoscape.org/images/logo/cy3logoOrange.svg)


#### Cytoscape公式サイト

http://www.cytoscape.org/

コンソーシアムが管理する公式のサイトです。最新版はこちらからダウンロードしていただけます。簡単な[イントロダクション](http://www.cytoscape.org/what_is_cytoscape.html)や[スクリーンショット集](http://www.cytoscape.org/releasenotes.html)などが含まれます。画像や文章は[CC BY](http://creativecommons.org/licenses/by/4.0/)ライセンスで自由に再利用して下さい。

#### Cytoscape App Store
Appと呼ばれる、Cytoscapeの上に作られた拡張プログラムのレポジトリです。我々の組織は、生命科学研究を対象とした政府資金で運営されているため、どうしても生命科学研究向けのAppが多いですが、もっと一般的な問題に利用できるものも多く含みます。幾つか例をあげます:

* [AllegroLayout](http://apps.cytoscape.org/apps/allegrolayout) - OpenCLを利用した、GPUベースのレイアウトアルゴリズム実装。とても速いです。同じアルゴリズムをCPU実装した場合に比べて数百倍の速度が出ます。
   ![](http://apps.cytoscape.org/media/allegrolayout/screenshots/allegrolayout-screenshot_1.png)
* [DynNetwork](http://apps.cytoscape.org/apps/dynnetwork) - 動的なネットワークをアニメーションとして表示するアプリケーション。[こちらのビデオ](https://www.youtube.com/watch?v=R6RkMQpOmDs)から実際に動いている例をご覧になれます
* [clusterMaker2](http://apps.cytoscape.org/apps/clustermaker2) - GUIからネットワーククラスタリングを行えるアプリケーションです。
    ![](http://apps.cytoscape.org/media/clustermaker2/screenshots/clusterMaker2.png)


このように、ネットワーク解析と可視化全般に使える、問題ドメインから独立したアプリケーションをCytoscape上に作ることも可能です。ここはJavaプログラマの方々も多いと思われるので、興味のある方は是非挑戦してみてください。


#### Cytoscape Wiki
Cytoscapeに関する頻繁に更新される情報を集めたサイトです。[マニュアルもこのWikiを利用して作成されています](http://wiki.cytoscape.org/Cytoscape_3/UserManual)。Cytoscapeをダウンロードした時に中に含まれるPDFは最新のリリース版のマニュアルですが、それより後に開発された機能などはこちらに順次追加されます。マニュアルはこのWikiから自動生成されるため、基本的に内容は同一です。


#### チュートリアル
現在、最新版のチュートリアルはこちらに集約しています。

* [Open Tutorials](http://opentutorials.cgl.ucsf.edu/index.php/Portal:Cytoscape3)

平易な英語で書かれていますので、まずこの[クイックスタート](http://opentutorials.cgl.ucsf.edu/index.php/Tutorial:Introduction_to_Cytoscape_3)だけでも挑戦してみてください。

#### 日本語のビデオチュートリアル
* [Cytoscapeを使い倒す ～インストール・基本操作編～](https://www.youtube.com/watch?v=kfte60OO-60)
* [Cytoscapeを使って実験データを可視化する](https://www.youtube.com/watch?v=dRAHf9p3uP4)


[DBCLSの統合TV](http://togotv.dbcls.jp/ja/)プロジェクトの皆さんが作ってくださいました。DBCLSは日本における各種生物学的データベースやツールをより使いやすい形で開発・維持することを目的に設立された組織で、ライフサイエンス系の研究で使われるツール群の紹介など、様々な啓蒙活動も行っておられます。無論これらは生物学者向けに作られたものですが、ネットワーク解析という視点からは、基本的な部分の操作は全く同じなので、分野外の方にも十分役に立つと思います。


#### その他
* [公式Twitterアカウント](https://twitter.com/cytoscape) - 最新の情報はこちら
* [Cytoscape Publications (Tumblr)](http://cytoscape-publications.tumblr.com/) - ほとんどが生命科学研究関連ですが、実際の査読付き論文に使われているCytoscapeで作成された図が載っていますので、眺めるだけで何となくどのようなことが出来るのか理解していただけると思います。

    ![](http://33.media.tumblr.com/e4ccf5b6dec00a5a63e22b6ec8c65ec5/tumblr_n8ts3pA6UI1r43vsyo1_1280.gif)


##### メーリングリスト
コンソーシアムは、Google Groupsを利用していくつかのメーリングリストを運営しています:

* [cytoscape-help]() - 一般的な使い方の質問、バグ報告などのためのリスト。
* [cytoscape-discuss](https://groups.google.com/forum/#!forum/cytoscape-discuss) - 一般的な話題。CytoscapeのApp開発や技術的な質問、高度な使い方等の話題はこちらに。
* [cytoscape-announce](https://groups.google.com/forum/#!forum/cytoscape-announce) - コンソーシアムからのお知らせや、Appを開発した方がリリースを報告するためのリスト。


これらの公式メーリングリストは、毎週日本時間で木曜日の深夜、私も含んだコア開発者の電話会議で必ず目を通しますので、突っ込んだ質問のある方はこちらに英語で質問していただくのが一番確実です。

##### 開発者向けのリソース
* [App開発者向けのチュートリアル](http://opentutorials.cgl.ucsf.edu/index.php/Tutorial:Setup_App_development_environment)
* [GitHubのコードリポジトリ](https://github.com/cytoscape) - コンソーシアムで開発されている各種プロジェクトのソースコードがこちらで管理されています。
* [ナイトリービルド](http://code.cytoscape.org/jenkins/job/cytoscape-3-gui-distribution/lastSuccessfulBuild/org.cytoscape.distribution$cytoscape/)


## 代表的なネットワーク解析ツール
ここからは、ネットワーク解析一般で使われるツールの情報です。


#### [igraph](http://igraph.org/)
特にRユーザーに人気のあるネットワーク解析パッケージ。実際に計算する部分はCで実装されているので、Cのライブラリ、Pythonのモジュールとしても利用可能です。グラフデータの入出力、ランダムグラフジェネレータ、ネットワークの統計解析、コミュニティ抽出、ネットワークに対する各種操作（マージ等）がまとめてあります。[昨日の記事](http://qiita.com/keiono/items/0db6495c4d8bc215de67)の中で紹介した例も、これを使ってCytoscapeとRを連携させています。

好みの問題かもしれませんが、これを使う場合はRで実行することをおすすめします。Python版は若干クセがあるので。


#### [NetworkX](https://networkx.github.io/)
Python向けのグラフ解析ソフトウェア。igraphと同じような機能がPython向けに実装されています。コミュニティ抽出など、若干igraphより劣る部分はありますが、Pythonからはこちらのほうが使いやすいので、必要に応じてigraphと使いわけるのがおすすめです。


#### [GraphLab](http://graphlab.com/products/create/technology.html)
こちらは比較的新しい、大規模な解析を念頭に作られた新世代のライブラリです。C++で記述されていますが、抽象度の高いPython APIからすべての機能にアクセスできます。SFrameと呼ばれるDataFrameを模したテーブル構造、SGraphと呼ばれる大規模グラフのためのデータ構造、そして機械学習モジュールからなる大規模なライブラリで、データ解析者がハイレベルなAPIから短時間で機械学習を含む解析パイプラインを構築できるようにデザインされています。ネットワーク関係の解析機能はまだ少ないですが、巨大グラフを念頭に置いて、AWSのEC2で実行させるようなユースケースも考慮に入れていますので、今後の注目です。実際のコードがどのようなものになるかは、この辺りをご覧ください:

* [Custom Graph Algorithm on GraphLab Create](http://graphlab.com/learn/notebooks/preview_graphlab-create_0.4.html)


## 日本語の情報
残念ながら日本語のリソースは充実しているとは言いがたいです。しかし、書籍も僅かですが出ています。

#### ウェブ上のリソース
* [R seminar on igraph - supplementary information](https://sites.google.com/site/kztakemoto/r-seminar-on-igraph---supplementary-information)

Rとigraphでの解析がどのようなものになるのかを体験するにはとても良い教材です。現在、チュートリアル作者の方のご厚意により、このサンプルをR+igraph+Cytoscapeを利用した、よりフレキシブルなものにアップデートする作業を私が行っております。


#### 書籍
* 鈴木 努　著　[Rで学ぶデータサイエンス　第八巻　「ネットワーク分析」](http://www.kyoritsu-pub.co.jp/bookdetail/9784320019287)

これは日本語で書かれたネットワーク分析と可視化に関する唯一の実務家向け書籍かもしれません。理論的な背景について学びたい方にはいくつか書籍があるのですが、キーボードに手をおいて、実際にソフトウェアを使いながら学べるものはこれくらいでしょう。ソフトウェアの解説を含む書籍の宿命ですが、あらゆる本が出した瞬間から陳腐化が始まります。この本も例外ではなく、igraphとsnaパッケージ周辺の情報がちょっと古くなっています。ただし、概念部分を解説している部分は問題ないので、ウェブ上の最新情報と合わせて読まれることをおすすめします。

* [statnet: Software tools for the analysis, simulation and visualization of network data](http://statnet.org/) - 現在、snaはこの統合されたより大規模なパッケージ群の一部となっています。
* [著者の鈴木氏のTwitterアカウント](https://twitter.com/snatool)



## おわりに
急いで書いたために、これもまだ抜け落ちている情報が多いですが、少なくともCytoscapeに関しては最新の情報を追うためのポインタは示せたと思います。今後の課題としては、

* 具体的な利用法の日本語解説記事の執筆
* ユーザーが日本語で情報交換できる場の立ち上げ

などがあります。どうしても英語での執筆が優先されてしまうので申し訳ないのですが、できるだけ早急にこれらも行いたいと思います。実は、[日本語のメーリングリスト](https://groups.google.com/forum/#!forum/cytoscape-discuss-j)もあるにはあるのですが、どうしても回答者が複数居ないと持続性に難があるので、何か良い方法がないかと模索中です。


私の執筆した記事に関すること、Cytoscpeのちょっとした疑問などならば、私に[Twitter](https://twitter.com/c_z)で話しかけていただければお答えしますので、お気軽にどうぞ。

Keiichiro Ono
[Cytoscape Consortium](http://www.cytoscapeconsortium.org/)
[National Resource for Network Biology](http://nrnb.org/)