Здравствуйте, уважаемые аццкие)) химики и химички!!! Представляю вашему вниманию маленький кусок большого софта. Речь идет про многомерный анализ, распознавание образов и теорию вероятности в приложении к количественному химическому анализу всего-всего-всего.
Сразу отмечу! Многие из нас, химиков, с утра до ночи успешно владеют (а кто-то и ночью) дорогущей аппаратурой, безумных денег реактивами, знаниями статистики и химометрики и т.д. Так как рисую сейчас для ученых всех возрастов и степеней эрудированности: ХИМОЗАВРЫ – улыбнитесь, а новички – наслаждайтесь))), может будет интересно.
Постановка задачи. Есть серия или несколько серий однотипных образцов исследования: водка, минералка, гуталин, бензин, грунт, крысиная отрава и т.д. Цель – выявить среди образцов разные партии, единую массу, фальсификат, источник загрязнения и т.д.
Образец, как правило – это сложная смесь органики и минералки. Пусть совокупность признаков объекта исследования (для человека: большой, красный, пьяный, с двумя руками, доктор наук; для образца: рН 6, концентрация спирта 40% масс, бутилацетата 0,02 мг/мл, мальтозы 0,01 мг/мл, мутность по формазину 0,001 ЕМФ) – это вектор-строка из величин показателей, измеренных в тугриках или попугаях на декалитр.
Тогда, имея результаты анализа 10 образцов в трех параллельных испытаниях по 5 показателям получаем спектральную матрицу размером 30 строк на 5 столбов.
Обрабатываем алгоритмом NIPALS и получаем первые два вектора счетов: главные компоненты 1 и 2. Это координаты по абсциссе и ординате.
Три параллельных исследования на плоскости (три точки) – это доверительный интервал двумерно распределенной непрерывной случайной величины. Описываем его эллипсом рассеяния, например, для вероятности 0,95.
Эллипсы, находящиеся на значительном расстоянии друг от друга свидетельствуют о разном химическом составе (в смысле тех показателей, которые мы анализировали) объектов. Наложенные друг на друга – состав крайне близок.
Вкратце как-то вот так. Я не открыл ничего нового, все описано у Шарафа, Эсбенсена, Дерффеля, Бреретона, Вентцель и др. Только отработал математику, объединил несколько отраслей воедино и записал в коде на Дельфях. Точнее первые две версии. Последнюю третью писал мой дружище дьявольский программер Юра Киселев.
Интерфейс очень дружественный.
1. Открываем.
2. Кнопаем «Добавить группу». Группа – это совокупность образцов.
3. Выделяем левой лапой мыши область с фразой «Новая группа», если через полсекунды опять кнопнуть туда же, появляется возможность редактирования имени. Теперь клацаем туда же правой кнопкой: магически появляется менюха и вполне недвусмысленно спрашивает что ей делать))).
4. После добавления образца или группы образцов таким же макером правой кнопкой клацаем на образец и добавляем анализ. Функция анализа – это параллельное исследование.
Иерархия в принципе понятна. Методом научного тыка все вскоре становится понятно. Зачем образцы и группы образцов? Просто для того, чтобы строить отдельно эллипсы рассеяния на каждый образец и на всю группу.
Пока есть ограничения по количеству образцов и групп. Образцов максимально на группу можно 30, групп можно 100. Анализ пока проводится по семи переменным (вектор-строка напротив каждого «Новый анализ»), по умолчанию выставленным на ноль.
Птички слева от названий это участие в расчетах. Стоит птичка напротив образца – он участвует в расчетах, не стоит – понятно.
Птичка в самом низу – отображать или нет эллипсы каждого образца.
Порог – чисто алгоритмный параметр, не меняйте (знаю, все равно поменяете))))
Вместо нулей в векторах ставьте свои тугрики подержав на области полсекунды и потом левой лапой, можно клавишей F2.
Нажав на область «Параметр 1» или другую появляется серый столб. Это значит, что этот параметр не будет учитываться в расчетах.
То есть после ввода всех данных можно играться с переменными и образцами.
Готово! Нажимаем кнопку расчитать и нарисовать эллипсы. Мы попадаем в волшебный мир пониженного до плоскости пространства. Приближать и удалять скролом мыши, двигать левой кнопкой. Одна единственная кнопка в окне понятно зачем.
Да!!! Чуть не забыл. Так как первоначально я это разрабатывал для ввода площадей пиков ГХ-МС, значения эбанденс были интежер (целочисленные). Пардон за неудобства. Вскоре все поправим. Если кому-то мало 30 образцов и 100 групп – напишите, сделаем сколько надо. Пока в статике, скоро перейдем на динамику.
Прога абсолютно ШАРОВАРНАЯ. Эта софтинка – маленькая шестеренка в разрабатываемом нами большом и злом механизме обработки данных, включая много ценных незаменимых фишек и автоматов обработки хроматограмм ГХ и ВЭЖХ. Сколько можно терпеть пустой софт, который за 30 лет так ничему и не научился, кроме интегрирования и вызова коммерческой или своей библиотеки?
Буду ждать вашу критику и предложения. Прога третьей версии написана с нуля, так что могут быть баги. По возможности мы с Юрой отработаем все замечания и предложения. Это не наша прямая работа, всё на энтузиазме и увлеченности. Посмотрим как пойдет дело по многомерщине. У всех задачи разные, для кого-то прогу надо где-то подкрутить)))). По мере отработки багов буду выбрасывать новые версии.
Будут вопросы – опять же пишите в тему или Вадимычу на repeller()bk.ru
Прога висит здесь http://turbobit.net/u8v4e8meh8m8.html
Желаю всем успехов и счастья от всего моего химического сердца!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Ё-моё, какой МНОГАБУКФ.