CytoscapeとIPython Notebookの連携

Part 1: 基本機能の紹介

by Keiichiro Ono

  • Mail: kono at ucsd edu
  • Twitter: 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 [11]:
cy.edgebundling.apply(g_cy)

画像を取得する

PNG


In [7]:
image = g_cy.get_png()
from IPython.display import Image
Image(image)

SVG


In [13]:
image_svg = g_cy.get_svg()
from IPython.display import SVG
SVG(image_svg)


Out[13]:
Creator: FreeHEP Graphics2D Driver Producer: org.freehep.graphicsio.svg.SVGGraphics2D Revision Source: Date: 2015年7月4日 22時00分26秒 PDT 303 48 158 49 105 319 93 358 484 414 263 160 454 363 417 227 35 55 293 443 375 418 66 239 450 367 432 280 462 174 436 260 387 469 444 205 487 126 300 82 138 180 437 330 475 359 108 151 63 312 392 165 24 150 123 353 29 128 234 77 194 305 134 26 203 284 87 71 287 79 104 265 89 200 316 2 281 130 16 315 377 18 36 44 8 323 53 54 12 22 58 34 70 109 43 144 119 46 167 6 31 85 51 4 198 17 86 166 274 84 64 21 15 383 81 23 145 356 153 347 25 137 244 7 133 191 391 28 242 310 157 373 474 177 483 120 468 339 374 308 229 341 243 386 27 47 327 470 342 322 461 491 499 173 482 336 396 40 493 246 271 337 425 397 171 439 393 169 403 275 250 218 184 329 445 215 96 331 266 427 216 378 143 415 313 185 62 175 210 72 430 99 80 411 379 256 141 477 39 334 309 345 73 380 428 232 448 131 162 451 389 429 317 466 258 224 254 101 426 209 122 335 249 273 346 245 288 382 478 467 489 127 135 117 69 440 142 20 207 129 230 247 90 301 65 172 156 407 222 76 0 136 75 116 78 14 494 97 182 214 212 360 168 357 5 107 113 1 74 60 217 3 9 186 41 95 132 241 385 419 13 193 294 42 268 176 295 453 257 204 33 211 296 372 307 433 486 50 61 197 311 438 279 206 272 59 56 325 179 226 11 270 83 125 354 321 447 92 208 154 344 364 140 369 52 253 332 314 349 402 401 299 152 267 161 283 406 410 181 111 110 457 238 139 88 326 459 159 221 45 213 412 395 37 10 228 237 183 195 366 155 189 100 235 352 68 233 103 318 236 398 343 463 240 298 94 102 481 399 421 164 231 148 488 405 262 199 259 422 285 115 404 480 30 495 106 297 304 452 381 456 320 248 32 264 147 121 291 424 435 351 340 290 67 465 361 472 365 431 255 190 497 442 408 434 146 38 269 376 460 196 282 394 455 471 252 485 118 188 170 223 371 446 91 476 57 178 350 479 225 98 302 388 348 292 114 490 384 333 286 192 449 324 276 473 149 370 289 409

PDF


In [10]:
image_pdf = g_cy.get_pdf()
print(type(image_pdf))

f = open('network1.pdf', 'wb')
f.write(image_pdf)
f.close()


<class 'bytes'>

JavaScriptを使ったインタラクティブな描画