3934d666f61db78470364f8e2844e0198202481d
[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" type="jalview:NoValueColour" default="Min" />
46                                         <xs:attribute name="threshType" use="optional">
47                                                 <xs:simpleType> 
48                                                         <xs:restriction base="xs:string">
49                                                       <xs:enumeration value="NONE" />
50                                                       <xs:enumeration value="ABOVE" />
51                                                       <xs:enumeration value="BELOW" />
52                                                     </xs:restriction>   
53                                             </xs:simpleType> 
54                                         </xs:attribute>
55                                         <xs:attribute name="threshold" type="xs:float" use="optional"/>
56                                         <xs:attribute name="max" type="xs:float" use="optional"/>
57                                         <xs:attribute name="min" type="xs:float" use="optional"/>
58                                         <xs:attribute name="colourByLabel" type="xs:boolean" use="optional"/>
59                                         <xs:attribute name="autoScale" type="xs:boolean" use="optional"/>
60                                 </xs:complexType>
61                         </xs:element>
62                         <xs:element name="filter" maxOccurs="unbounded" minOccurs="0" >
63                             <xs:complexType>
64                                         <xs:sequence> 
65                                                 <xs:element name="matcherSet" type="jalview:FeatureMatcherSet" />
66                                         </xs:sequence> 
67                                         <xs:attribute name="featureType" type="xs:string" use="required"/>
68                             </xs:complexType>
69                         </xs:element>
70                 </xs:sequence>
71                 <xs:attribute name="schemeName" type="xs:string" use="optional"/>
72         </xs:complexType>
73
74         <xs:complexType name="FeatureMatcherSet"> 
75                 <xs:annotation>
76                         <xs:documentation>A feature match condition, which may be simple or compound</xs:documentation>
77                 </xs:annotation>
78           <xs:choice> 
79             <xs:element name="matchCondition" type="jalview:FeatureMatcher" /> 
80             <xs:element name="compoundMatcher">
81                     <xs:complexType>
82                           <xs:sequence> 
83                               <xs:element name="matcherSet" minOccurs="2" maxOccurs="2" type="jalview:FeatureMatcherSet" /> 
84                           </xs:sequence> 
85                       <xs:attribute name="and" type="xs:boolean" use="required">
86                                   <xs:annotation>
87                                         <xs:documentation>If true, matchers are AND-ed, if false they are OR-ed</xs:documentation>
88                                   </xs:annotation>
89                       </xs:attribute>
90                     </xs:complexType>
91             </xs:element>
92           </xs:choice> 
93         </xs:complexType> 
94         
95         <xs:complexType name="FeatureMatcher"> 
96           <xs:sequence> 
97             <xs:element name="attributeName" type="xs:string" minOccurs="0" maxOccurs="2">
98                         <xs:annotation>
99                                 <xs:documentation>name of feature attribute to filter on, or attribute and sub-attribute</xs:documentation>
100                         </xs:annotation>
101             </xs:element> 
102             <xs:element name="condition" type="xs:string" /> 
103             <xs:element name="value" type="xs:string" /> 
104           </xs:sequence>
105           <xs:attribute name="by">
106                 <xs:simpleType> 
107                         <xs:restriction base="xs:string">
108                       <xs:enumeration value="byLabel" />
109                       <xs:enumeration value="byScore" />
110                       <xs:enumeration value="byAttribute" />
111                     </xs:restriction>   
112             </xs:simpleType> 
113           </xs:attribute> 
114         </xs:complexType> 
115         
116         <xs:simpleType name="NoValueColour">
117                 <xs:annotation>
118                         <xs:documentation>Graduated feature colour if no score (or attribute) value</xs:documentation>
119                 </xs:annotation>
120                 <xs:restriction base="xs:string">
121               <xs:enumeration value="None" />
122               <xs:enumeration value="Min" />
123               <xs:enumeration value="Max" />
124             </xs:restriction>   
125         </xs:simpleType>
126 </xs:schema>