ИСПОЛЬЗОВАНИЕ VISUAL FOXPRO ДЛЯ РЕШЕНИЯ ЗАДАЧ МОЛЕКУЛЯРНОЙ СПЕКТРОСКОПИИ

Visual FoxPro это развитая система управления реляционными базами данных. Помимо того, что она поддерживает обычные средства, присущие другим системам ведения баз данных, такие как индексация таблиц по полям и функциям полей, реляционные соотношения, язык запросов SQL, виды, представления и курсоры, встроенные процедуры, триггеры, транзакции, она еще имеет свой собственный язык программирования и средства графического отображения таблиц и их содержимого. В данном разделе описываются несколько небольших программ, которые были написаны и использованы мной для обработки, в основном, инфракрасных (ИК) спектров многоатомных молекул.

Несколько слов о возможностях языка программирования FoxPro. При использовании этого языка одними из основных понятий являются активная таблица и активная запись, то есть запись, на которой стоит так называемый указатель. Указатель с помощью предназначенных для этого команд можно перемещать. Можно также делать активной любую таблицу, если в конкретной задаче задействовано несколько таблиц, но только одну. Поля активной записи активной таблицы равносильны обычным переменным памяти, с которыми можно делать все обычные операции. Например, если активная таблица имеет имя tb1, и в этой таблице имеются колонки a и b, то, скажем, команда m.c = tb1.a + tb1.b означает сложение содержимого полей a и b активной записи и запоминание результата в переменной c, находящейся в памяти. Перемещение указателя на новую запись осуществляется с помощью команды GOTO nrec, где nrec – номер записи, которую нужно сделать активной. Поначалу при изучении FoxPro подобное использование известных команд, которые в обычных языках программирования (правда, старых) означают переход внутри программы, а здесь движение вдоль таблицы, сбивает с толку. Делать активной ту или другую таблицу можно с помощью команды SELECT. Если таблицы связаны соотношением с помощью директивы SET RELATION, то перемещение указателя вдоль записей ведущей таблицы приводит к движению указателей вдоль ведомых таблиц к связанным записям. Программа, написанная на FoxPro, будучи запущенной, выполняется как и любая другая программа на другом языке, - команда за командой.

FoxPro часто используется в режиме командного окна. В этом режиме на монитор можно вывести изображения таблиц с их содержимым и в ручную проводить их корректировку. Активная запись таблиц и активная таблица определяются местоположением указателя мыши. В этом режиме в имеющемся командном окне можно выполнять команды по одной. К примеру, ту же команду GOTO.

В Visual FoxPro имеются средства создания графических диалоговых окон, содержащих обычные элементы управления, такие как кнопки, чек боксы, радио баттонс, текстовые поля, поля отображения таблиц, меню и тул бары. Причем все это может создаваться как программным путем, так и методами drag and drop. Естественно, имеются события и их обработчики.

Поное описание всех возможностей Visual FoxPro невозможно изложить в краткой заметке, поэтому отсылаю читателей к Google. Ради справедливости следует отметить, что поддержка и развитие Visual FoxPro было прекращено в 2007 году, так что эта система в настоящее время считается устаревшей.

Мной, как об этом упоминалось выше, данная система прораммирования использовалась для анализа сложных ИК спектров различных многоатомных молекул. Здесь не приводятся тексты написанных на FoxPro программ с полным перечнем их функциональных возможностей. Даются только скриншоты некоторых из них и краткие к ним пояснения.

Для начала несколько пояснений общего характера. Обычно при пропускании через газовую среду, образованную молекулами, электромагнитной волны, происходит ее поглощение (при некоторых условиях - усиление). Ослабление проходящей волны существенно зависит от ее частоты. На некоторых частотах оно сильнее, а на других слабее. Узкие области, соответствующие большему поглощению, называются линиями поглощения. О совокупности линий на разных частотах говорят как о спектре молеклы. Таким образом, спектр молекулы состоит из линий (поглощения или усиления). Таких линий может быть тысячи, десятки или даже сотни тысяч. Изучение спектров состоит из большого числа этапов.

Примеры участков молекулярного спектра (не будем вдаваться в подробности о том, какая это молекула) показаны на следующих двух рисунках.

ИК спектр в диапазоне 1730 - 1820 см-1
Рис. 1. ИК спектр в диапазоне 1730 - 1820 см-1.
ИК спектр в диапазоне 1773 - 1777 см-1
Рис. 2. ИК спектр в диапазоне 1773 - 1777 см-1.

Эти два рисунка отличаются масштабом, диапазоном частот электромагнитных волн. На первом линии сливаются, а на втором, где масштаб более крупный, видны отдельные линии. Рисунки дают наглядное представление о спектрах, о количестве линий, из которых они состоят.

При использовании для изучения молекулярных спектров баз данных, первое, что делается, это создается центральная таблица, в которой каждая запись хранит, по крйней мере, частоту и интесивность каждой линии.

Перейдем к описанию программ.

1. Поиск серий однотипных линий.

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

На последующих трех рисунках показаны скриншоты окон программы, предназначенной для этих целей. Регулярная серия это квази периодическая последовательность, где в качестве периода серии берется усредненная разность по частоте между соседними линиями. Если весь спектр разбить на отрезки, равные периоду серии, и расположить смежные участки один над другим, то получится двумерное изображение, на котором линии, принадлежащие данной серии, окажутся на хорошо заметной плавной кривой.

На первом рисунке, который изображает описанную выше развертку спектра, хорошо видны четкие последовательности. Программа в графическом виде отображает содержимое центральной таблицы. Каждая линия на плоскости рисунка представляется треугольником, линейные размеры которого пропорциональны интенсивности линии. Период в данном случае равен 0.78. Он находился простым подбором в возможном диапазоне значений таким образом, чтобы серии линий вырисовывались наилучшим образом.

Диаграмма, отображающая регулярные серии линий в молекулярном ИК спектре
Рис. 3. Диаграмма, отображающая регулярные серии линий в молекулярном ИК спектре.

Программа осуществляет тесное взаимодействие между картинкой и базой данных. Так, к примеру, если щелкнуть на треугольнике какой либо линии, то на нем отрисуется крестообразная метка, для определенности. Далее программа находит в таблице запись, соответствующую этой линии, и выбирает из нее точные значения частоты и интенсивности, которые высвечиваются в соответствующих полях статус бара. Если данная линия уже идентифицирована, то дополнительно появляются квантовые числа перехода (переход это почти синоним линии).

Программа может выполнять определенный набор функций. Эти функции выбираются из пунктов меню, некоторые из которых открывают дополнительные выпадающие меню. Внизу имеется статус бар, в который выводится полезная информация. Это минимальная и максимальная частота отображаемого участка спектра, период, то есть длина отрезков, на которые он делится, текущая частота, соответствующая местоположению курсора. Перемещение курсора вызывает обработчик соответствующего события, который высчитывает частоту точки экрана и отображает ее в статус баре.

Кроме основной таблицы с измеренными значениями частот и интенсивностей линий для проведения вспомогательных задач база данных содержит еще ряд связанных по ключу таблиц. Например с рассчитанными значениями спектральных линий, или с частотами линий, входящих в серии. Имеется, к примеру, режим, устанавливаемый переключателем, в котором последовательно щелкнутые мышкой линии копируются из основной таблицы в таблицу, хранящую серии линий.

Параметры отображения и режимы работы устанавливаются с помощью диалоговых окон, два из которых показаны на рис. 4 и 5.

Диалоговое окно для настройки отображения
Рис. 4. Диалоговое окно для настройки отображения.
Диалоговое окно для настройки правил отбора рассчитанных или идентифицированных серий линий
Рис. 5. Диалоговое окно для настройки правил отбора рассчитанных или идентифицированных серий линий.

2. Идентификация линий в сериях.

Первичная обработка колебательно-вращательного спектра многоатомной молекулы очень часто заключается в том, чтобы построить эффективный гамильтониан, собственные значения которого давали бы рассчитанные частоты переходов, совпадающие с наблюдаемыми в пределах ошибок эксперимента. Математически это сводится к вычислению параметров, от которых зависит гамильтониан, по измеренным частотам идентифицированных переходов. Это, так называемая, обратная задача спектроскопии. Эффективный гамильтониан с точно найденными параметрами это инструмент, дающий возможность рассчитывать спектр. Спектральные линии содержат избыточную информацию, в то время как параметры гамильтониана являются независимыми друг от друга величинами, содержащими ту же информацию, что и спектр, но в концентрированном виде. Так, к примеру, обрабатываемый участок спектра может содержать 10000 линий, а эквивалетное этому число параметров эффективного гамильтониана колеблется в пределах от 10 до 30. Эти 10 параметров несут ту же информацию, что и 10000 линий.

Подчеркнем еще раз, что до начала обработки измеренного спектра, параметры эффективного гамильтониана являются неопределенными. Первые идентифицированные каким-либо способом линии позволяют найти предварительные значения параметров. Далее с этими параметрами производится расчет спектра и результаты этого расчета позволяют идентифицировать новые линии, которые дают возможность уточнить параметры. И т.д. Этот процесс продолжается до тех пор, пока в спектре не будут идентифицированы все линии. При этом достигается максимальная точность рассчитанных значений параметров. Чем больше использовано линий, тем точнее параметры. Их погрешность пропорциональна N^{-1/2}, где N - количество идентифицированных линий.

Наиболее надежным способом идентификации является идентификация серий линий. Для облегчения этой процедуры была составлена программа на visual FoxPro, основным элементом которой для интерактивной работы является диалоговое окно, показанное на рис. 6.

Диалоговое окно для идентификации линий в сериях путем сравнения рассчитанных и измеренных частот в ИК спектрах
Рис. 6. Диалоговое окно для идентификации линий в сериях путем сравнения рассчитанных и измеренных частот в ИК спектрах.