Форматы файлов
Сервис читает файлы трёх видов. Вид определяется по содержимому файла, а не по его имени.
| Вид | Расширения | Что внутри | Что получается |
|---|---|---|---|
| Файл прибора | XML, CSV | Одно измерение: кривые всех сенсоров | Одно измерение с кривыми; признаки считает сервис |
| Таблица готовых признаков | XLSX, XLS, CSV | Строка — измерение, столбцы — готовые числа | По измерению на строку, без кривых |
| Таблица кривых | XLSX, XLS, CSV | Строка — измерение, столбцы — точки кривой | По измерению на строку, с кривыми; признаки считает сервис |
Образцы для скачивания: десять XML прибора, таблица готовых признаков, таблица кривых. Образцы учебные: числа в них посчитаны по формуле.
Общие правила
| Что | Правило |
|---|---|
| Число файлов в одной загрузке | до 200 |
| Размер одной загрузки | до 256 МБ |
| Кодировка текстовых файлов (CSV, XML) | UTF-8 или Windows-1251 |
| Дробные числа | с запятой или с точкой: 61,3 и 61.3 читаются одинаково |
| Книга Excel с паролем | не читается — снимите защиту |
| Формулы в ячейках Excel | берётся сохранённое в книге значение, а не формула |
Файл прибора XML
Файл, который сохраняет программа прибора. Один файл — одно измерение.
<measure>
<name>вода</name>
<start>05.03.2026 10:24:01</start>
<sensor sid="SID0001" initial="13888533,00">
<point time="-1" value="13888533,00" />
<point time="0,00" value="13888528,00" />
<point time="1,00" value="13888523,00" />
</sensor>
<sensor sid="SID0002" initial="14930913,00">
...
</sensor>
</measure>
| Элемент или атрибут | Как используется |
|---|---|
measure | Корневой элемент. Без него файл не принимается |
name | Название измерения. Если пусто — имя файла без расширения |
start, description | Сохраняются вместе с измерением, в расчётах не участвуют |
length, mask, ismeasured | Сохраняются, в расчётах не участвуют |
sensor | Один сенсор. Номер сенсора — порядок элемента в файле: первый — S1, второй — S2 |
sensor sid | Название сенсора |
sensor initial | Частота сенсора до измерения, Гц. Это базовая линия: от неё отсчитывается ΔF |
point time | Время точки, с |
point value | Частота сенсора в этот момент, Гц |
Точка с time="-1" — служебная запись прибора. Она не входит в кривую.
Если у сенсора нет атрибута initial, базовая линия — среднее первых пяти точек
кривой, округлённое до целого.
Файл прибора CSV
Текстовый файл с разделителем «точка с запятой». Один файл — одно измерение.
Название;С1СР/3 МУ
Продолжительность;160
Тип;измерение
Начало;26.08.2026 17:37:06
Сенсоры;ПЭГСеб [1];Тритон Х-100 [2];Пчелиный клей [3]
Базовая частота;11723132;9992610;9977969
Время;ΔF;ΔF;ΔF
0;1;0;-2
1;1;0;-2
2;1;1;-2
| Строка | Как используется |
|---|---|
| «Название» | Название измерения. Если строки нет — имя файла без расширения |
| «Продолжительность», «Тип», «Начало» | Сохраняются, в расчётах не участвуют |
| «Сенсоры» | Названия сенсоров. Число в квадратных скобках — номер сенсора. Без скобок номер — порядок в строке. Строка обязательна |
| «Базовая частота» | Частота каждого сенсора до измерения, Гц |
| «Время» | Заголовок точек. Все строки ниже — точки кривых. Строка обязательна |
| Строки точек | Первое число — время, с. Дальше по одному числу на сенсор |
В CSV прибора записана не частота, а уже готовый отклик ΔF — изменение частоты относительно строки «Базовая частота». Сервис это учитывает: базовую линию из таких кривых повторно не вычитает.
Сервис считает CSV файлом прибора, если одна из первых 15 строк начинается со слова «Сенсоры» или «Базовая частота». Иначе CSV читается как таблица.
Таблица готовых признаков
Одна строка — одно измерение. Первая строка — заголовки столбцов.
| Образец | Класс | ΔF max, сенсор 1 | ΔF max, сенсор 2 |
|---|---|---|---|
| Проба А 1 | Проба А | 61,3 | 43,5 |
| Проба Б 1 | Проба Б | 87,9 | 75,1 |
- Пустые строки пропускаются.
- Столбец без заголовка получает имя
col_3— по номеру столбца. - Строка без имени образца получает имя
row 7— по номеру строки листа. - Пустая или нечисловая ячейка в столбце признака остаётся пустой: у этого измерения значения нет.
- Признак в сервисе называется так же, как заголовок столбца.
- В CSV разделитель — тот из знаков «точка с запятой», «табуляция», «запятая», который чаще встречается в первой строке.
Роли столбцов
У каждого столбца одна роль.
| Роль (как в мастере) | Что делает сервис |
|---|---|
| «Имя образца» | Значение становится названием измерения. Такой столбец один |
| «Метка класса» | Столбец становится набором меток с именем заголовка. Набор можно выбрать в «Анализе» как «Источник меток», а при импорте — разложить по нему измерения по группам |
| «Признак» / «Точка кривой» | Число: готовый признак или точка кривой — по типу таблицы |
| «Не импортировать» | Столбец пропускается |
Роль берётся из первого подходящего источника:
- То, что вы выбрали на шаге «Столбцы» мастера.
- Лист
Column_Metadataтой же книги — см. ниже. - Содержимое столбца:
| Содержимое столбца | Роль |
|---|---|
| Все ячейки пустые | «Не импортировать» |
| Числа не меньше чем в 80 % заполненных ячеек | «Признак» / «Точка кривой» |
| Остальное | «Метка класса» |
После этого сервис уточняет:
- Имя образца — первый столбец. Если первый столбец числовой, а правее есть столбец с текстом — именем становится первый столбец с текстом.
- Столбец с текстом, в котором все значения разные (при трёх и более строках), получает роль «Не импортировать»: на классы он не делит.
- Числовой столбец, где от двух до пяти разных целых значений и они повторяются, остаётся признаком. Мастер помечает его: «Похоже на метку класса» — и предлагает кнопку «Сделать меткой».
Лист Column_Metadata
Необязательный лист книги Excel с названием Column_Metadata. Он описывает
столбцы листа с данными, и роли определяются без догадок. В CSV такого листа
нет.
Первая строка листа — заголовки. Обязательные столбцы: Column Name и Type.
Регистр букв в заголовках не важен.
| Column Name | Type | Channel | Job Order | Filename |
|---|---|---|---|---|
| Образец | sample_info | |||
| Класс | class | |||
| S1_0 | data | S1 | 1 | 0 |
| S1_5 | data | S1 | 2 | 5 |
| S2_0 | data | S2 | 1 | 0 |
| S2_5 | data | S2 | 2 | 5 |
| Столбец листа | Что в нём |
|---|---|
Column Name | Заголовок столбца на листе с данными — буква в букву |
Type | sample_info или sample_name — имя образца; class или label — метка класса; data или feature — число |
Channel | Только для таблицы кривых: сенсор, к которому относится точка |
Job Order | Только для таблицы кривых: порядковый номер точки на кривой |
Filename | Только для таблицы кривых: подпись точки. Если подписи — возрастающие числа, они читаются как время в секундах |
Столбец, которого нет на листе Column_Metadata или у которого другое значение
Type, получает роль по содержимому. Остальные столбцы листа Column_Metadata
сервис не читает.
Таблица кривых
Та же таблица «строка — измерение», но числовые столбцы — точки кривой: сигнал сенсора в последовательные моменты времени.
| Образец | Класс | S1_0 | S1_5 | S1_10 | S2_0 | S2_5 | S2_10 |
|---|---|---|---|---|---|---|---|
| Проба А 1 | Проба А | 13888532 | 13888518 | 13888506 | 14930913 | 14930899 | 14930880 |
Значения точек — сигнал прибора (частота, Гц), а не готовый ΔF. Базовая линия каждой кривой — среднее её первых пяти точек, округлённое до целого. Если отклик начинается раньше шестой точки, базовая линия смещается в сторону отклика и ΔF получается заниженным.
Как столбцы раскладываются по сенсорам
Сервис пробует три способа по очереди и берёт первый подходящий.
| № | Условие | Сенсоры и точки |
|---|---|---|
| 1 | На листе Column_Metadata у каждого числового столбца заполнены Channel и Job Order, и число столбцов равно «сенсоры × точки» | Сенсор — Channel, порядок точек — Job Order |
| 2 | Все заголовки вида «часть_часть» и образуют полную сетку: у каждого сенсора одни и те же точки | Заголовок делится по последнему знаку _. Сенсор — та часть, напротив которой стоит время: S1_0, S1_5 — сенсор S1, время 0 и 5 с |
| 3 | Иначе | Один сенсор S1, каждый числовой столбец — его следующая точка |
Сенсоры нумеруются в порядке появления в таблице: первый — S1, второй — S2.
Откуда берётся время
| Случай | Время точек |
|---|---|
| Подписи точек — числа по возрастанию, поле «Шаг между точками, с» пустое | Из подписей |
| Поле «Шаг между точками, с» заполнено | 0, шаг, 2 × шаг … — подписи не учитываются |
| Подписи не читаются как время, поле пустое | 0, 1, 2 … — шаг 1 с |
Как время читаются подписи вида 15, 1,5, t=30, 30 с, 45 sec.
- Пустая ячейка — пропуск в кривой, а не ноль.
- Строка без единой точки пропускается.
Когда файл не принимается
| Сообщение | Причина |
|---|---|
| «Файл пустой.» | В файле нет данных |
| «Файлы .docx не поддерживаются…» | Расширение не из списка: XML, CSV, XLSX, XLS |
| «Не удалось прочитать текст файла: неизвестная кодировка.» | Текст не в UTF-8 и не в Windows-1251 |
| «Это XML, но не файл измерения прибора…» | Корневой элемент — не measure |
| «XML повреждён и не читается.» | Файл обрывается или изменён вручную |
| «В файле нет кривых сенсоров.» и уточнения | В XML нет sensor или point; в CSV прибора нет строки «Сенсоры», строки «Время» или точек после неё |
| «Книгу Excel не удалось открыть…» | Файл повреждён или защищён паролем |
| «На листе нет строк с данными.» | На листе только заголовок или лист пустой |
| «В таблице нет числовых столбцов.» | Ни у одного столбца нет роли «Признак» / «Точка кривой» |
| «Шаг по времени должен быть больше нуля.» | В поле «Шаг между точками, с» ноль или отрицательное число |