Help:WikiPathways Webservice
From WikiPathways
| Line 78: | Line 78: | ||
=== Working with GPML === | === Working with GPML === | ||
| - | The pathways on WikiPathways are stored in the GPML format. This is an XML format and can be processed in any programming language. See [http://www.pathvisio.org/EverythingGPML here] for the GPML specification. If you are developing in Java, we recommend using our [[#Java libraries]]. | + | The pathways on WikiPathways are stored in the GPML format. This is an XML format and can be processed in any programming language. See [http://www.pathvisio.org/EverythingGPML here] for the GPML specification. If you are developing in Java, we recommend using our [[#Java libraries|Java libraries]]. |
=== SOAP libraries === | === SOAP libraries === | ||
Revision as of 14:52, 18 December 2008
Web Services for WikiPathways
|
WikiPathways can be accessed programmatically through a SOAP web service. Web services provide powerful means to query, access and interact with the pathway content at WikiPathways. |
| |||||||||||||||||||
Showcase
|
Test Drive
Take the WikiPathways web service for a full-featured test drive:
- Install the free testing tool, SoapUI (web start version is also available).
- Load our WSDL file.
API Reference
See the API reference page for a list of available web service functions and data structures.
Java libraries
You can get a high-level API to the WikiPathways web service here: source compiled binary
Working with GPML
The pathways on WikiPathways are stored in the GPML format. This is an XML format and can be processed in any programming language. See here for the GPML specification. If you are developing in Java, we recommend using our Java libraries.
SOAP libraries
For most programming languages, libraries exist to make working with SOAP web service easier. Below is a short list of SOAP libraries for popular programming languages that might help you work with the WikiPathways web service.
- Java:
- Apache Axis
- See the Java example code
- Perl:
- SOAP::Lite
- See the Perl example code
- Php:
- Python:
- R
- SSOAP
- See the R example code
Example Code
Below you find some small example scripts in various languages that may help to get you started.
Java
Use the wikipathways-client and PathVisio libraries to access the WikiPathways web service from Java. Below is a short example program in Java.
package org.pathvisio.wikipathways;
import java.io.File;
import java.net.URL;
import org.pathvisio.model.DataSource;
import org.pathvisio.model.ObjectType;
import org.pathvisio.model.Pathway;
import org.pathvisio.model.PathwayElement;
import org.pathvisio.model.Xref;
import org.pathvisio.wikipathways.webservice.WSPathway;
import org.pathvisio.wikipathways.webservice.WSPathwayInfo;
import org.pathvisio.wikipathways.webservice.WSSearchResult;
public class Example {
public static void main(String[] args) {
try {
//Create a client to the WikiPathways web service
WikiPathwaysClient client = new WikiPathwaysClient(
new URL("http://www.wikipathways.org/wpi/webservice/webservice.php")
);
//Find a pathway by affymetrix probeset
Xref affy = new Xref("201746_at", DataSource.AFFY);
System.out.println("Searching for pathways with Affymetrix probeset " + affy);
WSSearchResult[] result = client.findPathwaysByXref(affy);
for(WSSearchResult r : result) {
System.out.println("Found pathway: " + r.getName() + " (" + r.getSpecies() + ")");
}
//Download a pathway from WikiPathways
WSPathway wsPathway = client.getPathway("WP274");
System.out.println("Downloaded pathway " + wsPathway.getName() +
", revision " + wsPathway.getRevision());
//Create a pathway object
Pathway pathway = WikiPathwaysClient.toPathway(wsPathway);
//Get all genes, proteins and metabolites for a pathway
for(PathwayElement pwElm : pathway.getDataObjects()) {
//Only take elements with type DATANODE (genes, proteins, metabolites)
if(pwElm.getObjectType() == ObjectType.DATANODE) {
//Print information to the screen
System.out.println(pwElm.getTextLabel());
System.out.println("\t" + pwElm.getXref());
System.out.println("\t" + pwElm.getDataNodeType());
}
}
//Save the pathway locally
pathway.writeToXml(new File(wsPathway.getName() + ".gpml"), true);
//Print info for all WikiPathways pathways
WSPathwayInfo[] pathwayList = client.listPathways();
for(WSPathwayInfo pathwayInfo : pathwayList) {
System.out.println("Pathway:");
System.out.println("\tIdentifier:\t" + pathwayInfo.getId());
System.out.println("\tName:\t" + pathwayInfo.getName());
System.out.println("\tOrganism:\t" + pathwayInfo.getSpecies());
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
Once you downloaded the libraries and compiled the Example class, you can run it with
java -classpath wikipathways-client.jar:. org.pathvisio.wikipathways.Example
Perl
This is a short example of a few ways to interact with the WikiPathways web service in Perl.
#!perl -w
use strict;
# Load module
use SOAP::Lite;
# Debugging (optional)
#SOAP::Lite->import(+trace => qw(debug));
# Create service interface with fault handler
my $wp_soap = SOAP::Lite
->proxy('http://www.wikipathways.org/wpi/webservice/webservice.php')
->uri('http://www.wikipathways.org/webservice')
->on_fault(sub {
my $soap = shift;
my $res = shift;
# Map faults to exceptions
if(ref($res) eq '') {
die($res);
} else {
die($res->faultstring);
}
return new SOAP::SOM;
} );
# listOrganisms (no args; returns array of strings)
my @orgList = $wp_soap->listOrganisms()->paramsout;
unshift(@orgList, $wp_soap->listOrganisms()->result); #add first result to list
$" = ", "; # change list separator
print "listOrganisms: @orgList\n";
# getPathwayInfo (one arg; returns hash reference)
my $pwId = SOAP::Data->name(pwId => "WP274");
my $pathwayInfo = $wp_soap->getPathwayInfo($pwId)->result;
# Access data via hash reference
print "\ngetPathwayInfo(pwId=WP274):\n";
foreach my $key (keys %{$pathwayInfo}) {
print "\t$key: $pathwayInfo->{$key}\n";
}
# findPathwaysByXref (multiple args; returns array of hash references)
my $argsXrefData = SOAP::Data->name(
id => '201746_at',
code => 'X',
pass => '',
revision => ''
);
my @foundPathwayRefList = $wp_soap->findPathwaysByXref($argsXrefData)->paramsout;
unshift(@foundPathwayRefList, $wp_soap->findPathwaysByXref($argsXrefData)->result); #add first result to list
print "\nfindPathwaysByXref(id=201746_at, code=X):\n";
foreach my $ref (@foundPathwayRefList){
foreach my $key (keys %{ $ref}){
if ($key =~ /^fields$/){ # Another hash reference to deconstruct
foreach my $fieldkey (keys %{ $ref->{$key}}){
print "\t$key.$fieldkey: $ref->{$key}->{$fieldkey}\n";
}
} else {
print "\t$key: $ref->{$key}\n";
}
}
}
R
Using the SSOAP package in R, you can retrieve pathway information from the WikiPathways web service and use it in your R scripts (e.g. for gene set enrichment or pathway statistics). Below are a few code snippets that show you how to use SSOAP with the WikiPathways web service.
## Install SSOAP from Bioconductor ##
source("http://bioconductor.org/biocLite.R")
biocLite("SSOAP")
## Load the SSOAP library ##
library(SSOAP)
## Create a SOAPServer instance for the web service ##
srv = SOAPServer("http://www.wikipathways.org/wpi/webservice/webservice.php");
## List all organisms on WikiPathways ##
reply = .SOAP(srv, "listOrganisms", action=I("listOrganisms"), handlers=NULL)
doc = xmlParse(reply$content, asText=TRUE)
organismNodes = xmlElementsByTagName(xmlRoot(doc), "organisms", TRUE)
for(node in organismNodes) {
print(xmlValue(node)) #Print the organism name to the screen
}
## Find all pathways for the 'apoptosis' keyword ##
reply = .SOAP(srv, "findPathwaysByText", query="apoptosis", species="", action=I("findPathwaysByText"), handlers=NULL)
doc = xmlParse(reply$content, asText=TRUE)
# Find the result nodes with an xpath query
resultNodes = getNodeSet(doc, "//*[local-name()='result']")
# Print the pathway name, species and url for each result
for(node in resultNodes) {
children = xmlChildren(node, addNames= TRUE)
url = xmlValue(children$url)
name = xmlValue(children$name);
species = xmlValue(children$species);
print(paste(name, " (", species, "): ", url, sep=""))
}





