JAL-3858 persist PAE matrix (only so far) as serialised floats in element on dataset...
authorJames Procter <j.procter@dundee.ac.uk>
Wed, 22 Feb 2023 22:02:20 +0000 (22:02 +0000)
committerJames Procter <j.procter@dundee.ac.uk>
Wed, 22 Feb 2023 22:02:20 +0000 (22:02 +0000)
78 files changed:
schemas/jalview.xsd
schemas/vamsas.xsd
src/jalview/datamodel/ContactMapHolder.java
src/jalview/datamodel/ContactMatrix.java
src/jalview/datamodel/ContactMatrixI.java
src/jalview/datamodel/SeqDistanceContactMatrix.java
src/jalview/io/PContactPredictionFile.java
src/jalview/project/Jalview2XML.java
src/jalview/ws/datamodel/alphafold/PAEContactMatrix.java
src/jalview/xml/binding/embl/EntrySetType.java
src/jalview/xml/binding/embl/EntryType.java
src/jalview/xml/binding/embl/ObjectFactory.java
src/jalview/xml/binding/embl/ROOT.java
src/jalview/xml/binding/embl/XrefType.java
src/jalview/xml/binding/jalview/AlcodonFrame.java
src/jalview/xml/binding/jalview/Annotation.java
src/jalview/xml/binding/jalview/AnnotationColourScheme.java
src/jalview/xml/binding/jalview/AnnotationElement.java
src/jalview/xml/binding/jalview/DoubleMatrix.java
src/jalview/xml/binding/jalview/DoubleVector.java
src/jalview/xml/binding/jalview/Feature.java
src/jalview/xml/binding/jalview/FeatureMatcher.java
src/jalview/xml/binding/jalview/FeatureMatcherSet.java
src/jalview/xml/binding/jalview/FilterBy.java
src/jalview/xml/binding/jalview/JalviewModel.java
src/jalview/xml/binding/jalview/JalviewUserColours.java
src/jalview/xml/binding/jalview/MapListType.java
src/jalview/xml/binding/jalview/Mapping.java
src/jalview/xml/binding/jalview/NoValueColour.java
src/jalview/xml/binding/jalview/ObjectFactory.java
src/jalview/xml/binding/jalview/PcaDataType.java
src/jalview/xml/binding/jalview/Pdbentry.java
src/jalview/xml/binding/jalview/Sequence.java
src/jalview/xml/binding/jalview/SequenceSet.java
src/jalview/xml/binding/jalview/SequenceType.java
src/jalview/xml/binding/jalview/ThresholdType.java
src/jalview/xml/binding/jalview/VAMSAS.java
src/jalview/xml/binding/jalview/WebServiceParameterSet.java
src/jalview/xml/binding/jalview/package-info.java
src/jalview/xml/binding/uniprot/CitationType.java
src/jalview/xml/binding/uniprot/CofactorType.java
src/jalview/xml/binding/uniprot/CommentType.java
src/jalview/xml/binding/uniprot/ConsortiumType.java
src/jalview/xml/binding/uniprot/DbReferenceType.java
src/jalview/xml/binding/uniprot/Entry.java
src/jalview/xml/binding/uniprot/EventType.java
src/jalview/xml/binding/uniprot/EvidenceType.java
src/jalview/xml/binding/uniprot/EvidencedStringType.java
src/jalview/xml/binding/uniprot/FeatureType.java
src/jalview/xml/binding/uniprot/GeneLocationType.java
src/jalview/xml/binding/uniprot/GeneNameType.java
src/jalview/xml/binding/uniprot/GeneType.java
src/jalview/xml/binding/uniprot/ImportedFromType.java
src/jalview/xml/binding/uniprot/InteractantType.java
src/jalview/xml/binding/uniprot/IsoformType.java
src/jalview/xml/binding/uniprot/KeywordType.java
src/jalview/xml/binding/uniprot/LocationType.java
src/jalview/xml/binding/uniprot/MoleculeType.java
src/jalview/xml/binding/uniprot/NameListType.java
src/jalview/xml/binding/uniprot/ObjectFactory.java
src/jalview/xml/binding/uniprot/OrganismNameType.java
src/jalview/xml/binding/uniprot/OrganismType.java
src/jalview/xml/binding/uniprot/PersonType.java
src/jalview/xml/binding/uniprot/PhysiologicalReactionType.java
src/jalview/xml/binding/uniprot/PositionType.java
src/jalview/xml/binding/uniprot/PropertyType.java
src/jalview/xml/binding/uniprot/ProteinExistenceType.java
src/jalview/xml/binding/uniprot/ProteinType.java
src/jalview/xml/binding/uniprot/ReactionType.java
src/jalview/xml/binding/uniprot/ReferenceType.java
src/jalview/xml/binding/uniprot/SequenceType.java
src/jalview/xml/binding/uniprot/SourceDataType.java
src/jalview/xml/binding/uniprot/SourceType.java
src/jalview/xml/binding/uniprot/StatusType.java
src/jalview/xml/binding/uniprot/SubcellularLocationType.java
src/jalview/xml/binding/uniprot/Uniprot.java
src/jalview/xml/binding/uniprot/package-info.java
test/jalview/project/Jalview2xmlTests.java

index cd05e5f..e7cb580 100755 (executable)
                                <xs:element name="JSeq" maxOccurs="unbounded" minOccurs="0">
                                        <xs:complexType>
                                                <xs:sequence>
-                                                       <xs:element name="features" type="jv:feature"
-                                                               minOccurs="0" maxOccurs="unbounded" />
-                                                       <xs:element name="pdbids" minOccurs="0" maxOccurs="unbounded">
+                                                       <xs:element name="features"
+                                                               type="jv:feature" minOccurs="0" maxOccurs="unbounded" />
+                                                       <xs:element name="pdbids" minOccurs="0"
+                                                               maxOccurs="unbounded">
                                                                <xs:complexType>
                                                                        <xs:complexContent>
-                                                                               <xs:extension base="jv:pdbentry">
+                                                                               <xs:extension
+                                                                                       base="jv:pdbentry">
                                                                                        <xs:sequence>
-                                                                                               <xs:element name="structureState" minOccurs="0"
+                                                                                               <xs:element
+                                                                                                       name="structureState" minOccurs="0"
                                                                                                        maxOccurs="unbounded">
                                                                                                        <xs:complexType>
                                                                                                                <xs:simpleContent>
-                                                                                                                       <xs:extension base="xs:string">
-                                                                                                                               <xs:attributeGroup ref="jv:swingwindow" />
-                                                                                                                               <xs:attribute name="visible" type="xs:boolean" />
-                                                                                                                               <xs:attribute name="viewId" type="xs:string"
-                                                                                                                                       use="optional">
+                                                                                                                       <xs:extension
+                                                                                                                               base="xs:string">
+                                                                                                                               <xs:attributeGroup
+                                                                                                                                       ref="jv:swingwindow" />
+                                                                                                                               <xs:attribute
+                                                                                                                                       name="visible" type="xs:boolean" />
+                                                                                                                               <xs:attribute
+                                                                                                                                       name="viewId" type="xs:string" use="optional">
                                                                                                                                        <xs:annotation>
                                                                                                                                                <xs:documentation>
                                                                                                                                                        additional
                                                                                                                                                </xs:documentation>
                                                                                                                                        </xs:annotation>
                                                                                                                                </xs:attribute>
-                                                                                                                               <xs:attribute name="alignwithAlignPanel"
-                                                                                                                                       type="xs:boolean" use="optional" default="true">
+                                                                                                                               <xs:attribute
+                                                                                                                                       name="alignwithAlignPanel" type="xs:boolean"
+                                                                                                                                       use="optional" default="true">
                                                                                                                                        <xs:annotation>
                                                                                                                                                <xs:documentation>
                                                                                                                                                        Flag
                                                                                                                                                </xs:documentation>
                                                                                                                                        </xs:annotation>
                                                                                                                                </xs:attribute>
-                                                                                                                               <xs:attribute name="colourwithAlignPanel"
-                                                                                                                                       type="xs:boolean" use="optional" default="false">
+                                                                                                                               <xs:attribute
+                                                                                                                                       name="colourwithAlignPanel" type="xs:boolean"
+                                                                                                                                       use="optional" default="false">
                                                                                                                                        <xs:annotation>
                                                                                                                                                <xs:documentation>
                                                                                                                                                        Flag
                                                                                                                                                </xs:documentation>
                                                                                                                                        </xs:annotation>
                                                                                                                                </xs:attribute>
-                                                                                                                               <xs:attribute name="colourByJmol" type="xs:boolean"
-                                                                                                                                       use="optional" default="true">
+                                                                                                                               <xs:attribute
+                                                                                                                                       name="colourByJmol" type="xs:boolean" use="optional"
+                                                                                                                                       default="true">
                                                                                                                                        <xs:annotation>
                                                                                                                                                <xs:documentation>
                                                                                                                                                        Flag
                                                                                                                                                </xs:documentation>
                                                                                                                                        </xs:annotation>
                                                                                                                                </xs:attribute>
-                                                                                                                               <xs:attribute name="type" type="xs:string"
-                                                                                                                                       use="optional">
+                                                                                                                               <xs:attribute
+                                                                                                                                       name="type" type="xs:string" use="optional">
                                                                                                                                        <xs:annotation>
                                                                                                                                                <xs:documentation>
                                                                                                                                                        An
                                                                        </xs:complexContent>
                                                                </xs:complexType>
                                                        </xs:element>
-                                                       <xs:element name="hiddenSequences" type="xs:int"
-                                                               minOccurs="0" maxOccurs="unbounded" />
-                                                       <xs:element name="rnaViewer" minOccurs="0" maxOccurs="unbounded">
+                                                       <xs:element name="hiddenSequences"
+                                                               type="xs:int" minOccurs="0" maxOccurs="unbounded" />
+                                                       <xs:element name="rnaViewer" minOccurs="0"
+                                                               maxOccurs="unbounded">
                                                                <xs:annotation>
-                                                                       <xs:documentation>Reference to a viewer showing RNA structure
-                                                                               for this sequence. Schema supports one viewer showing multiple
-                                                                               annotations for multiple sequences, though currently only one
-                                                                               annotation for one sequence (gapped or trimmed) is used
+                                                                       <xs:documentation>
+                                                                               Reference to a viewer showing
+                                                                               RNA structure for this sequence.
+                                                                               Schema supports one viewer
+                                                                               showing multiple annotations for
+                                                                               multiple sequences, though
+                                                                               currently only one annotation
+                                                                               for one sequence (gapped or
+                                                                               trimmed) is used
                                                                        </xs:documentation>
                                                                </xs:annotation>
                                                                <xs:complexType>
                                                                        <xs:sequence>
-                                                                               <xs:element name="secondaryStructure" minOccurs="1"
+                                                                               <xs:element
+                                                                                       name="secondaryStructure" minOccurs="1"
                                                                                        maxOccurs="unbounded">
                                                                                        <xs:complexType>
-                                                                                               <xs:attribute name="title" type="xs:string" />
-                                                                                               <xs:attribute name="annotationId" type="xs:string"
-                                                                                                       use="required">
+                                                                                               <xs:attribute
+                                                                                                       name="title" type="xs:string" />
+                                                                                               <xs:attribute
+                                                                                                       name="annotationId" type="xs:string" use="required">
                                                                                                        <xs:annotation>
-                                                                                                               <xs:documentation>id attribute of Annotation in
-                                                                                                                       vamsasModel for
-                                                                                                                       the secondary structure annotation shown
-                                                                                                                       in the viewer
+                                                                                                               <xs:documentation>
+                                                                                                                       id attribute
+                                                                                                                       of
+                                                                                                                       Annotation
+                                                                                                                       in
+                                                                                                                       vamsasModel
+                                                                                                                       for the
+                                                                                                                       secondary
+                                                                                                                       structure
+                                                                                                                       annotation
+                                                                                                                       shown in the
+                                                                                                                       viewer
                                                                                                                </xs:documentation>
                                                                                                        </xs:annotation>
                                                                                                </xs:attribute>
-                                                                                               <xs:attribute name="gapped" type="xs:boolean">
+                                                                                               <xs:attribute
+                                                                                                       name="gapped" type="xs:boolean">
                                                                                                        <xs:annotation>
-                                                                                                               <xs:documentation>if true the RNA structure is shown with gaps, if false without
+                                                                                                               <xs:documentation>
+                                                                                                                       if true the
+                                                                                                                       RNA
+                                                                                                                       structure is
+                                                                                                                       shown with
+                                                                                                                       gaps, if
+                                                                                                                       false
+                                                                                                                       without
                                                                                                                </xs:documentation>
                                                                                                        </xs:annotation>
                                                                                                </xs:attribute>
-                                                                                               <xs:attribute name="viewerState" type="xs:string">
+                                                                                               <xs:attribute
+                                                                                                       name="viewerState" type="xs:string">
                                                                                                        <xs:annotation>
-                                                                                                               <xs:documentation>name of the project jar entry that holds
-                                                                                                                       the VARNA viewer state for the structure
+                                                                                                               <xs:documentation>
+                                                                                                                       name of the
+                                                                                                                       project jar
+                                                                                                                       entry that
+                                                                                                                       holds the
+                                                                                                                       VARNA viewer
+                                                                                                                       state for
+                                                                                                                       the
+                                                                                                                       structure
                                                                                                                </xs:documentation>
                                                                                                        </xs:annotation>
                                                                                                </xs:attribute>
                                                                                        </xs:complexType>
                                                                                </xs:element>
                                                                        </xs:sequence>
-                                                                       <xs:attributeGroup ref="jv:swingwindow" />
-                                                                       <xs:attribute name="title" type="xs:string" />
-                                                                       <xs:attribute name="viewId" type="xs:string">
+                                                                       <xs:attributeGroup
+                                                                               ref="jv:swingwindow" />
+                                                                       <xs:attribute name="title"
+                                                                               type="xs:string" />
+                                                                       <xs:attribute name="viewId"
+                                                                               type="xs:string">
                                                                                <xs:annotation>
-                                                                                       <xs:documentation>An id unique to the RNA viewer panel
+                                                                                       <xs:documentation>
+                                                                                               An id unique to the RNA
+                                                                                               viewer panel
                                                                                        </xs:documentation>
                                                                                </xs:annotation>
                                                                        </xs:attribute>
-                                                                       <xs:attribute name="dividerLocation" type="xs:int">
+                                                                       <xs:attribute name="dividerLocation"
+                                                                               type="xs:int">
                                                                                <xs:annotation>
-                                                                                       <xs:documentation>horizontal position of split pane divider
+                                                                                       <xs:documentation>
+                                                                                               horizontal position of
+                                                                                               split pane divider
                                                                                        </xs:documentation>
                                                                                </xs:annotation>
                                                                        </xs:attribute>
-                                                                       <xs:attribute name="selectedRna" type="xs:int">
+                                                                       <xs:attribute name="selectedRna"
+                                                                               type="xs:int">
                                                                                <xs:annotation>
-                                                                                       <xs:documentation>Index of the selected structure in the
-                                                                                               viewer panel
+                                                                                       <xs:documentation>
+                                                                                               Index of the selected
+                                                                                               structure in the viewer
+                                                                                               panel
                                                                                        </xs:documentation>
                                                                                </xs:annotation>
                                                                        </xs:attribute>
index 333a4e4..5fd2bab 100755 (executable)
                                                <xs:attribute name="colour" type="xs:int" />
                                        </xs:complexType>
                                </xs:element>
+                               <xs:element name="contactmatrix" type="vamsas:MatrixType"
+                                       maxOccurs="unbounded" minOccurs="0">
+                               </xs:element>
                                <xs:element name="property" minOccurs="0" maxOccurs="unbounded">
                                        <xs:complexType>
                                                <xs:attribute name="name" type="xs:string" />
                <xs:attribute name="id" type="xs:string"/>
                <xs:attribute name="description" type="xs:string"/>
        </xs:complexType>
+       <xs:complexType name="MatrixType">
+       <xs:simpleContent><xs:extension base="xs:string">
+       <xs:attribute name="id" type="xs:string"/>
+       <xs:attribute name="type" type="xs:string" use="required"/>
+       <xs:attribute name="rows" type="xs:integer" use="required"/>
+       <xs:attribute name="cols" type="xs:integer" use="required"/>
+       </xs:extension>
+       </xs:simpleContent>
+       </xs:complexType>
+       
 </xs:schema>
index f6ccc6a..5849374 100644 (file)
@@ -66,6 +66,14 @@ public class ContactMapHolder implements ContactMapHolderI
   public void addContactListFor(AlignmentAnnotation annotation,
           ContactMatrixI cm)
   {
+    // update annotation with data from contact map
+    annotation.graphMin = cm.getMin();
+    annotation.graphMax = cm.getMax();
+    annotation.editable = false;
+    annotation.graph = AlignmentAnnotation.CONTACT_MAP;
+    annotation.calcId = cm.getType();
+    annotation.label = cm.getAnnotLabel();
+    annotation.description = cm.getAnnotDescr();
     contactmaps.put(annotation.annotationId, cm);
   }
 }
index b4f7c07..f2e207c 100644 (file)
@@ -1,7 +1,12 @@
 package jalview.datamodel;
 
+import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Spliterator;
+import java.util.StringTokenizer;
+
+import jalview.bin.Console;
 
 public abstract class ContactMatrix implements ContactMatrixI
 {
@@ -166,4 +171,53 @@ public abstract class ContactMatrix implements ContactMatrixI
   {
     return "Contact Matrix";
   }
+
+  public static String contactToFloatString(ContactMatrixI cm)
+  {
+    StringBuilder sb = new StringBuilder();
+    for (int c=0;c<cm.getWidth();c++)
+    {
+      ContactListI cl=cm.getContactList(c);
+      if (cl!=null) {
+      for (int h=0;h<=cl.getContactHeight();h++)
+      {
+        if (sb.length()>0) {
+          sb.append('\t');
+        }
+        sb.append(cl.getContactAt(h));
+      }
+      }
+    }
+    return sb.toString();
+  }
+
+  public static float[][] fromFloatStringToContacts(String values, int cols,
+          int rows)
+  {
+    float[][] vals = new float[cols][rows];
+    StringTokenizer tabsep = new StringTokenizer(values,""+'\t');
+    int c=0,r=0;
+    
+    while (tabsep.hasMoreTokens())
+    {
+      double elem = Double.valueOf(tabsep.nextToken());
+      vals[c][r++]=(float) elem;
+      if (r>=vals[c].length)
+      {
+        r=0;
+        c++;
+      }
+      if (c>=vals.length)
+      {
+        
+        break;
+      }
+    }
+    if (tabsep.hasMoreElements())
+    {
+      Console.warn("Ignoring additional elements for Float string to contact matrix parsing.");
+    }
+      
+    return vals;
+  }
 }
index d9afc7f..2367414 100644 (file)
@@ -23,4 +23,7 @@ public interface ContactMatrixI
    */
   String getType();
 
+  int getWidth();
+  int getHeight();
+
 }
index 0773e12..731948b 100644 (file)
@@ -106,4 +106,16 @@ public class SeqDistanceContactMatrix implements ContactMatrixI
   {
     return SEQUENCE_DISTANCE;
   }
+
+  @Override
+  public int getWidth()
+  {
+    return width;
+  }
+
+  @Override
+  public int getHeight()
+  {
+    return width;
+  }
 }
index de02939..e1ef021 100644 (file)
@@ -114,6 +114,19 @@ public class PContactPredictionFile extends AlignFile
             {
               return CONTACT_PREDICTION;
             }
+            @Override
+            public int getHeight()
+            {
+              // TODO Auto-generated method stub
+              // return maximum contact height 
+              return 0;
+            }@Override
+            public int getWidth()
+            {
+              // TODO Auto-generated method stub
+              // return total number of residues with contacts
+              return 0;
+            }
           };
           models.add(cm);
         }
@@ -133,6 +146,8 @@ public class PContactPredictionFile extends AlignFile
         cm.addContact(left, right, (float) strength);
       }
     }
+    // TODO COMPLETE
+    throw(new Error("Not Implemented yet."));
   }
 
   @Override
index 8d2efe0..2b1b687 100644 (file)
@@ -89,6 +89,8 @@ import jalview.datamodel.AlignedCodonFrame;
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
+import jalview.datamodel.ContactMatrix;
+import jalview.datamodel.ContactMatrixI;
 import jalview.datamodel.DBRefEntry;
 import jalview.datamodel.GeneLocus;
 import jalview.datamodel.GraphLine;
@@ -148,6 +150,7 @@ import jalview.viewmodel.ViewportRanges;
 import jalview.viewmodel.seqfeatures.FeatureRendererModel;
 import jalview.viewmodel.seqfeatures.FeatureRendererSettings;
 import jalview.viewmodel.seqfeatures.FeaturesDisplayed;
+import jalview.ws.datamodel.alphafold.PAEContactMatrix;
 import jalview.ws.jws2.Jws2Discoverer;
 import jalview.ws.jws2.dm.AAConSettings;
 import jalview.ws.jws2.jabaws2.Jws2Instance;
@@ -192,6 +195,7 @@ import jalview.xml.binding.jalview.JalviewUserColours.Colour;
 import jalview.xml.binding.jalview.MapListType.MapListFrom;
 import jalview.xml.binding.jalview.MapListType.MapListTo;
 import jalview.xml.binding.jalview.Mapping;
+import jalview.xml.binding.jalview.MatrixType;
 import jalview.xml.binding.jalview.NoValueColour;
 import jalview.xml.binding.jalview.ObjectFactory;
 import jalview.xml.binding.jalview.PcaDataType;
@@ -2289,6 +2293,22 @@ public class Jalview2XML
           line.setColour(annotation.getThreshold().colour.getRGB());
           an.setThresholdLine(line);
         }
+        if (annotation.graph==AlignmentAnnotation.CONTACT_MAP)
+        {
+          if (annotation.sequenceRef.getContactMaps()!=null)
+          {
+            ContactMatrixI cm = annotation.sequenceRef.getContactMatrixFor(annotation);
+            if (cm!=null)
+            {
+              MatrixType xmlmat = new MatrixType();
+              xmlmat.setType(cm.getType());
+              xmlmat.setRows(BigInteger.valueOf(cm.getWidth()));
+              xmlmat.setCols(BigInteger.valueOf(cm.getHeight()));
+              xmlmat.setValue(ContactMatrix.contactToFloatString(cm));
+              an.getContactmatrix().add(xmlmat);
+            }
+          }
+        }
       }
       else
       {
@@ -3902,6 +3922,40 @@ public class Jalview2XML
             jaa.setProperty(prop.getName(), prop.getValue());
           }
         }
+        if (jaa.graph == AlignmentAnnotation.CONTACT_MAP)
+        {
+          if (annotation.getContactmatrix() != null
+                  && annotation.getContactmatrix().size() > 0)
+          {
+            for (MatrixType xmlmat : annotation.getContactmatrix())
+            {
+              if (PAEContactMatrix.PAEMATRIX.equals(xmlmat.getType()))
+              {
+                if (!xmlmat.getRows().equals(xmlmat.getCols()))
+                {
+                  Console.error("Can't handle non square PAE Matrices");
+                }
+                else
+                {
+                  float[][] elements = ContactMatrix
+                          .fromFloatStringToContacts(xmlmat.getValue(),
+                                  xmlmat.getCols().intValue(),
+                                  xmlmat.getRows().intValue());
+
+                  PAEContactMatrix newpae = new PAEContactMatrix(
+                          jaa.sequenceRef, elements);
+                  jaa.sequenceRef.addContactListFor(jaa, newpae);
+                }
+              }
+              else
+              {
+                Console.error("Ignoring CONTACT_MAP annotation with type "
+                        + xmlmat.getType());
+              }
+            }
+          }
+        }
+
         if (jaa.autoCalculated)
         {
           autoAlan.add(new JvAnnotRow(i, jaa));
index 58a4a83..92d27a0 100644 (file)
@@ -78,6 +78,7 @@ public class PAEContactMatrix implements ContactMatrixI
       }
     }
     maxrow=matrix.length;
+    elements = matrix;
     
   }
 
@@ -167,7 +168,7 @@ public class PAEContactMatrix implements ContactMatrixI
       @Override
       public int getContactHeight()
       {
-        return maxcol - 1;
+        return maxcol-1;
       }
 
       @Override
@@ -224,4 +225,14 @@ public class PAEContactMatrix implements ContactMatrixI
   {
     return PAEMATRIX;
   }
+  @Override
+  public int getWidth()
+  {
+    return length;
+  }
+  @Override
+  public int getHeight()
+  {
+    return length;
+  }
 }
index 7c061d7..492bfab 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:09 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index 2791f66..5faed76 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:09 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index 3e9d660..5d805e2 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:09 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index 6b8b2ea..a4a56ac 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:09 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index 4aa7e5e..9d68a83 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:09 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index bee5c06..63a8c00 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index 8c07465..0dd0c99 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
@@ -42,6 +42,7 @@ import javax.xml.bind.annotation.XmlType;
  *             &lt;/complexContent>
  *           &lt;/complexType>
  *         &lt;/element>
+ *         &lt;element name="contactmatrix" type="{www.vamsas.ac.uk/jalview/version2}MatrixType" maxOccurs="unbounded" minOccurs="0"/>
  *         &lt;element name="property" maxOccurs="unbounded" minOccurs="0">
  *           &lt;complexType>
  *             &lt;complexContent>
@@ -83,6 +84,7 @@ import javax.xml.bind.annotation.XmlType;
     "label",
     "description",
     "thresholdLine",
+    "contactmatrix",
     "property"
 })
 @XmlRootElement(name = "Annotation")
@@ -93,6 +95,7 @@ public class Annotation {
     protected String label;
     protected String description;
     protected Annotation.ThresholdLine thresholdLine;
+    protected List<MatrixType> contactmatrix;
     protected List<Annotation.Property> property;
     @XmlAttribute(name = "graph", required = true)
     protected boolean graph;
@@ -231,6 +234,35 @@ public class Annotation {
     }
 
     /**
+     * Gets the value of the contactmatrix property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the contactmatrix property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getContactmatrix().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link MatrixType }
+     * 
+     * 
+     */
+    public List<MatrixType> getContactmatrix() {
+        if (contactmatrix == null) {
+            contactmatrix = new ArrayList<MatrixType>();
+        }
+        return this.contactmatrix;
+    }
+
+    /**
      * Gets the value of the property property.
      * 
      * <p>
index 522d9c6..17d55ce 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index 99d82a7..40fdc11 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index 77c6bb7..9bcdde4 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index f1dad96..c4cc54a 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index dac24c4..d1491a0 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index 8a30d89..5368a64 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index a902a83..7a2a052 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index a95d432..57a5796 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index 2de1eba..518d8ff 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index 21abacb..a1994be 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index 99c5b4b..e6f0b6f 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index e898ca2..3b8ba23 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index 0eb5a86..54c1d75 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index 8b38877..367ed50 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
@@ -275,6 +275,14 @@ public class ObjectFactory {
     }
 
     /**
+     * Create an instance of {@link MatrixType }
+     * 
+     */
+    public MatrixType createMatrixType() {
+        return new MatrixType();
+    }
+
+    /**
      * Create an instance of {@link Annotation.Property }
      * 
      */
index b261199..a98326a 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index fd2e336..3e686fb 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index 6a199a2..59c7d39 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index ed2c120..075d82b 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index cb7fa05..bc9649b 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index 49c2dd2..3d8b492 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index d697534..b12aa27 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index 1935391..64b7c35 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 
index 338e645..56339f7 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:08 PM GMT 
+// Generated on: 2023.02.22 at 05:27:55 PM GMT 
 //
 
 @javax.xml.bind.annotation.XmlSchema(namespace = "www.vamsas.ac.uk/jalview/version2", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
index b07b8e2..c4a231a 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 7dc9df3..0a99cff 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 8766f7a..34e2a6f 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index e1b1db1..2605fcf 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 9bfde39..c774562 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 8ca1da7..7424da7 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 44566fe..88aaf7a 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 371a778..e3870ea 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index def955e..8d8f9d0 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 0a6f7fe..e4aa4cc 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 9a04acc..7fdc013 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 8b69d3d..722c376 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 24285cb..f198fed 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 070e48e..b85f402 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 9a0e97a..5e636cd 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 33710ef..a782347 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 3f1a75f..a5a2146 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 5d7e7e9..0fd27de 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index b7657f8..57a5a55 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index c316941..6a79d3a 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 324ef9f..12151f4 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 5e82f4f..017e233 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index ca8ad97..6e8fdb2 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 4639054..dfc88ae 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index b01e412..dd09ace 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 25d6030..ffec70a 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index b1ab0f3..aa1c388 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 73f4c21..32c8aae 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index f3d0e80..45309f5 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 0e84d09..8e05607 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index afd4647..a277dbb 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index cddff7f..08b7fe6 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index f66020c..796b9fd 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 012d588..be6f86f 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 8411265..f0ae4fd 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index 77765a7..657157b 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index a18d58b..9860147 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 
index b8a8636..7c68798 100644 (file)
@@ -2,7 +2,7 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.01.31 at 04:07:10 PM GMT 
+// Generated on: 2023.02.22 at 05:27:56 PM GMT 
 //
 
 @javax.xml.bind.annotation.XmlSchema(namespace = "http://uniprot.org/uniprot", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
index 6281c29..510b21d 100644 (file)
@@ -55,6 +55,7 @@ import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.Annotation;
 import jalview.datamodel.ContactListI;
+import jalview.datamodel.ContactMatrix;
 import jalview.datamodel.ContactMatrixI;
 import jalview.datamodel.DBRefEntry;
 import jalview.datamodel.GeneLocus;
@@ -1547,7 +1548,9 @@ public class Jalview2xmlTests extends Jalview2xmlBase
     AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
             ">seq1\nMATRSQFLVNF\n", DataSourceType.PASTE);
     AlignmentI al = af.getViewport().getAlignment();
-    SequenceI sq = al.getSequenceAt(0);
+    // PAE matrices are added as reference annotation to the dataset sequence
+    // at least for now.
+    SequenceI sq = al.getSequenceAt(0).getDatasetSequence();
     int i = sq.getLength();
     float[][] paevals = new float[i][i];
     for (i = i - 1; i >= 0; i--)
@@ -1560,6 +1563,11 @@ public class Jalview2xmlTests extends Jalview2xmlBase
       }
     }
     PAEContactMatrix dummyMat = new PAEContactMatrix(sq, paevals);
+    String content = ContactMatrix.contactToFloatString(dummyMat);
+    Assert.assertTrue(content.contains("\t1.")); // at least one element must be 1
+    float[][] vals = ContactMatrix.fromFloatStringToContacts(content, sq.getLength(), sq.getLength());
+    assertEquals(vals[3][4],paevals[3][4]);
+    
     AlignmentAnnotation paeCm = sq.addContactList(dummyMat);
     al.addAnnotation(paeCm);
     File tfile = File.createTempFile("testStoreAndRecoverPAEmatrix",
@@ -1570,15 +1578,15 @@ public class Jalview2xmlTests extends Jalview2xmlBase
     af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
             DataSourceType.FILE);
     AlignmentI newAl = af.getViewport().getAlignment();
-    SequenceI newSeq = newAl.getSequenceAt(0);
+    SequenceI newSeq = newAl.getSequenceAt(0).getDatasetSequence();
     // check annotation of the expected type exists
     Assert.assertEquals(newSeq.getAnnotation().length, 1);
     Assert.assertEquals(newSeq.getAnnotation()[0].graph, paeCm.graph);
 
     // check a contact matrix was recovered
     Assert.assertEquals(newSeq.getContactMaps().size(), 1);
-    // and can be found for the annotation
-    ContactMatrixI restoredMat = al
+    // and can be found for the annotation on the sequence
+    ContactMatrixI restoredMat = newSeq
             .getContactMatrixFor(newSeq.getAnnotation()[0]);
     Assert.assertNotNull(restoredMat);
     for (i = sq.getLength() - 1; i >= 0; i--)
@@ -1590,6 +1598,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase
         Assert.assertEquals(oldCM.getContactAt(j), newCM.getContactAt(j));
       }
     }
+    
   }
 
 }