Электронная плотность
Задание функции
Для компьютерного эксперимента использовалась следующая
модель:
- на отрезке [0Å,30Å] расположены две молекулы из
5 атомов;
- атомы в молекуле связаны ковалентно и находятся
на расстоянии 1-1.5Å друг от друга, молекулы —
на расстоянии 3-5Å;
- электронные плотности атомов описываются
гауссовой кривой*, т.ч. максимум ЭП в центре атома
приблизительно пропорционален числу электронов в
атоме.
* Функция имеет вид нескольких гауссовых кривых с центром
в разных точках (например, на расстоянии 1-1.5Å —
модель ковалентно связанных атомов).
Для создания функции использовался скрипт
compile-func.py:
python compile-func.py -g 2,3,3.1+32,3,4.2+8,3,5.3+24,3,10.1+34,3,11.5
В результате был получен файл
func.txt
с координатами точек и изображение смоделированной функции:
Расчет амплитуд и фаз сигналов
Амплитуды и фазы рассчитываются по созданной функции ЭП.
При этом учитывается, что в эксперименте определяются
амплитуды не для всех сигналов, что интенсивности сигналов
и амплитуды определяются с ошибкой и что фазы определятся
для всех измененных сигналов с ошибкой.
Для разложения функции ЭП здесь и далее использовался скрипт
func2fourier.py, на вход которому
подается файл
func.txt и (опционально)
значения гауссовского шума.
В результате был получен файл
func_ft.txt,
имеющий формат
<номер гармоники> <амплитуда> <фаза> и
содержащий 499 гармоник. Для восстановления исходной ЭП
используется скрипт
fourier2func.py.
Влияние количества гармоник
Сначала для файла без шума был произведен отбор гармоник от 0
до n-й (5 < n < 45) с помощью скрипта
fourier-filter.py и затем для
каждого набора была восстановлена функция ЭП:
python func2fourier.py -i func.txt
python fourier-filter.py -r 0-n
python fourier2func.py -f func.txt -i func_ft_filtered.txt
Результаты представлены на рисунках ниже. Видно, что при n = 30
положение атомов уже определяется достаточно однозначно, однако
я решила взять немного больше гармоник, чтобы избежать сильных
шумов (n=40).
Влияние шумов
Было проанализировано влияние гауссовского шума, добавленного
к амплитуде и фазе как по отдельности, так и одновременно. Для
этого использовались команды:
python func2fourier.py -i func.txt -F % -P %
python fourier-filter.py -r 0-40
python fourier2func.py -f func.txt -i func_ft_filtered.txt
В целом, выводы тривиальны: i) добавление шума одновременно и к
амплитудам, и к фазам ухудшает восстановление сильнее, чем
добавление шума только к одному из параметров; ii) чем сильнее
шум, тем больше ошибочных пиков, которые могут быть приняты
за сигнал.
Влияние полноты набора
Часто в результате эксперимента имеется неполный набор гармоник.
Для моделирования этой ситуации были использован исходный набор
из 499 гармоник, из которого выборочно брались разные множества
гармоник с помощью уже упоминавшихся скриптов:
python func2fourier.py -i func.txt # используется 1 раз, чтобы
# получить набор без шума
python fourier-filter.py -r 0-25,30-40
python fourier2func.py -f func.txt -i func_ft_filtered.txt
Результаты представлены на рисунках ниже:
Если сравнить с картинками, полученными для ограниченного
числа гармоник, можно сделать вывод, что отсутствие гармоник
меньшего порядка более критично, чем отсутствие гармоник из
середины или конца набора. Добавление 50-1 гармоники практически
не повлияло на восстановление функции.
Итоговая таблица
Результаты по качеству восстановления функции ЭП из различных
рассмотренных наборов гармоник приведены в таблице 1.
Для сравнения восстановленной функции с исходной использовались
следующие "критерии качества":
Отличное восстановление — по графику восстановленной функции можно определить положение максимума всех гауссовых слагаемых функции ("атомов");
Хорошее восстановление — можно угадать положение всех максимумов, зная число слагаемых ("атомов"), хотя на восстановленной функции максимумы от атомов не отличимы от шума;
Среднее восстановление — положение каких-то атомов определить по восстановленной функции нельзя, других - можно;
Плохое восстановление — положение атомов определить не представляется возможным; можно только предсказать примерный размер "молекулы".
Полнота набора гармоник определяется как % гармоник (k штук) от
полного числа гармоник (от 0 до n-й). Разрешение неполного набора
я решила не определять.
Таблица 1. Сводная характеристика
восстановления функции ЭП из разных наборов
гармоник
Набор гармоник |
Разрешение, Å |
Полнота набора, % |
Шум (амплитуда), % |
Шум (фаза), % |
Качество восстановления |
Полный набор без шума |
0-5 |
6 |
100 |
0 |
0 |
Плохое |
0-10 |
3 |
100 |
0 |
0 |
Плохое |
0-15 |
2 |
100 |
0 |
0 |
Среднее |
0-20 |
1.5 |
100 |
0 |
0 |
Среднее |
0-25 |
1.2 |
100 |
0 |
0 |
Среднее |
0-30 |
1 |
100 |
0 |
0 |
Хорошее |
0-35 |
0.86 |
100 |
0 |
0 |
Отличное |
0-40 |
0.75 |
100 |
0 |
0 |
Отличное |
0-45 |
0.67 |
100 |
0 |
0 |
Отличное |
Полный набор c шумом |
0-40 |
0.75 |
100 |
10 |
0 |
Хорошее |
0-40 |
0.75 |
100 |
20 |
0 |
Хорошее |
0-40 |
0.75 |
100 |
30 |
0 |
Среднее |
0-40 |
0.75 |
100 |
0 |
10 |
Среднее |
0-40 |
0.75 |
100 |
0 |
20 |
Среднее |
0-40 |
0.75 |
100 |
0 |
30 |
Среднее |
0-40 |
0.75 |
100 |
10 |
10 |
Хорошее |
0-40 |
0.75 |
100 |
20 |
20 |
Среднее |
0-40 |
0.75 |
100 |
30 |
30 |
Среднее |
Неполный набор без шума |
1-40 |
- |
97.6 |
0 |
0 |
Отличное |
5-40 |
- |
87.8 |
0 |
0 |
Среднее |
10-40 |
- |
75.6 |
0 |
0 |
Среднее |
0-25, 30-40 |
- |
87.8 |
0 |
0 |
Среднее |
0-15, 20, 35-40 |
- |
87.8 |
0 |
0 |
Плохое |
0-40, 50 |
- |
100+ |
0 |
0 |
Отличное |
В целом, почти высокие пики восстанавливались хорошо, так что
качество в основном зависит от возможности восстановить мелкие
пики. Из-за этого в некоторых случаях в общем неплохое
восстановление оценивалось как "среднее".