JAL-2843 schema and code changes to save colour by attribute and filters in user...
[jalview.git] / schemas / JalviewUserColours.xsd
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3   Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
4   Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
5   
6   This file is part of Jalview.
7   
8   Jalview is free software: you can redistribute it and/or
9   modify it under the terms of the GNU General Public License 
10   as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
11    
12   Jalview is distributed in the hope that it will be useful, but 
13   WITHOUT ANY WARRANTY; without even the implied warranty 
14   of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15   PURPOSE.  See the GNU General Public License for more details.
16   
17   You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
18 -->
19 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jalview="www.jalview.org/colours" targetNamespace="www.jalview.org/colours">
20         <xs:complexType name="JalviewUserColours">
21                 <xs:sequence>
22                         <xs:element name="Version" maxOccurs="1" minOccurs="0" type="xs:string">
23                                 <xs:annotation>
24                                 <xs:documentation>
25                                 Jalview colour scheme document version.
26                                 </xs:documentation>
27                                 </xs:annotation>
28                         </xs:element>
29                         <xs:element name="colour" maxOccurs="unbounded" minOccurs="0">
30                                 <xs:complexType>
31                                     <xs:sequence>
32                                             <xs:element name="attributeName" type="xs:string" minOccurs="0" maxOccurs="2">
33                                                         <xs:annotation>
34                                                                 <xs:documentation>name of feature attribute to colour by, or attribute and sub-attribute</xs:documentation>
35                                                         </xs:annotation>
36                                             </xs:element> 
37                                         </xs:sequence>
38                                         <xs:attribute name="Name" type="xs:string">
39                                                 <xs:annotation>
40                                                         <xs:documentation>Single letter residue code for an alignment colour scheme, or feature type for a feature colour scheme</xs:documentation>
41                                                 </xs:annotation>
42                                         </xs:attribute>
43                                         <xs:attribute name="RGB" type="xs:string" use="required"/>
44                                         <xs:attribute name="minRGB" type="xs:string" use="optional"/>
45                                         <xs:attribute name="noValueColour" use="optional" default="Min">
46                                                 <xs:annotation>
47                                                         <xs:documentation>Colour if no attribute or score value</xs:documentation>
48                                                 </xs:annotation>
49                                                 <xs:simpleType> 
50                                                         <xs:restriction base="xs:string">
51                                                       <xs:enumeration value="None" />
52                                                       <xs:enumeration value="Min" />
53                                                       <xs:enumeration value="Max" />
54                                                     </xs:restriction>   
55                                             </xs:simpleType> 
56                                         </xs:attribute>
57                                         <xs:attribute name="threshType" use="optional">
58                                                 <xs:simpleType> 
59                                                         <xs:restriction base="xs:string">
60                                                       <xs:enumeration value="NONE" />
61                                                       <xs:enumeration value="ABOVE" />
62                                                       <xs:enumeration value="BELOW" />
63                                                     </xs:restriction>   
64                                             </xs:simpleType> 
65                                         </xs:attribute>
66                                         <xs:attribute name="threshold" type="xs:float" use="optional"/>
67                                         <xs:attribute name="max" type="xs:float" use="optional"/>
68                                         <xs:attribute name="min" type="xs:float" use="optional"/>
69                                         <xs:attribute name="colourByLabel" type="xs:boolean" use="optional"/>
70                                         <xs:attribute name="autoScale" type="xs:boolean" use="optional"/>
71                                 </xs:complexType>
72                         </xs:element>
73                         <xs:element name="filter" maxOccurs="unbounded" minOccurs="0" >
74                             <xs:complexType>
75                                         <xs:sequence> 
76                                                 <xs:element name="matcherSet" type="jalview:FeatureMatcherSet" />
77                                         </xs:sequence> 
78                                         <xs:attribute name="featureType" type="xs:string" use="required"/>
79                             </xs:complexType>
80                         </xs:element>
81                 </xs:sequence>
82                 <xs:attribute name="schemeName" type="xs:string" use="optional"/>
83         </xs:complexType>
84
85         <xs:complexType name="FeatureMatcherSet"> 
86                 <xs:annotation>
87                         <xs:documentation>A feature match condition, which may be simple or compound</xs:documentation>
88                 </xs:annotation>
89           <xs:choice> 
90             <xs:element name="matchCondition" type="jalview:FeatureMatcher" /> 
91             <xs:element name="compoundMatcher">
92                     <xs:complexType>
93                           <xs:sequence> 
94                               <xs:element name="matcherSet" minOccurs="2" maxOccurs="2" type="jalview:FeatureMatcherSet" /> 
95                           </xs:sequence> 
96                       <xs:attribute name="and" type="xs:boolean" use="required">
97                                   <xs:annotation>
98                                         <xs:documentation>If true, matchers are AND-ed, if false they are OR-ed</xs:documentation>
99                                   </xs:annotation>
100                       </xs:attribute>
101                     </xs:complexType>
102             </xs:element>
103           </xs:choice> 
104         </xs:complexType> 
105         
106         <xs:complexType name="FeatureMatcher"> 
107           <xs:sequence> 
108             <xs:element name="attributeName" type="xs:string" minOccurs="0" maxOccurs="2">
109                         <xs:annotation>
110                                 <xs:documentation>name of feature attribute to filter on, or attribute and sub-attribute</xs:documentation>
111                         </xs:annotation>
112             </xs:element> 
113             <xs:element name="condition" type="xs:string" /> 
114             <xs:element name="value" type="xs:string" /> 
115           </xs:sequence>
116           <xs:attribute name="by">
117                 <xs:simpleType> 
118                         <xs:restriction base="xs:string">
119                       <xs:enumeration value="byLabel" />
120                       <xs:enumeration value="byScore" />
121                       <xs:enumeration value="byAttribute" />
122                     </xs:restriction>   
123             </xs:simpleType> 
124           </xs:attribute> 
125         </xs:complexType> 
126         
127 </xs:schema>