<!--
**************************************************
* dna_single_integrate.xsd
* 
* Authors: The DNA posse, http://www.dna.ac.uk
* Maintained by: G.Winter@dl.ac.uk
* 
* An attempt to unscramble the mess which is 
* integration.
* 
* 
* 
* Version: SId: dna_single_integrate.xsd,v 1.6 2003/03/03 16:54:53 gwin Exp S
**************************************************

An example

<?xml version="1.0"?>
<single_integrate_response>
  <status>
    <code>ok</code>
  </status>
  <bin>
    <measured_spots_profile>
      <full>
        <signal>87440</signal>
        <noise>1322</noise>
        <signal_to_noise>62.8</signal_to_noise>
        <spot_count>25</spot_count>
      </full>
      <partial>
        <signal>52711</signal>
        <noise>715</noise>
        <signal_to_noise>54.2</signal_to_noise>
        <spot_count>409</spot_count>
      </partial>
    </measured_spots_profile>
    <resolution>
      <upper>
        <isotropic>3.60</isotropic>
      </upper>
      <lower>
        <isotropic>inf</isotropic>
      </lower>
    </resolution>
    <number>1</number>
    <measured_spots_summation>
      <full>
        <signal>83140</signal>
        <noise>1116</noise>
        <signal_to_noise>62.8</signal_to_noise>
        <spot_count>25</spot_count>
      </full>
      <partial>
        <signal>49771</signal>
        <noise>715</noise>
        <signal_to_noise>50.8</signal_to_noise>
        <spot_count>409</spot_count>
      </partial>
    </measured_spots_summation>
  </bin>

... et cetera ...

</single_integrate_response>


-->

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:dna="http://www.dna.ac.uk/DNA_XMLSchema">


  <xsd:include schemaLocation="dna_common.xsd"/>

  <xsd:complexType name="single_integrate_response">
    <xsd:sequence>
      <xsd:element name="status"
	           minOccurs="1"
                   maxOccurs="1"
                   type="status"/>
      <xsd:element name="spot_profile"
                   minOccurs="0"
                   maxOccurs="1"
                   type="spot_profile"/>
      <xsd:element name="bin"
                   minOccurs="1"
                   maxOccurs="unbounded"
                   type="integration_bin"/>
    </xsd:sequence>
  </xsd:complexType>

  <!-- next need to define the types which I use here -->


  <xsd:complexType name="spot_profile">
    <xsd:sequence>
      <xsd:element name="width"
                   minOccurs="1"
                   maxOccurs="1"
                   type="xsd:integer"/>
      <xsd:element name="height"
                   minOccurs="1"
                   maxOccurs="1"
                   type="xsd:integer"/>
      <xsd:element name="profile"
                   minOccurs="1"
                   maxOccurs="1"
                   type="xsd:string"/>
      <xsd:element name="mask"
                   minOccurs="1"
                   maxOccurs="1"
                   type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>


  <xsd:complexType name="integration_bin">
    <xsd:sequence>
      <!-- this has type xsd:string to allow for bin number="overall" -->
      <xsd:element name="number"
                   minOccurs="1"
                   maxOccues="1"
                   type="xsd:string"/>
      <xsd:element name="resolution"
                   minOccurs="1"
                   maxOccues="1"
                   type="resolution_limits"/>
      <xsd:element name="measured_spots_profile"
                   minOccurs="1"
                   maxOccurs="1"
                   type="measured_spot_summary"/>
      <xsd:element name="measured_spots_summation"
                   minOccurs="1"
                   maxOccurs="1"
                   type="measured_spot_summary"/>
    </xsd:sequence>
  </xsd:complexType>

  <!-- this needs some interaction with Olof -->


  <xsd:complexType name="resolution_limits">
    <xsd:sequence>
      <xsd:element name="lower"
                   minOccurs="1"
                   maxOccurs="1"
                   type="resolution_limit"/>
      <xsd:element name="upper"
                   minOccurs="1"
                   maxOccurs="1"
                   type="resolution_limit"/>
    </xsd:sequence>
  </xsd:complexType>


  <xsd:complexType name="resolution_limit">
    <xsd:sequence>
      <!-- this type is "string" because we have to allow for Infinity -->
      <xsd:element name="isotropic"
                   minOccurs="0"
                   maxOccurs="1"
                   type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>


  <xsd:complexType name="measured_spot_summary">
    <xsd:sequence>
      <xsd:element name="full"
                   minOccurs="1"
                   maxOccurs="1"
                   type="spot_summary_element"/>
      <xsd:element name="partial"
                   minOccurs="1"
                   maxOccurs="1"
                   type="spot_summary_element"/>
    </xsd:sequence>
  </xsd:complexType>


  <xsd:complexType name="spot_summary_element">
    <xsd:sequence>
      <xsd:element name="spot_count"
                   minOccurs="0"
                   maxOccurs="1"
                   type="xsd:integer"/>
      <xsd:element name="signal"
                   minOccurs="1"
                   maxOccurs="1"
                   type="xsd:double"/>
      <xsd:element name="noise"
                   minOccurs="1"
                   maxOccurs="1"
                   type="xsd:double"/>
      <xsd:element name="signal_to_noise"
                   minOccurs="1"
                   maxOccurs="1"
                   type="xsd:double"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>