|
m |
(68 intermediate revisions not shown.) |
Line 1: |
Line 1: |
| __NOEDITSECTION__ | | __NOEDITSECTION__ |
- | {|style="clear:left, right" align="right"
| + | = Web Services for WikiPathways = |
- | |__TOC__ | + | {| |
- | |} | + | | |
- | = The WikiPathways web service =
| + | WikiPathways can be accessed programmatically through a REST web service. These services provide powerful means to query, access and interact with the pathway content at WikiPathways. |
- | WikiPathways can be accessed through a [[wikipedia:SOAP|SOAP]] web service. This page provides documentation and examples of what you can do with the web service. | + | |rowspan="2" valign="top"|__TOC__ |
- | | + | |
- | == Showcase ==
| + | |
- | | + | |
- | {|style="width:75%;" border="0" valign="top" cellspacing="5" cellpadding="1"
| + | |
- | |align="center"|<big>'''Search'''</big>{{#imgLink:WikiPathwaysSearch2.png|200|center||Help|{{FULLPAGENAME}}/WikiPathwaysSearch|Search}}
| + | |
- | ''Use the web service to search for pathways''
| + | |
- | |align="center"|<big>'''Integrate'''</big>{{#imgLink:AtlasMapper2.png|200|center||Help|{{FULLPAGENAME}}/AtlasMapper|Integrate}}
| + | |
- | ''Integrate pathway information with gene expression data''
| + | |
| |- | | |- |
- | |align="center"|<big>'''Query interactions'''</big>{{#imgLink:Cytoscape3.png|200|center||Help|{{FULLPAGENAME}}/Cytoscape|Cytoscape}} | + | | |
- | ''Load pathways as interaction networks in Cytoscape''
| + | |
- | |align="center"|<big>'''Build workflows'''</big>{{#imgLink:Taverna2.png|200|center||Help|{{FULLPAGENAME}}/Taverna|Taverna}}
| + | |
- | ''Use pathway information in your Taverna workflows''
| + | |
- | |}
| + | |
| | | |
- | == Getting Started == | + | == API Reference == |
- | The web service is described in a WSDL file that is located at:
| + | See the [https://webservice.wikipathways.org Swagger] page for a list of available web service functions and data structures. |
| | | |
- | [http://www.wikipathways.org/wpi/webservice/webservice.php?wsdl http://www.wikipathways.org/wpi/webservice/webservice.php?wsdl]
| + | === Java libraries === |
| | | |
- | You can try out the WikiPathways web service quickly, by loading this WSDL file in [http://www.soapui.org/ SoapUI], a tool for testing web services. | + | You can get a high-level API to the WikiPathways web service here: [http://developers.pathvisio.org/browser/trunk/modules/org.wikipathways.client source] [http://developers.pathvisio.org/data/releases compiled binaries] (choose the most recent wikipathways_client_bin-*). |
- | | + | |
- | == API Reference ==
| + | |
- | See the [[{{FULLPAGENAME}}/API|API reference]] page for a list of available web service functions and data structures.
| + | |
- | | + | |
- | === Java libraries for WikiPathways ===
| + | |
- | * [http://svn.bigcat.unimaas.nl/pathvisio/trunk/tools/wikipathways-client wikipathways-client]: A high-level API to the WikiPathways web service.
| + | |
- | * [http://svn.bigcat.unimaas.nl/pathvisio/trunk/ PathVisio libraries]: Libraries to process GPML and use the synonym databases.
| + | |
| | | |
| === 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 the [[#Java libraries for WikiPathways|PathVisio library]]. | + | 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://developers.pathvisio.org/wiki/EverythingGpml here] for the GPML specification. If you are developing in Java, we recommend using our [[#Java libraries|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:
| + | |
- | ** [http://ws.apache.org/axis/java/index.html Apache Axis]
| + | |
- | ** See the [[#java|Java section]] for information on writing Java tools for the web service
| + | |
- | * Perl:
| + | |
- | ** [http://www.soaplite.com/ SOAP::Lite]
| + | |
- | * Php:
| + | |
- | ** [http://nl.php.net/soap SOAP] (official php soap library)
| + | |
- | ** [http://phpsoaptoolkit.sourceforge.net/phpsoap/ PHP-SOAP]
| + | |
- | * Python:
| + | |
- | ** [http://pywebsvcs.sourceforge.net/ SOAPpy]
| + | |
- | ** [http://trac.optio.webfactional.com/ soaplib]
| + | |
- | * R
| + | |
- | ** [http://www.omegahat.org/SSOAP/ SSOAP]
| + | |
- | | + | |
- | == Examples ==
| + | |
- | Below you find some small example scripts in various languages that may help to get you started.
| + | |
- | === Java ===
| + | |
- | Use the [[#Java libraries for WikiPathways|wikipathways-client and PathVisio libraries]] to access the WikiPathways web service from Java. Below is a short example program in Java.
| + | |
- | | + | |
- | <pre>
| + | |
- | 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();
| + | |
- | }
| + | |
- | }
| + | |
- | }
| + | |
- | </pre>
| + | |
- | | + | |
- | === R ===
| + | |
- | Using the [http://www.omegahat.org/SSOAP/ SSOAP] package in [http://www.r-project.org 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.
| + | |
- | | + | |
- | <pre><nowiki>
| + | |
- | ## Install SSOAP from Bioconductor ##
| + | |
- | source("http://bioconductor.org/biocLite.R")
| + | |
- | biocLite("SSOAP")
| + | |
| | | |
- | ## Load the SSOAP library ##
| + | === Libraries === |
- | library(SSOAP)
| + | Below is a short list of libraries for popular programming languages that might help you work with the WikiPathways web service. |
| | | |
- | ## Create a SOAPServer instance for the web service ##
| + | * R: The rWikiPathways package with vignettes at [https://bioconductor.org/packages/release/bioc/html/rWikiPathways.html bioconductor]. |
- | srv = SOAPServer("http://www.wikipathways.org/wpi/webservice/webservice.php");
| + | * Java: Java API client with code examples at [https://github.com/wikipathways/wikipathways-api-client-java github]. |
| + | * Perl: Perl API client with code examples at [https://github.com/wikipathways/wikipathways-api-client-perl github]. |
| + | * Php: Example scripts at [https://github.com/wikipathways/scripts/ github]. |
| + | * Python: Python API client with code examples at [https://github.com/wikipathways/wikipathways-api-client-py github]. |
| | | |
- | ## List all organisms on WikiPathways ##
| + | == Other Examples == |
- | 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) {
| + | === Groovy === |
- | print(xmlValue(node)) #Print the organism name to the screen
| + | |
- | }
| + | |
| | | |
- | ## Find all pathways for the 'apoptosis' keyword ##
| + | [http://www.helixsoft.nl/blog/?p=153 This blog post] contains an example of how to use the WikiPathways webservice in Groovy. |
- | 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
| + | == How to cite == |
- | resultNodes = getNodeSet(doc, "//*[local-name()='result']")
| + | Kelder T, Pico AR, Hanspers K, van Iersel MP, Evelo C, Conklin BR. (2009) '''Mining Biological Pathways Using WikiPathways Web Services.''' PLoS ONE 4(7): [http://www.plosone.org/article/info:doi/10.1371/journal.pone.0006447 doi:10.1371/journal.pone.0006447] |
- | # 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=""))
| + | |
- | }
| + | |
- | </nowiki></pre>
| + | |
| | | |
| ----- | | ----- |
| <p>[[:Help:Contents|Return to Help Contents]]</p> | | <p>[[:Help:Contents|Return to Help Contents]]</p> |
- | <p>[[:Help:Frequently_Asked_Questions|Continue to FAQ]]</p>
| |