#!/usr/bin/env python # coding: utf-8 # # CytoscapeとIPython Notebookの連携 # #  # # ### Part 1: 基本機能の紹介 # # by Keiichiro Ono # * Mail: kono at ucsd edu # * Twitter: [c_z](https://twitter.com/c_z) # # このノートブックの詳細は[こちらの記事]()をお読みください。 # # ## 初期設定 # In[1]: from py2cytoscape.data.cyrest_client import CyRestClient cy = CyRestClient(ip='127.0.0.1', port=1234) # 現在のセッションのクリア cy.session.delete() # ## NetworkXによるスケールフリーネットワークの生成 # In[2]: import networkx as nx g = nx.scale_free_graph(500) # ## 各種統計量の計算 # In[3]: deg = nx.degree(g) btw = nx.betweenness_centrality(g) nx.set_node_attributes(g, 'degree', deg) nx.set_node_attributes(g, 'betweenness', btw) # ## Cytoscapeで描画 # In[4]: g_cy = cy.network.create_from_networkx(g) # ## レイアウト # In[5]: cy.layout.apply(name='kamada-kawai', network=g_cy) # ## スタイルの適用 # In[6]: directed = cy.style.create('Directed') cy.style.apply(directed, network=g_cy) # ## 見やすいようにエッジを束ねる # In[7]: result = cy.edgebundling.apply(g_cy) # ## 画像を取得する # # ### PNG # In[13]: network_png = g_cy.get_png() from IPython.display import Image Image(network_png) # ### SVG # In[16]: network_svg = g_cy.get_svg() from IPython.display import SVG SVG(network_svg) # ### PDF # In[15]: network_pdf = g_cy.get_pdf() # ファイルに保存 f = open('scale_free_500.pdf', 'wb') f.write(network_pdf) f.close() # ## JavaScriptを使ったインタラクティブな描画 # In[11]: import py2cytoscape.cytoscapejs as renderer view = g_cy.get_first_view() # style_for_widget = cy.style.get(my_yeast_style.get_name(), data_format='cytoscapejs') renderer.render(view, 'Directed', background='radial-gradient(#FFFFFF 15%, #DDDDDD 105%)')