Skip to content
This repository has been archived by the owner on Nov 17, 2017. It is now read-only.

Introduction

Keiichiro Ono edited this page Jun 18, 2015 · 6 revisions

Background

Cytoscape is a de-facto standard platform for biological network analysis and visualization, and its core is domain-independent. Users can use Cytoscape as a general network visualization platform for all problem domains. It is a Java desktop application designed for non-programmers who want to use it from intuitive GUI.

Motivation: Why cyREST?

If you are an advanced Cytoscape user, eventually you come across problems like the following:

  • I want to load 100+ networks from multiple data sources and visualize them with dynamically generated Visual Styles in Cytoscape. How can I do that?
  • I have my custom network module finder written in Python. I want to send the results directly to Cytoscape from my IPython Notebook session.
  • I usually analyze my data with igraph in R. Is it possible to visualize my results in Cytoscape directly from my igraph objects?
  • Cytoscape Session File is great way to keep my analysis and visualization results, but I want to keep reproducible workflows to apply the same protocol to other data sets.

If you have similar problems, this is the tool for you. This cyREST module is designed to use Cytoscape programmatically from other standard tools, such as IPython/Jupyter Notebook, RStudio, or MATLAB, to keep your workflows as executable scripts. Also, you do not have to learn new languages or DSLs to use this feature. It is just a collection of simple RESTful API and is language-independent. You can use your favorite programming languages to automate your workflow with Cytoscape.

Target Users

ipython-sample1

cyREST module provides a new way to control Cytoscape for users who regularly use data analysis platforms like RStudio or IPython Notebook. The module adds low-level access to Cytoscape public API via REST. Therefore, to use this module, you need to know at least one programming language. However, we are going to provide many code snippets (examples) to help beginners. The API itself is language-independent and you can use any languages including Perl, Lisp, or C. But in data analysis community, R and Python are two most popular languages and we will provide examples and snippets written in those two.

Design Goals

We applied modern RESTful API design principles and users perform CRUD operations on Cytoscape data objects: Network, Table, and Visual Style.

The goal of this project is providing a complete set of low-level API to access Cytoscape data objects programmatically from virtually all programming languages. Now advanced users have new way to use Cytoscape in large data analysis and visualization workflows and they do not have to click the icons hundreds of times!

Long-Term Goal: Cytoscape CI

This module will be a part of our larger future plan, called Cytoscape Cyberinfrastructure (CI). Cytoscape will be a part of larger, scalable workflows.

We Need Your Feedback!

This project is in beta status and we need your feedback to cover most of your real-world use cases. Please send us your comments about current API design. Please send your questions to our mailing list or directly to me (kono at ucsd edu).