{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Basic Workflow 1: Introduction to cyREST API\n", "\n", "by [Keiichiro Ono](http://keiono.github.io/)\n", "\n", "----\n", "\n", "![](http://cytoscape.org/images/logo/cy3logoOrange.svg)\n", "\n", "\n", "## Introduction\n", "This is an introduction to cyREST and its API. You will learn how to access Cytoscape via RESTful API.\n", "\n", "### Prerequisites\n", "* Basic knowledge of RESTful API\n", " * [This is a good introduction to REST](http://www.restapitutorial.com/)\n", "* Basic Python skill\n", "* Basic knowledge of Cytoscape\n", "\n", "### System Requirments\n", "* [Java 8+](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)\n", "* [Cytoscape 3.2.1 or later](http://cytoscape.org/download.php)\n", "* Latest version of [cyREST app](http://apps.cytoscape.org/apps/cyrest)\n", "\n", "#### Tested with Python 2.7.10 and 3.4.0. You are running:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "My Python Version = 2.7.10 |Anaconda 2.2.0 (x86_64)| (default, May 28 2015, 17:04:42) \n", "[GCC 4.2.1 (Apple Inc. build 5577)]\n" ] } ], "source": [ "import sys\n", "print ('My Python Version = ' + sys.version)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "----\n", "## Questions or Feature Requests?\n", "Please send them to our [mailing list](https://groups.google.com/forum/#!forum/cytoscape-discuss)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Import Python Libraries and Basic Setup\n", "\n", "### Libraries\n", "In this tutorial, we will use several popular Python libraries to make this workflow more realistic.\n", "\n", "#### HTTP Client\n", "Since you need to access Cytoscape via RESTful API, HTTP client library is the most important tool you need to understand. In this example, we use [Requests](http://docs.python-requests.org/en/latest/) library to simplify API call code.\n", "\n", "#### JSON Encoding and Decoding\n", "Data will be exchanged as JSON between Cytoscape and Python code. Python has built-in support for JSON and we will use [it](https://docs.python.org/2/library/json.html) in this workflow.\n", "\n", "### Basic Setup for the API\n", "At this point, there is only one option for the cy-rest module: port number.\n", "\n", "#### URL to Access Cytoscape REST API\n", "We assume you are running Cytoscape desktop application and IPython Notebook server on a same machine. To access Cytoscape REST API, use the following URL:\n", "\n", "```\n", "http://localhost:PORT_NUMBER/v1/\n", "```\n", "\n", "where __v1__ is the current version number of API. Once the final release is ready, we guarantee compatibility of your scripts as long as major version number is the same.\n", "\n", "##### Note\n", "Of course, you can run Cytoscape and IPython server on different machines. In that case, you need to change the URL to the machine running Cytoscape desktop. Also, you need to open the port.\n", "\n", "#### Change Port Number\n", "By default, port number used by cyREST is __1234__. To change this, you need set a global Cytoscape property from:\n", "\n", "* _**Edit → Preserences → Properties...**_\n", "\n", "and add a new property __resr.port__." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before running following cells, install dependent Python packages with\n", "```\n", "pip install -U requests\n", "```" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# HTTP Client for Python\n", "import requests\n", "\n", "# Standard JSON library\n", "import json\n", "\n", "# Basic Setup\n", "PORT_NUMBER = 1234\n", "\n", "# Specify your machine's URL (The IP address of the machine running Cytoscape and cyREST) if you use \n", "# Docker or remote server for this notebook.\n", "#IP = '192.168.1.1'\n", "\n", "# If you are running both Notebook server and Cytoscape on a same machine, just use localhost\n", "IP = 'localhost'\n", "\n", "BASE = 'http://' + IP + ':' + str(PORT_NUMBER) + '/v1/'\n", "\n", "# Header for posting data to the server as JSON\n", "HEADERS = {'Content-Type': 'application/json'}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Test Cytoscape REST API\n", "\n", "### Understand REST Basics\n", "\n", "| HTTP Verb | Description |\n", "|:----------:|:------------|\n", "| GET | Retrieving resources (in most cases, it is Cytoscape data objects, such as networks or tables) |\n", "| POST | Creating resources | \n", "| PUT | Changing/replacing resources or collections |\n", "| DELETE | Deleting resources |\n", "\n", "----\n", "\n", "### Check the status of server\n", "First, send a simple request and check the server status." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Get server status\n", "res = requests.get(BASE)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Roundtrip between JSON and Python Object\n", "\n", "#### Introduction to JSON handling in Python\n", "\n", "\n", "Now, __res__ object contains return value of API as JSON. Let's convert it into Python object:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{\n", " \"memoryStatus\": {\n", " \"usedMemory\": 927, \n", " \"freeMemory\": 2388, \n", " \"maxMemory\": 28217, \n", " \"totalMemory\": 3316\n", " }, \n", " \"numberOfCores\": 8, \n", " \"apiVersion\": \"v1\"\n", "}\n" ] } ], "source": [ "status_object = res.json();\n", "print(json.dumps(status_object, indent=4))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "JSON library in Python converts JSON string into simple Python object." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "v1\n", "927\n" ] } ], "source": [ "print(status_object['apiVersion'])\n", "print(status_object['memoryStatus']['usedMemory'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you are comfortable with this data type conversion, you are ready to go!\n", "\n", "----\n", "## 3. Import Networks from various data sources\n", "There are many ways to load networks into Cytoscape from REST API:\n", "\n", "* Load from files\n", "* Load from web services\n", "* Send Cytoscape.js style JSON directly to Cytoscape\n", "* Send edgelist\n", "\n", "### 3.1 Create networks from local files and URLs\n", "\n", "Let's start from a simple file loading examples. The __POST__ method is used to create new Cytoscape objects. For example,\n", "\n", "```bash\n", "POST http://localhost:1234/v1/networks\n", "```\n", "\n", "means create new network(s) by specified method. If you want to create networks from files on your machine or remote servers, all you need to do is create a list of file locations and post it to Cytoscape." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Target Local File = file:///Users/kono/prog/git/cy-rest-python/basic/sample_data/yeast.json\n" ] } ], "source": [ "# Small utility function to create networks from list of URLs\n", "def create_from_list(network_list):\n", " server_res = requests.post(BASE + 'networks?source=url&collection=Yeast Collection', data=json.dumps(network_list), headers=HEADERS)\n", " return server_res.json()\n", "\n", "# This is not necessary if you directly specify absolute file path like \"/Users/foo/bar/sample_data/yeast.json\"\n", "import os\n", "filepath = os.path.abspath('sample_data/yeast.json')\n", "\n", "import platform\n", "if platform.system() != 'Windows':\n", " filepath = 'file://' + filepath \n", "\n", "print('Target Local File = ' + filepath)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## If you do understand what this code means, uncomment the line _filepath_. Otherwise, don't try. You need to know how to specify local file location as URL." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[\n", " {\n", " \"source\": \"http://chianti.ucsd.edu/cytoscape-data/galFiltered.sif\", \n", " \"networkSUID\": [\n", " 5024\n", " ]\n", " }\n", "]\n" ] } ], "source": [ "# Array of data source. \n", "network_files = [\n", " # Local file in this example data directory\n", " # filepath,\n", "\n", " # SIF file on a web server\n", " 'http://chianti.ucsd.edu/cytoscape-data/galFiltered.sif'\n", " \n", " # And of course, you can add as many files as you need...\n", "]\n", "\n", "# Create!\n", "print(json.dumps(create_from_list(network_files), indent=4))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.2 Create networks from public RESTful web services\n", "There are many public network data services. If the service supports Cytoscape-readable file formats, you can specify the query URL as a network location. For example, the following URL calls [PSICQUIC](https://code.google.com/p/psicquic/) web service and returns the search result in PSIMI 2.5 XML format. Since Cytoscape supports PSIMI2.5 files by default, this automatically creates a network from the response from the web service. " ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[\n", " {\n", " \"source\": \"http://www.ebi.ac.uk/Tools/webservices/psicquic/intact/webservices/current/search/query/brca1?format=xml25\", \n", " \"networkSUID\": [\n", " 6438\n", " ]\n", " }\n", "]\n" ] } ], "source": [ "# This may take a while because Cytoscape fetch the data from a server in UK...\n", "queries = [ 'http://www.ebi.ac.uk/Tools/webservices/psicquic/intact/webservices/current/search/query/brca1?format=xml25' ]\n", "print(json.dumps(create_from_list(queries), indent=4))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And of course, you can mix local files, URLs, and list of web service queries in a same list:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[\n", " {\n", " \"source\": \"http://chianti.ucsd.edu/cytoscape-data/galFiltered.sif\", \n", " \"networkSUID\": [\n", " 8010\n", " ]\n", " }\n", "]\n" ] } ], "source": [ "mixed = [\n", " #'file://' + filepath,\n", " 'http://chianti.ucsd.edu/cytoscape-data/galFiltered.sif',\n", " \n", " # Uncomment the line below if you have fast internet connection\n", " #'http://www.ebi.ac.uk/Tools/webservices/psicquic/intact/webservices/current/search/query/brca2?format=xml25'\n", "]\n", "print(json.dumps(create_from_list(mixed), indent=4))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.3 Create networks from Python objects\n", "And this is the most powerful feature in Cytoscape REST API. __You can easily convert Python objects into Cytoscape networks, tables, or Visual Styles__\n", "\n", "#### How does this work?\n", "Cytoscape REST API sends and receives data as JSON. For networks, it uses [Cytoscape.js style JSON](http://cytoscape.github.io/cytoscape.js/) (support for more file formats are comming!). You can programmatically generates networks by converting Python dictionary into JSON.\n", "\n", "#### 3.3.1 Prepare Network as Cytoscape.js JSON\n", "Let's start with the simplest network JSON:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Empty network has SUID 9424\n" ] } ], "source": [ "# Start from a clean slate: remove all networks from current session\n", "requests.delete(BASE + 'networks')\n", "\n", "# Manually generates JSON as dictionary\n", "\n", "empty_network = {\n", " 'data': {\n", " 'name': 'I\\'m empty!'\n", " },\n", " 'elements': {\n", " 'nodes':[],\n", " 'edges':[]\n", " }\n", "}\n", "\n", "res = requests.post(BASE + 'networks?collection=My%20Collection', data=json.dumps(empty_network), headers=HEADERS) \n", "net_suid = res.json()['networkSUID']\n", "print('Empty network has SUID ' + str(net_suid))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since it's a simple Python dictionary, it is easy to add data to the network. Let's add some nodes and edges:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import copy\n", "\n", "# Create a copy of the empty network object\n", "small_network = copy.deepcopy(empty_network)\n", "\n", "# Sequence of letters (a-z)\n", "seq_letters = list(map(chr, range(ord('a'), ord('z')+1)))\n", "\n", "# Build nodes and edges (in functional way)\n", "build_node = lambda x: {'data': { 'id': x }}\n", "abc_nodes = list(map(build_node, seq_letters))\n", "\n", "build_edge = lambda x: {'data': { 'source': x, 'target': 'a' }}\n", "rand_edges = list(map(build_edge, seq_letters))\n", "\n", "small_network['elements']['nodes'] = abc_nodes\n", "small_network['elements']['edges'] = rand_edges\n", "small_network['data']['name'] = 'A is the hub.'\n", "\n", "# Uncomment this if you want to see the actual JSON object\n", "#print(json.dumps(small_network, indent=4))\n", "\n", "res = requests.post(BASE + 'networks?collection=My%20Collection', data=json.dumps(small_network), headers=HEADERS)\n", "res_dict = res.json()\n", "new_suid = res_dict['networkSUID']\n", "\n", "# Apply layout\n", "requests.get(BASE + 'apply/layouts/force-directed/' + str(new_suid))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It's simple, isn't it?\n", "\n", "### Embed images in IPython Notebook\n", "cyRest has function to generate PNG image directly from current network view. Let's try to see the result in this notebook." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import Image\n", "Image(url=BASE+'networks/' + str(new_suid) + '/views/first.png', embed=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 3.3.2 Prepare Network as edgelist\n", "Edgelist is a minimalistic data format for networks and it is widely used in popular libraries including NetworkX and igraph. Preparing edgelist in Python is straightforward. You just need to prepare a list of edges as string like:\n", "\n", "```\n", "a b\n", "b c\n", "a c\n", "```\n", "\n", "In Python, there are many ways to generate string like this. Here is a naive approach:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "numbers = range(1,101)\n", "el_builder = lambda x: str(x) + '\\t' + str(1) if x is 100 else str(x) + '\\t' + str(x+1) + '\\n'\n", "\n", "el = list(map(el_builder, numbers))\n", "\n", "edgelist = ''.join(el)\n", "\n", "res = requests.post(BASE + 'networks?format=edgelist&collection=Ring', data=edgelist, headers=HEADERS)\n", "\n", "res_dict = res.json()\n", "circle_suid = res_dict['networkSUID']\n", "requests.get(BASE + 'apply/layouts/circular/' + str(circle_suid))\n", "\n", "\n", "Image(url=BASE+'networks/' + str(circle_suid) + '/views/first.png', embed=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# New in 1.x: PDF and SVG support\n", "In addition to bitmap images, you can generate vector graphics including SVG and PDF!" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false, "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "http://localhost:1234/v1/networks/9568/views/first.svg\n" ] }, { "data": { "image/svg+xml": [ "\n", "\n", "Creator: FreeHEP Graphics2D Driver Producer: org.freehep.graphicsio.svg.SVGGraphics2D Revision Source: Date: 2015å¹´6月26æ—¥ 13時09分54秒 PDT\n", "\n", "\n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "59\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "60\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "66\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "64\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "61\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "65\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "63\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "58\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "62\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "67\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "71\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "69\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "68\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "70\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "57\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "56\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "55\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "54\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "72\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "73\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "74\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "75\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "76\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "77\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "78\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "79\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "40\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "43\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "44\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "45\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "39\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "42\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "38\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "41\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "37\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "36\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "35\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "34\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "33\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "32\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "99\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "98\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "97\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "96\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "95\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "93\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "92\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "100\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "94\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "85\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "86\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "87\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "88\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "90\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "91\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "89\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "84\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "24\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "27\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "28\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "29\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "30\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "31\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "26\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "25\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "46\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "47\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "48\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "49\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "50\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "51\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "52\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "53\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "83\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "82\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "81\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "80\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "13\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "17\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "22\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "23\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "3\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "8\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "10\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "7\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "6\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "9\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "16\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "21\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "18\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "11\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "20\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "15\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "14\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "19\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "12\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "2\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "4\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "5\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "1\n", " \n", " \n", "" ], "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.core.display import SVG\n", "svg_url = BASE+'networks/' + str(circle_suid) + '/views/first.svg'\n", "\n", "print(svg_url)\n", "SVG(url=svg_url)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "http://localhost:1234/v1/networks/9568/views/first.pdf\n" ] } ], "source": [ "# Generate PDF from the network and save it in current directory:\n", "\n", "pdf_url = BASE+'networks/' + str(circle_suid) + '/views/first.pdf'\n", "print(pdf_url)\n", "\n", "if sys.version_info.major == 3:\n", " # Python 3.4.x\n", " import urllib.request\n", " res = urllib.request.urlretrieve(pdf_url, \"network.pdf\")\n", "else:\n", " # Python 2.7.x\n", " import urllib\n", " res = urllib.urlretrieve(pdf_url, \"network.pdf\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Discussion\n", "In this section, we've learned how to generate networks programmatically from Python. But for real world problems, it is not a good idea to use low level Python objects to generate networks because there are lots of cool libraries such as NetworkX or igraph. In the next session, let's use those to analyze real network data and visualize them in Cytoscape.\n", "\n", "----\n", "[Back to Index](../index.ipynb)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.10" } }, "nbformat": 4, "nbformat_minor": 0 }