<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Scripting Access to MEME Web Services - MEME Suite</title>
    <link rel="shortcut icon" type="image/x-icon" href="images/memesuite_icon.ico">
    <link rel="icon" type="image/png" href="images/memesuite_icon.png">
    <link href="css/style.css" rel="stylesheet" type="text/css">
    <script src="js/menu.js"></script>
  </head>
  <body>
    <div class="memesuitelogo">
      <h1>The MEME Suite</h1>
      <h2>Motif-based sequence analysis tools</h2>
    </div>

    <h2>Scripting Access to MEME Web Services</h2>
    <p>The MEME Suite web applications are exposed as SOAP Web services
    through the
    <a href="http://sourceforge.net/projects/opaltoolkit/">Opal toolkit</a>.
    This means that you can access the MEME suite web applications from
    Perl or Python scripts without having to install the MEME Suite
    locally.</p>

    <p>Four sample scripts that demonstrate how to submit jobs to the MEME Web
    services are provided:</p>
    <ul>
      <li>
      <a href="examples/sample_opal_scripts/MemeClient.pl">MemeClient.pl</a>
      demonstrates calling the MEME web application from a Perl script.
      </li>
      <li>
      <a href="examples/sample_opal_scripts/FimoClient.pl">FimoClient.pl</a>
      demonstrates calling the FIMO web application from a Perl script.
      </li>
      <li>
      <a href="examples/sample_opal_scripts/MemeClient.py">MemeClient.py</a> 
      demonstrates calling the MEME web application from a Python script.
      </li>
      <li>
      <a href="examples/sample_opal_scripts/FimoClient.py">FimoCient.py</a> 
      demonstrates calling the FIMO web application from a Python script.
      </li>
    </ul>
    <p>The scripts expect to find two data files in the working directory:</p>
    <ul>
    <li>
      <a href="examples/sample_opal_scripts/crp0.fasta">crp0.fasta</a>
    </li>
    <li>
      <a href="examples/sample_opal_scripts/crp0.meme.xml">crp0.meme.xml</a>
    </li>
    </ul>
    <p>The MEME client scripts will run MEME on
    <a href="examples/sample_opal_scripts/crp0.fasta">crp0.fasta</a>
    and store the output in a local directory named <code>meme_out</code>.
    The FIMO client scripts will run Fimo on 
    <a href="examples/sample_opal_scripts/crp0.meme.xml">crp0.meme.xml</a>
    and
    <a href="examples/sample_opal_scripts/crp0.fasta">crp0.fasta</a>
    and store the output in a local directory named <code>fimo_out</code>.</p>
    
    <p>You don't need to have a local copy of MEME Suite installed to
    access the web applications from your script, but you do need to have
    the appropriate version of the 
    <a href="http://sourceforge.net/projects/opaltoolkit/files/">Opal client libraries</a>
    installed.
    To install the 
    <a href="http://sourceforge.net/projects/opaltoolkit/files/">Opal client libraries</a>
    refer to the 
    <a href="http://www.nbcr.net/data/docs/opal/docs/1.9/opal-perl-index.html">installation Instructions for Perl</a>
    or
    <a href="http://www.nbcr.net/data/docs/opal/docs/2.X/opal-py-index.html">installation instructions for Python</a>.
    </p>

    <p>The Perl <a href="http://sourceforge.net/projects/opaltoolkit/files/">Opal client libraries</a>
    require you to have Perl 5.0.8 or higher, and you must have installed 
    <code>SOAP::Lite</code> 0.69 or higher.
    You may need to adjust the <code>PERL5LIB</code> environment variable to
    include the directory containing the Perl Opal client.</p>

    <p>The demonstration scripts use the
    <a href="@SOURCE_URL@">MEME Web Server</a>
    but you can use a local MEME web server by changing the service URL.
    This is specified in the variable <code>$location</code> in the Perl script,
    and in the variable <code>serviceURL</code> in the Python script.</p>

    <h3>Important Note</h3>
    <p>Scripting clients can easily submit enough jobs to overwhelm a MEME server,
    even one with substantial hardware resources.
    If you are sending jobs to a shared server, please submit only one job at a time.</p>
  </body>
</html>

