Version History0.2, 2015/3/15, Ardan Patwardhan: 1) Added support for color 2) Added support for triangle representation of segment - this is in support of Amira segmentations 0.3, 2015/10/21, Paul Korir: 1) Added voxelTransform 2) Added filePath for segmentLinks to HDF5 (Segger) segmentations 3) Added segmentObjects with contours and meshes for IMOD 0.4, 2015/11/04, Paul Korir: 1) Added alpha for rgb color (transparency) 0.5, 2015/12/14, Paul Korir: 1) Removed 'voxelTransform'2) Moved 'numberOfCopies' as 'numberOfInstances' to be a sequence element within 'biologicalAnnotation'3) Made 'color' a choice between 'name' (X11/HTML4 sRGB colour space names) and 'rgba'4) Added a 'transform' element, which is a possibly empty list of transformation matrices referenced within the document by a non-negative identifier5) Renamed 'segmentLink' to 'voxelSegmentation' and added a 'transformId' element6) Renamed 'color' element to 'colour' and 'colorType' to 'colourType'7) Structured 'shapePrimitive' to a list of 'shapePrimitive' (substitution group for 'ellipsoid', 'cuboid', 'pyramid', 'cylinder')8) Identified and labeled deprecated data types9) Renamed shapePrimitive 'pyramid' to 'cone' and added tentative definition10) Removed 'origin' and 'viewVectorRotation' elements from shape primitives (cuboid, ellipsoid, cone, cylinder) and replaced with 'transformId' element11) Renamed references to 'triangles' to 'polygons' e.g. 'triangleListType' now 'polygonListType'0.5.1, 2015/12/23, Paul Korir:1) Change colourType to have rgbaType minOccurs=12) Added 'attribute' element (e.g. for FOM) to shapePrimitive3) Deleted comment: 'Are the CCP4 format masks going to be allowed? If so, we could represent the information of the mask (mapType) here.' from 'voxelSegmentation'.4) Added segment 'format' element to 'voxelSegmentation' restricted to values 'runLengthEncoding', 'MRC', or 'Segger'5) Renamed 'voxelSegmentation' to 'threeDVolume' and deprecated 'subTomogramAverage'.6) Restructured 'transforms' into a list ('transformList') of 'transform', which is a substitutionGroup of 'transformationMatrix', 'canonicalEulerAngles' or 'viewVectorRotation'. 7) Added an 'angleDegreeType' to restrict angle range in degrees [0,360].0.5.2, 2016/01/04, Paul Korir:1) Made 'transformList' optional2) Added 'id' attributes for 'canonicalEulerAngle' and 'viewVectorRotation'3) Annotations for 'filePath'4) Added 'other' to types for 'externalReference' and optional 'otherTypes' attribute5) Changed type of 'name' element in 'colour' from 'xs:string' to 'xs:token'6) Created 'threeDVolumeType' to be used by 'threeDVolume' and 'subtomogramAverage'7) Added 'id' attributes for 'shapePrimitive' and 'threeDVolumeType'8) Renamed 'contours' to 'contourList'9) Created 'meshList' as a sequence of 'mesh'. Each 'mesh' has an 'id'0.5.3, 2016/01/06, Paul Korir:1) Renamed 'transformationMatrixType' attribute from 'transformId' to 'id'2) Created 'dimensionType' for all 'shapePrimitive' dimensions0.5.4, 2016/01/06, Paul Korir:1) Added element 'primaryDescriptor' of type restricted string to 'threeDVolume', 'shapePrimitiveList', 'contourList', 'meshList'0.5.5, 2016/01/22, Paul Korir:1) Changed 'vertices' and 'polygons' to 'vertexList' and 'polygonList', respectively.2) Added attribute 'designation' restricted to string 'vertex' (default) and 'normal' to 'vertex' element.0.5.6, 2016/01/25, Paul Korir:1) Changed attribute 'polygonID' from 'positiveInteger' to 'nonNegativeInteger'0.5.7, 2016/01/26, Paul Korir:1) Change element names to save disk space: 'vertex' to 'v', 'vertexID' to 'vID', 'point' to 'p', 'polygon' to 'P', 'polygonID' to 'PID'2) Changed 'vertexType' to have ID of type 'xs:nonNegativeInteger' (from 'xs:positiveInteger')0.5.8, 2016/04/26, Paul Korir:1) Added 'version' element at the root.0.5.8, 2016/08/08, Paul Korir:2) Made 'shapePrimitive' element 'attribute (not present in 'subtomogramAverage' optional (minOccurs=0)0.5.8, 2016/08/17, Paul Korir:3) Added a 'transformId' element to 'contourList' and to 'mesh'.0.5.8, 2016/10/04, Paul Korir:4) Simplified shape primitives by eliminating internal layering e.g. cone/dimensions/height to cone/height0.5.8, 2016/10/14, Paul Korir:5) (Finally) renamed 'surfaceType' to 'meshType' for consistency.0.5.8, 2016/10/20, Paul Korir:6) 'macromolecule' and 'complex' changed from 'positiveInteger' to 'string'0.6.0a1, 2017/02/28, Paul Korir:1) Added 'EMAN' as a 'threeDVolume' format0.6.0a2, 2017/05/15, Paul Korir:1) Restructured 'externalReferences' from simpleType to complexType2) Changed 'externalReference' to 'externalReferenceType' and replaced elements with attributes0.6.0a3, 2017/05/25, Paul Korir:1) Added element 'boundingBox' taking six integers: xmin, xmax, ymin, ymax, zmin, zmax; minimums default to 00.6.0a4, 2017/07/31, Paul Korir:1) Added global (optional) external references0.6.0a4, 2017/09/20, Paul Korir:2) Renamed global external references to globalExternalReferences0.6.0a4, 2017/09/25, Paul Korir:3) Restructured global external references to have the form <ref [attrs]/>4) Now externalReferenceType has attributes: type (required), otherType (required), value (required), label (new, optional), description (new, optional)0.6.0a4, 2017/11/23, Paul Korir:5) Replaced all active 'token' to 'string' types0.7.0.dev0, 2017/11/09, Paul Korir:1) new 3D volume type: 'threeDVolumeType' (previous one is 'oldThreeDVolumeType' supports both byte/integer lattices and density volumes (for subtomogram averages)2) embedded volume as base64 string using new 'latticeType'3) removed contour representation0.7.0.dev0, 2018/05/04, Paul Korir:4) segment name added5) removed filePath6) removed viewVectorRotation and canonicalEulerAngles7) colour has rgbaType now0.7.0.dev0, 2018/07/18, Paul Korir:8) vertex designation now 'surface' or 'normal'0.8.0.dev0, 2019/11/08, Paul Korir:1) converted all camelCase names to underscore_case2) 'polygon' is now 'triangle'3) changed 'transformation_matrix' from being a subsitution group4) external_reference (ref): attributes changed to 'resource', 'url', 'accession' from'type', 'otherType' and 'value', respectively5) renamed 'macromolecules_and_complexes_type' to 'complexes_and_macromolecules_type'6) restructured 'macromolecules' to 'macromolecule_list' (same for 'complexes')7) now 'macromolecule_list' contains 'macromolecule' with 'id' and text value for accession0.8.0.dev0, 2019/12/18, Paul Korir:8) now 'transform_list' is mandatory with at least one 'transformation_matrix' for the image-to-physical transform9) changed 'software' to be a 'software_list' of zero or more 'software' items; software 'version' now required if 'software' is defined10) 'complexes_and_macromolecules' are deprecated (were for annotation; 'external_references' are sufficient)11) overhaul of 'mesh' field to have 'vertices', 'normals' (optional) and 'triangles' which are base64-encoded strings of actual data12) 'xmax', 'ymax' and 'zmax' of 'bounding_box' are mandatory 0.8.0.dev1, 2020/01/29, Paul Korir:Bugfix: 'software' elements should have an 'id' attribute; 'id' attribute erroneously placed in 'software_list' and should be a list of 0 or more 'software' elements0.8.0.dev1, 2023/01/30, Paul Korir:Clarified that transform units are in angstroms (Å).
Source
<xs:element name="segmentation"><xs:annotation><xs:documentation>Link to assembly or component id.</xs:documentation></xs:annotation><xs:complexType><xs:sequence><xs:element name="version" type="xs:string"/><xs:element name="name" type="xs:string"/><xs:element name="software_list" minOccurs="0"><xs:complexType><xs:sequence><xs:element name="software" type="software_type" minOccurs="0" maxOccurs="unbounded"/></xs:sequence></xs:complexType></xs:element><xs:element name="transform_list" minOccurs="1"><xs:annotation><xs:documentation>Mandatory field. The first 'transformation_matrix' must be the image-to-physical transform with scale parameters (diagonal elements) in angstroms (Å). The right-most column consists of the translation applied and is the physical distance from the physical origin in anstroms (Å).</xs:documentation></xs:annotation><xs:complexType><xs:sequence><xs:element name="transformation_matrix" type="transformation_matrix_type" minOccurs="1" maxOccurs="unbounded"/></xs:sequence></xs:complexType></xs:element><xs:element name="primary_descriptor"><xs:annotation><xs:documentation>Mandatory field. Designates the element type within 'segment_list' that contains the primary description of the segments. Constrained to be either 'three_d_volume', 'shape_primitive_list', or 'mesh_list'.</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="three_d_volume"/><xs:enumeration value="shape_primitive_list"/><xs:enumeration value="mesh_list"/></xs:restriction></xs:simpleType></xs:element><xs:element name="bounding_box" type="bounding_box_type" minOccurs="0"/><xs:element name="global_external_references" minOccurs="0"><xs:complexType><xs:sequence><xs:element name="ref" type="external_reference_type" minOccurs="0" maxOccurs="unbounded"/></xs:sequence></xs:complexType></xs:element><xs:element name="segment_list"><xs:complexType><xs:sequence><xs:element name="segment" type="segment_type" maxOccurs="unbounded"/></xs:sequence></xs:complexType></xs:element><xs:element name="lattice_list" minOccurs="0"><xs:complexType><xs:sequence><xs:element name="lattice" type="lattice_type" maxOccurs="unbounded"/></xs:sequence></xs:complexType></xs:element><xs:element name="details" type="xs:string" minOccurs="0"/></xs:sequence><xs:attribute name="schema_version" type="xs:string" default="0.8.0.dev1"><xs:annotation><xs:documentation><![CDATA[
Version History
0.2, 2015/3/15, Ardan Patwardhan:
1) Added support for color
2) Added support for triangle representation of segment - this is in support of Amira segmentations
0.3, 2015/10/21, Paul Korir:
1) Added voxelTransform
2) Added filePath for segmentLinks to HDF5 (Segger) segmentations
3) Added segmentObjects with contours and meshes for IMOD
0.4, 2015/11/04, Paul Korir:
1) Added alpha for rgb color (transparency)
0.5, 2015/12/14, Paul Korir:
1) Removed 'voxelTransform'
2) Moved 'numberOfCopies' as 'numberOfInstances' to be a sequence element within 'biologicalAnnotation'
3) Made 'color' a choice between 'name' (X11/HTML4 sRGB colour space names) and 'rgba'
4) Added a 'transform' element, which is a possibly empty list of transformation matrices referenced within the document by a non-negative identifier
5) Renamed 'segmentLink' to 'voxelSegmentation' and added a 'transformId' element
6) Renamed 'color' element to 'colour' and 'colorType' to 'colourType'
7) Structured 'shapePrimitive' to a list of 'shapePrimitive' (substitution group for 'ellipsoid', 'cuboid', 'pyramid', 'cylinder')
8) Identified and labeled deprecated data types
9) Renamed shapePrimitive 'pyramid' to 'cone' and added tentative definition
10) Removed 'origin' and 'viewVectorRotation' elements from shape primitives (cuboid, ellipsoid, cone, cylinder) and replaced with 'transformId' element
11) Renamed references to 'triangles' to 'polygons' e.g. 'triangleListType' now 'polygonListType'
0.5.1, 2015/12/23, Paul Korir:
1) Change colourType to have rgbaType minOccurs=1
2) Added 'attribute' element (e.g. for FOM) to shapePrimitive
3) Deleted comment: 'Are the CCP4 format masks going to be allowed? If so, we could represent the information of the mask (mapType) here.' from 'voxelSegmentation'.
4) Added segment 'format' element to 'voxelSegmentation' restricted to values 'runLengthEncoding', 'MRC', or 'Segger'
5) Renamed 'voxelSegmentation' to 'threeDVolume' and deprecated 'subTomogramAverage'.
6) Restructured 'transforms' into a list ('transformList') of 'transform', which is a substitutionGroup of 'transformationMatrix', 'canonicalEulerAngles' or 'viewVectorRotation'.
7) Added an 'angleDegreeType' to restrict angle range in degrees [0,360].
0.5.2, 2016/01/04, Paul Korir:
1) Made 'transformList' optional
2) Added 'id' attributes for 'canonicalEulerAngle' and 'viewVectorRotation'
3) Annotations for 'filePath'
4) Added 'other' to types for 'externalReference' and optional 'otherTypes' attribute
5) Changed type of 'name' element in 'colour' from 'xs:string' to 'xs:token'
6) Created 'threeDVolumeType' to be used by 'threeDVolume' and 'subtomogramAverage'
7) Added 'id' attributes for 'shapePrimitive' and 'threeDVolumeType'
8) Renamed 'contours' to 'contourList'
9) Created 'meshList' as a sequence of 'mesh'. Each 'mesh' has an 'id'
0.5.3, 2016/01/06, Paul Korir:
1) Renamed 'transformationMatrixType' attribute from 'transformId' to 'id'
2) Created 'dimensionType' for all 'shapePrimitive' dimensions
0.5.4, 2016/01/06, Paul Korir:
1) Added element 'primaryDescriptor' of type restricted string to 'threeDVolume', 'shapePrimitiveList', 'contourList', 'meshList'
0.5.5, 2016/01/22, Paul Korir:
1) Changed 'vertices' and 'polygons' to 'vertexList' and 'polygonList', respectively.
2) Added attribute 'designation' restricted to string 'vertex' (default) and 'normal' to 'vertex' element.
0.5.6, 2016/01/25, Paul Korir:
1) Changed attribute 'polygonID' from 'positiveInteger' to 'nonNegativeInteger'
0.5.7, 2016/01/26, Paul Korir:
1) Change element names to save disk space: 'vertex' to 'v', 'vertexID' to 'vID', 'point' to 'p', 'polygon' to 'P', 'polygonID' to 'PID'
2) Changed 'vertexType' to have ID of type 'xs:nonNegativeInteger' (from 'xs:positiveInteger')
0.5.8, 2016/04/26, Paul Korir:
1) Added 'version' element at the root.
0.5.8, 2016/08/08, Paul Korir:
2) Made 'shapePrimitive' element 'attribute (not present in 'subtomogramAverage' optional (minOccurs=0)
0.5.8, 2016/08/17, Paul Korir:
3) Added a 'transformId' element to 'contourList' and to 'mesh'.
0.5.8, 2016/10/04, Paul Korir:
4) Simplified shape primitives by eliminating internal layering e.g. cone/dimensions/height to cone/height
0.5.8, 2016/10/14, Paul Korir:
5) (Finally) renamed 'surfaceType' to 'meshType' for consistency.
0.5.8, 2016/10/20, Paul Korir:
6) 'macromolecule' and 'complex' changed from 'positiveInteger' to 'string'
0.6.0a1, 2017/02/28, Paul Korir:
1) Added 'EMAN' as a 'threeDVolume' format
0.6.0a2, 2017/05/15, Paul Korir:
1) Restructured 'externalReferences' from simpleType to complexType
2) Changed 'externalReference' to 'externalReferenceType' and replaced elements with attributes
0.6.0a3, 2017/05/25, Paul Korir:
1) Added element 'boundingBox' taking six integers: xmin, xmax, ymin, ymax, zmin, zmax; minimums default to 0
0.6.0a4, 2017/07/31, Paul Korir:
1) Added global (optional) external references
0.6.0a4, 2017/09/20, Paul Korir:
2) Renamed global external references to globalExternalReferences
0.6.0a4, 2017/09/25, Paul Korir:
3) Restructured global external references to have the form <ref [attrs]/>
4) Now externalReferenceType has attributes: type (required), otherType (required), value (required), label (new, optional), description (new, optional)
0.6.0a4, 2017/11/23, Paul Korir:
5) Replaced all active 'token' to 'string' types
0.7.0.dev0, 2017/11/09, Paul Korir:
1) new 3D volume type: 'threeDVolumeType' (previous one is 'oldThreeDVolumeType'
supports both byte/integer lattices and density volumes (for subtomogram averages)
2) embedded volume as base64 string using new 'latticeType'
3) removed contour representation
0.7.0.dev0, 2018/05/04, Paul Korir:
4) segment name added
5) removed filePath
6) removed viewVectorRotation and canonicalEulerAngles
7) colour has rgbaType now
0.7.0.dev0, 2018/07/18, Paul Korir:
8) vertex designation now 'surface' or 'normal'
0.8.0.dev0, 2019/11/08, Paul Korir:
1) converted all camelCase names to underscore_case
2) 'polygon' is now 'triangle'
3) changed 'transformation_matrix' from being a subsitution group
4) external_reference (ref): attributes changed to 'resource', 'url', 'accession' from
'type', 'otherType' and 'value', respectively
5) renamed 'macromolecules_and_complexes_type' to 'complexes_and_macromolecules_type'
6) restructured 'macromolecules' to 'macromolecule_list' (same for 'complexes')
7) now 'macromolecule_list' contains 'macromolecule' with 'id' and text value for accession
0.8.0.dev0, 2019/12/18, Paul Korir:
8) now 'transform_list' is mandatory with at least one 'transformation_matrix' for the image-to-physical transform
9) changed 'software' to be a 'software_list' of zero or more 'software' items; software 'version' now required if 'software' is defined
10) 'complexes_and_macromolecules' are deprecated (were for annotation; 'external_references' are sufficient)
11) overhaul of 'mesh' field to have 'vertices', 'normals' (optional) and 'triangles' which are base64-encoded strings of actual data
12) 'xmax', 'ymax' and 'zmax' of 'bounding_box' are mandatory
0.8.0.dev1, 2020/01/29, Paul Korir:
Bugfix: 'software' elements should have an 'id' attribute; 'id' attribute erroneously placed in 'software_list' and should be a list of 0 or more 'software' elements
0.8.0.dev1, 2023/01/30, Paul Korir:
Clarified that transform units are in angstroms (Å).
]]></xs:documentation></xs:annotation></xs:attribute></xs:complexType></xs:element>
Mandatory field. The first 'transformation_matrix' must be theimage-to-physical transform with scale parameters (diagonal elements) in angstroms (Å). Theright-most column consists of the translation applied and isthe physical distance from the physical origin in anstroms (Å).
<xs:element name="transform_list" minOccurs="1"><xs:annotation><xs:documentation>Mandatory field. The first 'transformation_matrix' must be the image-to-physical transform with scale parameters (diagonal elements) in angstroms (Å). The right-most column consists of the translation applied and is the physical distance from the physical origin in anstroms (Å).</xs:documentation></xs:annotation><xs:complexType><xs:sequence><xs:element name="transformation_matrix" type="transformation_matrix_type" minOccurs="1" maxOccurs="unbounded"/></xs:sequence></xs:complexType></xs:element>
Mandatory field. Designates the element type within'segment_list' that contains the primary description of the segments.Constrained to be either 'three_d_volume', 'shape_primitive_list', or'mesh_list'.
Diagram
Type
restriction of xs:string
Properties
content
simple
Facets
enumeration
three_d_volume
enumeration
shape_primitive_list
enumeration
mesh_list
Source
<xs:element name="primary_descriptor"><xs:annotation><xs:documentation>Mandatory field. Designates the element type within 'segment_list' that contains the primary description of the segments. Constrained to be either 'three_d_volume', 'shape_primitive_list', or 'mesh_list'.</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="three_d_volume"/><xs:enumeration value="shape_primitive_list"/><xs:enumeration value="mesh_list"/></xs:restriction></xs:simpleType></xs:element>
<xs:element name="biological_annotation" minOccurs="0"><xs:complexType><xs:sequence><xs:element name="name" type="xs:string" minOccurs="0"/><xs:element name="description" type="xs:string" minOccurs="0"/><xs:element name="external_references" minOccurs="0"><xs:complexType><xs:sequence><xs:element name="ref" type="external_reference_type" minOccurs="0" maxOccurs="unbounded"/></xs:sequence></xs:complexType></xs:element><xs:element name="number_of_instances" type="xs:positiveInteger" minOccurs="0"><xs:annotation><xs:documentation>Number of instances present of the basic structure (complex or macromolecule). For example it could be '7' for the upper ring of GroEL</xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType></xs:element>
Number of instances present of the basic structure(complex or macromolecule). For example it could be '7' for theupper ring of GroEL
Diagram
Type
xs:positiveInteger
Properties
content
simple
minOccurs
0
Source
<xs:element name="number_of_instances" type="xs:positiveInteger" minOccurs="0"><xs:annotation><xs:documentation>Number of instances present of the basic structure (complex or macromolecule). For example it could be '7' for the upper ring of GroEL</xs:documentation></xs:annotation></xs:element>
The ID of the lattice in 'latticeList' that contains the datareferred to by this 3D volume.
Diagram
Type
xs:nonNegativeInteger
Properties
content
simple
Source
<xs:element name="lattice_id" type="xs:nonNegativeInteger"><xs:annotation><xs:documentation>The ID of the lattice in 'latticeList' that contains the data referred to by this 3D volume.</xs:documentation></xs:annotation></xs:element>
The 'value' can either be a contour level used to denote aboundary or the voxel value for this segmentation. The value of 'mode' willbe used to cast this elements value.
Diagram
Type
xs:float
Properties
content
simple
Source
<xs:element name="value" type="xs:float"><xs:annotation><xs:documentation>The 'value' can either be a contour level used to denote a boundary or the voxel value for this segmentation. The value of 'mode' will be used to cast this elements value.</xs:documentation></xs:annotation></xs:element>
<xs:element name="mode" type="mode_type"><xs:annotation><xs:documentation>Mode specifies the datatype of each voxel in the 3D volume</xs:documentation></xs:annotation></xs:element>
<xs:element name="endianness" type="endian_type" default="little"><xs:annotation><xs:documentation>The manner in which the binary data is read.</xs:documentation></xs:annotation></xs:element>
<xs:element name="size" type="volume_structure_type"><xs:annotation><xs:documentation>The 3D volume size in voxels.</xs:documentation></xs:annotation></xs:element>
<xs:element name="start" type="volume_index_type"><xs:annotation><xs:documentation>The index values for the start voxel.</xs:documentation></xs:annotation></xs:element>
Data is a base64 encoded string of zlib-compressed binarydata.
Diagram
Type
xs:string
Properties
content
simple
Source
<xs:element name="data" type="xs:string"><xs:annotation><xs:documentation>Data is a base64 encoded string of zlib-compressed binary data.</xs:documentation></xs:annotation></xs:element>
This is particularly relevant if all the segments are storedin one file, like in HDF5.
Diagram
Type
xs:string
Properties
content
simple
minOccurs
0
Source
<xs:element name="objectPath" type="xs:string" minOccurs="0"><xs:annotation><xs:documentation>This is particularly relevant if all the segments are stored in one file, like in HDF5.</xs:documentation></xs:annotation></xs:element>
<xs:element name="contourLevel" type="xs:float" minOccurs="0"><xs:annotation><xs:documentation>Should be specified if map is non-binary</xs:documentation></xs:annotation></xs:element>
<xs:element name="offset" type="integerVectorType"><xs:annotation><xs:documentation>Offset of the segment relative to the orign map.</xs:documentation></xs:annotation></xs:element>
data is a space-separated sequence of numbers to be converted tofloats. The number of items in 'data' is equivalent to the product of 'rows' and'cols'.
<xs:complexType name="transformation_matrix_type"><xs:annotation><xs:documentation>data is a space-separated sequence of numbers to be converted to floats. The number of items in 'data' is equivalent to the product of 'rows' and 'cols'.</xs:documentation></xs:annotation><xs:sequence><xs:element name="rows" type="xs:positiveInteger"/><xs:element name="cols" type="xs:positiveInteger"/><xs:element name="data" type="xs:string"/></xs:sequence><xs:attribute name="id" type="xs:nonNegativeInteger"/></xs:complexType>
<xs:complexType name="segment_type"><xs:sequence><xs:element name="biological_annotation" minOccurs="0"><xs:complexType><xs:sequence><xs:element name="name" type="xs:string" minOccurs="0"/><xs:element name="description" type="xs:string" minOccurs="0"/><xs:element name="external_references" minOccurs="0"><xs:complexType><xs:sequence><xs:element name="ref" type="external_reference_type" minOccurs="0" maxOccurs="unbounded"/></xs:sequence></xs:complexType></xs:element><xs:element name="number_of_instances" type="xs:positiveInteger" minOccurs="0"><xs:annotation><xs:documentation>Number of instances present of the basic structure (complex or macromolecule). For example it could be '7' for the upper ring of GroEL</xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType></xs:element><xs:element name="colour" type="rgba_type" minOccurs="0"/><xs:sequence><xs:element name="three_d_volume" type="three_d_volume_type" minOccurs="0"/><xs:element name="shape_primitive_list" minOccurs="0"><xs:complexType><xs:sequence><xs:element ref="shape_primitive" maxOccurs="unbounded"/></xs:sequence></xs:complexType></xs:element><xs:element name="mesh_list" minOccurs="0"><xs:complexType><xs:sequence><xs:element name="mesh" type="mesh_type" maxOccurs="unbounded"/></xs:sequence></xs:complexType></xs:element></xs:sequence></xs:sequence><xs:attribute name="id" type="xs:positiveInteger" use="required"/><xs:attribute name="parent_id" type="xs:nonNegativeInteger" use="required"><xs:annotation><xs:documentation>For the root segmenƒt: parentSegmentID = 0</xs:documentation></xs:annotation></xs:attribute></xs:complexType>
<xs:complexType name="three_d_volume_type"><xs:sequence><xs:element name="lattice_id" type="xs:nonNegativeInteger"><xs:annotation><xs:documentation>The ID of the lattice in 'latticeList' that contains the data referred to by this 3D volume.</xs:documentation></xs:annotation></xs:element><xs:element name="value" type="xs:float"><xs:annotation><xs:documentation>The 'value' can either be a contour level used to denote a boundary or the voxel value for this segmentation. The value of 'mode' will be used to cast this elements value.</xs:documentation></xs:annotation></xs:element><xs:element name="transform_id" type="xs:nonNegativeInteger" minOccurs="0"/></xs:sequence></xs:complexType>
The 'data' attribute is a base64-encoded binary sequence of float(default: float32) triples. The 0-based position is the index used when constructingtriangles (see 'triangles_type' definition).
<xs:complexType name="vertices_type"><xs:annotation><xs:documentation>The 'data' attribute is a base64-encoded binary sequence of float (default: float32) triples. The 0-based position is the index used when constructing triangles (see 'triangles_type' definition).</xs:documentation></xs:annotation><xs:attribute name="num_vertices" type="xs:nonNegativeInteger"/><xs:attribute name="mode" type="mode_type" default="float32"/><xs:attribute name="endianness" type="endian_type" default="little"/><xs:attribute name="data" type="xs:string"/></xs:complexType>
The 'data' attribute is a base64-encoded binary sequence of float(default: float32) triples. The 0-based position is the index used when constructingtriangles (see 'triangles_type' definition).
<xs:complexType name="normals_type"><xs:annotation><xs:documentation>The 'data' attribute is a base64-encoded binary sequence of float (default: float32) triples. The 0-based position is the index used when constructing triangles (see 'triangles_type' definition).</xs:documentation></xs:annotation><xs:attribute name="num_normals" type="xs:nonNegativeInteger"/><xs:attribute name="mode" type="mode_type" default="float32"/><xs:attribute name="endianness" type="endian_type" default="little"/><xs:attribute name="data" type="xs:string"/></xs:complexType>
Complex Type triangles_type
Namespace
No namespace
Annotations
The 'data' attribute is a base64-encoded binary sequence of int(default: uint32) triples. The values are 0-based indices of the vertices in the'vertices' mesh attribute.
<xs:complexType name="triangles_type"><xs:annotation><xs:documentation>The 'data' attribute is a base64-encoded binary sequence of int (default: uint32) triples. The values are 0-based indices of the vertices in the 'vertices' mesh attribute.</xs:documentation></xs:annotation><xs:attribute name="num_triangles" type="xs:nonNegativeInteger"/><xs:attribute name="mode" type="mode_type" default="uint32"/><xs:attribute name="endianness" type="endian_type" default="little"/><xs:attribute name="data" type="xs:string"/></xs:complexType>
<xs:complexType name="lattice_type"><xs:sequence><xs:element name="mode" type="mode_type"><xs:annotation><xs:documentation>Mode specifies the datatype of each voxel in the 3D volume</xs:documentation></xs:annotation></xs:element><xs:element name="endianness" type="endian_type" default="little"><xs:annotation><xs:documentation>The manner in which the binary data is read.</xs:documentation></xs:annotation></xs:element><xs:element name="size" type="volume_structure_type"><xs:annotation><xs:documentation>The 3D volume size in voxels.</xs:documentation></xs:annotation></xs:element><xs:element name="start" type="volume_index_type"><xs:annotation><xs:documentation>The index values for the start voxel.</xs:documentation></xs:annotation></xs:element><xs:element name="data" type="xs:string"><xs:annotation><xs:documentation>Data is a base64 encoded string of zlib-compressed binary data.</xs:documentation></xs:annotation></xs:element></xs:sequence><xs:attribute name="id" type="xs:nonNegativeInteger"/></xs:complexType>
<xs:complexType name="canonicalEulerAnglesType"><xs:annotation><xs:documentation>Euler angler according to Heymann et al. 2005 (doi:10.1016/j.jsb.2005.06.001)</xs:documentation><xs:documentation>Angles are specified in degrees together with their bounds.</xs:documentation></xs:annotation><xs:sequence><xs:element name="phi" type="angleDegreeType"/><xs:element name="theta" type="angleDegreeType"/><xs:element name="psi" type="angleDegreeType"/></xs:sequence><xs:attribute name="id" type="xs:nonNegativeInteger"/></xs:complexType>
<xs:complexType name="complexes_and_macromolecules_type"><xs:annotation><xs:documentation>Depending on the problem, one can either reference the sample on the macromolecule level or the complex level.</xs:documentation></xs:annotation><xs:sequence><xs:element name="macromolecule_list" minOccurs="0"><xs:complexType><xs:sequence><xs:element name="macromolecule" type="biomolecule_type" maxOccurs="unbounded"/></xs:sequence></xs:complexType></xs:element><xs:element name="complex_list" minOccurs="0"><xs:complexType><xs:sequence><xs:element name="complex" type="biomolecule_type" maxOccurs="unbounded"/></xs:sequence></xs:complexType></xs:element></xs:sequence></xs:complexType>
<xs:complexType name="oldThreeDVolumeType"><xs:sequence><xs:element name="file" type="xs:string"/><xs:element name="objectPath" type="xs:string" minOccurs="0"><xs:annotation><xs:documentation>This is particularly relevant if all the segments are stored in one file, like in HDF5.</xs:documentation></xs:annotation></xs:element><xs:element name="contourLevel" type="xs:float" minOccurs="0"><xs:annotation><xs:documentation>Should be specified if map is non-binary</xs:documentation></xs:annotation></xs:element><xs:element name="transformId" type="xs:nonNegativeInteger" minOccurs="0"/><xs:element name="format"><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="runLengthEncoding"/><xs:enumeration value="MRC"/><xs:enumeration value="Segger"/><xs:enumeration value="EMAN"/></xs:restriction></xs:simpleType></xs:element></xs:sequence><xs:attribute name="id" type="xs:nonNegativeInteger"/></xs:complexType>
<xs:complexType name="runLengthEncodingType"><xs:annotation><xs:documentation>Deprecated</xs:documentation></xs:annotation><xs:sequence><xs:element name="string"><xs:simpleType><xs:restriction base="xs:token"><xs:pattern value="\d+(,\d+)+"/></xs:restriction></xs:simpleType></xs:element><xs:element name="offset" type="integerVectorType"><xs:annotation><xs:documentation>Offset of the segment relative to the orign map.</xs:documentation></xs:annotation></xs:element><xs:element name="boxSize" type="positiveIntegerVectorType"/></xs:sequence></xs:complexType>
The 'name' corresponds to the sRGB colour space name and mapsprecisely to an RGB value. When this happens, the alpha channel should be set to '1'(opaque). Requires the use of an external Python module (webcolors.py).
<xs:complexType name="colourType"><xs:annotation><xs:documentation>The 'name' corresponds to the sRGB colour space name and maps precisely to an RGB value. When this happens, the alpha channel should be set to '1' (opaque). Requires the use of an external Python module (webcolors.py).</xs:documentation></xs:annotation><xs:choice><xs:element name="name" type="xs:token"/><xs:element name="rgba" type="rgba_type"/></xs:choice></xs:complexType>
Version History0.2, 2015/3/15, Ardan Patwardhan: 1) Added support for color 2) Added support for triangle representation of segment - this is in support of Amira segmentations 0.3, 2015/10/21, Paul Korir: 1) Added voxelTransform 2) Added filePath for segmentLinks to HDF5 (Segger) segmentations 3) Added segmentObjects with contours and meshes for IMOD 0.4, 2015/11/04, Paul Korir: 1) Added alpha for rgb color (transparency) 0.5, 2015/12/14, Paul Korir: 1) Removed 'voxelTransform'2) Moved 'numberOfCopies' as 'numberOfInstances' to be a sequence element within 'biologicalAnnotation'3) Made 'color' a choice between 'name' (X11/HTML4 sRGB colour space names) and 'rgba'4) Added a 'transform' element, which is a possibly empty list of transformation matrices referenced within the document by a non-negative identifier5) Renamed 'segmentLink' to 'voxelSegmentation' and added a 'transformId' element6) Renamed 'color' element to 'colour' and 'colorType' to 'colourType'7) Structured 'shapePrimitive' to a list of 'shapePrimitive' (substitution group for 'ellipsoid', 'cuboid', 'pyramid', 'cylinder')8) Identified and labeled deprecated data types9) Renamed shapePrimitive 'pyramid' to 'cone' and added tentative definition10) Removed 'origin' and 'viewVectorRotation' elements from shape primitives (cuboid, ellipsoid, cone, cylinder) and replaced with 'transformId' element11) Renamed references to 'triangles' to 'polygons' e.g. 'triangleListType' now 'polygonListType'0.5.1, 2015/12/23, Paul Korir:1) Change colourType to have rgbaType minOccurs=12) Added 'attribute' element (e.g. for FOM) to shapePrimitive3) Deleted comment: 'Are the CCP4 format masks going to be allowed? If so, we could represent the information of the mask (mapType) here.' from 'voxelSegmentation'.4) Added segment 'format' element to 'voxelSegmentation' restricted to values 'runLengthEncoding', 'MRC', or 'Segger'5) Renamed 'voxelSegmentation' to 'threeDVolume' and deprecated 'subTomogramAverage'.6) Restructured 'transforms' into a list ('transformList') of 'transform', which is a substitutionGroup of 'transformationMatrix', 'canonicalEulerAngles' or 'viewVectorRotation'. 7) Added an 'angleDegreeType' to restrict angle range in degrees [0,360].0.5.2, 2016/01/04, Paul Korir:1) Made 'transformList' optional2) Added 'id' attributes for 'canonicalEulerAngle' and 'viewVectorRotation'3) Annotations for 'filePath'4) Added 'other' to types for 'externalReference' and optional 'otherTypes' attribute5) Changed type of 'name' element in 'colour' from 'xs:string' to 'xs:token'6) Created 'threeDVolumeType' to be used by 'threeDVolume' and 'subtomogramAverage'7) Added 'id' attributes for 'shapePrimitive' and 'threeDVolumeType'8) Renamed 'contours' to 'contourList'9) Created 'meshList' as a sequence of 'mesh'. Each 'mesh' has an 'id'0.5.3, 2016/01/06, Paul Korir:1) Renamed 'transformationMatrixType' attribute from 'transformId' to 'id'2) Created 'dimensionType' for all 'shapePrimitive' dimensions0.5.4, 2016/01/06, Paul Korir:1) Added element 'primaryDescriptor' of type restricted string to 'threeDVolume', 'shapePrimitiveList', 'contourList', 'meshList'0.5.5, 2016/01/22, Paul Korir:1) Changed 'vertices' and 'polygons' to 'vertexList' and 'polygonList', respectively.2) Added attribute 'designation' restricted to string 'vertex' (default) and 'normal' to 'vertex' element.0.5.6, 2016/01/25, Paul Korir:1) Changed attribute 'polygonID' from 'positiveInteger' to 'nonNegativeInteger'0.5.7, 2016/01/26, Paul Korir:1) Change element names to save disk space: 'vertex' to 'v', 'vertexID' to 'vID', 'point' to 'p', 'polygon' to 'P', 'polygonID' to 'PID'2) Changed 'vertexType' to have ID of type 'xs:nonNegativeInteger' (from 'xs:positiveInteger')0.5.8, 2016/04/26, Paul Korir:1) Added 'version' element at the root.0.5.8, 2016/08/08, Paul Korir:2) Made 'shapePrimitive' element 'attribute (not present in 'subtomogramAverage' optional (minOccurs=0)0.5.8, 2016/08/17, Paul Korir:3) Added a 'transformId' element to 'contourList' and to 'mesh'.0.5.8, 2016/10/04, Paul Korir:4) Simplified shape primitives by eliminating internal layering e.g. cone/dimensions/height to cone/height0.5.8, 2016/10/14, Paul Korir:5) (Finally) renamed 'surfaceType' to 'meshType' for consistency.0.5.8, 2016/10/20, Paul Korir:6) 'macromolecule' and 'complex' changed from 'positiveInteger' to 'string'0.6.0a1, 2017/02/28, Paul Korir:1) Added 'EMAN' as a 'threeDVolume' format0.6.0a2, 2017/05/15, Paul Korir:1) Restructured 'externalReferences' from simpleType to complexType2) Changed 'externalReference' to 'externalReferenceType' and replaced elements with attributes0.6.0a3, 2017/05/25, Paul Korir:1) Added element 'boundingBox' taking six integers: xmin, xmax, ymin, ymax, zmin, zmax; minimums default to 00.6.0a4, 2017/07/31, Paul Korir:1) Added global (optional) external references0.6.0a4, 2017/09/20, Paul Korir:2) Renamed global external references to globalExternalReferences0.6.0a4, 2017/09/25, Paul Korir:3) Restructured global external references to have the form <ref [attrs]/>4) Now externalReferenceType has attributes: type (required), otherType (required), value (required), label (new, optional), description (new, optional)0.6.0a4, 2017/11/23, Paul Korir:5) Replaced all active 'token' to 'string' types0.7.0.dev0, 2017/11/09, Paul Korir:1) new 3D volume type: 'threeDVolumeType' (previous one is 'oldThreeDVolumeType' supports both byte/integer lattices and density volumes (for subtomogram averages)2) embedded volume as base64 string using new 'latticeType'3) removed contour representation0.7.0.dev0, 2018/05/04, Paul Korir:4) segment name added5) removed filePath6) removed viewVectorRotation and canonicalEulerAngles7) colour has rgbaType now0.7.0.dev0, 2018/07/18, Paul Korir:8) vertex designation now 'surface' or 'normal'0.8.0.dev0, 2019/11/08, Paul Korir:1) converted all camelCase names to underscore_case2) 'polygon' is now 'triangle'3) changed 'transformation_matrix' from being a subsitution group4) external_reference (ref): attributes changed to 'resource', 'url', 'accession' from'type', 'otherType' and 'value', respectively5) renamed 'macromolecules_and_complexes_type' to 'complexes_and_macromolecules_type'6) restructured 'macromolecules' to 'macromolecule_list' (same for 'complexes')7) now 'macromolecule_list' contains 'macromolecule' with 'id' and text value for accession0.8.0.dev0, 2019/12/18, Paul Korir:8) now 'transform_list' is mandatory with at least one 'transformation_matrix' for the image-to-physical transform9) changed 'software' to be a 'software_list' of zero or more 'software' items; software 'version' now required if 'software' is defined10) 'complexes_and_macromolecules' are deprecated (were for annotation; 'external_references' are sufficient)11) overhaul of 'mesh' field to have 'vertices', 'normals' (optional) and 'triangles' which are base64-encoded strings of actual data12) 'xmax', 'ymax' and 'zmax' of 'bounding_box' are mandatory 0.8.0.dev1, 2020/01/29, Paul Korir:Bugfix: 'software' elements should have an 'id' attribute; 'id' attribute erroneously placed in 'software_list' and should be a list of 0 or more 'software' elements0.8.0.dev1, 2023/01/30, Paul Korir:Clarified that transform units are in angstroms (Å).
<xs:attribute name="schema_version" type="xs:string" default="0.8.0.dev1"><xs:annotation><xs:documentation><![CDATA[
Version History
0.2, 2015/3/15, Ardan Patwardhan:
1) Added support for color
2) Added support for triangle representation of segment - this is in support of Amira segmentations
0.3, 2015/10/21, Paul Korir:
1) Added voxelTransform
2) Added filePath for segmentLinks to HDF5 (Segger) segmentations
3) Added segmentObjects with contours and meshes for IMOD
0.4, 2015/11/04, Paul Korir:
1) Added alpha for rgb color (transparency)
0.5, 2015/12/14, Paul Korir:
1) Removed 'voxelTransform'
2) Moved 'numberOfCopies' as 'numberOfInstances' to be a sequence element within 'biologicalAnnotation'
3) Made 'color' a choice between 'name' (X11/HTML4 sRGB colour space names) and 'rgba'
4) Added a 'transform' element, which is a possibly empty list of transformation matrices referenced within the document by a non-negative identifier
5) Renamed 'segmentLink' to 'voxelSegmentation' and added a 'transformId' element
6) Renamed 'color' element to 'colour' and 'colorType' to 'colourType'
7) Structured 'shapePrimitive' to a list of 'shapePrimitive' (substitution group for 'ellipsoid', 'cuboid', 'pyramid', 'cylinder')
8) Identified and labeled deprecated data types
9) Renamed shapePrimitive 'pyramid' to 'cone' and added tentative definition
10) Removed 'origin' and 'viewVectorRotation' elements from shape primitives (cuboid, ellipsoid, cone, cylinder) and replaced with 'transformId' element
11) Renamed references to 'triangles' to 'polygons' e.g. 'triangleListType' now 'polygonListType'
0.5.1, 2015/12/23, Paul Korir:
1) Change colourType to have rgbaType minOccurs=1
2) Added 'attribute' element (e.g. for FOM) to shapePrimitive
3) Deleted comment: 'Are the CCP4 format masks going to be allowed? If so, we could represent the information of the mask (mapType) here.' from 'voxelSegmentation'.
4) Added segment 'format' element to 'voxelSegmentation' restricted to values 'runLengthEncoding', 'MRC', or 'Segger'
5) Renamed 'voxelSegmentation' to 'threeDVolume' and deprecated 'subTomogramAverage'.
6) Restructured 'transforms' into a list ('transformList') of 'transform', which is a substitutionGroup of 'transformationMatrix', 'canonicalEulerAngles' or 'viewVectorRotation'.
7) Added an 'angleDegreeType' to restrict angle range in degrees [0,360].
0.5.2, 2016/01/04, Paul Korir:
1) Made 'transformList' optional
2) Added 'id' attributes for 'canonicalEulerAngle' and 'viewVectorRotation'
3) Annotations for 'filePath'
4) Added 'other' to types for 'externalReference' and optional 'otherTypes' attribute
5) Changed type of 'name' element in 'colour' from 'xs:string' to 'xs:token'
6) Created 'threeDVolumeType' to be used by 'threeDVolume' and 'subtomogramAverage'
7) Added 'id' attributes for 'shapePrimitive' and 'threeDVolumeType'
8) Renamed 'contours' to 'contourList'
9) Created 'meshList' as a sequence of 'mesh'. Each 'mesh' has an 'id'
0.5.3, 2016/01/06, Paul Korir:
1) Renamed 'transformationMatrixType' attribute from 'transformId' to 'id'
2) Created 'dimensionType' for all 'shapePrimitive' dimensions
0.5.4, 2016/01/06, Paul Korir:
1) Added element 'primaryDescriptor' of type restricted string to 'threeDVolume', 'shapePrimitiveList', 'contourList', 'meshList'
0.5.5, 2016/01/22, Paul Korir:
1) Changed 'vertices' and 'polygons' to 'vertexList' and 'polygonList', respectively.
2) Added attribute 'designation' restricted to string 'vertex' (default) and 'normal' to 'vertex' element.
0.5.6, 2016/01/25, Paul Korir:
1) Changed attribute 'polygonID' from 'positiveInteger' to 'nonNegativeInteger'
0.5.7, 2016/01/26, Paul Korir:
1) Change element names to save disk space: 'vertex' to 'v', 'vertexID' to 'vID', 'point' to 'p', 'polygon' to 'P', 'polygonID' to 'PID'
2) Changed 'vertexType' to have ID of type 'xs:nonNegativeInteger' (from 'xs:positiveInteger')
0.5.8, 2016/04/26, Paul Korir:
1) Added 'version' element at the root.
0.5.8, 2016/08/08, Paul Korir:
2) Made 'shapePrimitive' element 'attribute (not present in 'subtomogramAverage' optional (minOccurs=0)
0.5.8, 2016/08/17, Paul Korir:
3) Added a 'transformId' element to 'contourList' and to 'mesh'.
0.5.8, 2016/10/04, Paul Korir:
4) Simplified shape primitives by eliminating internal layering e.g. cone/dimensions/height to cone/height
0.5.8, 2016/10/14, Paul Korir:
5) (Finally) renamed 'surfaceType' to 'meshType' for consistency.
0.5.8, 2016/10/20, Paul Korir:
6) 'macromolecule' and 'complex' changed from 'positiveInteger' to 'string'
0.6.0a1, 2017/02/28, Paul Korir:
1) Added 'EMAN' as a 'threeDVolume' format
0.6.0a2, 2017/05/15, Paul Korir:
1) Restructured 'externalReferences' from simpleType to complexType
2) Changed 'externalReference' to 'externalReferenceType' and replaced elements with attributes
0.6.0a3, 2017/05/25, Paul Korir:
1) Added element 'boundingBox' taking six integers: xmin, xmax, ymin, ymax, zmin, zmax; minimums default to 0
0.6.0a4, 2017/07/31, Paul Korir:
1) Added global (optional) external references
0.6.0a4, 2017/09/20, Paul Korir:
2) Renamed global external references to globalExternalReferences
0.6.0a4, 2017/09/25, Paul Korir:
3) Restructured global external references to have the form <ref [attrs]/>
4) Now externalReferenceType has attributes: type (required), otherType (required), value (required), label (new, optional), description (new, optional)
0.6.0a4, 2017/11/23, Paul Korir:
5) Replaced all active 'token' to 'string' types
0.7.0.dev0, 2017/11/09, Paul Korir:
1) new 3D volume type: 'threeDVolumeType' (previous one is 'oldThreeDVolumeType'
supports both byte/integer lattices and density volumes (for subtomogram averages)
2) embedded volume as base64 string using new 'latticeType'
3) removed contour representation
0.7.0.dev0, 2018/05/04, Paul Korir:
4) segment name added
5) removed filePath
6) removed viewVectorRotation and canonicalEulerAngles
7) colour has rgbaType now
0.7.0.dev0, 2018/07/18, Paul Korir:
8) vertex designation now 'surface' or 'normal'
0.8.0.dev0, 2019/11/08, Paul Korir:
1) converted all camelCase names to underscore_case
2) 'polygon' is now 'triangle'
3) changed 'transformation_matrix' from being a subsitution group
4) external_reference (ref): attributes changed to 'resource', 'url', 'accession' from
'type', 'otherType' and 'value', respectively
5) renamed 'macromolecules_and_complexes_type' to 'complexes_and_macromolecules_type'
6) restructured 'macromolecules' to 'macromolecule_list' (same for 'complexes')
7) now 'macromolecule_list' contains 'macromolecule' with 'id' and text value for accession
0.8.0.dev0, 2019/12/18, Paul Korir:
8) now 'transform_list' is mandatory with at least one 'transformation_matrix' for the image-to-physical transform
9) changed 'software' to be a 'software_list' of zero or more 'software' items; software 'version' now required if 'software' is defined
10) 'complexes_and_macromolecules' are deprecated (were for annotation; 'external_references' are sufficient)
11) overhaul of 'mesh' field to have 'vertices', 'normals' (optional) and 'triangles' which are base64-encoded strings of actual data
12) 'xmax', 'ymax' and 'zmax' of 'bounding_box' are mandatory
0.8.0.dev1, 2020/01/29, Paul Korir:
Bugfix: 'software' elements should have an 'id' attribute; 'id' attribute erroneously placed in 'software_list' and should be a list of 0 or more 'software' elements
0.8.0.dev1, 2023/01/30, Paul Korir:
Clarified that transform units are in angstroms (Å).
]]></xs:documentation></xs:annotation></xs:attribute>