суббота, 11 апреля 2009 г.

Fityk - программа для аппроксимации профиля дифракционных рефлексов

О программе

Программа fityk изначально была разработана для аппроксимации профиля порошковых дифракционных картин, но также может быть импользована в других областях, где требуется проводить уточнение параметров пиков, например, в хроматографии и различных видах спектроскопии. В программе реализованы три алгоритма метода наименьших квадратов:

  • Levenberg-Marquardt algorithm
  • Nelder-Mead method
  • Genetic algorithm Признаться, я не вдавался в подробности работы этих алгоритмов. Мне было достаточно того, что программа очень хорошо и адекватно производила уточнения.

Программа кроссплатформенная, работает на Linux, FreeBSD, MS Windows и MacOS X. Более того, имеет два режима - как графический (wxWidgets), что удобно для ознакомления, а также для интерактивной работы с наименьшими усилиями, так и консольный, что дает возможность заниматься потоковой обработкой данных с наимньшими временными затратами, CLI Magick. Стоит отметить, что есть возможность исполнять скрипты прямо из графического режима!

Установка в Debian и Ubuntu стандартная:

aptitude install fityk

Ознакомление

Программа принимает стандартные двухколоночные (и многоколоночные) файлы "аргумент - значение". В случае дифракционных картин это будет "угол рассеяния - интенсивность".

Откроем для начала программу в графическом режиме:

fityk
(для того, чтобы открыть в консольном, cfityk) Появится окно

Открываем дифракционную картину: Data -> Load File (или Ctrl - M) и выбираем файл:

Как видно из рисунка, можно определить в какой колонке что располагается и есть ли колонка со стандартным отклонением. Далее нажимаем Replace @0, что означает заменить нулевой слот, либо Open in new slot, что, очевидно, означает открыть картину в новом слоте.

В нижней части окна программы можно видеть эхо-область. Сюда выводятся все команды, которые вы даете в графическом режиме. Именно они используются в консольном. То есть, для того, чтобы открыть этот файл в консольном режиме, мне следовало дать команду:

@0 < '/home/maxim/Experiment/Oxygen_conductivity/mm2/090317/sr/mm2-1_after_conductivity_air.dat'
Это не так сложно - работает автодополнение.

На картине присутствует фон, поэтому надо бы его удалить: С помощью "лупы" увеличиваем областо фона, переходим в режим базовой линии, задаем её местоположение (левой кнопкой мыши ставим точку, через которую должна проходить базовая линия, правой эту точку можно убрать). Затем удаляем базовую линию.

Чтобы вновь увидеть всю картину, переходим в режим лупы жмем правой кнопкой на область с картиной -> Zoom All.

На дифракционной картине есть несколько рефлексов. Для начала, выделим один из них, который будет аппроксимировать. А именно, обозначим неактивную область. Нажимаем на вторую слева кнопку и правой кнопкой мыши выделяем область, которую рассматривать не будем. Если же выделяем левой кнопкой - то наоборот, создаём активную область.

выделяем наш активный рефлекс и добавляем пик указанного типа (гауссиан, лоренциан, пирсон7, различные фойты). Можно добавлять в автоматическом режиме, что я обыяно и делаю - программа хорошо угажывает положение рефлексов. Однако иногда, если присутствуют выбросы, программы ошибается - считает выброс пиком, судя по всему, из-за того, что там наибольшая производная. В этом случае пик можно добавить в ручном режиме.

Нажимаем кнопку start fitting и через мгновение получаем результат. Если что-то пошло не так и вы хотите отменить результат, то есть кнопка отменяющая предыдущий фит. Во вкладке functions вы увидите параметры пика.

В дальнейшем мы поговорим о возможностях автоматизации всего процесса подгонки, ознакомимся с консольной версией программы и напишем простой скрипт для потоковой обработки данных.

Рекомендую к прочтению официальную документацию, написанную весьма простым языком.

Копируете статью - поставьте ссылку на оригинал!

4 комментария:

  1. Супер! Прошлой зимой искал именно такую программу под linux. Не нашел, пришлось пользоваться под wine программой, которую давали на кафедре. Теперь будет счастье )

    ОтветитьУдалить
  2. А какая под виндой программа была? Какая-то своя самописная? Просто больно смотреть как наши научные сотрудники определяют положения пиков с помощью ворованного ориджина, уточняя лоренцом и гауссом что попало. Вот и хотелось бы посоветовать наряду с фитиком.

    ОтветитьУдалить
  3. Нам предлагали CasaXPS и Origin ) Обязательно fityk попробую продвинуть на кафедре. Одну Open Source уже подкинул сотрудникам. Gwyddion - для обработки СЗМ изображений. Некоторым она понравилась, прижилась )

    ОтветитьУдалить
  4. Есть еще удобная программа MagicPlot, она на Java написана, и работает везде (Win, Linux, Mac). Она не только аппроксимирует, но и красивые графики сохранять может в высоком разрешении. И там удобно график увеличивать, прокручивать и рассматривать.

    ОтветитьУдалить