Blasting EBI Services 1

Posted on Updated on

Although I knew there were some programtical way to access EMBL-EBI databases(http://www.ebi.ac.uk/Tools/webservices/), I had no idea how to do it because I didn’t know about UDDI, WSDL, and SOAP.
After learning the concepts of those technologies I tried some examples in this page (http://www.ebi.ac.uk/Tools/webservices/tutorials/06_programming/python/soap/soappy). The first two example code worked without any modifications. But the third one, “Complex Data Structures”, didn’t work.

The cause of this problem was that the url(http://www.ebi.ac.uk/Tools/webservices/wsdl/WSWUBlast.wsdl) used in the code was not accessible anymore. The right url was “http://www.ebi.ac.uk/Tools/services/soap/fasta?wsdl”. Furthermore, the way to access the service had changed accordingly.

After some struggles, I modified the code as follows.

# Import WSDL package
from SOAPpy import WSDL

# Create service interface
wsdlUrl = 'http://www.ebi.ac.uk/Tools/services/soap/fasta?wsdl'
server = WSDL.Proxy(wsdlUrl)

# For debug
server.soapproxy.config.dumpSOAPOut = 1
server.soapproxy.config.dumpSOAPIn = 1

# Query sequence
seq = """>Q8E5Q5_STRA3
MKLSKRYRFWQKVIKALGVLALIATLVLVVYLYKLGILNDSNELKDLVHKYEFWGPMIFI
VAQIVQIVFPVIPGGVTTVAGFLIFGPTLGFIYNYIGIIIGSVILFWLVKFYGRKFVLLF
MDQKTFDKYESKLETSGYEKFFIFCMASPISPADIMVMITGLSNMSIKRFVTIIMITKPI
SIIGYSYLWIYGGDILKNFLN"""

dbnames = {'string':'pdb'}

# Structure containing parameters
blast_params = {
  'program':'fasta',      # Protein vs. protein search
  'database':dbnames,  # Database to search
  'scores':10,
  'alignments':10,
  'stype':'protein',
  'sequence':seq
}

server.methods['run'].namespace = server.wsdl.targetNamespace
jobid = server.run(email="pachiras@localhost", title="testjob", parameters=blast_params)

The point was to specify the namespace before calling each method. Since server.wsdl.targetNamespace holds the namespace written in the wsdl file( ‘http://www.ebi.ac.uk/Tools/services/soap/fasta?wsdl’), its value is substituted into server.method[‘some_method’].namespace.

With suds library, this code is rewritten in a more simple way.

from suds.client import Client

wsdlUrl = 'http://www.ebi.ac.uk/Tools/services/soap/fasta?wsdl'
client = Client(wsdlUrl)

seq = """MKLSKRYRFWQKVIKALGVLALIATLVLVVYLYKLGILNDSNELKDLVHKYEFWGPMIFI
VAQIVQIVFPVIPGGVTTVAGFLIFGPTLGFIYNYIGIIIGSVILFWLVKFYGRKFVLLF
MDQKTFDKYESKLETSGYEKFFIFCMASPISPADIMVMITGLSNMSIKRFVTIIMITKPI
SIIGYSYLWIYGGDILKNFLN"""

dbnames = {'string':'pdb'}

# Structure containing parameters
blast_params = {
  'program':'fasta',      # Protein vs. protein search
  'database':dbnames,  # Database to search
  'scores':10,
  'alignments':10,
  'stype':'protein',
  'sequence':seq
}

jobid = client.service.run(email="pachiras@localhost", title="testjob", parameters=blast_params)

If you’d like to know what type of methods the service is providing, simply type this.

print client

 

Suds ( https://fedorahosted.org/suds/ )  version: 0.4.1 (beta)  build: R703-20101015

Service ( JDispatcherService ) tns="http://soap.jdispatcher.ebi.ac.uk"
   Prefixes (1)
      ns0 = "http://soap.jdispatcher.ebi.ac.uk"
   Ports (1):
      (JDispatcherServiceHttpPort)
         Methods (6):
            getParameterDetails(xs:string parameterId, )
            getParameters()
            getResult(xs:string jobId, xs:string type, wsRawOutputParameters parameters, )
            getResultTypes(xs:string jobId, )
            getStatus(xs:string jobId, )
            run(xs:string email, xs:string title, InputParameters parameters, )
         Types (12):
            ArrayOfString
            InputParameters
            wsParameterDetails
            wsParameterValue
            wsParameterValues
            wsParameters
            wsProperties
            wsProperty
            wsRawOutputParameter
            wsRawOutputParameters
            wsResultType
            wsResultTypes

In those method getResultTypes() will give you the information about the format in which your result will be returned. So type this.

print client.service.getResultTypes(jobid)

 

(wsResultTypes){
   type[] =
      (wsResultType){
         description = "The output from the tool itself"
         fileSuffix = "txt"
         identifier = "out"
         label = "Tool Output"
         mediaType = "text/plain"
      },
      (wsResultType){
         description = "The M9 output from the tool itself"
         fileSuffix = "txt"
         identifier = "m9"
         label = "Tool M9 Output"
         mediaType = "text/plain"
      },
      (wsResultType){
         description = "Your input sequence as seen by the tool"
         fileSuffix = "txt"
         identifier = "sequence"
         label = "Input Sequence"
         mediaType = "text/plain"
      },
      (wsResultType){
         description = "The list of the alignment identifiers in the order they appear in the results"
         fileSuffix = "txt"
         identifier = "ids"
         label = "Alignment Identifiers"
         mediaType = "text/plain"
      },
      (wsResultType){
         description = "The results of the job in XML (EBI format)"
         fileSuffix = "xml"
         identifier = "xml"
         label = "XML Result"
         mediaType = "application/xml"
      },
      (wsResultType){
         description = "A visual representation of the results in SVG format"
         fileSuffix = "svg"
         identifier = "visual-svg"
         label = "Visual Result (SVG)"
         mediaType = "image/svg+xml"
      },
      (wsResultType){
         description = "A visual representation of the results in PNG format"
         fileSuffix = "png"
         identifier = "visual-png"
         label = "Visual Result (PNG)"
         mediaType = "image/png"
      },
      (wsResultType){
         description = "A visual representation of the results in JPEG format"
         fileSuffix = "jpg"
         identifier = "visual-jpg"
         label = "Visual Result (JPEG)"
         mediaType = "image/jpeg"
      },
 }

It takes some time until you get the result. So you have to wail and poll as in http://www.ebi.ac.uk/Tools/webservices/tutorials/06_programming/python/soap/soappy

import base64

status = 'PENDING'
while status == 'RUNNING' or status == 'PENDING':
    status = client.service.getStatus(jobid)
    print status
    if status == 'RUNNING' or status == 'PENDING':
        time.sleep(15)

result = client.service.getResult(jobid, "xml")
dec = base64.b64decode( result )

print dec
FINISHED
<?xml version='1.0' encoding='ISO-8859-1'?>
<EBIApplicationResult xmlns="http://www.ebi.ac.uk/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.ebi.ac.uk/Tools/common/schema/ApplicationResult.xsd">
 <Header>
  <program name="FASTA" version="36.3.5e Nov, 2012(preload8)"/>
  <commandLine command="cat fasta-S20130413-060528-0619-72925383-pg.sequence | /nfs/public/ro/es/appbin/linux-x86_64/fasta-36.3.5e-20121123/fasta36 -l $IDATA_CURRENT/fastacfg/fasta3db -L -T 8  -p -b 10 -d 10 -m &quot;F9 fasta-S20130413-060528-0619-72925383-pg.m9&quot; \@:1- +pdb+"/>
  <parameters>
   <sequences total="1">
    <sequence number="1" name="EMBOSS_001" type="PROTEIN" length="201"/>
   </sequences>
   <databases total="1" sequences="-1" letters="-1">
    <database number="1" name="pdb" type="NUCLEOTIDE"/>
   </databases>
   <alignments>10</alignments>
   <scores>10</scores>
  </parameters>
  <timeInfo start="2013-04-13T06:05:28+01:00" end="2013-04-13T06:05:32+01:00" search="P0Y0M0DT0H0M4.000S"/>
 </Header>
 <SequenceSimilaritySearchResult>
  <hits total="10">
   <hit number="1" database="PDB" id="4HYC_F" length="301" description="mol:protein length:301  Putative uncharacterized protein">
    <alignments total="1">
     <alignment number="1">
      <score>92</score>
      <smithWatermanScore>92</smithWatermanScore>
      <initn>43</initn>
      <init1>43</init1>
      <opt>92</opt>
      <zScore>128.8</zScore>
      <bits>31.3</bits>
      <expectation>5.0</expectation>
      <identity>27.0</identity>
      <positives>66.2</positives>
      <overlap>74</overlap>
      <strand>none/plus</strand>
      <querySeq start="56" end="126">LVLVVYLYKLGILNDSNELKDLVHKYEFWGPMIFIVAQIVQIVFPVIPGGVTTVAGFLIF-GPT-LGFIYNYIGIIIG-SVILFWLVKFYGRKFVLLFMDQKTFDKYESKLETSGYEKFFIFCMASPISPADIMVMITGLSNMSIKRFVTIIMITKPISIIGYSYLWIYGGDILKNFLN </querySeq>
      <pattern>                              :.... .::. ::. :.:     .::.. : .:. ..    .::.... ...:. :..  ::.:.  :.    :                                                                            </pattern>
      <matchSeq start="13" end="82">                  MQIRDWLPLLGMPLMLLFVQIIAIVL-VMP---MQAAGLVAFENPSSVANPLIFIGMLLAFTLVLLVLLRTGGRRFIAAFIGFALFMTFLYIFGALSLLALGPTTAAAAGTLIGAVAVTALLYLYPEWYVIDILGVLISAGVASIFGISLEPLPVLVLLVLL</matchSeq>
     </alignment>
    </alignments>
   </hit>
   <hit number="2" database="PDB" id="4HYC_E" length="301" description="mol:protein length:301  Putative uncharacterized protein">
    <alignments total="1">
     <alignment number="1">
      <score>92</score>
      <smithWatermanScore>92</smithWatermanScore>
      <initn>43</initn>
      <init1>43</init1>
      <opt>92</opt>
      <zScore>128.8</zScore>
      <bits>31.3</bits>
      <expectation>5.0</expectation>
      <identity>27.0</identity>
      <positives>66.2</positives>
      <overlap>74</overlap>
      <strand>none/plus</strand>
      <querySeq start="56" end="126">LVLVVYLYKLGILNDSNELKDLVHKYEFWGPMIFIVAQIVQIVFPVIPGGVTTVAGFLIF-GPT-LGFIYNYIGIIIG-SVILFWLVKFYGRKFVLLFMDQKTFDKYESKLETSGYEKFFIFCMASPISPADIMVMITGLSNMSIKRFVTIIMITKPISIIGYSYLWIYGGDILKNFLN </querySeq>
      <pattern>                              :.... .::. ::. :.:     .::.. : .:. ..    .::.... ...:. :..  ::.:.  :.    :                                                                            </pattern>
      <matchSeq start="13" end="82">                  MQIRDWLPLLGMPLMLLFVQIIAIVL-VMP---MQAAGLVAFENPSSVANPLIFIGMLLAFTLVLLVLLRTGGRRFIAAFIGFALFMTFLYIFGALSLLALGPTTAAAAGTLIGAVAVTALLYLYPEWYVIDILGVLISAGVASIFGISLEPLPVLVLLVLL</matchSeq>
     </alignment>
    </alignments>
   </hit>
   <hit number="3" database="PDB" id="4HYD_B" length="301" description="mol:protein length:301  Putative uncharacterized protein">
    <alignments total="1">
     <alignment number="1">
      <score>92</score>
      <smithWatermanScore>92</smithWatermanScore>
      <initn>43</initn>
      <init1>43</init1>
      <opt>92</opt>
      <zScore>128.8</zScore>
      <bits>31.3</bits>
      <expectation>5.0</expectation>
      <identity>27.0</identity>
      <positives>66.2</positives>
      <overlap>74</overlap>
      <strand>none/plus</strand>
      <querySeq start="56" end="126">LVLVVYLYKLGILNDSNELKDLVHKYEFWGPMIFIVAQIVQIVFPVIPGGVTTVAGFLIF-GPT-LGFIYNYIGIIIG-SVILFWLVKFYGRKFVLLFMDQKTFDKYESKLETSGYEKFFIFCMASPISPADIMVMITGLSNMSIKRFVTIIMITKPISIIGYSYLWIYGGDILKNFLN </querySeq>
      <pattern>                              :.... .::. ::. :.:     .::.. : .:. ..    .::.... ...:. :..  ::.:.  :.    :                                                                            </pattern>
      <matchSeq start="13" end="82">                  MQIRDWLPLLGMPLMLLFVQIIAIVL-VMP---MQAAGLVAFENPSSVANPLIFIGMLLAFTLVLLVLLRTGGRRFIAAFIGFALFMTFLYIFGALSLLALGPTTAAAAGTLIGAVAVTALLYLYPEWYVIDILGVLISAGVASIFGISLEPLPVLVLLVLL</matchSeq>
     </alignment>
    </alignments>
   </hit>
   <hit number="4" database="PDB" id="4HYG_C" length="301" description="mol:protein length:301  Putative uncharacterized protein">
    <alignments total="1">
     <alignment number="1">
      <score>92</score>
      <smithWatermanScore>92</smithWatermanScore>
      <initn>43</initn>
      <init1>43</init1>
      <opt>92</opt>
      <zScore>128.8</zScore>
      <bits>31.3</bits>
      <expectation>5.0</expectation>
      <identity>27.0</identity>
      <positives>66.2</positives>
      <overlap>74</overlap>
      <strand>none/plus</strand>
      <querySeq start="56" end="126">LVLVVYLYKLGILNDSNELKDLVHKYEFWGPMIFIVAQIVQIVFPVIPGGVTTVAGFLIF-GPT-LGFIYNYIGIIIG-SVILFWLVKFYGRKFVLLFMDQKTFDKYESKLETSGYEKFFIFCMASPISPADIMVMITGLSNMSIKRFVTIIMITKPISIIGYSYLWIYGGDILKNFLN </querySeq>
      <pattern>                              :.... .::. ::. :.:     .::.. : .:. ..    .::.... ...:. :..  ::.:.  :.    :                                                                            </pattern>
      <matchSeq start="13" end="82">                  MQIRDWLPLLGMPLMLLFVQIIAIVL-VMP---MQAAGLVAFENPSSVANPLIFIGMLLAFTLVLLVLLRTGGRRFIAAFIGFALFMTFLYIFGALSLLALGPTTAAAAGTLIGAVAVTALLYLYPEWYVIDILGVLISAGVASIFGISLEPLPVLVLLVLL</matchSeq>
     </alignment>
    </alignments>
   </hit>
   <hit number="5" database="PDB" id="4HYD_D" length="301" description="mol:protein length:301  Putative uncharacterized protein">
    <alignments total="1">
     <alignment number="1">
      <score>92</score>
      <smithWatermanScore>92</smithWatermanScore>
      <initn>43</initn>
      <init1>43</init1>
      <opt>92</opt>
      <zScore>128.8</zScore>
      <bits>31.3</bits>
      <expectation>5.0</expectation>
      <identity>27.0</identity>
      <positives>66.2</positives>
      <overlap>74</overlap>
      <strand>none/plus</strand>
      <querySeq start="56" end="126">LVLVVYLYKLGILNDSNELKDLVHKYEFWGPMIFIVAQIVQIVFPVIPGGVTTVAGFLIF-GPT-LGFIYNYIGIIIG-SVILFWLVKFYGRKFVLLFMDQKTFDKYESKLETSGYEKFFIFCMASPISPADIMVMITGLSNMSIKRFVTIIMITKPISIIGYSYLWIYGGDILKNFLN </querySeq>
      <pattern>                              :.... .::. ::. :.:     .::.. : .:. ..    .::.... ...:. :..  ::.:.  :.    :                                                                            </pattern>
      <matchSeq start="13" end="82">                  MQIRDWLPLLGMPLMLLFVQIIAIVL-VMP---MQAAGLVAFENPSSVANPLIFIGMLLAFTLVLLVLLRTGGRRFIAAFIGFALFMTFLYIFGALSLLALGPTTAAAAGTLIGAVAVTALLYLYPEWYVIDILGVLISAGVASIFGISLEPLPVLVLLVLL</matchSeq>
     </alignment>
    </alignments>
   </hit>
   <hit number="6" database="PDB" id="4HYD_C" length="301" description="mol:protein length:301  Putative uncharacterized protein">
    <alignments total="1">
     <alignment number="1">
      <score>92</score>
      <smithWatermanScore>92</smithWatermanScore>
      <initn>43</initn>
      <init1>43</init1>
      <opt>92</opt>
      <zScore>128.8</zScore>
      <bits>31.3</bits>
      <expectation>5.0</expectation>
      <identity>27.0</identity>
      <positives>66.2</positives>
      <overlap>74</overlap>
      <strand>none/plus</strand>
      <querySeq start="56" end="126">LVLVVYLYKLGILNDSNELKDLVHKYEFWGPMIFIVAQIVQIVFPVIPGGVTTVAGFLIF-GPT-LGFIYNYIGIIIG-SVILFWLVKFYGRKFVLLFMDQKTFDKYESKLETSGYEKFFIFCMASPISPADIMVMITGLSNMSIKRFVTIIMITKPISIIGYSYLWIYGGDILKNFLN </querySeq>
      <pattern>                              :.... .::. ::. :.:     .::.. : .:. ..    .::.... ...:. :..  ::.:.  :.    :                                                                            </pattern>
      <matchSeq start="13" end="82">                  MQIRDWLPLLGMPLMLLFVQIIAIVL-VMP---MQAAGLVAFENPSSVANPLIFIGMLLAFTLVLLVLLRTGGRRFIAAFIGFALFMTFLYIFGALSLLALGPTTAAAAGTLIGAVAVTALLYLYPEWYVIDILGVLISAGVASIFGISLEPLPVLVLLVLL</matchSeq>
     </alignment>
    </alignments>
   </hit>
   <hit number="7" database="PDB" id="4HYC_G" length="301" description="mol:protein length:301  Putative uncharacterized protein">
    <alignments total="1">
     <alignment number="1">
      <score>92</score>
      <smithWatermanScore>92</smithWatermanScore>
      <initn>43</initn>
      <init1>43</init1>
      <opt>92</opt>
      <zScore>128.8</zScore>
      <bits>31.3</bits>
      <expectation>5.0</expectation>
      <identity>27.0</identity>
      <positives>66.2</positives>
      <overlap>74</overlap>
      <strand>none/plus</strand>
      <querySeq start="56" end="126">LVLVVYLYKLGILNDSNELKDLVHKYEFWGPMIFIVAQIVQIVFPVIPGGVTTVAGFLIF-GPT-LGFIYNYIGIIIG-SVILFWLVKFYGRKFVLLFMDQKTFDKYESKLETSGYEKFFIFCMASPISPADIMVMITGLSNMSIKRFVTIIMITKPISIIGYSYLWIYGGDILKNFLN </querySeq>
      <pattern>                              :.... .::. ::. :.:     .::.. : .:. ..    .::.... ...:. :..  ::.:.  :.    :                                                                            </pattern>
      <matchSeq start="13" end="82">                  MQIRDWLPLLGMPLMLLFVQIIAIVL-VMP---MQAAGLVAFENPSSVANPLIFIGMLLAFTLVLLVLLRTGGRRFIAAFIGFALFMTFLYIFGALSLLALGPTTAAAAGTLIGAVAVTALLYLYPEWYVIDILGVLISAGVASIFGISLEPLPVLVLLVLL</matchSeq>
     </alignment>
    </alignments>
   </hit>
   <hit number="8" database="PDB" id="4HYD_A" length="301" description="mol:protein length:301  Putative uncharacterized protein">
    <alignments total="1">
     <alignment number="1">
      <score>92</score>
      <smithWatermanScore>92</smithWatermanScore>
      <initn>43</initn>
      <init1>43</init1>
      <opt>92</opt>
      <zScore>128.8</zScore>
      <bits>31.3</bits>
      <expectation>5.0</expectation>
      <identity>27.0</identity>
      <positives>66.2</positives>
      <overlap>74</overlap>
      <strand>none/plus</strand>
      <querySeq start="56" end="126">LVLVVYLYKLGILNDSNELKDLVHKYEFWGPMIFIVAQIVQIVFPVIPGGVTTVAGFLIF-GPT-LGFIYNYIGIIIG-SVILFWLVKFYGRKFVLLFMDQKTFDKYESKLETSGYEKFFIFCMASPISPADIMVMITGLSNMSIKRFVTIIMITKPISIIGYSYLWIYGGDILKNFLN </querySeq>
      <pattern>                              :.... .::. ::. :.:     .::.. : .:. ..    .::.... ...:. :..  ::.:.  :.    :                                                                            </pattern>
      <matchSeq start="13" end="82">                  MQIRDWLPLLGMPLMLLFVQIIAIVL-VMP---MQAAGLVAFENPSSVANPLIFIGMLLAFTLVLLVLLRTGGRRFIAAFIGFALFMTFLYIFGALSLLALGPTTAAAAGTLIGAVAVTALLYLYPEWYVIDILGVLISAGVASIFGISLEPLPVLVLLVLL</matchSeq>
     </alignment>
    </alignments>
   </hit>
   <hit number="9" database="PDB" id="4HYC_B" length="301" description="mol:protein length:301  Putative uncharacterized protein">
    <alignments total="1">
     <alignment number="1">
      <score>92</score>
      <smithWatermanScore>92</smithWatermanScore>
      <initn>43</initn>
      <init1>43</init1>
      <opt>92</opt>
      <zScore>128.8</zScore>
      <bits>31.3</bits>
      <expectation>5.0</expectation>
      <identity>27.0</identity>
      <positives>66.2</positives>
      <overlap>74</overlap>
      <strand>none/plus</strand>
      <querySeq start="56" end="126">LVLVVYLYKLGILNDSNELKDLVHKYEFWGPMIFIVAQIVQIVFPVIPGGVTTVAGFLIF-GPT-LGFIYNYIGIIIG-SVILFWLVKFYGRKFVLLFMDQKTFDKYESKLETSGYEKFFIFCMASPISPADIMVMITGLSNMSIKRFVTIIMITKPISIIGYSYLWIYGGDILKNFLN </querySeq>
      <pattern>                              :.... .::. ::. :.:     .::.. : .:. ..    .::.... ...:. :..  ::.:.  :.    :                                                                            </pattern>
      <matchSeq start="13" end="82">                  MQIRDWLPLLGMPLMLLFVQIIAIVL-VMP---MQAAGLVAFENPSSVANPLIFIGMLLAFTLVLLVLLRTGGRRFIAAFIGFALFMTFLYIFGALSLLALGPTTAAAAGTLIGAVAVTALLYLYPEWYVIDILGVLISAGVASIFGISLEPLPVLVLLVLL</matchSeq>
     </alignment>
    </alignments>
   </hit>
   <hit number="10" database="PDB" id="4HYC_D" length="301" description="mol:protein length:301  Putative uncharacterized protein">
    <alignments total="1">
     <alignment number="1">
      <score>92</score>
      <smithWatermanScore>92</smithWatermanScore>
      <initn>43</initn>
      <init1>43</init1>
      <opt>92</opt>
      <zScore>128.8</zScore>
      <bits>31.3</bits>
      <expectation>5.0</expectation>
      <identity>27.0</identity>
      <positives>66.2</positives>
      <overlap>74</overlap>
      <strand>none/plus</strand>
      <querySeq start="56" end="126">LVLVVYLYKLGILNDSNELKDLVHKYEFWGPMIFIVAQIVQIVFPVIPGGVTTVAGFLIF-GPT-LGFIYNYIGIIIG-SVILFWLVKFYGRKFVLLFMDQKTFDKYESKLETSGYEKFFIFCMASPISPADIMVMITGLSNMSIKRFVTIIMITKPISIIGYSYLWIYGGDILKNFLN </querySeq>
      <pattern>                              :.... .::. ::. :.:     .::.. : .:. ..    .::.... ...:. :..  ::.:.  :.    :                                                                            </pattern>
      <matchSeq start="13" end="82">                  MQIRDWLPLLGMPLMLLFVQIIAIVL-VMP---MQAAGLVAFENPSSVANPLIFIGMLLAFTLVLLVLLRTGGRRFIAAFIGFALFMTFLYIFGALSLLALGPTTAAAAGTLIGAVAVTALLYLYPEWYVIDILGVLISAGVASIFGISLEPLPVLVLLVLL</matchSeq>
     </alignment>
    </alignments>
   </hit>
  </hits>
 </SequenceSimilaritySearchResult></EBIApplicationResult>

I chose “xml” format. The result must be decoded with base64.

Advertisements

2 thoughts on “Blasting EBI Services 1

    […] Blasting EBI Services 1 […]

    Testing Webservices - NuChange said:
    January 1, 2015 at 9:27 pm

    […] Blasting EBI Services 1 […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s