3. А.Е.Васильев Развитие логических моделей данных. // http://citforum.ru/database/articles/ref_vs_nav_models
4. Микляев И.А., Формализованное описание основной структуры представления данных матричной универсальной объектно-реляционной базы данных // Вестник Астраханского государственного технического университета. Серия: Управление, вычислительная техника и информатика. 2011. № 1., Астр., С. 61-68
5. Микляев И.А. Матричная универсальная объектно-реляционная база данных на реляционной платформе: монография/ Сев.(Арктич.) федер. Ун-т им. М.В. Ломоносова. - Архангельск: ИД САФУ, 2014. - 226 с.
6. С.Д. Кузнецов. Объектно-ориентированные базы данных - основные концепции, организация и управление: краткий обзор (рус.). CIT Forum. 2011.
7. Жирнова М.А., Микляев И.А., Синтезирование метаинформации и данных Сборник докладов по материалам научно-практической конференции в рамках XLII Ломоносовских чтений / секция «Информационные системы и технологии в экономике и управлении» /Сборник докладов. - Федеральное государственное автономное образовательное учреждение высшего профессионального образования «Северный (Арктический) федеральный университет имени М.В. Ломоносова» филиал в г. Северодвинске Архангельской области институт судостроения и морской арктической техники, 2013. - с., стр. 38-43.
8. И.А. Микляев, П.П. Олейник, С.М. Салибекян., Методы реализации объектных статических моделей в приложениях баз данных. Информационные технологии и вычислительные системы 1/2016 - с., стр. 12-31
9. Микляев И.А., Свидетельство ОФЕРНиО № 14246 (Объединённого фонда электронных ресурсов «Наука и образование») Универсально приложение для матричной универсальной объектно-реляционной базы данных", 2010.
10. Микляев И.А., Никифоровых Д.В. Реализация принципов инкапсуляции и полиморфизма в МУОРБД // Объектные системы - 2016: материалы XII Международной научно-практической конференции (Ростов-на-Дону, 10-12 мая 2016 г.) / Под общ. ред. П.П. Олейника. - Ростов-на-Дону: ШИ (ф) ЮРГПУ (НПИ) им. М.И. Платова, 2016, С. 3337, http://objectsystems.ru/files/2016/Object_Systems_2016_Proceedings.pdf
11. Микляев И.А., Жирнова М.А. Реализация принципов наследования и агрегации в МУОРБД// Объектные системы - 2016: материалы XII Международной научно-практической конференции (Ростов-на-Дону, 10-12 мая 2016 г.) / Под общ. ред. П.П. Олейника. - Ростов-на-Дону: ШИ (ф) ЮРГПУ (НПИ) им. М.И. Платова, 2016, С. 2328, http://objectsystems.ru/files/2016/0bject Systems 2016 Proceedings.pdf
УДК 004.02
МОДЕЛИРОВАНИЕ ИК-СПЕКТРА СМЕСИ ВЕЩЕСТВ С ИСПОЛЬЗОВАНИЕМ ПОЛИМОРФНОЙ ПЕРЕГРУЗКИ ОПЕРАТОРОВ
Куперштейн-Чалей Павел Савельевич, магистрант каф. ИТТЭК, Факультет ЛиСИ, Университет ИТМО, Россия, Санкт-Петербург, [email protected] Никехин Алексей Алексеевич, к.т.н., ассистент каф. ИТТЭК, Университет ИТМО, Россия, Санкт-Петербург, [email protected]
Введение
В статье рассмотрен подход к реализации объектно-ориентированной модели спектров в ближнем инфракрасном диапазоне для смесей нескольких химических веществ, принадлежащих разным классам. Спектр смеси, принадлежащих одному классу, в соответствии с законом Бугера-Ламберта-Бера определяется как комбинация спектров исходных веществ, вошедших в состав смеси. Результат комбинации определяется комбинирующей функцией. В общем случае комбинирующая функция может иметь как
линейный, так и нелинейный вид, и различаться для разных пар классов смешиваемых веществ.
Для смеси этилового и изопропилового спиртов авторами была экспериментально найдена зависимость результирующего спектра от концентрации спиртов, положенная в основу модели.
Комбинирующие функции должны поддерживать свойства коммутативности и ассоциативности, присущие процессу смешивания веществ. При этом классы операндов (смешиваемых веществ) определяют выбор конкретной функции. Поддержка этих свойств является обязательными требованиями к дизайну программы, описанному в статье.
Для моделирования инфракрасных спектров был выбран язык программирования С++, облегчавший расчет комбинации спектров возможностью использования технологии ускорения вычислений на GPU (графической карте). Модель строилась в объектно-ориентированном стиле, обеспечивавшем быстрое внесение изменений в реализацию программы и легко читаемый код. Формула расчета результирующего спектра в исходном коде имеет вид «Smix=k(A)*S(A) + k(B)*S(B) +...», где Smix - объект, отражающий спектр результирующей смеси; S(A) - объект-спектр вещества 'A', S(B) - объект-спектр вещества 'B'; k(A) и k(A) - концентрация соответствующего вещества (k(A) + k(B) +.=100%)
Способом решения поставленной задачи является перегрузка операторов сложения спектров '+' и умножения "*", соответствующих классу вещества, и определяющих поведение класса. Сами операторы производят вычисления в соответствии с найденной экспериментальной моделью, использующей метод главных компонент (PCA) для расчета подпространства в котором располагаются все спектры двух смешиваемых веществ.
В результате примененного подхода к проектированию объектной модели получен читаемый, легко модифицируемый и вычислительно эффективный код, соответствующий экспериментальным данным, и позволяющий моделировать спектры смесей для проверки эффективности различных алгоритмов оценки концентрации.
Постановка задачи
Сегодня трудно представить аналитическую химию без спектроскопических исследований. Аналитическая спектроскопия решает качественные и количественные задачи различной сложности, предоставляя информацию о составе и свойствах исследуемых объектов. Однако извлечение необходимой информации из спектра является актуальной проблемой, для решения которой всё чаще прибегают к помощи специализированных приложений. [4]
Необходимость использования ООП связана с общностью решаемой задачи: существует огромное количество органических соединений, которым присуще линейное изменение их спектрального портрета в процессе изменения их параметров. Применение ООП позволяет значительно упростить решение задачи моделирования спектральных данных для конкретного подкласса органических соединений, не создавая новые и сложные модели, а лишь расширяя функционал существующей.
В связи с большой вычислительной сложностью решаемых задач для реализации алгоритмов использовался язык программирования C++, предоставляющего возможности использования аппаратных ускорителей вычислений и объектно-ориентированного подхода для создания модели. Объектно-ориентированный подход дает возможность разделения задачи на два уровня абстракции: вычислительного уровня и абстракции предметной области. В результате обеспечивается возможность создания гибких, расширяемых и легко модифицируемых моделей и вычислительных экспериментов при сложной вычислительной составляющей.
В качестве исследуемой смеси использовалась двухкомпонентная спиртовая смесь химически чистых изопропилового и этилового спиртов. ИК-спектры чистых образцов
данных соединений отличаются очень незначительно, что создаёт значительные трудности при определении концентрации смеси данных компонентов с помощью традиционных методов.
В связи с этим была сформулирована задача определить концентрацию веществ в исследуемой смеси, используя в качестве входных данных ИК-спектры «чистых» веществ, составляющих смесь и непосредственно сам ИК-спектр исследуемой смеси.
Для решения задачи определения концентрации и отладки алгоритмов возникла необходимость генерации расчетных спектров на основе экспериментальной модели. [5]
Описание экспериментальной модели
Для построения модели спектра смеси необходимо знать, как изменяются различные параметры ИК-спектра с изменением концентрации её составляющих. Для этого была подготовлена база данных спектров, в которых градация концентраций двух смесей имела следующий формат:
Таблица 1. Градация концентраций исследуемых смесей
Этанол 0 5% 10% 15% 95% 100%
Изопропанол 100% 95% 90% 85% 5% 0%
Для исключения влияния случайных погрешностей, методических погрешностей, погрешностей экспериментатора и с целью проверки воспроизводимости получаемых результатов было проведено 2 серии экспериментов [2]. Исходная база данных включала в себя 2 серии из 21 независимо полученных ИК-спектра, каждый из которых отражает уникальный результат спектроскопических исследований для пары веществ этанол/изопропанол определённой концентрации из градации, приведённой в Таблице 1.
Исходные спектральные данные имеют исходную размерность 1866, что соответствует количеству регистрируемых ИК-частот. Для того, чтобы узнать, как меняются спектральные данные с изменением концентрации в данной паре веществ, необходимо было снизить размерность данных [3]. Для этой цели был применён метод главных компонент (PCA), который позволяет снизить размерность данных, при минимальных потерях полезной информации.
Метод главных компонент, примененный к исходным спектрам, не даёт полезной информации о том, какие изменения претерпевает спектр с изменением концентрации. Виной этому наличие множества «мешающих» факторов, погрешностей. Среди них: шумы (ошибки) измерений, различный масштаб спектральных данных, различное смещение спектральных данных, а также наличие неинформативных участков спектра, которые вносят непредсказуемый вклад в результат работы метод главных компонент. [ 1]
Для решения данных проблем был разработан специальный модуль предобработки спектральных данных, который включает в себя следующие методы: дифференцирование спектра, удаление неинформативных участков, нормализацию (приведение к единому масштабу).
После получения результатов PCA анализа была сформулированная следующая модель: пусть существует два вещества: А и В, для которых получены их спектры такие что: S(A) - есть спектр чистого вещества А (т.е. S {С (А, B) =100, 0%}), S(B) - есть спектр чистого вещества B (т.е. S {С (Л, B) = 0,100%}). Тогда: Smix=k(A)*s(А) + к(В^(В), где Smix -спектр результирующей смеси; к(Л) и к(В) - концентрация соответствующего вещества (к(Л)+к(В)+.. .=100%).
Результаты РСА анализа
Для получения адекватных результатов и проведения оценки изменения спектральных данных с изменением концентрации необходимо было уменьшить размерность с 1866 до 1,
при этом потеряв как можно меньше полезной информации. Благодаря разработанному модулю предобработки процент потерянной «полезной» информации не превышал 10%. Полученная зависимость главной компоненты (РС 1) от концентрации позволила провести общую оценку изменения спектральных данных с изменением концентрации: исходя из полученных данных изменение спектральных данных с изменением концентрации происходит линейно. Дальнейшее построение модели будет базироваться на информации полученной на данном этапе исследования.
Концентрация 0%-100% Рис. 1 - Зависимость счетов первой главной компоненты от концентрации
Для того, чтобы восстановить спектр на основе зависимости, полученной с помощью РСА используется обратное преобразование, которое заключается в извлечении из метода главных компонент информации о спектральных данных конкретной концентрации. Формально метод главных компонент описывается как X = ИБУ1, где X - матрица исходных предобработанных данных, У - матрица нагрузок (каждый столбец есть вектор главных компонент), и - матрица счетов (каждая строка - проекция вектора данных на вектор главных компонент), S - диагональная матрица сингулярных значений.
Матрица Х подвергается обязательной предобработке, которая заключается в вычислении среднего значения относительного пропускания для каждой из 1866 частот по спектрам всех серий, после чего производится «центрирование» данных путём вычитания среднего из каждого спектра каждой серии (не путать с модулем предобработки!). Таким образом, центр образуемой «новой» системы координат будет располагаться в фактическом центре «облака данных».
Тогда, чтобы извлечь из полученной зависимости исходные данные, необходимо произвести следующую операцию: соответствующую строку матрицы V умножить на соответствующий элемент (счёт) результирующей матрицы ИБ и к результату произведения прибавить среднее значение относительного пропускания по всем сериям. Соответствующий строка матрицы У (1865 элементов) определяется номером главной компоненты, а соответствующий элемент результирующей матрицы ИБ определяется соотношением концентрации и номером главной компоненты. Результатом данных преобразований будет 1865 значений относительного пропускания, соответствующих такому же количеству частот, что позволит построить спектр заново.
Описание реализации модели
Реализация модели осуществлена на языке программирования C++, предоставляющего возможности использования аппаратных ускорителей вычислений и объектно-ориентированного подхода для создания модели. Основная вычислительная сложность заключена в реализации операторов сложения спектров, требующей большого объема хорошо параллелизируемых вычислений. Вычисления производились с использованием функций заголовочной библиотеки «boost.compute», входящей в стандартный пакет boost, начиная с версии 1.61, и предоставляющей для программ на С++ оболочку для OpenCL API. Наряду с набором классов для управления объектами OpenCL, такими как device, kernel и command_queue, библиотекой предоставляется реализация контейнеров и алгоритмов, входящих в стандартную библиотеку С++ STL.
Каждый класс веществ, используемых при моделировании спектров смесей, задающий группу веществ с характерной комбинирующей функцией, реализован в форме класса C++ с перегруженными операторами сложения спектров '+' и умножения на коэффициент концентрации "*". В результате, спектр смеси в коде может быть представлен в виде выражения «Smix=k(A)*S(A) + k(B)*S(B) +...», где, напомним S - спектры, k - концентрации составляющих смеси.
Объявление классов реализации без вычислительной части иллюстрировано следующим листингом:
// базовый класс для остальных классов веществ
class Chemical{
protected:
// защищенные спектральные данные public:
// общий оператор композиции спектров
virtual const Chemical operator+(const Chemical& rhs) const { ...; // вычисление спектра смеси
}
// общий оператор расчета концентрации
friend const Chemical operator*(const double& k,
const Chemical& spectrum){ ...; // вычисление спектра с учетом концентрации
}
// коммутативная пара для оператора расчета концентрации friend const Chemical operator*(const Chemical& spectrum,
const double& k){
return k*spectrum;
}
};
// Класс спиртов
class Spirit: public Chemical{
public:
// стандартный оператор using Chemical::operator+;
// переопределенный оператор смешивания(сложения) веществ virtual const Chemical operator+(const Chemical& rhs) const { .; // вычисление спектра смеси
}
// специальный оператор для класса Oil class Oil;
virtual const Chemical operator+(const Oil& rhs) const { .; // вычисление спектра смеси
}
};
// Класс масел
class Oil: public Chemical{
public:
// коммутативная пара для оператора сложения со спиртами virtual const Chemical operator+(const Spirit& spirit){ return spirit + *this;
}
// Пример использования // Исходные вещества Spirit ethanol; Spirit isopropanol; Oil oil;
// Спектры идентичны mix 1 1 == mix 1 2 Chemical mix 11 = 0.6*ethanol + 0.4*isopropanol; Chemical mix 12 = 0.4*isopropanol + 0.6*ethanol; // Спектр разнородных веществ Chemical mix 2 1 = ethanol + oil;
Соответствующая диаграмма классов приведена на рис.2. Классы аппаратных абстракций (GPU) в диаграмму не включены в связи с тем, что вычислительная часть, где они используются, хотя и явилась определяющей в выборе языка программирования, сама по себе не повлияла на объектную модель. Библиотека «boost.compute» используется стандартным образом в соответствии со своей документацией.
Рис. 2 - Диаграмма классов реализации модели
Модель, иллюстрированная на рис.2, реализует перегрузку операций смешивания в случае особого поведения конкретных пар веществ, входящих в смесь, а также коммутативный характер операций смешивания, реализованный парностью операторов в классах смешиваемых веществ.
Результатом работы реализации модели является расчетный спектр смеси. Для сравнения на рис. 3 сплошной линией отображён характерный участок спектра смеси 50% этанола и 50% изопропанола. Пунктирной линией в едином масштабе изображен измеренный спектр той же смеси.
Рис. 3 - Сравнение измеренного спектра смеси и расчетного спектра в соответствии с моделью
Сравнение расчетных и измеренных спектров для различных концентраций показывает хорошую точность модели.
Выводы
Спроектированная модель и полученные в ходе исследования результаты открывают возможности для решения значительной области задач и приложений, которые раньше не поддавались решению аналитическими методами. Полученные результаты вычисления концентрации по модели достаточно точны, чтобы применять её в лабораторных исследованиях, когда важна скорость, точность и воспроизводимость эксперимента.
Благодаря гибкости модели, в дальнейшем область приложений может быть расширена, а модель адаптирована под любой класс соединений. В перспективе с помощью построения подобной модели станет возможным решение прямой колебательной задачи.
Литература
1. Цикин, А.М. Хемомметрика в анализе многокомпонентных объектов на основе данных ИК, ЯМР И ренгтенофлуоресцентной спектроскопии, отличающихся большим значением взаимной информации: дис. на соиск. учен. степ. канд. хим. наук / Цикин Алексей Максимович; Саратовский Государственный Университет Имени Н.Г. Чернышевского. -Саратов, 2014. - 181 с.
2. Hollas, J.M. Modern Spectroscopy / J. Michael Hollas. - New Jersey: John Wiley & Sons, 2004 -452 p.
3. Lindon, J. Encyclopedia of Spectroscopy and Spectrometry / — 2nd Ed. — Academic Press, 2010.
— 3312 p.
4. Adams, M.J. Chemometrics in Analytical Spectroscopy. Cambridge: Royal Society Chemistry, 1995.
— 238 p.
5. Larkin, P. J. Infrared and Raman spectroscopy: principles and spectral interpretation. — Elsevier, 2011. — 230 p.