peakStructure

<h:div class="summary">The structure of a peak.</h:div>
<h:div class="description">Primarily to record couplings and other fine structure. At present we have tested this on HNMR spectra, C13 NMR and simple IR. We believe that other types of spectroscopy (ESR, NQR, etc) can be represented to some extent, but there may be systems beyond the current expressive power.</h:div>
<h:div>For molecules without symmetry we believe that most of the important types of NMR coupling can be represented. Thus an atom which gives rise to two couplings can have two child PeakStructures, and this is shown in example1.
  <h:pre><cml xmlns="http://www.xml-cml.org/schema"> <!-- Ha ... Hb ... Hc1, Hc2 --> <molecule id="m1"> <atomArray> <atom id="a1" elementType="H"> <label value="Ha"/> </atom> <atom id="a2" elementType="H"> <label value="Hb"/> </atom> <atom id="a3" elementType="H"> <label value="Hc1"/> </atom> <atom id="a4" elementType="H"> <label value="Hc2"/> </atom> </atomArray> </molecule> <spectrum id="spectrum2" title="test peaks"> <peakList> <peak id="p1" title="Ha" atomRefs="a1" peakShape="sharp" xUnits="unit:ppm" xValue="6.0"> <peakStructure type="coupling" peakMultiplicity="doublet11" value="12" units="unit:hertz" atomRefs="a2"/> </peak> <peak id="p2" title="Hb" atomRefs="a2" peakShape="sharp" xUnits="unit:ppm" xValue="7.0"> <peakStructure type="coupling" peakMultiplicity="doublet11" value="12" units="unit:hertz" atomRefs="a1"/> <peakStructure type="coupling" peakMultiplicity="triplet121" value="15" units="unit:hertz" atomRefs="a3 a4"/> </peak> <peak id="p3" title="Hc" atomRefs="a3 a4" peakShape="sharp" xUnits="unit:ppm" xValue="8.0"> <peakStructure type="coupling" peakMultiplicity="doublet11" value="15" units="unit:hertz" atomRefs="a2"/> </peak> </peakList> </spectrum> </cml></h:pre>Where a peak is due to symmetry-related atoms there are different couplings to symmetrical atoms. Thus in an AA'BB' system there can be two couplings to the A atoms and we need nested peakStructures to represent these. In this case the order of the atoms in the peak@atomRefs maps to the order of the grandchildren. See example2.
  <h:pre><!-- AA'BB' where there are 2 Ha and 2 Hb with two couplings J1 Ha ... Hb and Ha' ... Hb' J2 Ha ... Hb' and Ha' ... Hb --> <molecule id="m1"> <atomArray> <atom id="a1" elementType="H"> <label value="Ha"/> </atom> <atom id="a2" elementType="H"> <label value="Ha'"/> </atom> <atom id="a3" elementType="H"> <label value="Hb"/> </atom> <atom id="a4" elementType="H"> <label value="Hb'"/> </atom> </atomArray> </molecule> <spectrum id="spectrum2" title="test peaks"> <peakList> <!-- the ORDER of a1 and a2 is linked to the ORDER of the grandchildren elements, i.e. a1 couples to atoms in ps11 and ps21 while a2 relates to atoms is ps21 and ps22 --> <peak id="p1" title="Ha" atomRefs="a1, a2" peakShape="sharp" xUnits="unit:ppm" xValue="6.0"> <peakStructure id="ps1" type="coupling" peakMultiplicity="doublet" value="10" units="unit:hertz"> <peakStructure id="ps11" atomRefs="a3"/> <peakStructure id="ps12" atomRefs="a4"/> </peakStructure> <peakStructure id="ps2" type="coupling" peakMultiplicity="doublet" value="2" units="unit:hertz"> <peakStructure id="ps21" atomRefs="a4"/> <peakStructure id="ps22" atomRefs="a3"/> </peakStructure> </peak> </peakList> </spectrum> </cml></h:pre>
</h:div>
<h:div class="example" href="peakStructure1.xml"/>
<h:div class="example" href="peakStructure2.xml"/>

Element Information

Model

anyCml | ANY element from ANY namespace OTHER than 'http://www.xml-cml.org/schema' | ANY element from LOCAL namespace 'No Namespace'
Children: anyCml

Attributes

QName Type Fixed Default Use Inheritable Annotation
atomRefs atomRefArrayType optional
<h:div class="summary">A reference to a list of atoms.</h:div>
<h:div class="description">Used by bonds, electrons, atomSets, etc.</h:div>
bondRefs bondRefArrayType optional
<h:div class="summary">A reference to a list of bonds.</h:div>
<h:div class="description">Used by electrons, bondSets, etc.</h:div>
convention namespaceRefType optional
<h:div class="summary">A reference to a convention.</h:div>
<h:div class="description">There is no controlled vocabulary for conventions, but the author must ensure that the semantics are openly available and that there are mechanisms for implementation. The convention is inherited by all the subelements, so that a convention for
  <h:tt>molecule</h:tt>would by default extend to its
  <h:tt>bond</h:tt>and
  <h:tt>atom</h:tt>children. This can be overwritten if necessary by an explicit
  <h:tt>convention</h:tt>.
  <h:p>It may be useful to create conventions with namespaces (e.g.
    <h:tt>iupac:name</h:tt>). Use of
    <h:tt>convention</h:tt>will normally require non-STMML semantics, and should be used with caution. We would expect that conventions prefixed with "ISO" would be useful, such as ISO8601 for dateTimes.</h:p>
  <h:p>There is no default, but the conventions of STMML or the related language (e.g. CML) will be assumed.</h:p>
</h:div>
<h:div class="example" id="ex" href="convGroup1.xml"/>
dictRef namespaceRefType optional
<h:div class="summary">A reference to a dictionary entry.</h:div>
<h:div class="description">Elements in data instances such as _scalar_ may have a
  <h:tt>dictRef</h:tt>attribute to point to an entry in a dictionary. To avoid excessive use of (mutable) filenames and URIs we recommend a namespace prefix, mapped to a namespace URI in the normal manner. In this case, of course, the namespace URI must point to a real XML doc containing _entry_ elements and validated against STMML Schema.
  <h:p>Where there is concern about the dictionary becoming separated from the doc the dictionary entries can be physically included as part of the data instance and the normal XPointer addressing mechanism can be used.</h:p>
  <h:p>This attribute can also be used on _dictionary_ elements to define the namespace prefix</h:p>
</h:div>
<h:div class="example" href="dictRefGroup1.xml"/>
id idType optional
<h:div class="summary">A unique ID for an element.</h:div>
<h:div class="description">Id is used for machine identification of elements and in general should not have application semantics. It is similar to the XML ID type as containing only alphanumerics, '_', ',' and '-' and and must start with an alphabetic character. Ids are case sensitive. Ids should be unique within local scope, thus all atoms within a molecule should have unique ids, but separated molecules within a doc (such as a published article) might have identical ids. Software should be able to search local scope (e.g. all atoms within a molecule). However this is under constant review.</h:div>
peakMultiplicity peakMultiplicityType optional
<h:div class="summary">Multiplicity of a peak.</h:div>
<h:div class="description">Uses a semi-controlled vocabulary.</h:div>
peakShape peakShapeType optional
<h:div class="summary">Shape of a peak.</h:div>
<h:div class="description">Semi-controlled vocabulary such as broad or sharp.</h:div>
ref refType optional
<h:div class="summary">A reference to an element of given type.</h:div>
<h:div class="description">
  <h:tt>ref</h:tt>modifies an element into a reference to an existing element of that type within the doc. This is similar to a pointer and it can be thought of a strongly typed hyperlink. It may also be used for "subclassing" or "overriding" elements.
  <br xmlns=""/>When referring to an element most of the "data" such as attribute values and element content will be on the full instantiated element. Therefore ref (and possibly id) will normally be the only attributes on the pointing element. However there may be some attributes (title, count, etc.) which have useful semantics, but these are element-specific</h:div>
<h:div class="example" href="refGroup1.xml"/>
title xsd:string optional
<h:div class="summary">A title on an element.</h:div>
<h:div class="description">No controlled value.</h:div>
<h:div class="example" href="title1.xml"/>
type peakStructureTypeType optional
<h:div class="summary">Type of this structure.</h:div>
<h:div class="description">Semi-controlled vocabulary such as coupling or splitting.</h:div>
units unitsType optional
<h:div class="summary">Scientific units on an element.</h:div>
<h:div class="description">These must be taken from a dictionary of units. There should be some mechanism for validating the type of the units against the possible values of the element.</h:div>
value xsd:string optional
<h:div class="summary">Value of a scalar object.</h:div>
<h:div class="description">The value must be consistent with the dataType of the object.</h:div>
Wildcard: ANY attribute from ANY namespace OTHER than 'http://www.xml-cml.org/schema'

Source

<xsd:element name="peakStructure" id="el.peakStructure" substitutionGroup="anyCml">
  <xsd:annotation>
    <xsd:documentation>
      <h:div class="summary">The structure of a peak.</h:div>
      <h:div class="description">Primarily to record couplings and other fine structure. At present we have tested this on HNMR spectra, C13 NMR and simple IR. We believe that other types of spectroscopy (ESR, NQR, etc) can be represented to some extent, but there may be systems beyond the current expressive power.</h:div>
      <h:div>For molecules without symmetry we believe that most of the important types of NMR coupling can be represented. Thus an atom which gives rise to two couplings can have two child PeakStructures, and this is shown in example1.
        <h:pre><cml xmlns="http://www.xml-cml.org/schema"> <!-- Ha ... Hb ... Hc1, Hc2 --> <molecule id="m1"> <atomArray> <atom id="a1" elementType="H"> <label value="Ha"/> </atom> <atom id="a2" elementType="H"> <label value="Hb"/> </atom> <atom id="a3" elementType="H"> <label value="Hc1"/> </atom> <atom id="a4" elementType="H"> <label value="Hc2"/> </atom> </atomArray> </molecule> <spectrum id="spectrum2" title="test peaks"> <peakList> <peak id="p1" title="Ha" atomRefs="a1" peakShape="sharp" xUnits="unit:ppm" xValue="6.0"> <peakStructure type="coupling" peakMultiplicity="doublet11" value="12" units="unit:hertz" atomRefs="a2"/> </peak> <peak id="p2" title="Hb" atomRefs="a2" peakShape="sharp" xUnits="unit:ppm" xValue="7.0"> <peakStructure type="coupling" peakMultiplicity="doublet11" value="12" units="unit:hertz" atomRefs="a1"/> <peakStructure type="coupling" peakMultiplicity="triplet121" value="15" units="unit:hertz" atomRefs="a3 a4"/> </peak> <peak id="p3" title="Hc" atomRefs="a3 a4" peakShape="sharp" xUnits="unit:ppm" xValue="8.0"> <peakStructure type="coupling" peakMultiplicity="doublet11" value="15" units="unit:hertz" atomRefs="a2"/> </peak> </peakList> </spectrum> </cml></h:pre>Where a peak is due to symmetry-related atoms there are different couplings to symmetrical atoms. Thus in an AA'BB' system there can be two couplings to the A atoms and we need nested peakStructures to represent these. In this case the order of the atoms in the peak@atomRefs maps to the order of the grandchildren. See example2.
        <h:pre><!-- AA'BB' where there are 2 Ha and 2 Hb with two couplings J1 Ha ... Hb and Ha' ... Hb' J2 Ha ... Hb' and Ha' ... Hb --> <molecule id="m1"> <atomArray> <atom id="a1" elementType="H"> <label value="Ha"/> </atom> <atom id="a2" elementType="H"> <label value="Ha'"/> </atom> <atom id="a3" elementType="H"> <label value="Hb"/> </atom> <atom id="a4" elementType="H"> <label value="Hb'"/> </atom> </atomArray> </molecule> <spectrum id="spectrum2" title="test peaks"> <peakList> <!-- the ORDER of a1 and a2 is linked to the ORDER of the grandchildren elements, i.e. a1 couples to atoms in ps11 and ps21 while a2 relates to atoms is ps21 and ps22 --> <peak id="p1" title="Ha" atomRefs="a1, a2" peakShape="sharp" xUnits="unit:ppm" xValue="6.0"> <peakStructure id="ps1" type="coupling" peakMultiplicity="doublet" value="10" units="unit:hertz"> <peakStructure id="ps11" atomRefs="a3"/> <peakStructure id="ps12" atomRefs="a4"/> </peakStructure> <peakStructure id="ps2" type="coupling" peakMultiplicity="doublet" value="2" units="unit:hertz"> <peakStructure id="ps21" atomRefs="a4"/> <peakStructure id="ps22" atomRefs="a3"/> </peakStructure> </peak> </peakList> </spectrum> </cml></h:pre>
      </h:div>
      <h:div class="example" href="peakStructure1.xml"/>
      <h:div class="example" href="peakStructure2.xml"/>
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexType>
    <xsd:choice minOccurs="0" maxOccurs="unbounded">
      <xsd:element ref="anyCml"/>
      <xsd:any namespace="##other" processContents="lax"/>
      <xsd:any namespace="##local" processContents="lax"/>
    </xsd:choice>
    <xsd:attributeGroup ref="dictRef"/>
    <xsd:attributeGroup ref="convention"/>
    <xsd:attributeGroup ref="title"/>
    <xsd:attributeGroup ref="id"/>
    <xsd:attributeGroup ref="ref"/>
    <xsd:attributeGroup ref="peakMultiplicity"/>
    <xsd:attributeGroup ref="peakStructureType"/>
    <xsd:attributeGroup ref="peakShape"/>
    <xsd:attributeGroup ref="value"/>
    <xsd:attributeGroup ref="units"/>
    <xsd:attributeGroup ref="atomRefs">
      <xsd:annotation>
        <xsd:documentation>
          <h:div class="summary">The atoms to which the peakStructure refers.</h:div>
          <h:div class="description">Allows identification of the atoms to which the peak is coupled (not the atoms contributing to the primnary reference for which
            <h:tt>peak</h:tt>should be used). It may be combined with bondRefs. Even single atoms should use atomRefs, not atomRef.</h:div>
        </xsd:documentation>
      </xsd:annotation>
    </xsd:attributeGroup>
    <xsd:attributeGroup ref="bondRefs">
      <xsd:annotation>
        <xsd:documentation>
          <h:div class="summary">Bonds contributing to this peakStructure</h:div>
          <h:div class="description">Even a single bond should use bondRefs, not bondRef</h:div>
        </xsd:documentation>
      </xsd:annotation>
    </xsd:attributeGroup>
    <xsd:anyAttribute namespace="##other" processContents="lax"/>
  </xsd:complexType>
</xsd:element>

Sample