Keiichiro Ono UC, San Diego Lab Meeting 4/21/2014 Cytoscape and
External Tools
Agenda - Background - Why external tools? - New Cytoscape
Module: RESTful API for Cytoscape - Current design -
Proof-of-concept demo - Future plan
Problems
Problems - Cytoscape is getting more and more user-friendly -
Lots of GUI-based Apps - Easy access to interaction databases - But
not hardcore-user-friendly! - There is no easy way to embed
Cytoscape as a part of larger, automated workow (using
R/Python/etc.) - We are losing hardcore users (like you) because of
this limitation
THE SMALL TOOLS MANIFESTO FOR BIOINFORMATICS - Every single
tool should do the smallest possible task really well - Every
single tool lives in its own public source code repository - All
tools are free and open source software (FOSS) and come with a
license approved by the Free Software Foundation (FSF). - Source
code should be easy to read and understand by any competent
software developer - Error conditions and exceptions should be
descriptive and handled in a clear way - When possible tools should
support (Unix) pipes - When possible tools provide a useful command
line interface - Tools should avoid system dependencies, such as
named (absolute) le paths - Every single tool comes with a simple
build protocol, at least for Linux - Software installation and
deployment dependencies are handled through external package
management system https://github.com/pjotrp/bioinformatics
Data Analysis Tool Ecosystem
Network Data Analysis Analysis Visualization
Network Data Analysis Analysis s Visualization Desktop Gephi
Cytoscape matplotlib Cytoscape.js
Network Dat Analysis Graph Analysis NetworkX igraph Cytoscape
Python Pandas NumPy SciPy Excel IPython 3rd Party Apps
NetworkAnalyzer
Network Data Analysis Analysis Graph Analysis NetworkX igraph
Cytoscape Python Pandas NumPy SciPy Excel Visualization Desktop
Gephi Cytoscape matplotlib Web Cytoscape.js sigma.js d3 NDV3
d3.chart Google Charts Data Storage Graph Neo4j GraphX Document
MongoDB Relational MySQL IPython 3rd Party Apps
NetworkAnalyzer
http://visualizing.jp/d3-unconf-2014-2/
Tools We Will Support Analysis VisualizationData
Preparation
Data Exchange
Data I/O - Should be platform-independent - Need to support
multiple environments - R, Python w/Pandas, MATLAB, Perl, Shell
Scripts, or workow engine like Kepler/Taverna - RESTful API Access
Cytoscape data and functions via HTTP, which is supported by
virtually all platforms
RESTful API - Example - GET http://localhost:9000/networks
Returns all networks in machine-readable format - GET
http://localhost:9000/networks/52 Returns a network with ID 52 -
POST http://localhost:9000/networks Create a new network from the
data
CRUD Resource POST (Create) GET (Read) PUT (Update) DELETE
(Delete) /networks Create a new network List all networks Bulk
update network data Delete all networks /networks/SUID Error Show
all information for the network with SUID Update information for
the network with SUID Delete network with SUID
Which Format Should We Support? (1) - Basic data exchange
format in RESTful world - JSON (JavaScript Object Notation) - Like
XML, not an actual format, just a standard - For the rst version,
we will use Cytoscape.js style JSON
Which Format Should We Support? (2) - Other File Formats -
Networks: GraphML, EdgeList, Adj. Matrix - Tables: CSV/TSV - Open
Question: Conversion from Standard Data Structure - igraph object
to JSON - DataFrame to JSON/CSV
Long-Term Goal: Cytoscape Cyberinfrastructure Internet Service
1 Service 2 NDEx (DB) Web Browser Cytoscape Desktop