Web Services Description

From DISI
Revision as of 20:33, 8 October 2012 by Therese (talk | contribs) (10 revisions)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

the web services are accessible at http://gurgendev.bkslab.org:8080/aggregate_lookup/xml-rpc/. The interaction with the service is based on following requests

Description of Methods

method: similarity.getExactMatch. returns aggregators and non-aggregators that match the query molecule exactly params: <string>smile</string> query string This method queries the web service for an exact match(over 95% similarity) response:

  <struct>
      <respcode><string>00</string></respcode> //00 in case of success, 90 if no results are found, 99 internal server error
      <msg><string> Message</string></msg> //optional, only when respcode != 00
      <smile><string><string></smile> //filtered smile that was used for query
      <aggregators>
           <array>
                  <struct>
                           <formula><string>Formula</string></formula>//chemical formula of the compound
                           <smile><string>SMILE</stiring></smile>//SMILE of the formula
                           <similarity><double>Similarity</double> //similarity level of the molecule to query
                           <reference><string>Reference</string></reference>// reference to where the aggregator was published
                   </struct>
           </array>
      </aggregators>
     <non-aggregators>
           <array>
                  <struct>
                           <formula><string>Formula</string></formula>//chemical formula of the compound
                           <smile><string>SMILE</stiring></smile>//SMILE of the formula
                           <similarity><double>Similarity</double> //similarity level of the molecule to query
                           <reference><string>Reference</string></reference>// reference to where the aggregator was published
                   </struct>
           </array>
      </non-aggregators>
  </struct>

method: similarity.getSimilar. returns similar aggregators and ambigous that match the query molecule exactly params: <string>smile</string> query string This method queries the web service for an exact match(over 65% similarity) response:

  <struct>
      <respcode><string>00</string></respcode> //00 in case of success, 90 if no results are found, 99 internal server error
      <msg><string> Message</string></msg> //optional, only when respcode != 00
      <smile><string><string></smile> //filtered smile that was used for query
      <aggregators>
           <array>
                  <struct>
                           <formula><string>Formula</string></formula>//chemical formula of the compound
                           <smile><string>SMILE</string></smile>//SMILE of the formula
                           <similarity><double>Similarity</double> //similarity level of the molecule to query
                           <reference><string>Reference</string></reference>// reference to where the aggregator was published
                   </struct>
           </array>
      </aggregators>
     < ambiguous >
           <array>
                  <struct>
                           <formula><string>Formula</string></formula>//chemical formula of the compound
                           <smile><string>SMILE</stiring></smile>//SMILE of the formula
                           <similarity><double>Similarity</double> //similarity level of the molecule to query
                           <reference><string>Reference</string></reference>// reference to where the aggregator was published
                   </struct>
           </array>
      </ambiguous>
  </struct>

method: similarity.getMurcoSimilars. returns similar aggregators and ambigous that match the query molecule exactly params: <string>smile</string> query string This method queries the web service for matches which have similar(over 95% similarity) murco scaffold. The murco scaffold is calculated using MIB tools response:

  <struct>
      <respcode><string>00</string></respcode> //00 in case of success, 90 if no results are found, 99 internal server error
      <msg><string> Message</string></msg> //optional, only when respcode != 00
      <smile><string><string></smile> //smile for murco scaffold that was used for query
      <aggregators>
           <array>
                  <struct>
                           <formula><string>Formula</string></formula>//chemical formula of the compound
                           <smile><string>SMILE</string></smile>//SMILE of the formula
                           <similarity><double>Similarity</double> //similarity level of the molecule to query
                           <reference><string>Reference</string></reference>// reference to where the aggregator was published
                   </struct>
           </array>
      </aggregators>
     < ambiguous >
           <array>
                  <struct>
                           <formula><string>Formula</string></formula>//chemical formula of the compound
                           <smile><string>SMILE</stiring></smile>//SMILE of the formula
                           <similarity><double>Similarity</double> //similarity level of the molecule to query
                           <reference><string>Reference</string></reference>// reference to where the aggregator was published
                   </struct>
           </array>
      </ambiguous>
  </struct>


method: similarity.getLogP. calculates and returns logP value for a molecule params: <string>smile</string> query string This method queries the web service for an exact match(over 65% similarity) response:

  <struct>
      <respcode><string>00</string></respcode> //00 in case of success, 99 internal server error
      <msg><string> Message</string></msg> //optional, only when respcode != 00
      <logP><double>LogP</double></logP> //LogP value as calculated by MIButils
     
  </struct>

method: similarity.getAggregators. returns known aggregators from database params: <start><string>Start</string><start><count><count> start is the id of the aggregator, count is the number of aggregators to retrieve. Web service returns aggregators in the range [start, start+count] response:

  <struct>
      <respcode><string>00</string></respcode> //00 in case of success, 90 if no results are found, 99 internal server error
      <count><int> Count</int></count> //total number of aggreagtors in the database
      <aggregators>
           <array>
                  <struct>
                           <formula><string>Formula</string></formula>//chemical formula of the compound
                           <smile><string>SMILE</string></smile>//SMILE of the formula
                           <similarity><double>Similarity</double> //similarity level of the molecule to query
                           <reference><string>Reference</string></reference>// reference to where the aggregator was published
                   </struct>
           </array>
      </aggregators>
  </struct>


Example Client

Any XML-RPC client is compatible with this web-service. When using Java I recommend using Redstone XML-RPC (http://xmlrpc.sourceforge.net/), since it is lightweight and easy to use. Below is an example code for interating with the web servce.

 import redstone.xmlrpc.XmlRpcClient;
import java.util.HashMap;
import java.util.ArrayList;
public class Test{
 
public static void main( String[] args )
{
try{
   XmlRpcClient client = new XmlRpcClient( "http://localhost:8080/aggregate_lookup/xml-rpc/", false );
   java.util.HashMap result = (java.util.HashMap)client.invoke("similarity.getSimilar", new Object[] {"c1cc(O)c2C(=O)C(O)=C(Oc2c1)c3ccc(O)c(O)c3"});
       System.out.println("result retreived");
       java.util.ArrayList agg = (java.util.ArrayList)result.get("aggregators");
       System.out.println("retreived agg.size:"+agg.size());
       for(int i=0; i< agg.size(); i++){
               HashMap hit = (HashMap)agg.get(i);
               String formula =(String) hit.get("formula");
               String reference =(String) hit.get("reference");
               Double score =(Double) hit.get("dissimilarity");
               System.out.println("Formula:"+formula+"\tReference:"+reference+"\tScore:"+score+"\n");
       }
}catch(Exception ex)
       {
               ex.printStackTrace();
       }
}
}