Note this also generates code for included schemas
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vamsas="www.vamsas.ac.uk/jalview/version2" targetNamespace="www.vamsas.ac.uk/jalview/version2" elementFormDefault="qualified" attributeFormDefault="unqualified">
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:vamsas="www.vamsas.ac.uk/jalview/version2"
+ targetNamespace="www.vamsas.ac.uk/jalview/version2"
+ elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:complexType name="VAMSAS">
<xs:sequence>
- <xs:element name="Tree" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element ref="vamsas:SequenceSet" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Tree" type="xs:string" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xs:element ref="vamsas:SequenceSet" minOccurs="0"
+ maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="mapListType">
<xs:annotation>
- <xs:documentation>
- developed after mapRangeType from http://www.vamsas.ac.uk/schemas/1.0/vamsasTypes
+ <xs:documentation>
+ developed after mapRangeType from
+ http://www.vamsas.ac.uk/schemas/1.0/vamsasTypes
</xs:documentation>
<xs:documentation>
- This effectively represents a java.util.MapList object
+ This effectively represents a java.util.MapList
+ object
</xs:documentation>
</xs:annotation>
<xs:sequence>
- <xs:element name="mapListFrom" minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="mapListFrom" minOccurs="0"
+ maxOccurs="unbounded">
<xs:annotation>
- <xs:documentation> a region from start to end inclusive</xs:documentation>
+ <xs:documentation> a region from start to end inclusive
+ </xs:documentation>
</xs:annotation>
<xs:complexType>
- <xs:attribute name="start" type="xs:int" use="required"/>
- <xs:attribute name="end" type="xs:int" use="required"/>
+ <xs:attribute name="start" type="xs:int"
+ use="required" />
+ <xs:attribute name="end" type="xs:int" use="required" />
</xs:complexType>
- </xs:element>
- <xs:element name="mapListTo" minOccurs="0" maxOccurs="unbounded">
+ </xs:element>
+ <xs:element name="mapListTo" minOccurs="0"
+ maxOccurs="unbounded">
<xs:annotation>
- <xs:documentation> a region from start to end inclusive</xs:documentation>
+ <xs:documentation> a region from start to end inclusive
+ </xs:documentation>
</xs:annotation>
<xs:complexType>
- <xs:attribute name="start" type="xs:int" use="required"/>
- <xs:attribute name="end" type="xs:int" use="required"/>
+ <xs:attribute name="start" type="xs:int"
+ use="required" />
+ <xs:attribute name="end" type="xs:int" use="required" />
</xs:complexType>
- </xs:element>
+ </xs:element>
</xs:sequence>
- <xs:attribute name="mapFromUnit" type="xs:positiveInteger" use="required">
+ <xs:attribute name="mapFromUnit"
+ type="xs:positiveInteger" use="required">
<xs:annotation>
- <xs:documentation>number of dictionary symbol widths involved in each
- mapped position on this sequence (for example, 3 for a dna sequence exon
- region that is being mapped to a protein sequence). This is optional,
- since the unit can be usually be inferred from the dictionary type of
- each sequence involved in the mapping. </xs:documentation>
+ <xs:documentation>number of dictionary symbol widths involved in
+ each
+ mapped position on this sequence (for example, 3 for a dna
+ sequence exon
+ region that is being mapped to a protein sequence).
+ This is optional,
+ since the unit can be usually be inferred from the
+ dictionary type of
+ each sequence involved in the mapping.
+ </xs:documentation>
</xs:annotation>
</xs:attribute>
- <xs:attribute name="mapToUnit" type="xs:positiveInteger" use="required">
+ <xs:attribute name="mapToUnit" type="xs:positiveInteger"
+ use="required">
<xs:annotation>
- <xs:documentation>number of dictionary symbol widths involved in each
- mapped position on this sequence (for example, 3 for a dna sequence exon
- region that is being mapped to a protein sequence). This is optional,
- since the unit can be usually be inferred from the dictionary type of
- each sequence involved in the mapping. </xs:documentation>
+ <xs:documentation>number of dictionary symbol widths involved in
+ each
+ mapped position on this sequence (for example, 3 for a dna
+ sequence exon
+ region that is being mapped to a protein sequence).
+ This is optional,
+ since the unit can be usually be inferred from the
+ dictionary type of
+ each sequence involved in the mapping.
+ </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType>
<xs:annotation>
<xs:documentation>
- Represent the jalview.datamodel.Mapping object - it also provides
- a way of storing sequences that are mapped 'to' without adding them
- to the sequence set (which will mean they are then added to the alignment too).
+ Represent the jalview.datamodel.Mapping object -
+ it also provides
+ a way of storing sequences that are mapped 'to'
+ without adding them
+ to the sequence set (which will mean they are
+ then added to the alignment too).
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="vamsas:mapListType">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="1">
- <xs:element ref="vamsas:Sequence"/>
+ <xs:element ref="vamsas:Sequence" />
<xs:element name="dseqFor">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:annotation>
- <xs:documentation>The sequence whose dataset sequence is to be referenced here</xs:documentation>
+ <xs:documentation>The sequence whose dataset sequence is to
+ be referenced here
+ </xs:documentation>
</xs:annotation>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:choice>
</xs:sequence>
- <xs:attribute name="mappingType" type="xs:string" use="optional">
+ <xs:attribute name="mappingType" type="xs:string"
+ use="optional">
<xs:annotation>
- <xs:documentation>Biotype of the mapping e.g. CdsToPeptide</xs:documentation>
+ <xs:documentation>Biotype of the mapping e.g. CdsToPeptide
+ </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
- </xs:complexContent>
+ </xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="AlcodonFrame">
<xs:complexType>
<xs:sequence>
- <xs:element name="alcodon" minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="alcodon" minOccurs="0"
+ maxOccurs="unbounded">
<xs:complexType>
<xs:annotation>
<xs:documentation>
- specifies a series of aligned codons from an associated DNA sequence alignment that when translated correspond to columns of a peptide alignment.
- Element may have either all pos1,2,3 attributes specified, or none at all (indicating a gapped column with no translated peptide).
+ specifies a series of aligned codons from an
+ associated DNA sequence alignment that when translated
+ correspond to columns of a peptide alignment.
+ Element may have
+ either all pos1,2,3 attributes specified, or none at all
+ (indicating a gapped column with no translated peptide).
</xs:documentation>
</xs:annotation>
- <xs:attribute name="pos1" type="xs:integer" use="optional"/>
- <xs:attribute name="pos2" type="xs:integer" use="optional"/>
- <xs:attribute name="pos3" type="xs:integer" use="optional"/>
+ <xs:attribute name="pos1" type="xs:integer"
+ use="optional" />
+ <xs:attribute name="pos2" type="xs:integer"
+ use="optional" />
+ <xs:attribute name="pos3" type="xs:integer"
+ use="optional" />
</xs:complexType>
</xs:element>
- <xs:element name="alcodMap" minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="alcodMap" minOccurs="0"
+ maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
- <xs:element ref="vamsas:Mapping" maxOccurs="1" minOccurs="1">
+ <xs:element ref="vamsas:Mapping" maxOccurs="1"
+ minOccurs="1">
<xs:annotation>
<xs:documentation>
- a Mapping entry and an associated protein sequence
+ a Mapping entry and an associated protein
+ sequence
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
- <xs:attribute name="dnasq" type="xs:string" use="required">
+ <xs:attribute name="dnasq" type="xs:string"
+ use="required">
<xs:annotation>
<xs:documentation>
- internal jalview id for the dnasq for this mapping.
+ internal jalview id for the dnasq for this
+ mapping.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
-
+
</xs:element>
-
+
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexContent>
<xs:extension base="vamsas:SequenceType">
<xs:sequence>
- <xs:element name="DBRef" minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="DBRef" minOccurs="0"
+ maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
- <xs:element ref="vamsas:Mapping" minOccurs="0" maxOccurs="1"/>
- </xs:sequence>
- <xs:attribute name="source" type="xs:string"/>
- <xs:attribute name="version" type="xs:string"/>
- <xs:attribute name="accessionId" type="xs:string"/>
- <xs:attribute name="locus" type="xs:boolean" default="false">
+ <xs:element ref="vamsas:Mapping" minOccurs="0"
+ maxOccurs="1" />
+ </xs:sequence>
+ <xs:attribute name="source" type="xs:string" />
+ <xs:attribute name="version" type="xs:string" />
+ <xs:attribute name="accessionId" type="xs:string" />
+ <xs:attribute name="locus" type="xs:boolean"
+ default="false">
<xs:annotation>
<xs:documentation>
- true for gene locus mapping, source=species, version=assembly, accession=chromosome
+ true for gene locus mapping, source=species,
+ version=assembly, accession=chromosome
</xs:documentation>
</xs:annotation>
</xs:attribute>
- <xs:attribute name="canonical" type="xs:boolean" default="false">
+ <xs:attribute name="canonical" type="xs:boolean"
+ default="false">
<xs:annotation>
<xs:documentation>
- true for the representative accession for databases where multiple accessions map to the same entry (eg. Uniprot)
+ true for the representative accession for
+ databases where multiple accessions map to the same entry
+ (eg. Uniprot)
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
- <xs:attribute name="dsseqid" type="xs:string" use="optional">
+ <xs:attribute name="dsseqid" type="xs:string"
+ use="optional">
<xs:annotation>
<xs:documentation>
- dataset sequence id for this sequence. Will be created as union of sequences.
+ dataset sequence id for this sequence. Will be
+ created as union of sequences.
</xs:documentation>
</xs:annotation>
</xs:attribute>
- <xs:attribute name="biotype" type="xs:string" use="optional">
+ <xs:attribute name="biotype" type="xs:string"
+ use="optional">
<xs:annotation>
<xs:documentation>
Biotype of the sequence (if known)
<xs:attribute name="colour" type="xs:int" />
</xs:complexType>
</xs:element>
- <xs:element name="contactmatrix" type="vamsas:MatrixType"
- maxOccurs="unbounded" minOccurs="0">
+ <xs:element name="contactmatrix"
+ type="vamsas:MapOnAMatrixType" maxOccurs="unbounded" minOccurs="0">
</xs:element>
- <xs:element name="property" type="vamsas:property" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="property" type="vamsas:property"
+ minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
- <xs:attribute name="graph" type="xs:boolean" use="required" />
- <xs:attribute name="graphType" type="xs:int" use="optional" />
+ <xs:attribute name="graph" type="xs:boolean"
+ use="required" />
+ <xs:attribute name="graphType" type="xs:int"
+ use="optional" />
<xs:attribute name="sequenceRef" type="xs:string"
use="optional" />
<xs:attribute name="groupRef" type="xs:string"
use="optional" />
<xs:attribute name="graphGroup" type="xs:int"
use="optional" />
- <xs:attribute name="graphHeight" type="xs:int" use="optional">
- <xs:annotation><xs:documentation>height in pixels for the graph if this is a graph-type annotation.</xs:documentation></xs:annotation></xs:attribute>
+ <xs:attribute name="graphHeight" type="xs:int"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation>height in pixels for the graph if this is a
+ graph-type annotation.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
<xs:attribute name="id" type="xs:string" use="optional" />
<xs:attribute name="scoreOnly" type="xs:boolean"
use="optional" default="false" />
- <xs:attribute name="score" type="xs:double" use="optional" />
+ <xs:attribute name="score" type="xs:double"
+ use="optional" />
<xs:attribute name="visible" type="xs:boolean"
use="optional" />
<xs:attribute name="centreColLabels" type="xs:boolean"
use="optional" />
- <xs:attribute name="autoCalculated" type="xs:boolean" use="optional" default="false">
- <xs:annotation><xs:documentation>is an autocalculated annotation row</xs:documentation>
- </xs:annotation></xs:attribute>
- <xs:attribute name="belowAlignment" type="xs:boolean" use="optional" default="true">
- <xs:annotation><xs:documentation>is to be shown below the alignment - introduced in Jalview 2.8 for visualizing T-COFFEE alignment scores</xs:documentation></xs:annotation></xs:attribute>
- <xs:attribute name="calcId" type="xs:string" use="optional">
- <xs:annotation><xs:documentation>Optional string identifier used to group sets of annotation produced by a particular calculation. Values are opaque strings but have semantic meaning to Jalview's renderer, data importer and calculation system.</xs:documentation></xs:annotation>
+ <xs:attribute name="autoCalculated" type="xs:boolean"
+ use="optional" default="false">
+ <xs:annotation>
+ <xs:documentation>is an autocalculated annotation row
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="belowAlignment" type="xs:boolean"
+ use="optional" default="true">
+ <xs:annotation>
+ <xs:documentation>is to be shown below the alignment - introduced
+ in Jalview 2.8 for visualizing T-COFFEE alignment scores
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="calcId" type="xs:string"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation>Optional string identifier used to group sets of
+ annotation produced by a particular calculation. Values are opaque
+ strings but have semantic meaning to Jalview's renderer, data
+ importer and calculation system.
+ </xs:documentation>
+ </xs:annotation>
</xs:attribute>
</xs:complexType>
- </xs:element>
+ </xs:element>
<xs:element name="SequenceSet">
<xs:complexType>
<xs:sequence>
- <xs:element ref="vamsas:Sequence" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element ref="vamsas:Annotation" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="sequenceSetProperties" minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="vamsas:Sequence" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xs:element ref="vamsas:Annotation" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xs:element name="sequenceSetProperties" minOccurs="0"
+ maxOccurs="unbounded">
<xs:complexType>
- <xs:attribute name="key" type="xs:string"/>
- <xs:attribute name="value" type="xs:string"/>
+ <xs:attribute name="key" type="xs:string" />
+ <xs:attribute name="value" type="xs:string" />
</xs:complexType>
</xs:element>
- <xs:element ref="vamsas:AlcodonFrame" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="Matrices" type="vamsas:MatrixType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="vamsas:AlcodonFrame" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xs:element name="Matrices" type="vamsas:MatrixType"
+ minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Matrices referred to by this set of sequences.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
</xs:sequence>
- <xs:attribute name="gapChar" type="xs:string" use="required"/>
- <xs:attribute name="datasetId" type="xs:string" use="optional">
+ <xs:attribute name="gapChar" type="xs:string"
+ use="required" />
+ <xs:attribute name="datasetId" type="xs:string"
+ use="optional">
<xs:annotation>
<xs:documentation>
- reference to set where jalview will gather the dataset sequences for all sequences in the set.
+ reference to set where jalview will gather the
+ dataset sequences for all sequences in the set.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:element name="annotationElement">
<xs:complexType>
<xs:sequence>
- <xs:element name="displayCharacter" type="xs:string" minOccurs="0"/>
- <xs:element name="description" type="xs:string" minOccurs="0"/>
+ <xs:element name="displayCharacter" type="xs:string"
+ minOccurs="0" />
+ <xs:element name="description" type="xs:string"
+ minOccurs="0" />
<xs:element name="secondaryStructure" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
- <xs:length value="1"/>
+ <xs:length value="1" />
</xs:restriction>
</xs:simpleType>
</xs:element>
- <xs:element name="value" type="xs:float" minOccurs="0"/>
+ <xs:element name="value" type="xs:float" minOccurs="0" />
</xs:sequence>
- <xs:attribute name="position" type="xs:int" use="required"/>
- <xs:attribute name="colour" type="xs:int" use="optional"/>
+ <xs:attribute name="position" type="xs:int"
+ use="required" />
+ <xs:attribute name="colour" type="xs:int" use="optional" />
</xs:complexType>
</xs:element>
<xs:complexType name="SequenceType">
<xs:sequence>
- <xs:element name="sequence" type="xs:string" minOccurs="0"/>
- <xs:element name="name" type="xs:string" minOccurs="0"/>
+ <xs:element name="sequence" type="xs:string" minOccurs="0" />
+ <xs:element name="name" type="xs:string" minOccurs="0" />
</xs:sequence>
- <xs:attribute name="id" type="xs:string"/>
- <xs:attribute name="description" type="xs:string"/>
+ <xs:attribute name="id" type="xs:string" />
+ <xs:attribute name="description" type="xs:string" />
</xs:complexType>
<xs:complexType name="MatrixType">
+ <xs:annotation>
+ <xs:documentation>Represents matrix data imported to Jalview, and the
+ results of any derived calculations (independent of a particular
+ view
+ on the matrix).
+ </xs:documentation>
+ </xs:annotation>
<xs:sequence>
<xs:element name="elements" type="xs:string" minOccurs="1"
maxOccurs="1">
<xs:annotation>
<xs:documentation>serialised representation of matrix as one or
- more sets of comma separated values</xs:documentation>
+ more sets of comma separated values
+ </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="groups" type="xs:string" minOccurs="0"
</xs:element>
<xs:element name="property" type="vamsas:property"
minOccurs="0" maxOccurs="unbounded" />
- <xs:element name="mapping" type="vamsas:mapListType"
- minOccurs="0" maxOccurs="1">
- <xs:annotation>
- <xs:documentation>mapping from the matrix row and column positions to
- associated reference frame</xs:documentation>
- </xs:annotation>
- </xs:element>
</xs:sequence>
<xs:attribute name="type" type="xs:string" use="required" />
</xs:complexType>
<xs:complexType name="MapOnAMatrixType">
+ <xs:annotation>
+ <xs:documentation>Defines a mapping from the local frame to a matrix
+ and its associated data specified by MatrixType
+ </xs:documentation>
+ </xs:annotation>
<xs:sequence>
<xs:element name="property" type="vamsas:property"
minOccurs="0" maxOccurs="unbounded" />
</xs:annotation>
</xs:element>
</xs:sequence>
-
+
<xs:attribute name="matrix" type="xs:string"
use="required">
-
+
<xs:annotation>
<xs:documentation>reference to the matrix type this Map refers to
</xs:documentation>
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="value" type="xs:string" />
</xs:complexType>
-
-
+
+
</xs:schema>
import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
+import jalview.datamodel.ContactListI;
import jalview.datamodel.ContactMatrix;
import jalview.datamodel.ContactMatrixI;
import jalview.datamodel.DBRefEntry;
+import jalview.datamodel.FloatContactMatrix;
import jalview.datamodel.GeneLocus;
import jalview.datamodel.GraphLine;
import jalview.datamodel.GroupSet;
+import jalview.datamodel.GroupSetI;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.Point;
import jalview.datamodel.RnaViewerModel;
import jalview.xml.binding.jalview.MapListType;
import jalview.xml.binding.jalview.MapListType.MapListFrom;
import jalview.xml.binding.jalview.MapListType.MapListTo;
+import jalview.xml.binding.jalview.MapOnAMatrixType;
import jalview.xml.binding.jalview.Mapping;
import jalview.xml.binding.jalview.MatrixType;
import jalview.xml.binding.jalview.NoValueColour;
{
String cmId = contactMatrices.get(cm);
MatrixType xmlmat=null;
- if (cmId==null)
+
+ // first create an xml ref for the matrix data, if none exist
+ if (cmId == null)
{
-xmlmat = new MatrixType();
- xmlmat.setType(cm.getType());
- xmlmat.setRows(BigInteger.valueOf(cm.getWidth()));
- xmlmat.setCols(BigInteger.valueOf(cm.getHeight()));
- // consider using an opaque to/from -> allow instance to control
- // its representation ?
- xmlmat.setElements(ContactMatrix.contactToFloatString(cm));
- if (cm.hasGroups())
- {
- for (BitSet gp : cm.getGroups())
+ xmlmat = new MatrixType();
+ xmlmat.setType(cm.getType());
+ xmlmat.setRows(BigInteger.valueOf(cm.getWidth()));
+ xmlmat.setCols(BigInteger.valueOf(cm.getHeight()));
+ // consider using an opaque to/from -> allow instance to control
+ // its representation ?
+ xmlmat.setElements(ContactMatrix.contactToFloatString(cm));
+ if (cm.hasGroups())
{
- xmlmat.getGroups().add(stringifyBitset(gp));
+ for (BitSet gp : cm.getGroups())
+ {
+ xmlmat.getGroups().add(stringifyBitset(gp));
+ }
}
- }
- if (cm.hasTree())
- {
- // provenance object for tree ?
- xmlmat.getNewick().add(cm.getNewick());
- xmlmat.setTreeMethod(cm.getTreeMethod());
- }
- if (cm.hasCutHeight())
- {
- xmlmat.setCutHeight(cm.getCutHeight());
- }
- xmlmat.setId(makeHashCode(cm, cm.get));
+ if (cm.hasTree())
+ {
+ // provenance object for tree ?
+ xmlmat.getNewick().add(cm.getNewick());
+ xmlmat.setTreeMethod(cm.getTreeMethod());
+ }
+ if (cm.hasCutHeight())
+ {
+ xmlmat.setCutHeight(cm.getCutHeight());
+ }
+ xmlmat.setId(cmId = makeHashCode(cm, null));
+ contactMatrices.put(cm, cmId);
+ contactMatrixRefs.put(cmId, cm);
root.getMatrices().add(xmlmat);
}
- else {
-
- }
- // set/get properties
+
+ // now store mapping
+
+ MapOnAMatrixType xmlmatmapping = new MapOnAMatrixType();
+ xmlmatmapping.setMatrix(cmId);
+
+ // Pretty much all matrices currently managed in this way are
+ // mappableContactMatrixI implementations - but check anyway
if (cm instanceof MappableContactMatrixI)
{
jalview.util.MapList mlst = ((MappableContactMatrixI) cm)
// mp.addMapListTo(mto);
mp.getMapListTo().add(mto);
}
- mp.setMapFromUnit(
- BigInteger.valueOf(mlst.getFromRatio()));
+ mp.setMapFromUnit(BigInteger.valueOf(mlst.getFromRatio()));
mp.setMapToUnit(BigInteger.valueOf(mlst.getToRatio()));
- xmlmat.setMapping(mp);
+ xmlmatmapping.setMapping(mp);
}
}
// and add to model
- an.getContactmatrix().add(xmlmat);
+ an.getContactmatrix().add(xmlmatmapping);
}
private String stringifyBitset(BitSet gp)
}
// ////////////////////////////////
+ // LOAD MATRICES (IF ANY)
+
+ if (vamsasSet.getMatrices()!=null && vamsasSet.getMatrices().size()>0)
+ {
+ importMatrixData(vamsasSet.getMatrices());
+ }
+
+ // ////////////////////////////////
// LOAD SEQUENCES
List<SequenceI> hiddenSeqs = null;
if (annotation.getContactmatrix() != null
&& annotation.getContactmatrix().size() > 0)
{
- for (MatrixType xmlmat : annotation.getContactmatrix())
+ for (MapOnAMatrixType 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.getElements(),
- xmlmat.getCols().intValue(),
- xmlmat.getRows().intValue());
- jalview.util.MapList mapping = null;
- if (xmlmat.getMapping() != null)
- {
- MapListType m = xmlmat.getMapping();
- // Mapping m = dr.getMapping();
- int fr[] = new int[m.getMapListFrom().size() * 2];
- Iterator<MapListFrom> from = m.getMapListFrom()
- .iterator();// enumerateMapListFrom();
- for (int _i = 0; from.hasNext(); _i += 2)
- {
- MapListFrom mf = from.next();
- fr[_i] = mf.getStart();
- fr[_i + 1] = mf.getEnd();
- }
- int fto[] = new int[m.getMapListTo().size() * 2];
- Iterator<MapListTo> to = m.getMapListTo().iterator();// enumerateMapListTo();
- for (int _i = 0; to.hasNext(); _i += 2)
- {
- MapListTo mf = to.next();
- fto[_i] = mf.getStart();
- fto[_i + 1] = mf.getEnd();
- }
-
- mapping = new jalview.util.MapList(fr, fto,
- m.getMapFromUnit().intValue(),
- m.getMapToUnit().intValue());
- }
- List<BitSet> newgroups = new ArrayList<BitSet>();
- if (xmlmat.getGroups().size() > 0)
- {
- for (String sgroup : xmlmat.getGroups())
- {
- newgroups.add(deStringifyBitset(sgroup));
- }
- }
- String nwk = xmlmat.getNewick().size() > 0
- ? xmlmat.getNewick().get(0)
- : null;
- if (xmlmat.getNewick().size() > 1)
- {
- Console.log.info(
- "Ignoring additional clusterings for contact matrix");
- }
- String treeMethod = xmlmat.getTreeMethod();
- double thresh = xmlmat.getCutHeight() != null
- ? xmlmat.getCutHeight()
- : 0;
- GroupSet grpset = new GroupSet();
- grpset.restoreGroups(newgroups, treeMethod, nwk, thresh);
- PAEContactMatrix newpae = new PAEContactMatrix(
- jaa.sequenceRef, mapping, elements, grpset);
- jaa.sequenceRef.addContactListFor(jaa, newpae);
- }
- }
- else
- {
- Console.error("Ignoring CONTACT_MAP annotation with type "
- + xmlmat.getType());
- }
- }
+ restoreMatrixFor(jaa.sequenceRef, jaa, xmlmat);
+ }
}
}
return af;
}
+ private void importMatrixData(List<MatrixType> xmlmatrices)
+ {
+ for (MatrixType xmlmat:xmlmatrices)
+ {
+ if (!PAEContactMatrix.PAEMATRIX.equals(xmlmat.getType()))
+ {
+ Console.error("Ignoring matrix '"+xmlmat.getId()+"' of type '"+xmlmat.getType());
+ continue;
+ }
+
+ if (!xmlmat.getRows().equals(xmlmat.getCols()))
+ {
+ Console.error("Can't handle non square matrices");
+ continue;
+ }
+
+ float[][] elements = ContactMatrix
+ .fromFloatStringToContacts(xmlmat.getElements(),
+ xmlmat.getCols().intValue(),
+ xmlmat.getRows().intValue());
+
+ List<BitSet> newgroups = new ArrayList<BitSet>();
+ if (xmlmat.getGroups().size() > 0)
+ {
+ for (String sgroup : xmlmat.getGroups())
+ {
+ newgroups.add(deStringifyBitset(sgroup));
+ }
+ }
+ String nwk = xmlmat.getNewick().size() > 0
+ ? xmlmat.getNewick().get(0)
+ : null;
+ if (xmlmat.getNewick().size() > 1)
+ {
+ Console.log.info(
+ "Ignoring additional clusterings for contact matrix");
+ }
+ String treeMethod = xmlmat.getTreeMethod();
+ double thresh = xmlmat.getCutHeight() != null
+ ? xmlmat.getCutHeight()
+ : 0;
+ GroupSet grpset = new GroupSet();
+ grpset.restoreGroups(newgroups, treeMethod, nwk, thresh);
+
+ FloatContactMatrix newcm = new FloatContactMatrix(elements, grpset);
+ contactMatrixRefs.put(xmlmat.getId(), newcm);
+ Console.trace("Restored base contact matrix "+xmlmat.getId());
+ }
+ }
+
+ private void restoreMatrixFor(SequenceI sequenceRef,
+ AlignmentAnnotation jaa, MapOnAMatrixType xmlmatmapping)
+ {
+ MatrixType xmlmat;
+
+ // locate matrix data in project XML and import
+ ContactMatrixI cm = contactMatrixRefs.get(xmlmatmapping.getMatrix());
+ if (cm == null)
+ {
+ Console.error("Cannot restore mapping to matrix "
+ + xmlmatmapping.getMatrix() + " - not found in project.");
+ }
+
+ // restore mapping data to matrix data
+ jalview.util.MapList mapping = null;
+ if (xmlmatmapping.getMapping() != null)
+ {
+ MapListType m = xmlmatmapping.getMapping();
+ // Mapping m = dr.getMapping();
+ int fr[] = new int[m.getMapListFrom().size() * 2];
+ Iterator<MapListFrom> from = m.getMapListFrom().iterator();// enumerateMapListFrom();
+ for (int _i = 0; from.hasNext(); _i += 2)
+ {
+ MapListFrom mf = from.next();
+ fr[_i] = mf.getStart();
+ fr[_i + 1] = mf.getEnd();
+ }
+ int fto[] = new int[m.getMapListTo().size() * 2];
+ Iterator<MapListTo> to = m.getMapListTo().iterator();// enumerateMapListTo();
+ for (int _i = 0; to.hasNext(); _i += 2)
+ {
+ MapListTo mf = to.next();
+ fto[_i] = mf.getStart();
+ fto[_i + 1] = mf.getEnd();
+ }
+
+ mapping = new jalview.util.MapList(fr, fto,
+ m.getMapFromUnit().intValue(), m.getMapToUnit().intValue());
+ }
+ PAEContactMatrix newpae = new PAEContactMatrix(jaa.sequenceRef, mapping,
+ cm);
+
+ jaa.sequenceRef.addContactListFor(jaa, newpae);
+
+ return;
+ }
+
/**
* Load Overview window, restoring colours, 'show hidden regions' flag, title
* and geometry as saved
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
/**
*
- * a Mapping entry and an associated protein sequence
+ * a Mapping entry and an associated protein
+ * sequence
*
*
* @return
/**
*
- * specifies a series of aligned codons from an associated DNA sequence alignment that when translated correspond to columns of a peptide alignment.
- * Element may have either all pos1,2,3 attributes specified, or none at all (indicating a gapped column with no translated peptide).
+ * specifies a series of aligned codons from an
+ * associated DNA sequence alignment that when translated
+ * correspond to columns of a peptide alignment.
+ * Element may have
+ * either all pos1,2,3 attributes specified, or none at all
+ * (indicating a gapped column with no translated peptide).
*
*
* <p>Java class for anonymous complex type.
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
* </complexContent>
* </complexType>
* </element>
- * <element name="contactmatrix" type="{www.vamsas.ac.uk/jalview/version2}MatrixType" maxOccurs="unbounded" minOccurs="0"/>
+ * <element name="contactmatrix" type="{www.vamsas.ac.uk/jalview/version2}MapOnAMatrixType" maxOccurs="unbounded" minOccurs="0"/>
* <element name="property" type="{www.vamsas.ac.uk/jalview/version2}property" maxOccurs="unbounded" minOccurs="0"/>
* </sequence>
* <attribute name="graph" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
protected String label;
protected String description;
protected Annotation.ThresholdLine thresholdLine;
- protected List<MatrixType> contactmatrix;
+ protected List<MapOnAMatrixType> contactmatrix;
protected List<Property> property;
@XmlAttribute(name = "graph", required = true)
protected boolean graph;
*
* <p>
* Objects of the following type(s) are allowed in the list
- * {@link MatrixType }
+ * {@link MapOnAMatrixType }
*
*
*/
- public List<MatrixType> getContactmatrix() {
+ public List<MapOnAMatrixType> getContactmatrix() {
if (contactmatrix == null) {
- contactmatrix = new ArrayList<MatrixType>();
+ contactmatrix = new ArrayList<MapOnAMatrixType>();
}
return this.contactmatrix;
}
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
/**
*
- * This effectively represents a java.util.MapList object
+ * This effectively represents a java.util.MapList
+ * object
*
*
* <p>Java class for mapListType complex type.
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
/**
+ * Defines a mapping from the local frame to a matrix
+ * and its associated data specified by MatrixType
+ *
+ *
* <p>Java class for MapOnAMatrixType complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
/**
*
- * Represent the jalview.datamodel.Mapping object - it also provides
- * a way of storing sequences that are mapped 'to' without adding them
- * to the sequence set (which will mean they are then added to the alignment too).
+ * Represent the jalview.datamodel.Mapping object -
+ * it also provides
+ * a way of storing sequences that are mapped 'to'
+ * without adding them
+ * to the sequence set (which will mean they are
+ * then added to the alignment too).
*
*
* <p>Java class for anonymous complex type.
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
/**
+ * Represents matrix data imported to Jalview, and the
+ * results of any derived calculations (independent of a particular
+ * view
+ * on the matrix).
+ *
+ *
* <p>Java class for MatrixType complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
* <element name="groups" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
* <element name="newick" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
* <element name="property" type="{www.vamsas.ac.uk/jalview/version2}property" maxOccurs="unbounded" minOccurs="0"/>
- * <element name="mapping" type="{www.vamsas.ac.uk/jalview/version2}mapListType" minOccurs="0"/>
* </sequence>
* <attribute name="type" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
* <attribute name="rows" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
"elements",
"groups",
"newick",
- "property",
- "mapping"
+ "property"
})
public class MatrixType {
protected List<String> groups;
protected List<String> newick;
protected List<Property> property;
- protected MapListType mapping;
@XmlAttribute(name = "type", required = true)
protected String type;
@XmlAttribute(name = "rows", required = true)
}
/**
- * Gets the value of the mapping property.
- *
- * @return
- * possible object is
- * {@link MapListType }
- *
- */
- public MapListType getMapping() {
- return mapping;
- }
-
- /**
- * Sets the value of the mapping property.
- *
- * @param value
- * allowed object is
- * {@link MapListType }
- *
- */
- public void setMapping(MapListType value) {
- this.mapping = value;
- }
-
- /**
* Gets the value of the type property.
*
* @return
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
}
/**
- * Create an instance of {@link MatrixType }
+ * Create an instance of {@link MapOnAMatrixType }
*
*/
- public MatrixType createMatrixType() {
- return new MatrixType();
+ public MapOnAMatrixType createMapOnAMatrixType() {
+ return new MapOnAMatrixType();
}
/**
}
/**
- * Create an instance of {@link MapOnAMatrixType }
+ * Create an instance of {@link MatrixType }
*
*/
- public MapOnAMatrixType createMapOnAMatrixType() {
- return new MapOnAMatrixType();
+ public MatrixType createMatrixType() {
+ return new MatrixType();
}
/**
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
// 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.07.18 at 05:07:54 PM BST
+// Generated on: 2023.08.28 at 01:52:46 PM BST
//
@javax.xml.bind.annotation.XmlSchema(namespace = "www.vamsas.ac.uk/jalview/version2", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)