Protein Identifier Cross-Reference

Webservice

The WSDL file for the webservice is available at http://www.ebi.ac.uk/Tools/picr/service?wsdl .

Java Example

PICR is available to query via web service. It is built using JAX-WS 2.1 and all examples below assume that you have JAX-WS 2.1 installed. It can be downloaded from https://jax-ws.dev.java.net/2.1.7/. The WSDL complies to the latest specifications so there should be no problem using any implementation to connect to the service. To generate client classes for Java using JAX-WS, use the following ant script:

    <project name="PICR client" default="client" basedir=".">

        <path id="jaxws.classpath">
            <pathelement location="${java.home}/../lib/tools.jar"/>
            <fileset dir="${javaws.home.lib}">
                <include name="*.jar"/>
                <exclude name="j2ee.jar"/>
            </fileset>
        </path>

        <taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport">
            <classpath refid="jaxws.classpath"/>
        </taskdef>

        <target name="client">
            <wsimport
                    debug="true"
                    verbose="true"
                    keep="true"
                    extension="false"
                    destdir="${build}"
                    sourcedestdir="${src}"
                    package="uk.ac.ebi.picr"
                    wsdl="http://www.ebi.ac.uk/Tools/picr/service?wsdl">
            </wsimport>
        </target>

    </project>

This assumes that the variables ${java.home}, ${javaws.home.lib}, ${build} and ${src} are properly set or replaced with something appropriate for your build environment. The build process should produce the folowing output:

    [wsimport] generating code...
    [wsimport]
    [wsimport] uk/ac/ebi/picr/AccessionMapperInterface.java
    [wsimport] uk/ac/ebi/picr/AccessionMapperService.java
    [wsimport] uk/ac/ebi/picr/BlastParameter.java
    [wsimport] uk/ac/ebi/picr/CrossReference.java
    [wsimport] uk/ac/ebi/picr/GetMappedDatabaseNames.java
    [wsimport] uk/ac/ebi/picr/GetMappedDatabaseNamesResponse.java
    [wsimport] uk/ac/ebi/picr/GetUPIForAccession.java
    [wsimport] uk/ac/ebi/picr/GetUPIForAccessionResponse.java
    [wsimport] uk/ac/ebi/picr/GetUPIForBlastSequence.java
    [wsimport] uk/ac/ebi/picr/GetUPIForBlastSequenceResponse.java
    [wsimport] uk/ac/ebi/picr/GetUPIForSequence.java
    [wsimport] uk/ac/ebi/picr/GetUPIForSequenceResponse.java
    [wsimport] uk/ac/ebi/picr/ObjectFactory.java
    [wsimport] uk/ac/ebi/picr/UPEntry.java
    [wsimport] uk/ac/ebi/picr/package-info.java
    [wsimport]
    [wsimport] compiling code...

The source files will have been created in the location specified by the ${src} variable. Compiled class files will have been created in the location specified by ${build}. The source files are now ready to be used in your projects. A short code example follows:

import uk.ac.ebi.picr.*;

[...]

AccessionMapperService service = new AccessionMapperService();
AccessionMapperInterface port;
port = service.getAccessionMapperPort();

//the accession you wish to map
String queryID = "P29375";

//the version of the accession
//can be null or a number
String queryIdVersion = null;

//a list of all databases to map to
List<String> searchDB = new ArrayList<String>();
searchDB.add("SWISSPROT");
searchDB.add("TREMBL");

//the NEWT taxonomy ID to limit the mappings to
//can be null or a number. Do not specify 0 for null.
String taxonID = "9606";     //H. Sapiens

//true to return only active mappings
//false to return all mappings, including inactive ones
boolean activeOnly = true;

List<UPEntry> uPEntries = port.getUPIForAccession(queryID, queryIdVersion, searchDB, taxonID, activeOnly);

//there might be multiple UPEntries as the submitted accession
//might be associated with more than one sequence
for (UPEntry uPEntry : uPEntries) {

    //the identical cross-references contain all mappings
    //that fit the search parameters and match with 100%
    //sequence identity to the submitted accession
    if (uPEntry.getIdenticalCrossReferences() != null) {
         for (CrossReference iRef : uPEntry.getIdenticalCrossReferences()) {
             String matchAcc = iRef.getAccession();
             String matchDB = iRef.getDatabaseName();
             Integer taxID = Integer.parseInt(iRef.getTaxonId());
             // do something with them ...
         }
     }

    //the logical cross-references contain all mappings
    //that fit the search parameters and come from the UniprotKB
    //They are not guaranteed to have 100% sequence identity
    if (uPEntry.getLogicalCrossReferences() != null) {
         for (CrossReference iRef : uPEntry.getLogicalCrossReferences()) {
             String matchAcc = iRef.getAccession();
             String matchDB = iRef.getDatabaseName();
             Integer taxID = Integer.parseInt(iRef.getTaxonId());
             // do something with them ...
         }
     }
}

It is possible to obtain a list of all databases covered by PICR using the getMappedDatabaseNames method of the web service. The list currently includes:

EG_BACTERIA
EG_FUNGI
EG_METAZOA
EG_PLANTS
EG_PROTISTS
EMBL
EMBLWGS
EMBL_CON
EMBL_TPA
EMBL_TPX
ENSEMBL_ARMADILLO
ENSEMBL_BUSHBABY
ENSEMBL_CAT
ENSEMBL_CBRIGGSAE
ENSEMBL_CELEGANS
ENSEMBL_CHICKEN
ENSEMBL_CHIMP
ENSEMBL_CIONA
ENSEMBL_CIONA_SAVIGNYI
ENSEMBL_COMMON_SHREW
ENSEMBL_COW
ENSEMBL_DOG
ENSEMBL_D_ORDII
ENSEMBL_ELEPHANT
ENSEMBL_ERINACEUS
ENSEMBL_FLY
ENSEMBL_FUGU
ENSEMBL_GUINEA_PIG
ENSEMBL_G_PANDA
ENSEMBL_HEDGEHOG
ENSEMBL_HONEYBEE
ENSEMBL_HUMAN
ENSEMBL_MACROPUS
ENSEMBL_MARMOSET
ENSEMBL_MEDAKA
ENSEMBL_MICROBAT
ENSEMBL_MOSQUITO
ENSEMBL_MOUSE
ENSEMBL_MOUSE_LEMUR
ENSEMBL_OPOSSUM
ENSEMBL_PIG
ENSEMBL_PIKA
ENSEMBL_PLATYPUS
ENSEMBL_P_CAPENSIS
ENSEMBL_P_VAMPYRUS
ENSEMBL_RABBIT
ENSEMBL_RAT
ENSEMBL_RHESUS_MACAQUE
ENSEMBL_SQUIRREL
ENSEMBL_STICKLEBACK
ENSEMBL_S_CEREVISIAE
ENSEMBL_TETRAODON
ENSEMBL_TREE_SHREW
ENSEMBL_TURKEY
ENSEMBL_T_SYRICHTA
ENSEMBL_T_TRUNCATUS
ENSEMBL_V_PACOS
ENSEMBL_XENOPUS
ENSEMBL_YF_MOSQUITO
ENSEMBL_ZEBRAFISH
EPO
FLYBASE
H_INV
IPI
JPO
KIPO
PDB
PIR
PIRARC
PRF
REFSEQ
REFSEQ_HUMAN
REFSEQ_MOUSE
REFSEQ_RAT
REFSEQ_ZEBRAFISH
SEGUID
SGD
SWISSPROT
SWISSPROT_ID
SWISSPROT_VARSPLIC
TAIR_ARABIDOPSIS
TREMBL
TREMBL_VARSPLIC
TROME_CE
TROME_DM
TROME_HS
TROME_MM
UNIMES
USPTO
VEGA_DOG
VEGA_HUMAN
VEGA_MOUSE
VEGA_ZEBRAFISH
WORMBASE

Java code examples are available to download here: http://www.ebi.ac.uk/Tools/picr/client/picr_demo.zip

Perl Example

A sample Perl client example script is available to download here: http://www.ebi.ac.uk/Tools/picr/client/picrclient.pl


    #use SOAP::Lite +trace => qw (debug);
    use SOAP::Lite;
    use Data::Dumper;
    use Carp;

    # connect to webservice #
    my $service =
    SOAP::Lite->service('http://www.ebi.ac.uk/Tools/picr/service?wsdl')
    ->proxy('http://www.ebi.ac.uk/Tools/picr/service')
    ->uri('http://www.ebi.ac.uk/picr/AccessionMappingService');

    # get all database names
    my @dbs = getMappedDatabaseNames($service);

Looking at the script, you will notice that all of the web service methods have been wrapped so that the proper encoding can be set for the SOAP call

C# Example

A sample C# solution script is available to download here: http://www.ebi.ac.uk/Tools/picr/client/picrclient_cs.zip

It can be executed either in Microsoft Visual Studio or usign Mono. To connect to the PICR web service using C#, you simply need to add a WebReference pointing to the WSDL file, Once that is done, you will then be able to simply call the methods from your service object


    //get all database names from service
    www.ebi.ac.uk.AccessionMapperService service = new www.ebi.ac.uk.AccessionMapperService();
    String[] databases = service.getMappedDatabaseNames();
    for (int i = 0; i < databases.Length; i++){
    Console.Out.WriteLine(databases[i]);
    }

WSDL file: http://www.ebi.ac.uk/Tools/picr/service?wsdl

Overview:

Services
AccessionMapperService
Bindings
AccessionMapperBinding
Port types
AccessionMapperInterface
Messages
getUPIForAccessionRequest, getUPIForAccessionResponse, getUPIForSequenceRequest, getUPIForSequenceResponse, getUPIForBlastSequence, getUPIForBlastSequenceResponse, getMappedDatabaseNamesRequest, getMappedDatabaseNamesResponse,

Services
Name Documentation
AccessionMapperService
N/A


Service : AccessionMapperService
Port Name Binding Address Extensibility Documentation
AccessionMapperPort AccessionMapperBinding <wsdlsoap:address location="http://www.ebi.ac.uk:80/Tools/picr/service"/>
N/A


Binding : AccessionMapperBinding
Port Type AccessionMapperInterface
Extensibility <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
Operations getUPIForSequence, getUPIForAccession, getMappedDatabaseNames,