Встроенный формат файлов Gwyddion сохраняет всю информацию и состояние, которые нужно хранить программе и, следовательно, устроен достаточно сложно. Часто не является разумным сохранять файлы в формате .gwy в других программах и скриптах, создающих входные файлы для программы Gwyddion.
Вместо этого можно использовать формат файла Простое поле Gwyddion (.gsf) для этих целей. Это формат с одним каналом для двумерных данных, который разработан чтобы его можно было просто и эффективно читать и писать, с читаемым человеком заголовком, достаточно выразительный и избегающий специфичных для прибора или приложения полей (хотя опционально формат может их содержать).
GSF может быть прочитан и записан Gwyddion версии 2.20 и выше.
Файл GSF состоит из четырёх частей в следующем порядке:
Файлы начинаются с «магической строки», определяющей тип файла.
Заголовок состоит из строк в формате
имя=значение
, определяющих отдельные параметры.
Заголовок заканчивается от одного до четырёх байтов NUL, выравнивая начало данных кратно 4.
Двоичные данные хранятся в 32-битном формате с плавающей точкой.
Файлы GSF начинаются со строки
Gwyddion Simple Field 1.0
, завершенной символом перевода строки (\n, ASCII 0x0a).
Каждая строка заголовка имеет формат
имя=значение
, где любой пробельный символ перед именем, вокруг знака равенства и в конце значения игнорируется. Имена полей чувствительны к регистру и следуют обычным правилам для идентификаторов в языках программирования.
Подобно магической строке, строки в текстовом заголовке заканчиваются символом перевода строки, как принято в Unix. Это означает, что заголовок должен читаться и писаться в двоичном режиме для сохранения символов перевода строки на других системах (и неизменности размера заголовка, например при преобразовании LF → CRLF).
Любые символы не из алфавита ASCII, которые могут попасться, например, в имени канала, представлены в кодировке UTF-8. Символ NUL не может встречаться в заголовке.
Поля заголовка:
| Название | Тип | Значение |
|---|---|---|
XRes | Обязательное | Горизонтальный размер в пикселях, положительное целое. |
YRes | Обязательное | Вертикальный размер в пикселях, положительное целое. |
XReal | Опциональное | Горизонтальный размер в физических единицах (заданных XYUnits), положительное число с плавающей точкой. По умолчанию равно 1.0 если не задано. |
YReal | Опциональное | Вертикальный размер в физических единицах (заданных XYUnits), положительное число с плавающей точкой. По умолчанию равно 1.0 если не задано. |
XOffset | Опциональное | Горизонтальное смещение в физических единицах (заданных XYUnits), положительное число с плавающей точкой. По умолчанию равно 0.0 если не задано. |
YOffset | Опциональное | Вертикальное смещение в физических единицах (заданных XYUnits), положительное число с плавающей точкой. По умолчанию равно 0.0 если не задано. |
Заголовок | Опциональное | Заголовок данных/канала. Не имеет значения по умолчанию, приложения могут отображать ‘Unknown’ или нечто подобное если не задан. |
XYUnits | Опциональное | Пространственные единицы, т.е. единицы физических размеров и смещений. Они должны быть заданы как базовые единицы, которыми являются m или A без префикса, обозначающего степень 10 (Gwyddion с этим справится, но это может создавать проблемы другим программам). По умолчанию величины безразмерные. Это означает, что для данных СЗМ вы обычно захотите задать XYUnits как m поскольку пространственные размеры измеряются в метрах. |
ZUnits | Опциональное | Единицы значения, т.е. единицы значений данных. См. XYUnits выше для дополнительной информации. |
Числа с плавающей точкой могут быть в научном формате, т.е. 1.23e-4. Они представлены в стандартной локали C/POSIX, десятичным разделителем является точка (не запятая и не другие разделители).
Заголовок может содержать другие поля помимо описанных выше. Gwyddion загрузит их в метаданные. Общие информационные поля могут включать Комментарий, Дату или Направление.
Поля могут идти в любом порядке, тем не менее, рекомендуется начинать с обязательных полей, затем привести опциональные и закончить нестандартными.
Пример простого заголовка (также включает магическую строку):
Gwyddion Simple Field 1.0 XRes = 400 YRes = 400 XReal = 5e-05 YReal = 5e-05 XYUnits = m ZUnits = V Title = ADC2
За текстовым заголовком идёт от одного до четырёх байтов NUL (\0, ASCII 0x00), которые (a) завершают его и (b) выравнивают начало двоичных данных от начала файла на величину, кратную 4. Точнее, обозначив N общую длину магической строки и текстового заголовка, данные начинаются в ближайшем числе, кратном 4 и большем, чем N.
Это выравнивание по кратному 4 гарантирует выровненный доступ к памяти при отображении файла непосредственно в память. Количество байтов NUL однозначно определяется остатком от деления длины на 4(N mod 4):
Значения данных хранятся как 32-битные числа с плавающей точкой IEEE одинарной точности, в формате следования байтов начиная с младшего (LSB, or Intel). Данные сохраняются по строкам, сверху вниз и в каждой строке слева направо.
Физические величины этих значений - ZUnits.
Размер данных изображения точно 4*XRes*YRes и после них в файле больше нет данных.