SignalML annotations

[vc_row][vc_column][vc_column_text]This issue is logically separate from the main idea of SignalML, but important. Basically, XML tags for major annotations (single-channel transients, fixed blocks etc.) were defined in ver. 1.0. This information should be linked to the presentation of the data, that is for example amplitude of transients in given channel will depend on the montage and possibly also applied filters. This gives two related issues:

  • Annotations related to particular epochs/instants of the signal—marks and events (EP markers, transients, artifacts, hypnograms, arbitrary annotations etc.).
  • Data presentation layer (filters, montage).

From (Durka and Ircha 2004):

An imaginary file exemplifying some tag definitions and actual marks (annotations) is presented in Table 2. Section contains enough information to uniquely link the annotations to a given data file. Section records the possible transforms applied to the signal when the annotations were created, that is, how the signal was presented to an expert or algorithm. It may contain sections  and . Section  contains in this example definitions of diverse groups of tags: sleep stages are marked in blocks of fixed length (pages) and quantized starting points (at a page boundary). The definition of „transients in C3” allows for arbitrary starting points and durations of tags, but contains restriction to the channel number 10. Finally, tags of type ‚events’ allow to mark any epoch in any channel(s). In routine applications like e.g. sleep stages scoring or marking artifacts, standard content of this section can be automatically copied into this file.

Section contains the actual marks, in this example limited to just a few. We observe that each of these tags can be assigned an arbitrary length textual <annotation>.

Example annotations to an EDF file:

<?xml version="1.0"?>
<annotations>

<datafile_identification>
 <format id='EDF'/>
 <name>example_datafile.edf</name>
 <signature method='crc32' offset='111' length='512' value='07af0b0d'/>
</datafile_identification>

<signal_transform>
</signal_transform>

<tag_definitions>
   <def_group name='HYPNOGRAM'  fixed_length='2560' offset_quant='2560'
             channels='all' ref_channel_number='1'>
     <tag_item name='4' description='stage IV'/>
     <tag_item name='3' description='stage III'/>
   </def_group>

   <!-- marking transients in C3 -->
   <def_group name='C3_transients' channels='10'>
       <tag_item name='S' description='sleep spindle'/>
       <tag_item name='W' description='slow wave'/>
   </def_group>

   <def_group name='events'>
       <tag_item name='O' description='other event in arbitrary channel'/>
   </def_group>

</tag_definitions>

<tag_data>
   <text_info>
     Hypnogram and transients by dr. X,  artifacts detected automatically
     by http://EEG.pl/artifacts/ with parameters: threshold1=50%, threshold2=50%, ...
  </text_info>
<tags>
 <tag name='4' quantized_offset='136'/>

 <tag name='S' position='1927' length='86'>
     <annotation>I'm not quite sure whether it's really a sleep spindle...</annotation>
 </tag>

 <tag name='O' position='3234' length='25600' ref_channel_number='1'>
     <channels number='7,9'/>
     <annotation>Electrodes not contacting</annotation>
 </tag>
</tags>
</tag_data>
</annotations>