JAL-4020 class reformatting
[jalview.git] / schemas / jalview.xsd
index 5631def..1d2235e 100755 (executable)
@@ -1,57 +1,57 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1)
- * Copyright (C) 2014 The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+<!-- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) 
+       * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of 
+       Jalview. * * Jalview is free software: you can redistribute it and/or * modify 
+       it under the terms of the GNU General Public License * as published by the 
+       Free Software Foundation, either version 3 of the License, or (at your option) 
+       any later version. * * Jalview is distributed in the hope that it will be 
+       useful, but * WITHOUT ANY WARRANTY; without even the implied warranty * of 
+       MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General 
+       Public License for more details. * * You should have received a copy of the 
+       GNU General Public License along with Jalview. If not, see <http://www.gnu.org/licenses/>. 
+       * The Jalview Authors are detailed in the 'AUTHORS' file. -->
+<!-- 
+       Java JAXB binding classes are generated by running command line tool xjc:
+           xjc schemas/jalview.xsd -d src -p jalview.xml.binding.jalview
+       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" xmlns:jalview="www.jalview.org/colours" xmlns:jv="www.jalview.org" xmlns:jvws="www.jalview.org/xml/wsparamset" targetNamespace="www.jalview.org" elementFormDefault="qualified" attributeFormDefault="unqualified">
-               <xs:import namespace="www.vamsas.ac.uk/jalview/version2" schemaLocation="vamsas.xsd"/>
-       <xs:import namespace="www.jalview.org/colours" schemaLocation="JalviewUserColours.xsd"/>
-       <xs:import namespace="www.jalview.org/xml/wsparamset" schemaLocation="JalviewWsParamSet.xsd"/>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+       xmlns:vamsas="www.vamsas.ac.uk/jalview/version2" xmlns:jalview="www.jalview.org/colours"
+       xmlns:jv="www.jalview.org" xmlns:jvws="www.jalview.org/xml/wsparamset"
+       targetNamespace="www.jalview.org" elementFormDefault="qualified"
+       attributeFormDefault="unqualified">
+       <xs:import namespace="www.vamsas.ac.uk/jalview/version2"
+               schemaLocation="vamsas.xsd" />
+       <xs:import namespace="www.jalview.org/colours"
+               schemaLocation="JalviewUserColours.xsd" />
+       <xs:import namespace="www.jalview.org/xml/wsparamset"
+               schemaLocation="JalviewWsParamSet.xsd" />
+       <xs:element name="JalviewModel" type="jv:JalviewModel" />
        <xs:complexType name="JalviewModel">
                <xs:sequence>
                        <xs:element name="creationDate" type="xs:dateTime" />
                        <xs:element name="version" type="xs:string" />
                        <xs:element name="vamsasModel" type="vamsas:VAMSAS" />
                        <xs:sequence>
-                               <xs:element name="JSeq" maxOccurs="unbounded">
+                               <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:annotation>
+                                                                                                                                               <xs:documentation>
+                                                                                                                                                       An
+                                                                                                                                                       identifier
+                                                                                                                                                       for
+                                                                                                                                                       the
+                                                                                                                                                       viewer
+                                                                                                                                                       type,
+                                                                                                                                                       currently
+                                                                                                                                                       either
+                                                                                                                                                       JMOL
+                                                                                                                                                       or
+                                                                                                                                                       CHIMERA
+                                                                                                                                               </xs:documentation>
+                                                                                                                                       </xs:annotation>
+                                                                                                                               </xs:attribute>
 
                                                                                                                        </xs:extension>
                                                                                                                </xs:simpleContent>
                                                                        </xs:complexContent>
                                                                </xs:complexType>
                                                        </xs:element>
-                                                       <xs:element name="hiddenSequences"
-                                                               type="xs:int" 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>
+                                                               </xs:annotation>
+                                                               <xs:complexType>
+                                                                       <xs:sequence>
+                                                                               <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:annotation>
+                                                                                                               <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:annotation>
+                                                                                                               <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:annotation>
+                                                                                                               <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:annotation>
+                                                                                       <xs:documentation>An id unique to the RNA viewer panel
+                                                                                       </xs:documentation>
+                                                                               </xs:annotation>
+                                                                       </xs:attribute>
+                                                                       <xs:attribute name="dividerLocation" type="xs:int">
+                                                                               <xs:annotation>
+                                                                                       <xs:documentation>horizontal position of split pane divider
+                                                                                       </xs:documentation>
+                                                                               </xs:annotation>
+                                                                       </xs:attribute>
+                                                                       <xs:attribute name="selectedRna" type="xs:int">
+                                                                               <xs:annotation>
+                                                                                       <xs:documentation>Index of the selected structure in the
+                                                                                               viewer panel
+                                                                                       </xs:documentation>
+                                                                               </xs:annotation>
+                                                                       </xs:attribute>
+                                                               </xs:complexType>
+                                                       </xs:element>
                                                </xs:sequence>
-                                               <xs:attribute name="colour" type="xs:int"
-                                                       use="optional" />
-                                               <xs:attribute name="start" type="xs:int"
-                                                       use="required" />
-                                               <xs:attribute name="end" type="xs:int"
-                                                       use="required" />
-                                               <xs:attribute name="id" type="xs:string"
-                                                       use="required" />
+                                               <xs:attribute name="colour" type="xs:int" use="optional" />
+                                               <xs:attribute name="start" type="xs:int" use="required" />
+                                               <xs:attribute name="end" type="xs:int" use="required" />
+                                               <xs:attribute name="id" type="xs:string" use="required" />
                                                <xs:attribute name="hidden" type="xs:boolean" />
+                                               <xs:attribute name="viewreference" type="xs:boolean" use="optional"/>
                                        </xs:complexType>
                                </xs:element>
-                               <xs:element name="JGroup" minOccurs="0"
-                                       maxOccurs="unbounded">
+                               <xs:element name="JGroup" minOccurs="0" maxOccurs="unbounded">
                                        <xs:complexType>
                                                <xs:sequence>
-                                                       <xs:element name="seq" type="xs:string"
-                                                               maxOccurs="unbounded" />
+                                                       <xs:element name="seq" type="xs:string" maxOccurs="unbounded" />
+                                                       <xs:element name="annotationColours" type="jv:AnnotationColourScheme"
+                                                               minOccurs="0" maxOccurs="1" />
                                                </xs:sequence>
                                                <xs:attribute name="start" type="xs:int" />
                                                <xs:attribute name="end" type="xs:int" />
                                                <xs:attribute name="name" type="xs:string" />
                                                <xs:attribute name="colour" type="xs:string" />
-                                               <xs:attribute name="consThreshold"
-                                                       type="xs:int" />
+                                               <xs:attribute name="consThreshold" type="xs:int" />
                                                <xs:attribute name="pidThreshold" type="xs:int" />
-                                               <xs:attribute name="outlineColour"
-                                                       type="xs:int" />
-                                               <xs:attribute name="displayBoxes"
-                                                       type="xs:boolean" />
-                                               <xs:attribute name="displayText"
-                                                       type="xs:boolean" />
-                                               <xs:attribute name="colourText"
-                                                       type="xs:boolean" />
+                                               <xs:attribute name="outlineColour" type="xs:int" />
+                                               <xs:attribute name="displayBoxes" type="xs:boolean" />
+                                               <xs:attribute name="displayText" type="xs:boolean" />
+                                               <xs:attribute name="colourText" type="xs:boolean" />
                                                <xs:attribute name="textCol1" type="xs:int" />
                                                <xs:attribute name="textCol2" type="xs:int" />
-                                               <xs:attribute name="textColThreshold"
-                                                       type="xs:int" />
-                                               <xs:attribute name="showUnconserved"
-                                                       type="xs:boolean" use="optional" />
-                                               <xs:attribute name="ignoreGapsinConsensus"
-                                                       type="xs:boolean" use="optional" default="true" />
-                                               <xs:attribute name="showConsensusHistogram"
-                                                       type="xs:boolean" use="optional" default="true" />
-                                               <xs:attribute name="showSequenceLogo"
-                                                       type="xs:boolean" use="optional" default="false" />
-                                               <xs:attribute name="normaliseSequenceLogo"
-              type="xs:boolean" use="optional" default="false" />
-            <xs:attribute name="id" type="xs:string"
-                                                       use="optional">
+                                               <xs:attribute name="textColThreshold" type="xs:int" />
+                                               <xs:attribute name="showUnconserved" type="xs:boolean"
+                                                       use="optional" />
+                                               <xs:attribute name="ignoreGapsinConsensus" type="xs:boolean"
+                                                       use="optional" default="true" />
+                                               <xs:attribute name="showConsensusHistogram" type="xs:boolean"
+                                                       use="optional" default="true" />
+                                               <xs:attribute name="showSequenceLogo" type="xs:boolean"
+                                                       use="optional" default="false" />
+                                               <xs:attribute name="normaliseSequenceLogo" type="xs:boolean"
+                                                       use="optional" default="false" />
+                                               <xs:attribute name="id" type="xs:string" use="optional">
                                                        <xs:annotation>
                                                                <xs:documentation>
                                                                        Optional sequence group ID (only
-                                                                       needs to be unique for this
+                                                                       needs to be
+                                                                       unique for this
                                                                        alignment)
                                                                </xs:documentation>
                                                        </xs:annotation>
                                                </xs:attribute>
                                        </xs:complexType>
                                </xs:element>
-                               <xs:element name="Viewport" maxOccurs="unbounded">
+                               <xs:element name="Viewport" maxOccurs="unbounded"
+                                       minOccurs="0">
                                        <xs:complexType>
                                                <xs:sequence>
-                                                       <xs:element name="AnnotationColours"
-                                                               minOccurs="0">
+                                                       <xs:element name="AnnotationColours" type="jv:AnnotationColourScheme"
+                                                               minOccurs="0" maxOccurs="1">
+                                                       </xs:element>
+                                                       <xs:element name="hiddenColumns" minOccurs="0"
+                                                               maxOccurs="unbounded">
                                                                <xs:complexType>
-                                                                       <xs:attribute name="aboveThreshold"
-                                                                               type="xs:int" />
-                                                                       <xs:attribute name="annotation"
-                                                                               type="xs:string" />
-                                                                       <xs:attribute name="minColour"
-                                                                               type="xs:int" />
-                                                                       <xs:attribute name="maxColour"
-                                                                               type="xs:int" />
-                                                                       <xs:attribute name="colourScheme"
-                                                                               type="xs:string" />
-                                                                       <xs:attribute name="threshold"
-                                                                               type="xs:float" />
-                       <xs:attribute name="perSequence" 
-                       type="xs:boolean" 
-                       use="optional" />
-                       <xs:attribute name="predefinedColours" 
-                  type="xs:boolean" 
-                  use="optional" />
+                                                                       <xs:attribute name="start" type="xs:int" />
+                                                                       <xs:attribute name="end" type="xs:int" />
                                                                </xs:complexType>
                                                        </xs:element>
-                                                       <xs:element name="hiddenColumns"
-                                                               minOccurs="0" maxOccurs="unbounded">
+                                                       <xs:element name="calcIdParam" minOccurs="0"
+                                                               maxOccurs="unbounded">
                                                                <xs:complexType>
-                                                                       <xs:attribute name="start"
-                                                                               type="xs:int" />
-                                                                       <xs:attribute name="end"
-                                                                               type="xs:int" />
+                                                                       <xs:complexContent>
+                                                                               <xs:extension base="jvws:WebServiceParameterSet">
+                                                                                       <xs:attribute name="calcId" type="xs:string"
+                                                                                               use="required">
+                                                                                               <xs:annotation>
+                                                                                                       <xs:documentation>handle for the calculation which uses
+                                                                                                               this parameter set
+                                                                                                       </xs:documentation>
+                                                                                               </xs:annotation>
+                                                                                       </xs:attribute>
+                                                                                       <xs:attribute name="needsUpdate" type="xs:boolean"
+                                                                                               use="optional" default="false">
+                                                                                               <xs:annotation>
+                                                                                                       <xs:documentation>should the calculation be performed
+                                                                                                               immediately after loading in order to refresh results
+                                                                                                       </xs:documentation>
+                                                                                               </xs:annotation>
+                                                                                       </xs:attribute>
+                                                                                       <xs:attribute name="autoUpdate" type="xs:boolean"
+                                                                                               use="required">
+                                                                                               <xs:annotation>
+                                                                                                       <xs:documentation>should the calculation be automatically
+                                                                                                               performed on edits
+                                                                                                       </xs:documentation>
+                                                                                               </xs:annotation>
+                                                                                       </xs:attribute>
+                                                                               </xs:extension>
+                                                                       </xs:complexContent>
                                                                </xs:complexType>
                                                        </xs:element>
-                                                       <xs:element name="calcIdParam" 
-                                                        
-                                                       minOccurs="0" maxOccurs="unbounded">
-                                                       <xs:complexType>
-                                                       <xs:complexContent>
-                                                       <xs:extension base="jvws:WebServiceParameterSet">
-                                                       <xs:attribute name="calcId" type="xs:string" use="required">
-                                                       <xs:annotation>
-                                                       <xs:documentation>handle for the calculation which uses this parameter set</xs:documentation></xs:annotation>
-                                                       </xs:attribute>
-                                                       <xs:attribute name="needsUpdate" type="xs:boolean" use="optional" default="false">
-                                                       <xs:annotation><xs:documentation>should the calculation be performed immediately after loading in order to refresh results</xs:documentation></xs:annotation>
-                                                       </xs:attribute>
-                                                       <xs:attribute name="autoUpdate" type="xs:boolean" use="required">
-                                                       <xs:annotation><xs:documentation>should the calculation be automatically performed on edits</xs:documentation></xs:annotation>
-                                                       </xs:attribute>
-                                                       </xs:extension>
-                                                       </xs:complexContent>
-                                                       </xs:complexType>
-                                                       </xs:element>
                                                </xs:sequence>
                                                <xs:attributeGroup ref="jv:swingwindow" />
-                                               <xs:attribute name="conservationSelected"
-                                                       type="xs:boolean" />
-                                               <xs:attribute name="pidSelected"
-                                                       type="xs:boolean" />
+                                               <xs:attribute name="conservationSelected" type="xs:boolean" />
+                                               <xs:attribute name="pidSelected" type="xs:boolean" />
                                                <xs:attribute name="bgColour" type="xs:string" />
-                                               <xs:attribute name="consThreshold"
-                                                       type="xs:int" />
+                                               <xs:attribute name="consThreshold" type="xs:int" />
                                                <xs:attribute name="pidThreshold" type="xs:int" />
                                                <xs:attribute name="title" type="xs:string" />
-                                               <xs:attribute name="showFullId"
-                                                       type="xs:boolean" />
-                                               <xs:attribute name="rightAlignIds"
-                                                       type="xs:boolean" />
+                                               <xs:attribute name="showFullId" type="xs:boolean" />
+                                               <xs:attribute name="rightAlignIds" type="xs:boolean" />
                                                <xs:attribute name="showText" type="xs:boolean" />
-                                               <xs:attribute name="showColourText"
-                                                       type="xs:boolean" />
-                                               <xs:attribute name="showUnconserved"
-                                                       type="xs:boolean" use="optional" default="false" />
-                                               <xs:attribute name="showBoxes"
-                                                       type="xs:boolean" />
-                                               <xs:attribute name="wrapAlignment"
-                                                       type="xs:boolean" />
-                                               <xs:attribute name="renderGaps"
-                                                       type="xs:boolean" />
-                                               <xs:attribute name="showSequenceFeatures"
-                                                       type="xs:boolean" />
-                                               <xs:attribute name="showNPfeatureTooltip"
-                                                       type="xs:boolean" use="optional" />
-                                               <xs:attribute name="showDbRefTooltip"
-                                                       type="xs:boolean" use="optional" />
-                                               <xs:attribute name="followHighlight"
-                                                       type="xs:boolean" use="optional" default="true" />
-                                               <xs:attribute name="followSelection"
-                                                       type="xs:boolean" use="optional" default="true" />
-                                               <xs:attribute name="showAnnotation"
-                                                       type="xs:boolean" />
-                                               <xs:attribute name="centreColumnLabels"
-                                                       type="xs:boolean" use="optional" default="false" />
-                                               <xs:attribute name="showGroupConservation"
-                                                       type="xs:boolean" use="optional" default="false" />
-                                               <xs:attribute name="showGroupConsensus"
-                                                       type="xs:boolean" use="optional" default="false" />
-                                               <xs:attribute name="showConsensusHistogram"
-                                                       type="xs:boolean" use="optional" default="true" />
-                                               <xs:attribute name="showSequenceLogo"
-                                                       type="xs:boolean" use="optional" default="false" />
-            <xs:attribute name="normaliseSequenceLogo"
-              type="xs:boolean" use="optional" default="false" />
-                                               <xs:attribute name="ignoreGapsinConsensus"
-                                                       type="xs:boolean" use="optional" default="true" />
-
+                                               <xs:attribute name="showColourText" type="xs:boolean" />
+                                               <xs:attribute name="showUnconserved" type="xs:boolean"
+                                                       use="optional" default="false" />
+                                               <xs:attribute name="showBoxes" type="xs:boolean" />
+                                               <xs:attribute name="wrapAlignment" type="xs:boolean" />
+                                               <xs:attribute name="renderGaps" type="xs:boolean" />
+                                               <xs:attribute name="showSequenceFeatures" type="xs:boolean" />
+                                               <xs:attribute name="showNPfeatureTooltip" type="xs:boolean"
+                                                       use="optional" />
+                                               <xs:attribute name="showDbRefTooltip" type="xs:boolean"
+                                                       use="optional" />
+                                               <xs:attribute name="followHighlight" type="xs:boolean"
+                                                       use="optional" default="true" />
+                                               <xs:attribute name="followSelection" type="xs:boolean"
+                                                       use="optional" default="true" />
+                                               <xs:attribute name="showAnnotation" type="xs:boolean" />
+                                               <xs:attribute name="centreColumnLabels" type="xs:boolean"
+                                                       use="optional" default="false" />
+                                               <xs:attribute name="showGroupConservation" type="xs:boolean"
+                                                       use="optional" default="false" />
+                                               <xs:attribute name="showGroupConsensus" type="xs:boolean"
+                                                       use="optional" default="false" />
+                                               <xs:attribute name="showConsensusHistogram" type="xs:boolean"
+                                                       use="optional" default="true" />
+                                               <xs:attribute name="showSequenceLogo" type="xs:boolean"
+                                                       use="optional" default="false" />
+                                               <xs:attribute name="normaliseSequenceLogo" type="xs:boolean"
+                                                       use="optional" default="false" />
+                                               <xs:attribute name="ignoreGapsinConsensus" type="xs:boolean"
+                                                       use="optional" default="true" />
                                                <xs:attribute name="startRes" type="xs:int" />
                                                <xs:attribute name="startSeq" type="xs:int" />
                                                <xs:attribute name="fontName" type="xs:string" />
                                                <xs:attribute name="fontSize" type="xs:int" />
                                                <xs:attribute name="fontStyle" type="xs:int" />
+                                               <xs:attribute name="scaleProteinAsCdna" type="xs:boolean" use="optional" default="true" />
                                                <xs:attribute name="viewName" type="xs:string" />
-                                               <xs:attribute name="sequenceSetId"
-                                                       type="xs:string" />
-                                               <xs:attribute name="gatheredViews"
-                                                       type="xs:boolean" />
+                                               <xs:attribute name="sequenceSetId" type="xs:string" />
+                                               <xs:attribute name="gatheredViews" type="xs:boolean" />
                                                <xs:attribute name="textCol1" type="xs:int" />
                                                <xs:attribute name="textCol2" type="xs:int" />
-                                               <xs:attribute name="textColThreshold"
-                                                       type="xs:int" />
-                                               <xs:attribute name="id" type="xs:ID"
-                                                       use="optional">
+                                               <xs:attribute name="textColThreshold" type="xs:int" />
+                                               <xs:attribute name="id" type="xs:ID" use="optional">
                                                        <xs:annotation>
                                                                <xs:documentation>
                                                                        unique id used by jalview to
-                                                                       synchronize between stored and
+                                                                       synchronize
+                                                                       between stored and
                                                                        instantiated views
                                                                </xs:documentation>
                                                        </xs:annotation>
                                                </xs:attribute>
+                                               <xs:attribute name="complementId" type="xs:string"
+                                                       use="optional">
+                                                       <xs:annotation>
+                                                               <xs:documentation>
+                                                                       The viewport id of this viewport's
+                                                                       (cdna/protein) coding complement, if any
+                                                               </xs:documentation>
+                                                       </xs:annotation>
+                                               </xs:attribute>
+                                               <xs:attribute name="showComplementFeatures" type="xs:boolean" use="optional" default="false" />
+                                               <xs:attribute name="showComplementFeaturesOnTop" type="xs:boolean" use="optional" default="false" />
                                        </xs:complexType>
                                </xs:element>
-                               <xs:element name="UserColours" minOccurs="0"
-                                       maxOccurs="unbounded">
+                               <xs:element name="UserColours" minOccurs="0" maxOccurs="unbounded">
                                        <xs:complexType>
                                                <xs:sequence>
-                                                       <xs:element name="UserColourScheme"
-                                                               type="jalview:JalviewUserColours" />
+                                                       <xs:element name="UserColourScheme" type="jalview:JalviewUserColours" />
                                                </xs:sequence>
                                                <xs:attribute name="id" type="xs:string" />
                                        </xs:complexType>
                                </xs:element>
-                               <xs:element name="tree" minOccurs="0"
-                                       maxOccurs="unbounded">
+                               <xs:element name="tree" minOccurs="0" maxOccurs="unbounded">
                                        <xs:complexType>
                                                <xs:sequence minOccurs="0">
                                                        <xs:element name="title" type="xs:string" />
                                                <xs:attribute name="fontSize" type="xs:int" />
                                                <xs:attribute name="fontStyle" type="xs:int" />
                                                <xs:attribute name="threshold" type="xs:float" />
-                                               <xs:attribute name="showBootstrap"
-                                                       type="xs:boolean" />
-                                               <xs:attribute name="showDistances"
-                                                       type="xs:boolean" />
-                                               <xs:attribute name="markUnlinked"
-                                                       type="xs:boolean" />
-                                               <xs:attribute name="fitToWindow"
-                                                       type="xs:boolean" />
-                                               <xs:attribute name="currentTree"
-                                                       type="xs:boolean" />
-                                               <xs:attribute name="id" type="xs:ID"
-                                                       use="optional">
+                                               <xs:attribute name="showBootstrap" type="xs:boolean" />
+                                               <xs:attribute name="showDistances" type="xs:boolean" />
+                                               <xs:attribute name="markUnlinked" type="xs:boolean" />
+                                               <xs:attribute name="fitToWindow" type="xs:boolean" />
+                                               <xs:attribute name="currentTree" type="xs:boolean" />
+                                               <xs:attribute name="id" type="xs:ID" use="optional">
                                                        <xs:annotation>
                                                                <xs:documentation>
                                                                        Tree ID added for binding tree
-                                                                       visualization settings to vamsas
+                                                                       visualization
+                                                                       settings to vamsas
                                                                        document trees in jalview 2.4.1
                                                                </xs:documentation>
                                                        </xs:annotation>
                                                </xs:attribute>
                                                <xs:attributeGroup ref="jv:swingwindow" />
+                                               <xs:attribute name="linkToAllViews" use="optional" default="false" type="xs:boolean" />
+                                       </xs:complexType>
+                               </xs:element>
+                               <xs:element name="PcaViewer" minOccurs="0" maxOccurs="unbounded">
+                                       <xs:complexType>
+                                               <xs:sequence>
+                                                       <xs:element name="sequencePoint" minOccurs="1" maxOccurs="unbounded">
+                                                               <xs:complexType>
+                                                                       <xs:attribute name="sequenceRef" type="xs:string" />
+                                                                       <xs:attributeGroup ref="jv:position" />
+                                                               </xs:complexType>
+                                                       </xs:element>
+                                                       <xs:element name="axis" minOccurs="3" maxOccurs="3">
+                                                               <xs:annotation>
+                                                                       <xs:documentation>
+                                                                               endpoints of X, Y and Z axes in that order
+                                                                       </xs:documentation>
+                                                               </xs:annotation>
+                                                               <xs:complexType>
+                                                                       <xs:attributeGroup ref="jv:position" />
+                                                               </xs:complexType>
+                                                       </xs:element>
+                                                       <xs:element name="seqPointMin">
+                                                               <xs:complexType>
+                                                                       <xs:attributeGroup ref="jv:position" />
+                                                               </xs:complexType>
+                                                       </xs:element>
+                                                       <xs:element name="seqPointMax">
+                                                               <xs:complexType>
+                                                                       <xs:attributeGroup ref="jv:position" />
+                                                               </xs:complexType>
+                                                       </xs:element>
+                                                       <xs:element name="pcaData" type="jv:PcaDataType" />
+                                               </xs:sequence>
+                                               <xs:attribute name="title" type="xs:string" />
+                                               <xs:attribute name="scoreModelName" type="xs:string" />
+                                               <xs:attribute name="xDim" type="xs:int" />
+                                               <xs:attribute name="yDim" type="xs:int" />
+                                               <xs:attribute name="zDim" type="xs:int" />
+                                               <xs:attribute name="bgColour" type="xs:int" />
+                                               <xs:attribute name="scaleFactor" type="xs:float" />
+                                               <xs:attribute name="showLabels" type="xs:boolean" />
+                                               <xs:attribute name="linkToAllViews" type="xs:boolean" />
+                                               <xs:attributeGroup ref="jv:SimilarityParams" />
+                                               <xs:attributeGroup ref="jv:swingwindow" />
                                        </xs:complexType>
                                </xs:element>
                                <xs:element name="FeatureSettings" minOccurs="0">
                                        <xs:complexType>
                                                <xs:sequence>
-                                                       <xs:element name="setting" minOccurs="0"
-                                                               maxOccurs="unbounded">
+                                                       <xs:element name="setting" minOccurs="0" maxOccurs="unbounded">
                                                                <xs:complexType>
-                                                                       <xs:attribute name="type"
-                                                                               type="xs:string" use="required" />
-                                                                       <xs:attribute name="colour"
-                                                                               type="xs:int" use="required" />
-                                                                       <xs:attribute name="display"
-                                                                               type="xs:boolean" use="required" />
-                                                                       <xs:attribute name="order"
-                                                                               type="xs:float" use="optional" />
-                                                                       <xs:attribute name="mincolour"
-                                                                               type="xs:int" use="optional">
+                                                                       <xs:sequence>
+                                                                           <xs:element name="attributeName" type="xs:string" minOccurs="0" maxOccurs="2">
+                                                                                       <xs:annotation>
+                                                                                               <xs:documentation>name of feature attribute to colour by, or attribute and sub-attribute</xs:documentation>
+                                                                                       </xs:annotation>
+                                                                           </xs:element> 
+                                                                               <xs:element name="matcherSet" minOccurs="0" type="jalview:FeatureMatcherSet">
+                                                                                       <xs:annotation>
+                                                                                               <xs:documentation>optional filter(s) applied to the feature type</xs:documentation>
+                                                                                       </xs:annotation>
+                                                                               </xs:element>
+                                                                       </xs:sequence>
+                                                                       <xs:attribute name="type" type="xs:string" use="required" />
+                                                                       <xs:attribute name="colour" type="xs:int" use="required" />
+                                                                       <xs:attribute name="display" type="xs:boolean"
+                                                                               use="required" />
+                                                                       <xs:attribute name="order" type="xs:float" use="optional" />
+                                                                       <xs:attribute name="mincolour" type="xs:int" use="optional">
                                                                                <xs:annotation>
                                                                                        <xs:documentation>
                                                                                                Optional minimum colour
-                                                                                               for graduated feature
+                                                                                               for graduated
+                                                                                               feature
                                                                                                colour
                                                                                        </xs:documentation>
                                                                                </xs:annotation>
                                                                        </xs:attribute>
-                                                                       <xs:attribute name="threshold"
-                                                                               type="xs:float" use="optional">
+                                                                       <xs:attribute name="noValueColour" use="optional" type="jalview:NoValueColour" default="Min" />
+                                                                       <xs:attribute name="threshold" type="xs:float"
+                                                                               use="optional">
                                                                                <xs:annotation>
                                                                                        <xs:documentation>
                                                                                                threshold value for
                                                                                        </xs:documentation>
                                                                                </xs:annotation>
                                                                        </xs:attribute>
-                                                                       <xs:attribute name="threshstate"
-                                                                               type="xs:int" use="optional">
+                                                                       <xs:attribute name="threshstate" type="xs:int"
+                                                                               use="optional">
                                                                                <xs:annotation>
                                                                                        <xs:documentation>
                                                                                                threshold type for
                                                                                        </xs:documentation>
                                                                                </xs:annotation>
                                                                        </xs:attribute>
-                                                                       <xs:attribute name="max"
-                                                                               type="xs:float" use="optional" />
-                                                                       <xs:attribute name="min"
-                                                                               type="xs:float" use="optional" />
-                                                                       <xs:attribute name="colourByLabel"
-                                                                               type="xs:boolean" use="optional" />
-                                                                       <xs:attribute name="autoScale"
-                                                                               type="xs:boolean" use="optional" />
+                                                                       <xs:attribute name="max" type="xs:float" use="optional" />
+                                                                       <xs:attribute name="min" type="xs:float" use="optional" />
+                                                                       <xs:attribute name="colourByLabel" type="xs:boolean"
+                                                                               use="optional" />
+                                                                       <xs:attribute name="autoScale" type="xs:boolean"
+                                                                               use="optional" />
                                                                </xs:complexType>
                                                        </xs:element>
-                                                       <xs:element name="group" minOccurs="0"
-                                                               maxOccurs="unbounded">
+                                                       <xs:element name="group" minOccurs="0" maxOccurs="unbounded">
                                                                <xs:complexType>
-                                                                       <xs:attribute name="name"
-                                                                               type="xs:string" use="required" />
-                                                                       <xs:attribute name="display"
-                                                                               type="xs:boolean" use="required" />
+                                                                       <xs:attribute name="name" type="xs:string" use="required" />
+                                                                       <xs:attribute name="display" type="xs:boolean"
+                                                                               use="required" />
                                                                </xs:complexType>
                                                        </xs:element>
                                                </xs:sequence>
                <xs:sequence>
                        <xs:element name="otherData" minOccurs="0" maxOccurs="unbounded">
                                <xs:complexType>
-                                       <xs:attribute name="key" type="xs:string" use="required"/>
-                                       <xs:attribute name="value" type="xs:string" use="required"/>
+                                       <xs:attribute name="key" type="xs:string" use="required" />
+                                       <xs:attribute name="key2" type="xs:string" use="optional">
+                                               <xs:annotation>
+                                                       <xs:documentation>key2 may be used for a sub-attribute of key</xs:documentation>
+                                               </xs:annotation>
+                                       </xs:attribute>
+                                       <xs:attribute name="value" type="xs:string" use="required" />
                                </xs:complexType>
                        </xs:element>
                </xs:sequence>
-               <xs:attribute name="begin" type="xs:int" use="required"/>
-               <xs:attribute name="end" type="xs:int" use="required"/>
-               <xs:attribute name="type" type="xs:string" use="required"/>
-               <xs:attribute name="description" type="xs:string" use="optional"/>
-               <xs:attribute name="status" type="xs:string" use="optional"/>
-               <xs:attribute name="featureGroup" type="xs:string" use="optional"/>
-               <xs:attribute name="score" type="xs:float" use="optional"/>
+               <xs:attribute name="begin" type="xs:int" use="required" />
+               <xs:attribute name="end" type="xs:int" use="required" />
+               <xs:attribute name="type" type="xs:string" use="required" />
+               <xs:attribute name="description" type="xs:string" use="optional" />
+               <xs:attribute name="status" type="xs:string" use="optional" />
+               <xs:attribute name="featureGroup" type="xs:string" use="optional" />
+               <xs:attribute name="score" type="xs:float" use="optional" />
        </xs:complexType>
        <xs:complexType name="pdbentry">
                <xs:sequence minOccurs="0" maxOccurs="unbounded">
                        <xs:element name="property" minOccurs="0" maxOccurs="unbounded">
                                <xs:complexType>
-                                       <xs:attribute name="name" type="xs:string" use="required"/>
-                                       <xs:attribute name="value" type="xs:string" use="required"/>
+                                       <xs:attribute name="name" type="xs:string" use="required" />
+                                       <xs:attribute name="value" type="xs:string" use="required" />
                                </xs:complexType>
                        </xs:element>
                </xs:sequence>
-               <xs:attribute name="id" type="xs:string" use="required"/>
-               <xs:attribute name="type" type="xs:string" use="optional"/>
-               <xs:attribute name="file" type="xs:string"/>
+               <xs:attribute name="id" type="xs:string" use="required" />
+               <xs:attribute name="type" type="xs:string" use="optional" />
+               <xs:attribute name="file" type="xs:string" />
        </xs:complexType>
-       <!-- 
-       <xs:complexType name="reportWindow">
-       <xs:annotation>
-       <xs:documentation>Generic type for windows containing mime-typed data associated with other jalview windows</xs:documentation>
-       </xs:annotation>
-       <xs:sequence>
-       </xs:sequence>
-    <xs:attribute name="id" type="xs:string" use="required"/>
-    <xs:attribute name="type" type="xs:string" use="optional"/>
-    <xs:attribute name="file" type="xs:string" use="optional"/>
+       <!-- <xs:complexType name="reportWindow"> <xs:annotation> <xs:documentation>Generic 
+               type for windows containing mime-typed data associated with other jalview 
+               windows</xs:documentation> </xs:annotation> <xs:sequence> </xs:sequence> 
+               <xs:attribute name="id" type="xs:string" use="required"/> <xs:attribute name="type" 
+               type="xs:string" use="optional"/> <xs:attribute name="file" type="xs:string" 
+               use="optional"/> </xs:complexType> -->
+       <xs:attributeGroup name="swingwindow">
+               <xs:annotation>
+                       <xs:documentation>
+                               base attributes for windows displayed in Jalview
+                               desktop.
+                       </xs:documentation>
+               </xs:annotation>
+               <xs:attribute name="width" type="xs:int" />
+               <xs:attribute name="height" type="xs:int" />
+               <xs:attribute name="xpos" type="xs:int" />
+               <xs:attribute name="ypos" type="xs:int" />
+       </xs:attributeGroup>
+       <xs:complexType name="AnnotationColourScheme">
+               <xs:attribute name="aboveThreshold" type="xs:int" />
+               <xs:attribute name="annotation" type="xs:string" />
+               <xs:attribute name="minColour" type="xs:int" />
+               <xs:attribute name="maxColour" type="xs:int" />
+               <xs:attribute name="colourScheme" type="xs:string" />
+               <xs:attribute name="threshold" type="xs:float" />
+               <xs:attribute name="perSequence" type="xs:boolean" use="optional" />
+               <xs:attribute name="predefinedColours" type="xs:boolean"
+                       use="optional" />
+       </xs:complexType>
+       <xs:attributeGroup name="SimilarityParams">
+               <xs:annotation>
+                       <xs:documentation>
+                               parameters that condition a similarity score calculation
+                       </xs:documentation>
+               </xs:annotation>
+               <xs:attribute name="includeGaps" type="xs:boolean" />
+               <xs:attribute name="matchGaps" type="xs:boolean" />
+               <xs:attribute name="includeGappedColumns" type="xs:boolean" />
+               <xs:attribute name="denominateByShortestLength" type="xs:boolean" />
+       </xs:attributeGroup>
+       <xs:attributeGroup name="position">
+               <xs:attribute name="xPos" type="xs:float" />
+               <xs:attribute name="yPos" type="xs:float" />
+               <xs:attribute name="zPos" type="xs:float" />
+       </xs:attributeGroup>
+       <xs:complexType name="PcaDataType">
+               <xs:annotation>
+                       <xs:documentation>
+                               The results of a PCA calculation
+                       </xs:documentation>
+               </xs:annotation>
+               <xs:sequence>
+                       <xs:element name="pairwiseMatrix" type="jv:DoubleMatrix" />
+                       <xs:element name="tridiagonalMatrix" type="jv:DoubleMatrix" />
+                       <xs:element name="eigenMatrix" type="jv:DoubleMatrix" />
+               </xs:sequence>
+       </xs:complexType>
+       <xs:complexType name="DoubleVector">
+               <xs:sequence>
+                       <xs:element name="v" type="xs:double" minOccurs="0" maxOccurs="unbounded" />
+               </xs:sequence>
+       </xs:complexType>
+       <xs:complexType name="DoubleMatrix">
+               <xs:sequence>
+                       <xs:element name="row" type="jv:DoubleVector" minOccurs="0" maxOccurs="unbounded" />
+                       <xs:element name="D" minOccurs="0" type="jv:DoubleVector" />
+                       <xs:element name="E" minOccurs="0" type="jv:DoubleVector" />
+               </xs:sequence>
+               <xs:attribute name="rows"  type="xs:int" />
+               <xs:attribute name="columns" type="xs:int" />
        </xs:complexType>
- -->
-    <xs:attributeGroup name="swingwindow">
-    <xs:annotation>
-    <xs:documentation>
-      base attributes for windows displayed in Jalview desktop.
-    </xs:documentation>
-    </xs:annotation>
-      <xs:attribute name="width" type="xs:int"/>
-      <xs:attribute name="height" type="xs:int"/>
-      <xs:attribute name="xpos" type="xs:int"/>
-      <xs:attribute name="ypos" type="xs:int"/>
-    </xs:attributeGroup>
 </xs:schema>