1. Introduction
  2. Acknowledgements
  3. Technical details
  4. Software
  5. Service instances
  6. Interaction with the service
  7. Changes from version 1.0 to 2.0
  8. Additional notes
  9. Operations
  10. References

1. Introduction

This document describes the openModeller web service interface (OMWS) version 2.0. OMWS was created so that the main ecological niche modelling functionalities provided by openModeller (Muñoz et al. 2011) could be available in a standardized way over the web to other programs. Therefore the target audience for this document are developers interested in writing programs to interact with an OMWS server or perhaps in implementing a new OMWS server. It is assumed that readers have basic understanding about ecological niche modelling, basic understanding of openModeller and knowledge about web services.

2. Acknowledgements

The previous version of this document (OMWS 1.0) was originally prepared for the BioVeL project with funds from the European Commission. The new version of the protocol was mostly developed as part of the EUBrazilOpenBio project with funds from CNPq and the European Commission, although some of the changes in the new version originated from BioVeL.

3. Technical details

OMWS is based on SOAP following the document/literal style and the interface is programatically defined in WSDL:

http://openmodeller.cria.org.br/ws/2.0/openModeller.wsdl

The main XML elements, attributes, structure and data types used inside the SOAP Body are defined in a separate XML Schema compatible with openModeller serializable objects:

http://openmodeller.cria.org.br/xml/2.0/openModeller.xsd

4. Software

Although most operations and XML data structures remained the same in version 2.0, the two protocol versions are not backwards compatible, as they have different namespaces. This means that clients developed for the 1.0 version will not be able to communicate with servers developed for the 2.0 version and vice versa. However, the necessary changes for an existing client to become compatible with the new version are usually minimal (essentially just change the protocol and the openModeller schema namespaces).

So far there are two known server implementations of the service compatible with this version. One of them (oM Server) was developed in C++ using gSOAP and is part of the openModeller code under the src/soap/2.0 directory since openModeller version 1.4. oM Server contains stubs generated by gSOAP that can also be used by other developers willing to write clients in C++.

The other implementation was developed by the Polytechnic Univerty of Valencia and the Barcelona Supercomputing Centre in order to exploit COMP Superscalar workflow management capabilities in the backend. This implementation was developed in Java, although it also depends on openModeller command-line tools, as oM Server does. Source code can be found in the EUBrazilOpenBio Subversion repository.

There is also a simple command-line client that can be found in the openModeller source code at src/soap/2.0/sampleClient.pl. It is written in Perl and depends on the SOAPLite Perl module.

5. Service instances

Currently the following instance is publicly available:

http://modeller.cria.org.br/ws2/om

Reminder: you need a SOAP client to properly interact with this URL.

6. Interaction with the service

Although the number of operations available on the service is relatively small, there are many different ways to use them. Figure 1 shows a typical workflow as an example. Some people may be interested only in the models - without even testing of projecting them. Others may want to project a model only if a previous test indicates that the results are good enough. Even model creation may be conditioned by previous tests involving preliminary models created with different subsets of input data (through n-fold cross validation, for instance). Multiple projections can also be requested when there is more than one environmental scenario available.

Figure 1: Typical workflow to interact with the service. Boxes with solid lines indicate calls to service operations. Boxes with dashed lines indicate external tasks, except those indicating the summarized "getProgress" procedure.

It is important to note that a "model" for openModeller is the mathemathical representation of the ecological niche. If we take a simple algorithm like Bioclim for example, the model will be the bioclimatic envelopes and the logic that says that inside the inner envelope the environmental conditions are suitable (corresponding to the numerical value 1), inside the marginal envelope the environmental conditions can still be considered acceptable (corresponding to 0.5) and outiside the marginal envelope the environmental conditions are unsuitable (corresponding to 0). You can graphical examples of Bioclim models here. Therefore, the createModel operation will request the creation of that kind of model - not a map! The result of "getModel" will be the serialized model, which in the case of Bioclim will be just the bioclimatic envelopes (minimum, maximum, average and standard deviation cutoff for each variable, as can be seen in the getModel example response). Two things are usually done with a model in OMWS: it can be tested as many times as necessary (getting back statistical results as a confusion matrix and/or ROC curve) or it can be projected into a geographic region given an environmental scenario. This can also be done as many times as necessary. The result of a model projection is finally the potential distribution map in the form of a georeferenced raster.

As can be seen, OMWS is centered around a few core operations for ecological niche modelling, not covering other related things such as data cleaning, splitting points into test/training, pre-analysis on input data, post processing distribution maps, etc. Nevertheless, these core operations can still be used and combined in many different ways, keeping the interface simple and effective.

In this new version of the protocol, many parts of the workflow described in figure 1 can actually be encapsulated into a single runExperiment call, leaving the workflow management to the server side.

Service monitoring can be done by calling the ping operation, which was deliberately created for this purpose. There is also a Python script (test_omws2.py) that can be used to perform more extensive service tests to check if all operations are working on a specified endpoint.

7. Changes from version 1.0 to 2.0

8. Additional notes

All XML content used in the examples was formatted for better visualization. In some cases the content was deliberately shortened to avoid displaying dozens of algorithms and hundreds of layers in the examples. Despite these changes, all XML messages can be seen as real and functional examples of how to interact with the service.

Each server implementation must raise a SOAP fault if it cannot fulfill a request. SOAP faults are specific to each implementation and therefore are not covered by this document.

9. Operations

9.1. ping

9.1.1. Description

Indicates service availability. In a broader sense, service availability is not just related with connectivity. It also involves correct configuration on the server side. Server implementations can therefore use this method to check as much as possible that the server is prepared to properly handle all requests. Clients must get a <status>1</status> if the service is available - otherwise a SOAP fault is raised. Additionally, server implementations may use the <version> element in the header to indicate their name and version.

This is the right operation for service monitoring.

9.1.2. Examples

Example 1: ping request.
<?xml version="1.0" encoding="iso-8859-1"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
               xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <soap:Body>
    <omws:ping xsi:nil="true" xmlns:omws="http://openmodeller.cria.org.br/ws/2.0" />
  </soap:Body>
</soap:Envelope>

Example 2: ping response.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Header>
    <omws:version>oM Server 2.0 (openModeller 1.3.0)</omws:version>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <omws:pingResponse>
      <status>1</status>
    </omws:pingResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

9.2. getAlgorithms

9.2.1. Description

Returns metadata about all modelling algorithms available on the server. Metadata includes id, version, name, overview, description, designers, bibliography, developers, an indicator if the algorithm can handle categorical data, an indicator if it requires absence data, and parameters. Parameter metadata includes id, name, data type (Integer, Real or String), overview, description, accepted range and default value. Algorithm and parameter ids are used to reference them in the other operations.

In the current openModeller version all textual content is in English. When displaying algorithm metadata on user interfaces, descriptions of both algorithms and parameters are particularly important. For an algorithm, this may contain crucial information about how to run it, as in the case of AquaMaps, which requires a particular set of environmental layers to work. In other cases, descriptions may help to understand the differences between two implementations of the same algorithm, such as Desktop GARP and oM GARP, or they may contain additional information about the status of the algorithm and the conditions in which it can be used. For parameters, in many cases descriptions contain the possible values with additional explanations.

An algorithm may have zero, one or more parameters. EnvelopeScore is an example of an algorithm without any parameters. Parameter metadata can optionally indicate an accepted range, with minimum and maximum values (both can be present, or at least one of them).

Different service instances are not guaranteed to provide the same algorithms or the same versions of each algorithm, unless there is a specific policy in this respect controlling the different instances.

9.2.2. Examples

Example 3: getAlgorithms request.
<?xml version="1.0" encoding="iso-8859-1"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
               xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:omws="http://openmodeller.cria.org.br/ws/2.0"
               soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <soap:Body>
    <omws:getAlgorithms xsi:nil="true"/>
  </soap:Body>
</soap:Envelope>

Example 4: getAlgorithms response.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:getAlgorithmsResponse>
      <AvailableAlgorithms xmlns="http://openmodeller.cria.org.br/xml/2.0">
        <Algorithms>
          <Algorithm Id="SVM" Version="0.4">
          <Name>SVM (Support Vector Machines)</Name>
          <Overview>Support vector machines (SVMs) are a set of related supervised learning methods that belong to 
a family of generalized linear classifiers. They can also be considered a special case of Tikhonov regularization. 
A special property of SVMs is that they simultaneously minimize the empirical classification error and maximize the 
geometric margin; hence they are also known as maximum margin classifiers. Content retrieved from Wikipedia on the 
13th of June, 2007: http://en.wikipedia.org/w/index.php?title=Support_vector_machine&amp;oldid=136646498.
          </Overview>
          <Description>Support vector machines map input vectors to a higher dimensional space where a maximal 
separating hyperplane is constructed. Two parallel hyperplanes are constructed on each side of the hyperplane that 
separates the data. The separating hyperplane is the hyperplane that maximises the distance between the two parallel 
hyperplanes. An assumption is made that the larger the margin or distance between these parallel hyperplanes the 
better the generalisation error of the classifier will be. The model produced by support vector classification only 
depends on a subset of the training data, because the cost function for building the model does not care about 
training points that lie beyond the margin. Content retrieved from Wikipedia on the 13th of June, 2007: 
http://en.wikipedia.org/w/index.php?title=Support_vector_machine&amp;oldid=136646498. The openModeller implementation 
of SVMs makes use of the libsvm library version 2.85: Chih-Chung Chang and Chih-Jen Lin, LIBSVM: a library for support 
vector machines, 2001. Software available at http://www.csie.ntu.edu.tw/~cjlin/libsvm.

Release history:
 version 0.1: initial release
 version 0.2: New parameter to specify the number of pseudo-absences to be generated; 
              Upgraded to libsvm 2.85; 
              Fixed memory leaks
          </Description>
          <Designers>
            <Designer Name="Vladimir N. Vapnik"/>
          </Designers>
          <Bibliography>
1) Vapnik, V. (1995) The Nature of Statistical Learning Theory. SpringerVerlag. 
2) Sch&#246;lkopf, B., Smola, A., Williamson, R. and Bartlett, P.L.(2000). New support vector algorithms. Neural Computation, 
   12, 1207-1245. 
3) Sch&#246;lkopf, B., Platt, J.C., Shawe-Taylor, J., Smola A.J. and Williamson, R.C. (2001). Estimating the support of a 
   high-dimensional distribution. Neural Computation, 13, 1443-1471. 
4) Cristianini, N. &amp; Shawe-Taylor, J. (2000). An Introduction to Support Vector Machines and other kernel-based learning 
   methods. Cambridge University Press.
          </Bibliography>
          <Developers>
            <Developer Name="Renato De Giovanni in collaboration with Ana Carolina Lorena" 
                       Contact="renato [at] cria . org . br"/>
          </Developers>
          <AcceptsCategoricalMaps>0</AcceptsCategoricalMaps>
          <RequiresAbsencePoints>0</RequiresAbsencePoints>
          <Parameters>
            <Parameter Id="SvmType">
              <Name>SVM type</Name>
              <Type>Integer</Type>
              <Overview>Type of SVM: 0 = C-SVC, 1 = Nu-SVC, 2 = one-class SVM</Overview>
              <Description>Type of SVM: 0 = C-SVC, 1 = Nu-SVC, 2 = one-class SVM</Description>
              <AcceptedRange Min="0" Max="2"/>
              <Default>0</Default>
            </Parameter>
            <Parameter Id="KernelType">
              <Name>Kernel type</Name>
              <Type>Integer</Type>
              <Overview>Type of kernel function: 0 = linear: u'*v , 1 = polynomial: (gamma*u'*v + coef0)^degree , 
2 = radial basis function: exp(-gamma*|u-v|^2)
              </Overview>
              <Description>Type of kernel function: 0 = linear: u'*v , 1 = polynomial: (gamma*u'*v + coef0)^degree , 
2 = radial basis function: exp(-gamma*|u-v|^2)</Description>
              <AcceptedRange Min="0" Max="4"/>
              <Default>2</Default>
            </Parameter>
            <Parameter Id="Degree">
              <Name>Degree</Name>
              <Type>Integer</Type>
              <Overview>Degree in kernel function (only for polynomial kernels).</Overview>
              <Description>Degree in kernel function (only for polynomial kernels).</Description>
              <AcceptedRange Min="0"/>
              <Default>3</Default>
            </Parameter>
            <Parameter Id="Gamma">
              <Name>Gamma</Name>
              <Type>Real</Type>
              <Overview>Gamma in kernel function (only for polynomial and radial basis kernels). When set to zero, the 
default value will actually be 1/k, where k is the number of layers.</Overview>
              <Description>Gamma in kernel function (only for polynomial and radial basis kernels). When set to zero, the 
default value will actually be 1/k, where k is the number of layers.</Description>
               <Default>0</Default>
             </Parameter>
             <Parameter Id="Coef0">
               <Name>Coef0</Name>
               <Type>Real</Type>
               <Overview>Coef0 in kernel function (only for polynomial kernels).</Overview>
               <Description>Coef0 in kernel function (only for polynomial kernels).</Description>
               <Default>0</Default>
             </Parameter>
             <Parameter Id="C">
                <Name>Cost</Name>
                <Type>Real</Type>
                <Overview>Cost (only for C-SVC types).</Overview>
                <Description>Cost (only for C-SVC types).</Description>
                <AcceptedRange Min="0.001"/>
                <Default>1</Default>
              </Parameter>
              <Parameter Id="Nu">
                <Name>Nu</Name>
                <Type>Real</Type>
                <Overview>Nu (only for Nu-SVC and one-class SVM).</Overview>
                <Description>Nu (only for Nu-SVC and one-class SVM).</Description>
                <AcceptedRange Min="0.001" Max="1"/>
                <Default>0.5</Default>
              </Parameter>
              <Parameter Id="ProbabilisticOutput">
                <Name>Probabilistic output</Name>
                <Type>Integer</Type>
                <Overview>Indicates if the output should be a probability instead of a binary response (only available for 
C-SVC and Nu-SVC).</Overview>
                <Description>Indicates if the output should be a probability instead of a binary response (only available for 
C-SVC and Nu-SVC).</Description>
                <AcceptedRange Min="0" Max="1"/>
                <Default>1</Default>
              </Parameter>
              <Parameter Id="NumberOfPseudoAbsences">
                <Name>Number of pseudo-absences</Name>
                <Type>Integer</Type>
                <Overview>Number of pseudo-absences to be generated (only for C-SVC and Nu-SVC when no absences have 
been provided). When absences are needed, a zero parameter will default to the same number of presences.</Overview>
                <Description>Number of pseudo-absences to be generated (only for C-SVC and Nu-SVC when no absences have 
been provided). When absences are needed, a zero parameter will default to the same number of presences.</Description>
                <AcceptedRange Min="0"/>
                <Default>0</Default>
              </Parameter>
            </Parameters>
          </Algorithm>
          <Algorithm Id="ENVSCORE" Version="0.1">
            <Name>Envelope Score</Name>
            <Overview>Uses the minimum and maximum observed value for each environmental variable to define bioclimatic 
envelopes. Probability of occurrence for a point is determined by the number of environmental variables within which the 
environmental values at the point fall into the min/max criteria.</Overview>
            <Description>Implements a lax Bioclimatic Envelope Algorithm. For each given environmental variable the 
algorithm finds the minimum and maximum at all occurrence sites. During model projection, the probability of occurrences 
is determined as:

 p = layers within min-max threshold / number of layers

 Thus choosing a threshold of p=1 gives you the same model output as the original Bioclim model taking both the Suitable 
&amp; Marginal classes as predicted presences. The Envelope Score algorithm is equivalent to the inclusive 'OR' implementation 
of Bioclim described in Pineiro et al (2007).
            </Description>
            <Designers>
              <Designer Name="Nix, H. A."/>
            </Designers>
            <Bibliography>Nix, H.A. (1986) A biogeographic analysis of Australian elapid snakes. In: Atlas of Elapid Snakes of 
Australia. (Ed.) R. Longmore, pp. 4-15. Australian Flora and Fauna Series Number 7. Australian Government Publishing Service: 
Canberra.

 Pi&#241;eiro, R., Aguilar, J. F., Munt, D. D. &amp; Feliner, G. N. (2007) Ecology matters: Atlantic-Mediterranean disjunction 
in the sand-dune shrub Armeria pungens (Plumbaginaceae). Molecular Ecology. 16, 2155-2171.
            </Bibliography>
            <Developers>
              <Developer Name="Tim Sutton and Chris Yesson" Contact="tim [at] linfiniti.com"/>
            </Developers>
            <AcceptsCategoricalMaps>0</AcceptsCategoricalMaps>
            <RequiresAbsencePoints>0</RequiresAbsencePoints>
            <Parameters/>
          </Algorithm>
        </Algorithms>
      </AvailableAlgorithms>
    </omws:getAlgorithmsResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

9.3. getLayers

9.3.1. Description

Returns all environmental layers available on the server side. Layers can be grouped and organized in a hierarchical structure by means of <LayersGroup> elements. This response format was explicitly designed to allow clients to browse remote layers in the same same they would do by inspecting the local file system looking for raster files.

Each layer group and each individual layer has an id and a label. Ids are used to reference layers in the other operations. An optional layer attribute (HasProjection) can be used to indicate that there is no geographical projection information available for the layer. In such cases, the server must assume a latlong projection with the WGS84 datum when reading data from the corresponding layer.

The protocol does not include operations to manipulate layers (add or remove files, or edit metadata). These tasks need to be performed on the server side by other means. For this reason, and considering that there are lots of layers available everywhere, server implementations may additionally support references to external layers, either downloadable through URLs used as identifiers or through WCS layer identifiers following the pattern:

wcs>wcs_service_url>coverage_id

However, supporting access to external layers is not mandatory on the protocol. Service providers may prefer to only allow access to local layers advertised through this operation, or to a specific white list of external data providers. Clients must contact or test the data provider before counting on such functionality.

Different service instances are not guaranteed to provide the same layers, unless there is a specific policy in this respect. Additionally, a service instance may not keep the same layer structure or even the identifiers for all layers over the time - again, unless there is a specific policy with this purpose.

9.3.2. Examples

Example 5: getLayers request.
<?xml version="1.0" encoding="iso-8859-1"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
               xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <soap:Body>
    <omws:getLayers xmlns:omws="http://openmodeller.cria.org.br/ws/2.0" />
  </soap:Body>
</soap:Envelope>

Example 6: getLayers response.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:getLayersResponse>
      <AvailableLayers xmlns="http://openmodeller.cria.org.br/xml/2.0">
        <LayersGroup Id="1"><Label>layers</Label>
          <LayersGroup Id="2"><Label>climate</Label>
            <LayersGroup Id="3"><Label>terrestrial</Label>
              <LayersGroup Id="4"><Label>global</Label>
                <LayersGroup Id="5"><Label>worldclim</Label>
                  <LayersGroup Id="6"><Label>present</Label>
                    <LayersGroup Id="7"><Label>bioclim</Label>
                      <LayersGroup Id="8"><Label>10arc-minutes</Label>
                      <Layer Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/14aecd40-04d9-11e1-be50-0800200c9a66"
                             HasProjection="0"><Label>bio 01 - Annual Mean Temperature</Label></Layer>
                      <Layer Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/bf441530-04d9-11e1-be50-0800200c9a66"
                             HasProjection="0"><Label>bio 02 - Mean Diurnal Range (Mean of monthly (max temp - min temp))</Label></Layer>
                      </LayersGroup>
                    </LayersGroup>
                  </LayersGroup>
                </LayersGroup>
              </LayersGroup>
            </LayersGroup>
          </LayersGroup>
          <LayersGroup Id="9"><Label>marine</Label>
            <LayersGroup Id="10"><Label>global</Label>
              <LayersGroup Id="11"><Label>incofish</Label>
                <LayersGroup Id="12"><Label>HCAFv4</Label>
                  <LayersGroup Id="13"><Label>present</Label>
                    <LayersGroup Id="14"><Label>30arc-minutes</Label>
                    <Layer Id="/layers/en/marine/global/incofish/HCAFv4/present/30arc-minutes/61e7a060-04bf-11e1-be50-0800200c9a66"
                           HasProjection="0"><Label>Mean annual sea ice concentration</Label></Layer>
                    <Layer Id="/layers/en/marine/global/incofish/HCAFv4/present/30arc-minutes/9602dc20-04bf-11e1-be50-0800200c9a66"
                           HasProjection="0"><Label>Mean annual primary production (chlorophyll A) in mgC per square meter per day</Label></Layer>
                    </LayersGroup>
                  </LayersGroup>
                </LayersGroup>
              </LayersGroup>
            </LayersGroup>
          </LayersGroup>
        </LayersGroup>
      </AvailableLayers>
    </omws:getLayersResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

9.4. samplePoints

9.4.1. Description

Randomly sample the specified number of points on the specified environmental scenario. The scenario requires a set of layers referenced by their ids and a mask (which is also a layer) referenced by its id. The mask is used to discard points outside its extent or inside cells with nodata.

A mandatory section <Options> is used to indicate the number of points (NumPoints) to be sampled, an optional label for the points (usually a species name) and the proportion of absences (0 meaning only presences, 1 meaning only absences and intermediate values meaning a mix between them). Optional subelements can be used to instruct the service to sample only <SpatiallyUnique/> points (discarding points with the same coordinates) and/or <EnvironmentallyUnique/> points (discarding points with the same environmental conditions).

This operation is asynchronous. It immediately returns a ticket that must be used to track job progress later.

9.4.2. Examples

Example 7: samplePoints request.
<?xml version="1.0" encoding="iso-8859-1"?>
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0"
                   SOAP-ENV:encodingStyle="http://xml.apache.org/xml-soap/literalxml">
  <SOAP-ENV:Body>
    <omws:samplePoints>
      <SamplingParameters xmlns="http://openmodeller.cria.org.br/xml/2.0">
        <Environment>
          <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/14aecd40-04d9-11e1-be50-0800200c9a66"/>
          <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/bf441530-04d9-11e1-be50-0800200c9a66"/>
          <Mask Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/14aecd40-04d9-11e1-be50-0800200c9a66"/>
        </Environment>
        <Options NumPoints="5" Label="Test species" ProportionOfAbsences="0">
          <OccurrencesFilter>
            <EnvironmentallyUnique/>
          </OccurrencesFilter>
        </Options>
      </SamplingParameters>
    </omws:samplePoints>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Example 8: samplePoints response.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:samplePointsResponse>
      <ticket>wU48Pa</ticket>
    </omws:samplePointsResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

9.5. getProgress

9.5.1. Description

Returns the progress of one or more jobs of any type (sampling points, model creation, model testing, model evaluation or model projection). Multiple jobs can be specified by a comma separated list of tickets. In that case, a comma separated list of progresses will be returned in the same order. Possible values for an individual progress are: -1 if the job is still queued, -2 if the job was aborted, -3 if the job was cancelled, -4 is the job is unknown, a value between 0 and 100 if the job is in progress or 100 if the job was finished. More details about aborted jobs can be discovered with the getLog operation.

9.5.2. Examples

Example 9: getProgress request for a single job.
<?xml version="1.0" encoding="iso-8859-1"?>
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
                   SOAP-ENV:encodingStyle="http://xml.apache.org/xml-soap/literalxml"
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:getProgress>
      <ticket xsi:type="xsd:string">wU48Pa</ticket>
    </omws:getProgress>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Example 10: getProgress response for a single job.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:getProgressResponse>
      <progress>100</progress>
    </omws:getProgressResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Example 11: getProgress request for two jobs.
<?xml version="1.0" encoding="iso-8859-1"?>
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
                   SOAP-ENV:encodingStyle="http://xml.apache.org/xml-soap/literalxml"
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:getProgress>
      <ticket xsi:type="xsd:string">FXPAHp,kWs39a</ticket>
    </omws:getProgress>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Example 12: getProgress response for two jobs.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:getProgressResponse>
      <progress>100,-2</progress>
    </omws:getProgressResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

9.6. getLog

9.6.1. Description

Returns the log of a single job.

9.6.2. Examples

Example 13: getLog request.
<?xml version="1.0" encoding="iso-8859-1"?>
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0"
                   SOAP-ENV:encodingStyle="http://xml.apache.org/xml-soap/literalxml">
  <SOAP-ENV:Body>
    <omws:getLog>
      <ticket xsi:type="xsd:string">FXPAHp</ticket>
    </omws:getLog>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Example 14: getLog response.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:getLogResponse>
      <log>
[Info] Creating model
[Info] Reading 2-dimensional occurrence points.
[Info] Using 5 points to find the bioclimatic envelope.
[Info] Finished creating model
[Info] Calculating ROC curve
[Info] Generating 10000 background points
      </log>
    </omws:getLogResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

9.7. getSamplingResult

9.7.1. Description

Returns the result of a previous samplePoints operation call given a ticket. Each returned point includes not only the X and Y values (Longitude and Latitude, respectively) but also the corresponding environmental values separated by space in the "Sample" attribute. Points will always be in the lat/long WGS84 spatial reference system, as indicated by the <CoordinateSystem> element.

9.7.2. Examples

Example 15: getSamplingResult request.
<?xml version="1.0" encoding="iso-8859-1"?>
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
                   SOAP-ENV:encodingStyle="http://xml.apache.org/xml-soap/literalxml"
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:getSamplingResult>
      <ticket xsi:type="xsd:string">wU48Pa</ticket>
    </omws:getSamplingResult>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Example 16: getSamplingResult response.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:getSamplingResultResponse>
      <Sampler xmlns="http://openmodeller.cria.org.br/xml/2.0">
        <Environment NumLayers="2">
          <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/14aecd40-04d9-11e1-be50-0800200c9a66"
               IsCategorical="0" Min="-281" Max="310"/>
          <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/bf441530-04d9-11e1-be50-0800200c9a66"
               IsCategorical="0" Min="9" Max="211"/>
          <Mask Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/14aecd40-04d9-11e1-be50-0800200c9a66"/>
        </Environment>
        <Presence Label="Test species" Count="5">
          <CoordinateSystem>GEOGCS['1924 ellipsoid',DATUM['Not_specified',SPHEROID['International 1924',6378388,297,
AUTHORITY['EPSG','7022']],AUTHORITY['EPSG','6022']],PRIMEM['Greenwich',0,AUTHORITY['EPSG','8901']],UNIT['degree',
0.0174532925199433,AUTHORITY['EPSG','9108']],AUTHORITY['EPSG','4022']]</CoordinateSystem>
          <Point Id="1" X="-68.85" Y="-11.15" Sample="250 107"/>
          <Point Id="2" X="-67.38" Y="-14.32" Sample="260 114"/>
          <Point Id="3" X="-67.15" Y="-15.52" Sample="225 112"/>
          <Point Id="4" X="-65.12" Y="-16.73" Sample="254 112"/>
          <Point Id="5" X="-63.17" Y="-17.80" Sample="241 103"/>
        </Presence>
      </Sampler>
    </omws:getSamplingResultResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

9.8. createModel

9.8.1. Description

Starts a new model creation job. This requires a set of layers referenced by their ids, a mask referenced by its id, a set of presence points (samples where the environment is suitable for the species), an optional set of absence points (samples where the environment is unsuitable for the species), a modelling algorithm referenced by its id and, if the algorithm requires parameters, a set of parameters referenced by ids and followed by a value.

Each set of points needs a spatial reference system specified in WKT. Example 7 shows the WKT for latlong in WGS84. Longitude and latitude are represented by X and Y, respectively, and decimals must always be separated by a dot. An identification for each point is highly recommended, as points are referenced by it in the logs. A label for each set of points can be used to indicate the species name. This information is not used by the server, but it is returned later as part of the model created and can be a way to keep record of which species was modelled.

An optional section <Options> can be used to instruct the server to apply filters in the points before they are used. <SpatiallyUnique/> is used to discard duplicate points (same coordinates) and <EnvironmentallyUnique/> is used to discard points with the same environmental conditions.

This operation is asynchronous. It immediately returns a ticket that must be used to track job progress later.

9.8.2. Examples

Example 17: createModel request.
<?xml version="1.0" encoding="iso-8859-1"?>
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
                   SOAP-ENV:encodingStyle="http://xml.apache.org/xml-soap/literalxml"
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:createModel>
      <ModelParameters xmlns="http://openmodeller.cria.org.br/xml/2.0">
        <Sampler>
          <Environment>
            <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/14aecd40-04d9-11e1-be50-0800200c9a66"/>
            <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/bf441530-04d9-11e1-be50-0800200c9a66"/>
            <Mask Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/14aecd40-04d9-11e1-be50-0800200c9a66"/>
          </Environment>
          <Presence Label="Test species">
            <CoordinateSystem>GEOGCS['1924 ellipsoid',DATUM['Not_specified',SPHEROID['International 1924',6378388,297,
AUTHORITY['EPSG','7022']],AUTHORITY['EPSG','6022']],PRIMEM['Greenwich',0,AUTHORITY['EPSG','8901']],UNIT['degree',
0.0174532925199433,AUTHORITY['EPSG','9108']],AUTHORITY['EPSG','4022']]</CoordinateSystem>
            <Point Id="1" X="-68.85" Y="-11.15"/>
            <Point Id="2" X="-67.38" Y="-14.32"/>
            <Point Id="3" X="-67.15" Y="-15.52"/>
            <Point Id="4" X="-65.12" Y="-16.73"/>
            <Point Id="5" X="-63.17" Y="-17.8"/>
          </Presence>
        </Sampler>
        <Algorithm Version="0.2" Id="BIOCLIM">
          <Parameters>
            <Parameter Value="0.8" Id="StandardDeviationCutoff"/>
          </Parameters>
        </Algorithm>
        <Options>
          <OccurrencesFilter>
            <SpatiallyUnique/>
          </OccurrencesFilter>
        </Options>
      </ModelParameters>
    </omws:createModel>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Example 18: createModel response.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:createModelResponse>
      <ticket>FXPAHp</ticket>
    </omws:createModelResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

9.9. getModel

9.9.1. Description

Returns a created model, which includes all parameters that were used to generate the model. Note in the response example that the <Algorithm> element now includes a <Model> element with the actual result of the modelling process for that particular algorithm. This element contains all necessary information for algorithm predictions given an environmental scenario. Each algorithm has its own unique XML representation which is not part of this protocol. This XML representation must be, however, sufficient to be used in subsequent calls to other operations that require a model as a parameter.

Model testing, projection and evaluation require the <Algorithm> section returned by this operation.

9.9.2. Examples

Example 19: getModel request.
<?xml version="1.0" encoding="iso-8859-1"?>
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0"
                   SOAP-ENV:encodingStyle="http://xml.apache.org/xml-soap/literalxml">
  <SOAP-ENV:Body>
    <omws:getModel>
      <ticket xsi:type="xsd:string">FXPAHp</ticket>
    </omws:getModel>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Example 20: getModel response.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:getModelResponse>
      <ModelEnvelope xmlns="http://openmodeller.cria.org.br/xml/2.0">
        <SerializedModel>
          <Sampler>
            <Environment NumLayers="2">
              <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/14aecd40-04d9-11e1-be50-0800200c9a66"
                   IsCategorical="0" Min="-281" Max="310"/>
              <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/bf441530-04d9-11e1-be50-0800200c9a66"
                   IsCategorical="0" Min="9" Max="211"/>
              <Mask Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/14aecd40-04d9-11e1-be50-0800200c9a66"/>
            </Environment>
            <Presence Label="Test species" Count="5">
              <CoordinateSystem>GEOGCS['1924 ellipsoid',DATUM['Not_specified',SPHEROID['International 1924',6378388,297,
AUTHORITY['EPSG','7022']],AUTHORITY['EPSG','6022']],PRIMEM['Greenwich',0,AUTHORITY['EPSG','8901']],UNIT['degree',
0.0174532925199433,AUTHORITY['EPSG','9108']],AUTHORITY['EPSG','4022']]</CoordinateSystem>
              <Point Id="1" X="-68.85" Y="-11.15" Sample="250 107"/>
              <Point Id="2" X="-67.38" Y="-14.32" Sample="260 114"/>
              <Point Id="3" X="-67.15" Y="-15.52" Sample="225 112"/>
              <Point Id="4" X="-65.12" Y="-16.73" Sample="254 112"/>
              <Point Id="5" X="-63.17" Y="-17.80" Sample="241 103"/>
            </Presence>
          </Sampler>
          <Algorithm Id="BIOCLIM" Version="0.2">
            <Parameters>
              <Parameter Id="StandardDeviationCutoff" Value="0.8"/>
            </Parameters>
            <Model>
              <Bioclim Mean="246 109.6" StdDev="10.9 3.60" Minimum="225 103" Maximum="260 114"/>
            </Model>
          </Algorithm>
          <Statistics>
            <ConfusionMatrix Threshold="0.5" Accuracy="100" OmissionError="0" CommissionError="-100" 
                             TruePositives="5" FalsePositives="0" TrueNegatives="0" FalseNegatives="0"/>
            <RocCurve Auc="0.99" NumBackgroundPoints="10000" Points="0 0 0.0087 0.40 0.0087 0.40 0.0087 0.40 0.0087 0.40 
0.0087 0.40 0.0087 0.40 0.0087 0.40 0.021 1 0.021 1 0.021 1 0.021 1 0.021 1 0.021 1 0.021 1 1 1"/>
          </Statistics>
        </SerializedModel>
      </ModelEnvelope>
    </omws:getModelResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

9.10. evaluateModel

9.10.1. Description

Evaluates a model on a given set of points in a given environmental scenario. Unlike the testModel operation, this operation is only intended to return the raw model values for each point.

This operation is asynchronous. It immediately returns a ticket that must be used to track job progress later.

9.10.2. Examples

Example 21: evaluateModel request.
<?xml version="1.0" encoding="iso-8859-1"?>
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0"
                   SOAP-ENV:encodingStyle="http://xml.apache.org/xml-soap/literalxml">
  <SOAP-ENV:Body>
    <omws:evaluateModel>
      <ModelEvaluationParameters xmlns="http://openmodeller.cria.org.br/xml/2.0">
        <Sampler>
          <Environment NumLayers="2">
            <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/14aecd40-04d9-11e1-be50-0800200c9a66"/>
            <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/bf441530-04d9-11e1-be50-0800200c9a66"/>
            <Mask Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/14aecd40-04d9-11e1-be50-0800200c9a66"/>
          </Environment>
          <Presence Label="Test species">
            <CoordinateSystem>GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],
UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9108"]],AXIS["Lat",NORTH],AXIS["Long",EAST],AUTHORITY["EPSG","4326"]]
            </CoordinateSystem>
            <Point Id="1" X="-67.845739" Y="-11.327340" />
            <Point Id="2" X="-69.549969" Y="-12.350801" />
            <Point Id="3" X="-68.245959" Y="-12.060403" />
            <Point Id="4" X="-74.534959" Y="-15.340201" />
          </Presence>
        </Sampler>
        <Algorithm Id="BIOCLIM" Version="0.2">
          <Parameters>
            <Parameter Id="StandardDeviationCutoff" Value="0.8"/>
          </Parameters>
          <Model>
            <Bioclim Mean="246 109.6" StdDev="10.9 3.60" Minimum="225 103" Maximum="260 114"/>
          </Model>
        </Algorithm>
      </ModelEvaluationParameters>
    </omws:evaluateModel>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Example 22: evaluateModel response.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:evaluateModelResponse>
      <ticket>H5r7z2</ticket>
    </omws:evaluateModelResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

9.11. getModelEvaluation

9.11.1. Description

Returns the result of a model evaluation. Values are separated by a space and returned in the same order as the points in the evaluateModel request.

9.11.2. Examples

Example 23: getModelEvaluation request.
<?xml version="1.0" encoding="iso-8859-1"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
               xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:omws="http://openmodeller.cria.org.br/ws/2.0"
               soap:encodingStyle="http://xml.apache.org/xml-soap/literalxml">
  <soap:Body>
    <omws:getModelEvaluation>
      <ticket xsi:type="xsd:string">H5r7z2</ticket>
    </omws:getModelEvaluation>
  </soap:Body>
</soap:Envelope>

Example 24: getModelEvaluation response.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:modelEvaluationResponse>
      <ModelEvaluation xmlns="http://openmodeller.cria.org.br/xml/2.0">
        <Values V="0.5 1 0.5 0"/>
      </ModelEvaluation>
    </omws:modelEvaluationResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

9.12. testModel

9.12.1. Description

Starts a new model testing job. This requires an environmental scenario (set of layers including a mask), a set of presence points, an optional set of absence points, a model (<Algorithm> element returned by the createModel operation), and statistics parameters.

Statistics may include confusion matrix and ROC curve. A threshold can be specified for the confusion matrix. The "IgnoreAbsences" attribute can be used discard absence points in the calculations, in case they were passed as background points (in openModeller, some algorithms that require background points, like Maxent, have a parameter that allows users to specify the background points through absences).

Two approaches can be used to calculate ROC curves. The first one is the traditional approach which requires presence and absence points. The second was proposed by Phillips et al. (2006) to handle presence-only data using the proportional predicted area that can be approximated by means of background points. When only presences are available, the second approach must be used used and the attribute "BackgroundPoints" is available to specify the number of background points to be generated (on its absence, the default 10000 must be assumed). Background points can also be specified by the user by means of absences. In this case the attribute "UseAbsencesAsBackground" must be 1. In both approaches the resolution (number of points in the curve) and a maximum accepted ommision can be specified. Maximum omission is used to calculate partial ROC curves, according to Peterson et al. (2008).

This operation is asynchronous. It immediately returns a ticket that must be used to track job progress later.

9.12.2. Examples

Example 25: testModel request.
<?xml version="1.0" encoding="iso-8859-1"?>
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0"
                   SOAP-ENV:encodingStyle="http://xml.apache.org/xml-soap/literalxml">
  <SOAP-ENV:Body>
    <omws:testModel>
      <TestParameters xmlns="http://openmodeller.cria.org.br/xml/2.0">
        <Sampler>
          <Environment NumLayers="2">
            <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/14aecd40-04d9-11e1-be50-0800200c9a66"/>
            <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/bf441530-04d9-11e1-be50-0800200c9a66"/>
            <Mask Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/14aecd40-04d9-11e1-be50-0800200c9a66"/>
          </Environment>
          <Presence Label="Test species">
            <CoordinateSystem>GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],
UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9108"]],AXIS["Lat",NORTH],AXIS["Long",EAST],AUTHORITY["EPSG","4326"]]
            </CoordinateSystem>
            <Point Id="1" X="-67.845739" Y="-11.327340" />
            <Point Id="2" X="-69.549969" Y="-12.350801" />
          </Presence>
          <Absence Label="Test species">
            <CoordinateSystem>GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],
UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9108"]],AXIS["Lat",NORTH],AXIS["Long",EAST],AUTHORITY["EPSG","4326"]]
            </CoordinateSystem>
            <Point Id="3" X="-68.245959" Y="-12.060403" />
            <Point Id="4" X="-74.534959" Y="-15.340201" />
          </Absence>
        </Sampler>
        <Algorithm Id="BIOCLIM" Version="0.2">
          <Parameters>
            <Parameter Id="StandardDeviationCutoff" Value="0.8"/>
          </Parameters>
          <Model>
            <Bioclim Mean="246 109.6" StdDev="10.9 3.60" Minimum="225 103" Maximum="260 114"/>
          </Model>
        </Algorithm>
        <Statistics>
          <ConfusionMatrix Threshold="0.5" IgnoreAbsences="0"/>
          <RocCurve Resolution="15" MaxOmission="1.0" UseAbsencesAsBackground="0"/>
        </Statistics>
      </TestParameters>
    </omws:testModel>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Example 26: testModel response.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:testModelResponse>
      <ticket>9HhPVc</ticket>
    </omws:testModelResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

9.13. getTestResult

9.13.1. Description

Returns the result of a model test. Points of the ROC curve are serialized as a sequence of pairs (x y) separated by a space.

9.13.2. Examples

Example 27: getTestResult request.
<?xml version="1.0" encoding="iso-8859-1"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
               xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
               soap:encodingStyle="http://xml.apache.org/xml-soap/literalxml" 
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <soap:Body>
    <omws:getTestResult>
      <ticket xsi:type="xsd:string">9HhPVc</ticket>
    </omws:getTestResult>
  </soap:Body>
</soap:Envelope>

Example 28: getTestResult response.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:testResponse>
      <TestResultEnvelope xmlns="http://openmodeller.cria.org.br/xml/2.0">
        <Statistics>
          <ConfusionMatrix Threshold="0.5" Accuracy="75" OmissionError="0" CommissionError="50" 
                           TruePositives="2" FalsePositives="0" TrueNegatives="1" FalseNegatives="1"/>
          <RocCurve Auc="0.875" Points="0 0 0 0.5 0 0.5 0 0.5 0 0.5 0 0.5 0 0.5 0 0.5 0.5 1 0.5 1 0.5 1 0.5 1 0.5 1 
0.5 1 0.5 1 1 1 1 1"/>
        </Statistics>
      </TestResultEnvelope>
    </omws:testResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

9.14. projectModel

9.14.1. Description

Starts a new model projection job. This includes a model (<Algorithm> section returned by the createModel operation), an environmental scenario (set of layers with an output mask indicating the extent of the projection) and additional output parameters. If the environmental scenario is the same as the one used in model creation, this is known as a native projection. If the scenario is different, the number of layers must be the same and the corresponding variables must also be in the same order used for model creation.

Output parameters include a template layer whose spatial resolution and spatial reference system are used to create the distribution map, and a file type with the possible values:

Id Format and range Nodata value
GreyTiff Grey scale GeoTiff [0,254] 255
GreyTiff100 Grey scale GeoTiff [0,100] 127
FloatingTiff Floating point GeoTiff -1
GreyBMP Grey scale BMP [0,255] 0
FloatingHFA Floating point Erdas Imagine -1
ByteHFA Byte Erdas Imagine [0,100] 101
ByteASC Byte ARC/Info ASCII grid [0,100] 101
FloatingASC Floating point ARC/Info ASCII grid -9999

An optional <Statistics> section can be used to specify the threshold to calculate the number of cells considered suitable for the species occurrence. This information can be retrieved through the getProjectionMetadata operation.

This operation is asynchronous. It immediately returns a ticket that must be used to track job progress later.

9.14.2. Examples

Example 29: projectModel request.
<?xml version="1.0" encoding="iso-8859-1"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
               xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:omws="http://openmodeller.cria.org.br/ws/2.0"
               soap:encodingStyle="http://xml.apache.org/xml-soap/literalxml">
  <soap:Body>
    <omws:projectModel>
      <ProjectionParameters xmlns="http://openmodeller.cria.org.br/xml/2.0">
        <Algorithm Id="BIOCLIM" Version="0.2">
          <Parameters>
            <Parameter Id="StandardDeviationCutoff" Value="0.8"/>
          </Parameters>
          <Model>
            <Bioclim Mean="246 109.6" StdDev="10.9 3.60" Minimum="225 103" Maximum="260 114"/>
          </Model>
        </Algorithm>
        <Environment NumLayers="2">
          <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/14aecd40-04d9-11e1-be50-0800200c9a66"/>
          <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/bf441530-04d9-11e1-be50-0800200c9a66"/>
          <Mask Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/14aecd40-04d9-11e1-be50-0800200c9a66"/>
        </Environment>
        <OutputParameters FileType="ByteHFA">
          <TemplateLayer Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/14aecd40-04d9-11e1-be50-0800200c9a66"/>
        </OutputParameters>
        <Statistics>
          <AreaStatistics PredictionThreshold="0.5"/>
        </Statistics>
      </ProjectionParameters>
    </omws:projectModel>
  </soap:Body>
</soap:Envelope>

Example 30: projectModel response.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:projectModelResponse>
      <ticket>Umz5UR</ticket>
    </omws:projectModelResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

9.15. getLayerAsUrl

9.15.1. Description

Returns the URL of a projected model.

9.15.2. Examples

Example 31: getLayerAsUrl request.
<?xml version="1.0" encoding="iso-8859-1"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
               xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:omws="http://openmodeller.cria.org.br/ws/2.0"
               soap:encodingStyle="http://xml.apache.org/xml-soap/literalxml">
  <soap:Body>
    <omws:getLayerAsUrl>
      <id xsi:type="xsd:string">xvQD6d</id>
    </omws:getLayerAsUrl>
  </soap:Body>
</soap:Envelope>

Example 32: getLayerAsUrl response.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:getLayerAsUrlResponse>
      <url>http://modeller.cria.org.br/maps/xvQD6d.img</url>
    </omws:getLayerAsUrlResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

9.16. getProjectionMetadata

9.16.1. Description

Returns metadata about a model projection given a ticket, including the total number of cells on the map, the number of cells predicted as suitable for the species and the threshold used to calculate these values.

9.16.2. Examples

Example 33: getProjectionMetadata request.
<?xml version="1.0" encoding="iso-8859-1"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
               xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:omws="http://openmodeller.cria.org.br/ws/2.0"
               soap:encodingStyle="http://xml.apache.org/xml-soap/literalxml">
  <soap:Body>
    <omws:getProjectionMetadata>
      <ticket xsi:type="xsd:string">xvQD6d</ticket>
    </omws:getProjectionMetadata>
  </soap:Body>
</soap:Envelope>

Example 34: getProjectionMetadata response.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:getProjectionMetadataResponse FileSize="81786">
      <ProjectionEnvelope xmlns="http://openmodeller.cria.org.br/xml/2.0">
        <AreaStatistics TotalCells="585176" CellsPredicted="13064" PredictionThreshold="0.5"/>
      </ProjectionEnvelope>
    </omws:getProjectionMetadataResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

9.17. runExperiment

9.17.1. Description

This operation can be used to specify multiple jobs of the following types: sampling points, model creation, model testing, model projection or model evaluation. Dependencies can be established between:

The idea is to allow a whole workflow to be specified in a single request rather than invoking the service multiple times through individual calls. Although it should be possible to use this operation to make individual calls (such as a single model creation job), it is recommended to use the corresponding individual operation to avoid possible additional processing due to workflow control mechanisms that may be in place on the server side.

Requests are structured in the following way: An initial section is used to specify the basic parameters used by any job, including: environmental layers, presence and/or absence points, algorithm settings and models. Each basic parameter has an identifier ("id") in its main element. This section is then followed by one or more job specifications, which may reference existing parameters or jobs through the "idref" attribute. When a job is referenced, the result of the referenced job should be used as the corresponding parameter, indicating a dependency relationship between the two jobs.

This operation can also be useful even when there are no dependencies between jobs, for example when multiple models need to be created for the same species using several algorithms, or for multiple species using the same algorithm.

The response is a series of tickets, one for each job.

When a model projection or testing job is preceded by a model creation job, the area statistics prediction threshold (for projections) and the confusion matrix thresholds (for testings) accept the value "lpt". This value instructs the server to automatically calculate the lowest presence threshold (lowest prediction among training points) after model creation, using it where "lpt" is indicated. However, LPT must be the lowest value above zero, otherwise all environmental conditions will be suitable for the species. If a model projection or testing job indicates "lpt" but there is no preceding model creation job, the server must raise an error. One additional detail about LPT for server implementations relying on openModeller command line tools is that, for algorithms returning suitability values with many decimal places, openModeller (om_evaluate, in particular) may truncate the values. In such cases, when the value has more than 3 decimals places, it is advisable for server implementations to return the immediate lower number considering the maximum precision, e.g. if the calculated LPT was 0.12345, return 0.12344. This avoids the corresponding presence point being excluded by the threshold if its prediction value was truncated.

9.17.2. Examples

Example 35: Multiple model creation jobs using different algorithms, points and environmental scenarios.
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
               xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:omws="http://openmodeller.cria.org.br/ws/2.0"
               soap:encodingStyle="http://xml.apache.org/xml-soap/literalxml">
  <soap:Body>
    <omws:runExperiment>
      <ExperimentParameters xmlns="http://openmodeller.cria.org.br/xml/2.0">
        <Environment NumLayers="2" id="environment0">
          <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/14aecd40-04d9-11e1-be50-0800200c9a66"
               IsCategorical="0" />
          <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/bf441530-04d9-11e1-be50-0800200c9a66"
               IsCategorical="0" />
          <Mask Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/14aecd40-04d9-11e1-be50-0800200c9a66" />
        </Environment>
        <Environment NumLayers="8" id="environment1">
          <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb361-0c8e-11e1-be50-0800200c9a66"
               IsCategorical="0" />
          <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb364-0c8e-11e1-be50-0800200c9a66"
               IsCategorical="0" />
          <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb365-0c8e-11e1-be50-0800200c9a66"
               IsCategorical="0" />
          <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb36f-0c8e-11e1-be50-0800200c9a66"
               IsCategorical="0" />
          <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb370-0c8e-11e1-be50-0800200c9a66"
               IsCategorical="0" />
          <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb371-0c8e-11e1-be50-0800200c9a66"
               IsCategorical="0" />
          <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb372-0c8e-11e1-be50-0800200c9a66"
               IsCategorical="0" />
          <Map Id="/layers/en/terrestrial/topography/global/worldclim/altitude/30arc-seconds/ede38a70-16cb-11e1-be50-0800200c9a66"
               IsCategorical="0" />
          <Mask Id="/layers/en/masks/country/brazil/30arc-seconds/2c1e2d30-c492-11e1-9b21-0800200c9a66" />
        </Environment>
        <Presence Count="2" Label="Test species" id="presence0">
          <CoordinateSystem>GEOGCS['1924 ellipsoid',DATUM['Not_specified',SPHEROID['International 1924',6378388,297,
AUTHORITY['EPSG','7022']],AUTHORITY['EPSG','6022']],PRIMEM['Greenwich',0,AUTHORITY['EPSG','8901']],UNIT['degree',
0.0174532925199433,AUTHORITY['EPSG','9108']],AUTHORITY['EPSG','4022']]</CoordinateSystem>
          <Point Id="1" X="-57.845739" Y="-11.327340" />
          <Point Id="2" X="-59.549969" Y="-12.350801" />
        </Presence>
        <Presence Count="25" Label="Test species" id="presence1">
          <CoordinateSystem>GEOGCS['1924 ellipsoid',DATUM['Not_specified',SPHEROID['International 1924',6378388,297,
AUTHORITY['EPSG','7022']],AUTHORITY['EPSG','6022']],PRIMEM['Greenwich',0,AUTHORITY['EPSG','8901']],UNIT['degree',
0.0174532925199433,AUTHORITY['EPSG','9108']],AUTHORITY['EPSG','4022']]</CoordinateSystem>
          <Point Id="5992" X="-45.583888" Y="-22.763055" />
          <Point Id="5993" X="-38.997777" Y="-15.676389" />
          <Point Id="5994" X="-37.724443" Y="-12.016111" />
          <Point Id="5995" X="-40.491666" Y="-12.310556" />
          <Point Id="5996" X="-38.968888" Y="-16.163610" />
          <Point Id="5997" X="-39.476944" Y="-12.869721" />
          <Point Id="5998" X="-38.293332" Y="-12.571666" />
          <Point Id="5999" X="-49.235588" Y="-26.365003" />
          <Point Id="6000" X="-49.047778" Y="-26.192499" />
          <Point Id="6001" X="-39.459167" Y="-13.890833" />
          <Point Id="6002" X="-49.862222" Y="-27.450832" />
          <Point Id="6003" X="-39.761667" Y="-18.940833" />
          <Point Id="6004" X="-49.099443" Y="-24.068888" />
          <Point Id="6005" X="-39.568582" Y="-15.383667" />
          <Point Id="6006" X="-45.079166" Y="-23.381111" />
          <Point Id="6007" X="-49.338861" Y="-26.365277" />
          <Point Id="6008" X="-49.141666" Y="-16.523889" />
          <Point Id="6009" X="-46.481610" Y="-14.870309" />
          <Point Id="6010" X="-49.049444" Y="-27.630278" />
          <Point Id="6011" X="-49.231405" Y="-27.181397" />
          <Point Id="6013" X="-50.129446" Y="-27.000294" />
          <Point Id="6015" X="-46.824199" Y="-24.041222" />
          <Point Id="6016" X="-51.916666" Y="-23.416667" />
          <Point Id="6018" X="-40.553055" Y="-19.907499" />
          <Point Id="6019" X="-49.908889" Y="-29.574166" />
        </Presence>
        <Absence Count="2" Label="Test species" id="absence0">
          <CoordinateSystem>GEOGCS['1924 ellipsoid',DATUM['Not_specified',SPHEROID['International 1924',6378388,297,
AUTHORITY['EPSG','7022']],AUTHORITY['EPSG','6022']],PRIMEM['Greenwich',0,AUTHORITY['EPSG','8901']],UNIT['degree',
0.0174532925199433,AUTHORITY['EPSG','9108']],AUTHORITY['EPSG','4022']]</CoordinateSystem>
          <Point Id="3" X="-48.245959" Y="-12.060403" />
          <Point Id="4" X="-44.534959" Y="-15.340201" />
        </Absence>
        <AlgorithmSettings id="algorithm0">
          <Algorithm Id="BIOCLIM" Version="0.2">
            <Parameters>
              <Parameter Id="StandardDeviationCutoff" Value="0.8" />
            </Parameters>
          </Algorithm>
        </AlgorithmSettings>
        <AlgorithmSettings id="algorithm1">
          <Algorithm Id="RF" Version="0.2">
            <Parameters>
              <Parameter Id="NumTrees" Value="100" />
              <Parameter Id="VarsPerTree" Value="0" />
              <Parameter Id="ForceUnsupervisedLearning" Value="0" />
            </Parameters>
          </Algorithm>
        </AlgorithmSettings>
        <Jobs>
          <CreateModelJob id="job0">
            <EnvironmentRef idref="environment0" />
            <PresenceRef idref="presence0" />
            <AlgorithmRef idref="algorithm0" />
            <Options>
              <OccurrencesFilter>
                <SpatiallyUnique />
              </OccurrencesFilter>
            </Options>
          </CreateModelJob>
          <CreateModelJob id="job1">
            <EnvironmentRef idref="environment1" />
            <PresenceRef idref="presence0" />
            <AlgorithmRef idref="algorithm0" />
            <Options>
              <OccurrencesFilter>
                <SpatiallyUnique />
              </OccurrencesFilter>
            </Options>
          </CreateModelJob>
          <CreateModelJob id="job2">
            <EnvironmentRef idref="environment0" />
            <PresenceRef idref="presence0" />
            <AbsenceRef idref="absence0" />
            <AlgorithmRef idref="algorithm1" />
            <Options>
              <OccurrencesFilter>
                <SpatiallyUnique />
              </OccurrencesFilter>
            </Options>
          </CreateModelJob>
          <CreateModelJob id="job3">
            <EnvironmentRef idref="environment1" />
            <PresenceRef idref="presence0" />
            <AbsenceRef idref="absence0" />
            <AlgorithmRef idref="algorithm1" />
            <Options>
              <OccurrencesFilter>
                <SpatiallyUnique />
              </OccurrencesFilter>
            </Options>
          </CreateModelJob>
        </Jobs>
      </ExperimentParameters>
    </omws:runExperiment>
  </soap:Body>
</soap:Envelope>

Example 36: Multiple job types with dependencies.
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
               xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:omws="http://openmodeller.cria.org.br/ws/2.0"
               soap:encodingStyle="http://xml.apache.org/xml-soap/literalxml">
  <soap:Body>
    <omws:runExperiment>
      <ExperimentParameters xmlns="http://openmodeller.cria.org.br/xml/2.0">
        <Environment NumLayers="8" id="environment0">
          <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb361-0c8e-11e1-be50-0800200c9a66"
               IsCategorical="0" />
          <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb364-0c8e-11e1-be50-0800200c9a66"
               IsCategorical="0" />
          <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb365-0c8e-11e1-be50-0800200c9a66"
               IsCategorical="0" />
          <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb36f-0c8e-11e1-be50-0800200c9a66"
               IsCategorical="0" />
          <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb370-0c8e-11e1-be50-0800200c9a66"
               IsCategorical="0" />
          <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb371-0c8e-11e1-be50-0800200c9a66"
               IsCategorical="0" />
          <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb372-0c8e-11e1-be50-0800200c9a66"
               IsCategorical="0" />
          <Map Id="/layers/en/terrestrial/topography/global/worldclim/altitude/30arc-seconds/ede38a70-16cb-11e1-be50-0800200c9a66"
               IsCategorical="0" />
          <Mask Id="/layers/en/masks/country/brazil/30arc-seconds/2c1e2d30-c492-11e1-9b21-0800200c9a66" />
        </Environment>
        <Presence Count="25" Label="Test species" id="presence1">
          <CoordinateSystem>GEOGCS['1924 ellipsoid',DATUM['Not_specified',SPHEROID['International 1924',6378388,297,
AUTHORITY['EPSG','7022']],AUTHORITY['EPSG','6022']],PRIMEM['Greenwich',0,AUTHORITY['EPSG','8901']],UNIT['degree',
0.0174532925199433,AUTHORITY['EPSG','9108']],AUTHORITY['EPSG','4022']]</CoordinateSystem>
          <Point Id="5992" X="-45.583888" Y="-22.763055" />
          <Point Id="5993" X="-38.997777" Y="-15.676389" />
          <Point Id="5994" X="-37.724443" Y="-12.016111" />
          <Point Id="5995" X="-40.491666" Y="-12.310556" />
          <Point Id="5996" X="-38.968888" Y="-16.163610" />
          <Point Id="5997" X="-39.476944" Y="-12.869721" />
          <Point Id="5998" X="-38.293332" Y="-12.571666" />
          <Point Id="5999" X="-49.235588" Y="-26.365003" />
          <Point Id="6000" X="-49.047778" Y="-26.192499" />
          <Point Id="6001" X="-39.459167" Y="-13.890833" />
          <Point Id="6002" X="-49.862222" Y="-27.450832" />
          <Point Id="6003" X="-39.761667" Y="-18.940833" />
          <Point Id="6004" X="-49.099443" Y="-24.068888" />
          <Point Id="6005" X="-39.568582" Y="-15.383667" />
          <Point Id="6006" X="-45.079166" Y="-23.381111" />
          <Point Id="6007" X="-49.338861" Y="-26.365277" />
          <Point Id="6008" X="-49.141666" Y="-16.523889" />
          <Point Id="6009" X="-46.481610" Y="-14.870309" />
          <Point Id="6010" X="-49.049444" Y="-27.630278" />
          <Point Id="6011" X="-49.231405" Y="-27.181397" />
          <Point Id="6013" X="-50.129446" Y="-27.000294" />
          <Point Id="6015" X="-46.824199" Y="-24.041222" />
          <Point Id="6016" X="-51.916666" Y="-23.416667" />
          <Point Id="6018" X="-40.553055" Y="-19.907499" />
          <Point Id="6019" X="-49.908889" Y="-29.574166" />
        </Presence>
        <AlgorithmSettings id="algorithm0">
          <Algorithm Id="ENFA" Version="0.1.3">
            <Parameters>
              <Parameter Id="NumberOfBackgroundPoints" Value="5000" />
              <Parameter Id="NumberOfRetries" Value="10" />
              <Parameter Id="DiscardMethod" Value="2" />
              <Parameter Id="RetainComponents" Value="2" />
              <Parameter Id="RetainVariation" Value="0.75" />
              <Parameter Id="DisplayLoadings" Value="0" />
              <Parameter Id="VerboseDebug" Value="0" />
            </Parameters>
          </Algorithm>
        </AlgorithmSettings>
        <Jobs>
          <SamplingJob id="job10">
            <EnvironmentRef idref="environment0" />
            <Options NumPoints="5000" Label="Background" ProportionOfAbsences="1.0">
              <OccurrencesFilter>
                <EnvironmentallyUnique />
              </OccurrencesFilter>
            </Options>
          </SamplingJob>
          <CreateModelJob id="job20">
            <EnvironmentRef idref="environment0" />
            <PresenceRef idref="presence1" />
            <AbsenceRef idref="job10" />
            <AlgorithmRef idref="algorithm0" />
          </CreateModelJob>
          <TestModelJob id="job21">
            <EnvironmentRef idref="environment0" />
            <PresenceRef idref="presence1" />
            <AbsenceRef idref="job10" />
            <ModelRef idref="job20" />
            <Statistics>
              <RocCurve BackgroundPoints="5000" Resolution="15" MaxOmission="1.0" UseAbsencesAsBackground="1" />
            </Statistics>
          </TestModelJob>
          <ProjectModelJob id="job30">
            <EnvironmentRef idref="environment0" />
            <ModelRef idref="job20" />
            <OutputParameters FileType="ByteHFA">
            <TemplateLayer Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/10arc-minutes/14aecd40-04d9-11e1-be50-0800200c9a66"/>
            </OutputParameters>
          </ProjectModelJob>
          <EvaluateModelJob id="job40">
            <EnvironmentRef idref="environment0" />
            <PresenceRef idref="presence1" />
            <ModelRef idref="job20" />
          </EvaluateModelJob>
        </Jobs>
      </ExperimentParameters>
    </omws:runExperiment>
  </soap:Body>
</soap:Envelope>

Example 37: runExperiment response.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:runExperimentResponse>
      <ExperimentTickets xmlns="http://openmodeller.cria.org.br/xml/2.0">
       <Job id="job10" Ticket="aaa121"/>
       <Job id="job20" Ticket="aaa122"/>
       <Job id="job21" Ticket="aaa123"/>
       <Job id="job30" Ticket="aaa124"/>
       <Job id="job40" Ticket="aaa125"/>
      </ExperimentTickets>
    </omws:runExperimentResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

9.18. getResults

9.18.1. Description

Operation used to retrieve results from one or more jobs initiated either from individual calls or from runExperiment calls. A comma-separated list of tickets is passsed as a parameter.

9.18.2. Examples

Example 38: getResults request.
<?xml version="1.0" encoding="iso-8859-1"?>
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
                   SOAP-ENV:encodingStyle="http://xml.apache.org/xml-soap/literalxml"
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:getResults>
      <tickets xsi:type="xsd:string">aaa121,aaa122,aaa123,aaa124,aaa125</tickets>
    </omws:getResults>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Example 39: getResults response.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:getResultsResponse>
      <ResultSet xmlns="http://openmodeller.cria.org.br/xml/2.0">
        <Job Ticket="kFbEiG">
          <Sampler>
            <Environment NumLayers="8">
              <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb361-0c8e-11e1-be50-0800200c9a66"
                   IsCategorical="0" Min="6" Max="210"/>
              <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb364-0c8e-11e1-be50-0800200c9a66"
                   IsCategorical="0" Min="-203" Max="533"/>
              <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb365-0c8e-11e1-be50-0800200c9a66"
                   IsCategorical="0" Min="-630" Max="256"/>
              <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb36f-0c8e-11e1-be50-0800200c9a66"
                   IsCategorical="0" Min="0" Max="4056"/>
              <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb370-0c8e-11e1-be50-0800200c9a66"
                   IsCategorical="0" Min="0" Max="1879"/>
              <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb371-0c8e-11e1-be50-0800200c9a66"
                   IsCategorical="0" Min="0" Max="2609"/>
              <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb372-0c8e-11e1-be50-0800200c9a66"
                   IsCategorical="0" Min="0" Max="3498"/>
              <Map Id="/layers/en/terrestrial/topography/global/worldclim/altitude/30arc-seconds/ede38a70-16cb-11e1-be50-0800200c9a66"
                   IsCategorical="0" Min="-431" Max="8233"/>
              <Mask Id="/layers/en/masks/country/brazil/30arc-seconds/2c1e2d30-c492-11e1-9b21-0800200c9a66"/>
            </Environment>
           <Absence Label="Background" Count="5000">
             <CoordinateSystem>GEOGCS[&quot;WGS84&quot;, DATUM[&quot;WGS84&quot;,   
SPHEROID[&quot;WGS84&quot;, 6378137.0, 298.257223563]],   PRIMEM[&quot;Greenwich&quot;, 0.0],   
UNIT[&quot;degree&quot;,0.017453292519943295],   AXIS[&quot;Longitude&quot;,EAST], 
AXIS[&quot;Latitude&quot;,NORTH]]</CoordinateSystem>
             <Point Id="1" X="-61.21235" Y="-2.39865827" Sample="87 326 221 951 327 376 797 76"/>
             <Point Id="2" X="-49.0185875" Y="-20.3735812" Sample="130 315 124 695 49 621 76 462"/>
             <Point Id="3" X="-52.746477" Y="-9.86251739" Sample="142 359 153 1038 31 581 31 274"/>
             <Point Id="4" X="-42.9002969" Y="-3.71466209" Sample="103 341 203 929 50 71 377 110"/>
             <Point Id="5" X="-40.9245267" Y="-6.55893261" Sample="104 311 172 442 9 89 53 692"/>
             <!-- ... -->
             <Point Id="5000" X="-61.103208" Y="-1.84124856" Sample="89 327 221 974 359 380 856 61"/>
           </Absence>
         </Sampler>
        </Job>
        <Job Ticket="2aSzie">
          <ModelEnvelope>
            <SerializedModel>
              <Sampler>
                <Environment NumLayers="8">
                  <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb361-0c8e-11e1-be50-0800200c9a66"
                       IsCategorical="0" Min="6" Max="210"/>
                  <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb364-0c8e-11e1-be50-0800200c9a66"
                       IsCategorical="0" Min="-203" Max="533"/>
                  <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb365-0c8e-11e1-be50-0800200c9a66"
                       IsCategorical="0" Min="-630" Max="256"/>
                  <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb36f-0c8e-11e1-be50-0800200c9a66"
                       IsCategorical="0" Min="0" Max="4056"/>
                  <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb370-0c8e-11e1-be50-0800200c9a66"
                       IsCategorical="0" Min="0" Max="1879"/>
                  <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb371-0c8e-11e1-be50-0800200c9a66"
                       IsCategorical="0" Min="0" Max="2609"/>
                  <Map Id="/layers/en/terrestrial/climate/global/worldclim/present/bioclim/30arc-seconds/19afb372-0c8e-11e1-be50-0800200c9a66"
                       IsCategorical="0" Min="0" Max="3498"/>
                  <Map Id="/layers/en/terrestrial/topography/global/worldclim/altitude/30arc-seconds/ede38a70-16cb-11e1-be50-0800200c9a66"
                       IsCategorical="0" Min="-431" Max="8233"/>
                  <Mask Id="/layers/en/masks/country/brazil/30arc-seconds/2c1e2d30-c492-11e1-9b21-0800200c9a66"/>
                </Environment>
                <Presence Label="Test species" Count="25">
                <CoordinateSystem>GEOGCS['1924 ellipsoid',DATUM['Not_specified',SPHEROID['International 1924',6378388,297,
AUTHORITY['EPSG','7022']],AUTHORITY['EPSG','6022']],PRIMEM['Greenwich',0,AUTHORITY['EPSG','8901']],UNIT['degree',
0.0174532925199433,AUTHORITY['EPSG','9108']],AUTHORITY['EPSG','4022']]</CoordinateSystem>
                <Point Id="5992" X="-45.583888" Y="-22.763055" Sample="107 209 34 860 116 795 116 1699"/>
                <Point Id="5993" X="-38.997777" Y="-15.676389" Sample="73 294 183 444 344 372 442 3"/>
                <Point Id="5994" X="-37.724443" Y="-12.016111" Sample="84 309 187 700 221 296 533 46"/>
                <Point Id="5995" X="-40.491666" Y="-12.310556" Sample="100 279 140 276 86 264 121 550"/>
                <Point Id="5996" X="-38.968888" Y="-16.16361" Sample="72 293 182 507 309 309 449 20"/>
                <Point Id="5997" X="-39.476944" Y="-12.869721" Sample="66 267 161 264 130 253 179 534"/>
                <Point Id="5998" X="-38.293332" Y="-12.571666" Sample="78 307 190 704 256 310 494 19"/>
                <Point Id="5999" X="-49.235588" Y="-26.365003" Sample="97 268 85 490 262 490 268 603"/>
                <Point Id="6000" X="-49.047778" Y="-26.192499" Sample="89 258 86 558 265 558 265 679"/>
                <Point Id="6001" X="-39.459167" Y="-13.890833" Sample="63 265 169 419 298 398 396 515"/>
                <Point Id="6002" X="-49.862222" Y="-27.450832" Sample="105 279 84 452 295 452 325 582"/>
                <Point Id="6003" X="-39.761667" Y="-18.940833" Sample="85 309 171 510 186 357 186 4"/>
                <Point Id="6004" X="-49.099443" Y="-24.068888" Sample="116 279 78 498 174 498 196 741"/>
                <Point Id="6005" X="-39.568582" Y="-15.383667" Sample="75 251 137 370 195 299 209 864"/>
                <Point Id="6006" X="-45.079166" Y="-23.381111" Sample="93 294 127 889 228 865 228 158"/>
                <Point Id="6007" X="-49.338861" Y="-26.365277" Sample="101 271 82 465 260 465 268 599"/>
                <Point Id="6008" X="-49.141666" Y="-16.523889" Sample="110 303 139 676 25 206 38 748"/>
                <Point Id="6009" X="-46.48161" Y="-14.870309" Sample="113 298 138 651 13 172 25 929"/>
                <Point Id="6010" X="-49.049444" Y="-27.630278" Sample="82 258 90 547 261 547 279 604"/>
                <Point Id="6011" X="-49.231405" Y="-27.181397" Sample="91 264 85 524 289 524 308 629"/>
                <Point Id="6013" X="-50.129446" Y="-27.000294" Sample="112 266 61 440 313 440 332 810"/>
                <Point Id="6015" X="-46.824199" Y="-24.041222" Sample="83 291 136 872 254 872 254 55"/>
                <Point Id="6016" X="-51.916666" Y="-23.416667" Sample="129 284 85 489 198 489 261 566"/>
                <Point Id="6018" X="-40.553055" Y="-19.907499" Sample="93 277 130 548 128 355 128 809"/>
                <Point Id="6019" X="-49.908889" Y="-29.574166" Sample="66 262 113 407 359 396 378 8"/>
             </Presence>
             <Absence Label="Background" Count="5000">
               <CoordinateSystem>GEOGCS[&quot;WGS84&quot;, DATUM[&quot;WGS84&quot;,   
SPHEROID[&quot;WGS84&quot;, 6378137.0, 298.257223563]],   PRIMEM[&quot;Greenwich&quot;, 0.0],   
UNIT[&quot;degree&quot;,0.017453292519943295],   AXIS[&quot;Longitude&quot;,EAST], 
AXIS[&quot;Latitude&quot;,NORTH]]</CoordinateSystem>
               <Point Id="1" X="-61.21235" Y="-2.39865827" Sample="87 326 221 951 327 376 797 76"/>
               <Point Id="2" X="-49.0185875" Y="-20.3735812" Sample="130 315 124 695 49 621 76 462"/>
               <Point Id="3" X="-52.746477" Y="-9.86251739" Sample="142 359 153 1038 31 581 31 274"/>
               <Point Id="4" X="-42.9002969" Y="-3.71466209" Sample="103 341 203 929 50 71 377 110"/>
               <Point Id="5" X="-40.9245267" Y="-6.55893261" Sample="104 311 172 442 9 89 53 692"/>
               <!-- ... -->
               <Point Id="5000" X="-61.103208" Y="-1.84124856" Sample="89 327 221 974 359 380 856 61"/>
             </Absence>
           </Sampler>
           <Algorithm Id="ENFA" Version="0.1.3">
             <Parameters>
               <Parameter Id="DiscardMethod" Value="2"/>
               <Parameter Id="DisplayLoadings" Value="0"/>
               <Parameter Id="NumberOfBackgroundPoints" Value="5000"/>
               <Parameter Id="NumberOfRetries" Value="10"/>
               <Parameter Id="RetainComponents" Value="2"/>
               <Parameter Id="RetainVariation" Value="0.75"/>
               <Parameter Id="VerboseDebug" Value="0"/>
            </Parameters>
            <Model>
              <Enfa Marginality="1.49" Specialisation="2.45" RetainedComponents="2" 
                    AvgBackgroundVector="110.97 320.6 164.9 758.6 137.0 365.0 364.2 322.8" 
                    StddevBackgroundVector="17.34 20.85 41.28 230.9 145.60 186.0 357.84 257.22" 
                    AvgVector="-1.13 -2.07 -1.01 -0.93 0.56 0.39 -0.27 0.73" 
                    StddevVector="1.01 1.07 1.06 0.72 0.63 0.99 0.37 1.56" 
                    EigenvalueVector="13.81 19.47 7.38 3.96 1.79 0.75 0.60 0.30" 
                    FactorWeights="0.41 0.58 0 0 0 0 0 0" 
                    EigenvectorMatrix="0.45 0.10 0.23 -0.47 -0.56 -0.13 0.22 -0.33 0.32 0.39 -0.23 0.56 -0.01 -0.00 -0.25 -0.55 0.42 -0.25 -0.07 
-0.35 0.50 0.54 -0.12 -0.22 0.13 -0.34 0.63 0.26 0.37 -0.42 0.13 -0.23 0.42 -0.64 -0.28 0.26 -0.34 -0.11 -0.21 0.28 0.10 0.08 -0.49 -0.36 0.35 
-0.68 -0.05 -0.01 -0.54 -0.46 -0.20 -0.10 -0.18 -0.00 -0.07 -0.62 0.07 -0.08 -0.34 0.22 0.07 0.10 0.89 -0.06" 
                    ScoreMatrix="-0.38 0.25 -0.31 0.25 -0.51 -0.57 0.29 0.09 -0.70 -0.10 0.41 -0.51 0.59 0.15 -0.36 0.02 -0.34 0.33 -0.42 0.02 
-0.46 0.33 0.71 0.28 -0.31 0.10 -0.35 0.46 0.12 0.14 -0.25 0.21 0.19 0.55 -0.60 0.02 0.20 -0.44 0.19 0.05 0.13 -0.03 0.21 -0.40 -0.13 0.45 
-0.34 -0.04 -0.09 -0.69 -0.04 -0.39 -0.12 -0.21 -0.20 0.12 0.24 0.02 -0.01 -0.36 0.27 0.23 0.06 0.91" 
                    EnvironmentFactorMatrix="6.52 -0.06 -0.47 0.18 -0.32 0.79 -0.84 3.74 1.98 0.20 -0.38 -0.14 -0.08 0.04 0.61 -1.44 0.63 -0.19 
-0.30 0.14 0.00 0.16 0.25 -0.94 2.67 -0.04 0.47 0.02 -0.50 -0.20 0.95 0.00 1.88 0.07 -0.39 0.08 -0.02 0.06 0.59 -1.33 3.70 -0.25 0.45 -0.20 
-0.05 0.77 0.99 -0.08 0.85 -0.04 -0.39 0.17 0.11 0.30 0.27 -1.05 3.69 -0.03 0.04 -0.04 0.08 -0.52 -0.35 0.04 4.23 -0.05 -0.06 -0.03 0.09 -0.05 
-0.47 0.31 3.80 0.03 -0.40 -0.38 0.00 0.72 0.77 0.13 3.18 0.01 0.00 -0.21 0.18 -0.99 -0.30 0.02 1.06 0.12 0.39 0.07 0.03 0.30 0.24 -1.52 2.98 
-0.05 0.35 -0.17 -0.04 -0.66 -0.40 0.55 4.53 0.02 -0.19 -0.07 -0.05 0.42 0.96 1.08 1.80 0.11 0.20 -0.05 -0.09 1.04 -1.40 -0.99 3.53 -0.03 0.08 
-0.05 0.07 -0.73 -0.31 0.01 1.18 0.10 0.35 0.31 0.29 0.16 0.37 1.11 1.47 0.16 0.24 0.26 0.27 0.13 0.61 1.74 4.28 -0.17 0.04 -0.04 0.17 0.10 
-0.52 0.02 3.99 -0.07 -0.05 -0.11 0.19 -0.33 -0.46 0.14 3.91 0.07 -0.23 -0.13 0.12 -1.39 -0.24 0.70 2.00 0.086 0.16 -0.05 -0.08 1.24 -1.37 
-1.35 2.32 0.11 0.05 0.086 -0.53 -1.30 -0.16 0.07 2.98 0.05 0.15 -0.05 0.16 0.42 0.34 1.06 3.92 -0.14 -0.14 0.43 -0.00 -0.50 -0.11 -2.04" 
                    LocalityGeomeans="0.60 0.61 0.62 0.64 0.64 0.64 0.65 0.66 0.66 0.67 0.70 0.70 0.71 0.72 0.73 0.73 0.76 0.81 0.88 0.95 0.97 
1.0 1.14 1.32 2.31"/>
                </Model>
              </Algorithm>
            </SerializedModel>
          </ModelEnvelope>
        </Job>
        <Job Ticket="1FGxiM">
          <TestResultEnvelope>
            <Statistics>
              <RocCurve Auc="0.855" NumBackgroundPoints="5000" 
                        Points="0 0 0.017 0 0.021 0.04 0.036 0.12 0.043 0.2 0.056 0.28 0.057 0.32 0.085 0.4 0.089 0.48 0.098 0.56 0.11 0.64 0.13 
0.68 0.19 0.76 0.20 0.84 0.27 0.92 1 1"/>
            </Statistics>
          </TestResultEnvelope>
        </Job>
        <Job Ticket="jAwxik">
          <ProjectionEnvelope url="http://some.host/someplace/jAwxik.img">
            <AreaStatistics TotalCells="25501" CellsPredicted="2480" PredictionThreshold="0.5"/>
          </ProjectionEnvelope>
        </Job>
        <Job Ticket="xyz123">
          <Values V="0.64039 0.72411 0.5000 0.47856 0.63948"/>
        </Job>
      </ResultSet>
    </omws:getResultsResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

9.19. cancel

9.19.1. Description

Operation used to cancel one or more jobs on the server side. Jobs are specified as a comma-separated list of tickets. Results include a comma-separated list of jobs that were cancelled. If the server was unable to cancel a job, its corresponding ticket must not be returned in the response.

9.19.2. Examples

Example 39: cancel request.
<?xml version="1.0" encoding="iso-8859-1"?>
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
                   SOAP-ENV:encodingStyle="http://xml.apache.org/xml-soap/literalxml"
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:cancel>
      <tickets xsi:type="xsd:string">aaa121,aaa122,aaa123,aaa124</tickets>
    </omws:cancel>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Example 40: cancel response.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
                   xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
                   xmlns:omws="http://openmodeller.cria.org.br/ws/2.0">
  <SOAP-ENV:Body>
    <omws:cancelResponse>
      <cancelledTickets xsi:type="xsd:string">aaa122,aaa123,aaa124</cancelledTickets>
    </omws:cancelResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

10. References

Muñoz, M.E.S., Giovanni, R., Siqueira, M.F., Sutton, T., Brewer, P., Pereira, R.S., Canhos, D.A.L., Canhos, V.P. (2011) openModeller: a generic approach to species’ potential distribution modelling. Geoinformatica, 15: 111-135.

Peterson, A.T., Papes, M., Soberón, J. (2008) Rethinking receiver operating characteristic analysis applications in ecological niche modeling. Ecological Modelling, 213: 63-72.

Phillips, S.J., Anderson, R.P., and Schapire, R.E., (2006) Maximum entropy modeling of species geographic distributions. Ecological Modelling, 190: 231–259.