Описание XML-формата

Для хранения записей электроэнцефалограммы (ЭЭГ) используется множество форматов. Почти каждая исследовательская группа, занимающаяся анализом ЭЭГ, применяет свой формат файлов для хранения данных ЭЭГ, кроме того, параллельно могут использоваться несколько версий одного формата. 

Поэтому, в связи с отсутствием единых стандартов, в рамках данного проекта был разработан свой формат для хранения записей ЭЭГ.

Формат базируется на языке разметки XML,  что отличает его от аналогов. Благодаря применению XML, некоторые параметры записей ЭЭГ могут быть доступны для просмотра человеком в любом текстовом редакторе. 

Скачать пример записи ЭЭГ в XML

В текущей версии XML файл для хранения записей ЭЭГ включает в себя следующие элементы:

<DataRecord>
  <Header ChannelDataType="Тип данных" MarkerChannel="Номер маркерного канала" NumberOfChannels="Число каналов" SampleRateHz="Частота дискретизации">
      <PatientSpecificData>
        Данные об испытуемом
      </PatientSpecificData>
      <NumberOfDatasets>
        Общее чило проб/обучающих выборок в файле
      </NumberOfDatasets>
      <Channel Id="Номер канала">
        Название канала/отведения
      </Channel>
   </Header>
   <Dataset Id="Номер пробы/обучающей выборки" NumberOfSamples="Число элементов в выборке" StartDateTime="Времення метка начала выборки">
      <MarkerValue>
        Название класса, к которому относится обучающая выборка
      </MarkerValue>
      <Channel Id="Номер канала"> 
        ЭЭГ данные, в формате определенном в ChannelDataType
      </Channel>
   </Dataset>
</DataRecord>

<DataRecord> - корневой элемент XML файла. Заголовок хранится в элементе <Header>, записи ЭЭГ - в элементах <Dataset>.

Заголовок <Header> 

  • Поле Header.ChannelDataType определяет тип данных, который используется для представления сигнала ЭЭГ. Поле может принимать два значения: 
    • waveform - соответствует типу данных LabVIEW Waveform;
    • ArrayOfDouble - соответствует массиву чисел с плавающей точкой (тип Double).
  • В поле Header.MarkerChannel указывается номер маркерного канала (целое число). Значение "-1" означает, что маркерный канал в записи отсутствует.
  • В поле Header.NumberOfChannels указывается общее число каналов в записи (включая маркерный канал).
  • В поле Header.SampleRateHz указывается частота дискретизации, с которой был оцифрован сигнал ЭЭГ.
  • Дочерний элемент <PatientSpecificData> служит для хранения сведений об испытуемом. Данные хранятся в простом текстовом формате.
  • В дочернем элементе <NumberOfDatasets> хранится общее число эпох/проб/обучающих выборок файле. Под эпохой/пробой/обучающей выборкой понимается некоторый законченный фрагмент ЭЭГ сигнала.
  • В заголовке <Header> должно присутствовать столько дочерних элементов <Channel>, сколько указано в поле Header.NumberOfChannels. В поле Channel.Id указывается порядковый номер канала (целое число, начиная с "0"). Описание канала приводится в простом текстовом формате.

Элементы <Dataset>. Служат для хранения проб/обучающих выборок. Общее число элементов <Dataset> должно совпадать со значением в поле NumberOfDatasets.

  • В поле Dataset.Id указывается порядковый номер пробы (целое число, начиная с "0").
  • В поле Dataset.NumberOfSamples указывается число отсчетов ЭЭГ сигнала в пробе.
  • В поле Dataset.StartDateTime указыватся временная метка начала пробы. Метка хранится в формате LabVIEW Time Stamp.
  • В дочернем элементе <MarkerValue> хранится метка класса, к которому относится данная проба (в текстовом формате). Если класс не определен, указывается значение "Unspecified".
  • В дочерних элементах <Channel> хранятся данные ЭЭГ. Формат данных определяется полем Header.ChannelDataType. При этом поскольку XML не предназначен для хранения "сырых" бинарных данных, то данные преобразуются в поток байтов, который затем транслируется в строку формата ASCII. Каждый байт кодируется с помощью двух ASCII символов, соответствующих представлению числа в шестнадцатиричном (hex) формате. Порядок следования байтов - little-endian.

Набор утилит для работы с XML-файлами

В архиве "XML_EEG_File_Parser_v.1.0.zip" содержится библиотека функций для работы с XML-файлами в среде LabVIEW.

Набор функций разработан в среде LabVIEW 2012 sp3.

Скачать набор утилит для работы с XML-файлами

Для просмотра записей ЭЭГ необходимо запустить утилиту "XML_EEG_open.vi", расположенную в корневом каталоге архива.

Сразу после запуска утилиты будет предложено выбрать XML-файл, содержащий данные ЭЭГ.

После загрузки файла будет доступен просмотр ЭЭГ (рис. 1).

Приложение для просмотра записей ЭЭГ

Рис. 1. - Приложение для просмотра XML-файлов с записями ЭЭГ.

В поле "NumberOfChannels" показывается количество каналов в записи ЭЭГ. В поле "SamleRateHz" - частота дискретизации, с которой был записан сигнал. В поле "NumberOfDatasets" - общее число эпох/проб в XML-файле. В поле "DatasetNumber" - указывается номер текущей эпохи, данные которой отображаются в форме "EEG Graph".

Утилита "XML_EEG_clean.vi" в корневом каталоге архива предназначена для выделения эпох в записи ЭЭГ, имеющей маркерный канал.

После запуска утилиты необходимо выбрать XML-файл, содержащий данные ЭЭГ. 

После выбора файла исходный сигнал ЭЭГ будет автоматически разбит на отрезки, каждый из которых соответствует конкретному значению маркера. Длительность отрезков равна периоду времени, в течение которого маркер был активен. Далее в отдельные XML-файлы группируются отрезки, относящиеся к разным значениям маркера. При этом маркерный канал будет удален из записи ЭЭГ.