DataStandardisation » History » Version 4

Version 3 (Anonymous, 07/26/2007 04:29 PM) → Version 4/14 (Anonymous, 07/30/2007 12:25 PM)

== Standardising Results with XML ==



* '''Orignal Proposal by Dr. Daniel '''



ProCKSI utilises a variety of similarity comparison methods (e.g. USM, MaxCMO, TMaling, ...) producing different similarity measures (e.g. Zscore, TMscore, RMSD, ...) each. Each of the comparison methods produces output with different formats and additional content such as alignments, rotation matrix, etc. Some of them produce just one output file, others a set of linked HTML files.



The similarity comparisons are performed on compute nodes while the database that shall contain all results is located on the head node. Thus, all results must be parsed and transmitted (in a compressed form) from the compute to the head node before they can be made available in the database. I have devised a very general concept that parses the results from different methods in a first step directly on the compute node, translates them into a standardised format, which is parsed again on the head node and entered into the database.



Hence, I have designed the prototype of an XML document that shall be used to store the results of similarity comparisons of pairs of protein structures with different comparison methods.

{{{

<SimilarityComparison>
<Job>
<ID> </ID>
<Label> </Label>
</Job>

<Structures>
<Structure>
<ID> </ID>
<Label> </Label>
</Structure>
<Structure>
<ID> </ID>
<Label> </Label>
</Structure>
<Structures>

<Method>
<ID> </ID>
<Name> </Name>

<Messages>
<Errors>
<Error> <Error>
</Errors>
<Warnings>
<Warning> <Warning>
</Warnings>
<Notices>
<Notice> <Notice>
</Notices>
</Messages>

<Measures>
<Measure>
<Name> </Name>
<Value> </Value>
</Measure>
</Measures>

<Alignments>
<Alignment> </Alignment>
</Alignments>

<Matrices>
<Matrix>
<Name> </Name>
<Content> </Content>
</Matrix>
</Matrices>

<Files>
<File>
<Label> </Label>
<Name> </Name>
</File>
</Files>
<Method>

</SimilarityComparison>
}}}





* &#x27;&#x27;&#x27;Comments from Pawel&#x27;&#x27;&#x27;
{{{

On Mon, 23 Apr 2007 18:24:02 +0100
&quot;Dr. Daniel Barthel&quot; &lt;daniel.barthel@nottingham.ac.uk&gt; wrote:

&gt; &gt; Could I ask you to have a look and tell me what you think, please?

First of all I would advice lowercase. It&#x27;s just less error prone.

&gt; &gt; &lt;Job&gt;
&gt; &gt; &lt;ID&gt; &lt;/ID&gt;
&gt; &gt; &lt;Label&gt; &lt;/Label&gt;
&gt; &gt; &lt;/Job

I think you should avoid putting everything into this XML file. As this
is being design to hold result only other things like job label should
be stored in database before and reference in results only by id.

So I propose something as simple as:
&lt;job id=&quot;xxx&quot; /&gt;

&gt; &gt; &lt;Structures&gt;
&gt; &gt; &lt;Structure&gt;
&gt; &gt; &lt;ID&gt; &lt;/ID&gt;
&gt; &gt; &lt;Label&gt; &lt;/Label&gt;
&gt; &gt; &lt;/Structure&gt;
&gt; &gt; &lt;Structure&gt;
&gt; &gt; &lt;ID&gt; &lt;/ID&gt;
&gt; &gt; &lt;Label&gt; &lt;/Label&gt;
&gt; &gt; &lt;/Structure&gt;
&gt; &gt; &lt;Structures&gt;

You don&#x27;t need to enclose a list of elements inside another structure.
Using tree traversing or Xpath query it is not hard to retrieve a list
of all elements with the same name.

So I would do it like this:
&lt;structure id=&quot;xxx&quot; /&gt;
&lt;structure id=&quot;yyy&quot; /&gt;
However, it is less readable for a human that way.

&gt; &gt; &lt;Method&gt;
&gt; &gt; &lt;ID&gt; &lt;/ID&gt;
&gt; &gt; &lt;Name&gt; &lt;/Name&gt;

Same as for labels apply here:
&lt;method id=&quot;xxx&quot;&gt;
...

&gt; &gt; &lt;Messages&gt;
&gt; &gt; &lt;Errors&gt;
&gt; &gt; &lt;Error&gt; &lt;Error&gt;
&gt; &gt; &lt;/Errors&gt;
&gt; &gt; &lt;Warnings&gt;
&gt; &gt; &lt;Warning&gt; &lt;Warning&gt;
&gt; &gt; &lt;/Warnings&gt;
&gt; &gt; &lt;Notices&gt;
&gt; &gt; &lt;Notice&gt; &lt;Notice&gt;
&gt; &gt; &lt;/Notices&gt;
&gt; &gt; &lt;/Messages&gt;

More flexible would be to use type attribute in case there would be a
need of adding other kind of messages later.

&lt;messages&gt;
&lt;item type=&quot;error&quot;&gt;xxx&lt;/item&gt;
&lt;item type=&quot;warning&quot;&gt;yyy&lt;/item&gt;
&lt;item type=&quot;abc&quot;&gt;zzz&lt;/item&gt;
&lt;/messages&gt;

&gt; &gt; &lt;Measures&gt;
&gt; &gt; &lt;Measure&gt;
&gt; &gt; &lt;Name&gt; &lt;/Name&gt;
&gt; &gt; &lt;Value&gt; &lt;/Value&gt;
&gt; &gt; &lt;/Measure&gt;
&gt; &gt; &lt;/Measures&gt;
&gt; &gt;
&gt; &gt; &lt;Alignments&gt;
&gt; &gt; &lt;Alignment&gt; &lt;/Alignment&gt;
&gt; &gt; &lt;/Alignments&gt;
&gt; &gt;
&gt; &gt; &lt;Matrices&gt;
&gt; &gt; &lt;Matrix&gt;
&gt; &gt; &lt;Name&gt; &lt;/Name&gt;
&gt; &gt; &lt;Content&gt; &lt;/Content&gt;
&gt; &gt; &lt;/Matrix&gt;
&gt; &gt; &lt;/Matrices&gt;
&gt; &gt;
&gt; &gt; &lt;Files&gt;
&gt; &gt; &lt;File&gt;
&gt; &gt; &lt;Label&gt; &lt;/Label&gt;
&gt; &gt; &lt;Name&gt; &lt;/Name&gt;
&gt; &gt; &lt;/File&gt;
&gt; &gt; &lt;/Files&gt;

I don&#x27;t fully understand the idea behind it. My impression is that
the subset of this elements could be a part of the method output. If so,
I would change it to less verbose:

&lt;results&gt;
&lt;value&gt;666&lt;/value&gt;
&lt;alignment&gt;xxx&lt;/alignment&gt;
&lt;matrix name=&quot;abc&quot;&gt;yyy&lt;/matrix&gt;
&lt;file name=&quot;qwe.asd&quot;/&gt;
&lt;/results&gt;

If a single XML file is going to hold more than a single
comparison the structure could be modified like this:

&lt;results&gt;
&lt;comparison id=&quot;xxx&quot;&gt;
&lt;messages&gt;
&lt;item...
&lt;/messages&gt;
&lt;value...
...
&lt;file...
&lt;/comparison&gt;
...
&lt;comparison id=&quot;zzz&quot;&gt;
...
&lt;/comparison&gt;
&lt;/results&gt;

And when the structure is defined it would be nice to have also the DTD (Document Type Definition) file for easy validation of it&#x27;s
correctness.
}}}


* &#x27;&#x27;&#x27;Azhar&#x27;s modified proposal for protein multiverse on university grid&#x27;&#x27;&#x27;

My point of view is to use one xml file for all pairwise results of one method (by method i mean strcuture comparison algorithm e.g DaliLite, USM). I am trying to develop a prototype that can read a set of strctures from an input directory and run each method on these strctures sequentially on one machine. Complete output of each method would be written in an XML file for that method.

Therefore, I propose following XML specification for similarity comparison output:

{{{

&lt;Method Name=&quot;MaxCMO&quot;&gt;

&lt;Pair No=&quot;0&quot; Structure1=&quot;1QA9A-1.PDB&quot; Structure2=&quot;1QA9A-1.PDB&quot;&gt;
&lt;Measures Align=&quot;83&quot; Overlap_No=&quot;124&quot; Seq_matches=&quot;3&quot; Seq_mismatches=&quot;80&quot; Seq_identity=&quot;3.61&quot;/&gt;
&lt;/Pair&gt;

&lt;Pair No=&quot;1&quot; Structure1=&quot;1QA9A-1.PDB&quot; Structure2=&quot;1ASH_-1.PDB&quot;&gt;
&lt;Measures Align=&quot;98&quot; Overlap_No=&quot;125&quot; Seq_matches=&quot;6&quot; Seq_mismatches=&quot;92&quot; Seq_identity=&quot;6.12&quot;/&gt;
&lt;/Pair&gt;

&lt;Pair No=&quot;2&quot; Structure1=&quot;1QA9A-1.PDB&quot; Structure2=&quot;1JHGA-1.PDB&quot;&gt;
&lt;Measures Align=&quot;84&quot; Overlap_No=&quot;102&quot; Seq_matches=&quot;3&quot; Seq_mismatches=&quot;81&quot; Seq_identity=&quot;3.57&quot;/&gt;
&lt;/Pair&gt;

.
.
.

&lt;Pair No=&quot;274&quot; Structure1=&quot;1MYT_-1.PDB&quot; Structure2=&quot;1HLB_-1.PDB&quot;&gt;
&lt;Measures Align=&quot;113&quot; Overlap_No=&quot;252&quot; Seq_matches=&quot;13&quot; Seq_mismatches=&quot;100&quot; Seq_identity=&quot;11.50&quot;/&gt;
&lt;/Pair&gt;

&lt;Pair No=&quot;275&quot; Structure1=&quot;1HLB_-1.PDB&quot; Structure2=&quot;1HLB_-1.PDB&quot;&gt;
&lt;Measures Align=&quot;147&quot; Overlap_No=&quot;316&quot; Seq_matches=&quot;36&quot; Seq_mismatches=&quot;111&quot; Seq_identity=&quot;24.49&quot;/&gt;
&lt;/Pair&gt;

&lt;/Method&gt;

}}}

Similarly one xml file for each of the remaining methods.

These files could be merged finally to get the all by all results for whole pdb with each method seprately in a searchable and updateable XML file.

So far I have implemented all other methods except USM.