Восстановление структуры по данным РСА

Задание функции

Моделью для компьютерного эксперимента являются 2 молекулы, расположенные на отрезке [0;30] ангстрем. Атомы находятся на расстоянии 1-1.5 ангстрем друг от друга, всего: 5 атомов. Молекулы находятся на расстоянии 3-5 ангстрем. Электронные плотности атомов описываются гауссовой кривой. Максимум ЭП в центре атома приблизительно пропорционален числу электронов в атоме.

На интервале [0;30] была задана функция с помощью скрипта compile-func.py для моделирования графика электронной плотности молекул. Я использовала команду (1), где первые числа - высота пика; вторые - ширина пика; третьи - координаты максимума пика:

(1) python compile-func.py -g 14,3,7.3 + 25,3,6 + 2,3,8.5 + 16,3,13.5 + 32,3,14.8

На выход получила изображение функции (рис. 1) и файл (func.txt) с координатами моей функции.

Рис. 1 - Функция ЭП для заданной модели

Полные наборы гармоник

Сначала были рассчитаны коэффициенты разложения заданной функции в ряд Фурье: на вход подавался файл func.txt; расчет производился с помощью скрипта func2fourier.py (команда (2)). Выходной файл (func_ft.txt) содержит информацию о гармониках (рассчитанных амплитудах и фазах).

(2) python func2fourier.py -i func.txt

Затем производился отбор гармоник с помощью скрипта fourier-filter.py (команда (3) для 20 гармоник) и восстановление функций ЭП по отобранным гармоникам с помощью скрипта fourier2func.py (команда (4) для 20 гармоник). Я рассмотрела 4 полных набора гармоник: 0-10; 0-20; 0-30 и 0-40. Полученные графики функций представлены на рис. 2. Восстановление по набору функций 0-10 - плохое (можно предсказать лишь примерный размер молекулы), а по набору 0-20 - скорее среднее, нежели хорошее, так как при детекции атома водорода возникают затруднения.

За "N0" я приняла N = 40, хотя, N = 30 тоже позволяет отлично восстановить функцию ЭП. Однако, атом водорода лучше определяется на графике, где восстановление функции производится по набору гармоник с N = 40. Данные по исследованным восстановлениям представлены в итоговой таблице.

(3) python fourier-filter.py -i func_ft.txt -r 0-20 -o filter_0-20.txt
(4) python fourier2func.py -f func.txt -i filter_0-20.txt -o 0-20.txt

Рис. 2 - Восстановление функций ЭП по полному набору гармоник:
(A) N = 10; (B) N = 20; (С) N = 30; (D) N = 40

Также любопытно было посмотреть на эффект внесенного шума в амплитуды/фазы. Я рассматривала 6 случаев: добавленный шум к амплитудам (20%, 40%), добавленный шум к фазам (20%, 40%) и добавленный шум к фазам и амплитудам (20%, 40%). Графики восстановленных функций представлены на рисунке 3. При F = 20 восстановление - отличное; при P = 40 и F = 40, P = 40 восстановление - среднее, уровень шума довольно высок; в остальных случаях - восстановления - средние/хорошие, то есть они довольно неплохи, но может быть проблема с детекцией водорода.

Рис. 3 - Восстановление функций ЭП по полному набору гармоник при добавленном шуме

Неполные наборы гармоник

Были рассмотрены неполные наборы гармоник: для этого из полного набора удалялось определенное число гармоник. Я исследовала 4 неполных набора гармоник: (A) 1-40; (B) 2-40; (C) 0-14, 19-40; (D) 0-20, 25-40 (рис. 4). Как можно заметить, при удалении 1-2 начальных гармоник восстановление функции ЭП можно назвать отличным - можно определить положение всех максимумов. При удалении 10% гармоник из середины набора восстановление является средним, так как положение атома водорода определить нельзя. Данные были также занесены в итоговую таблицу.

Рис. 4 - Восстановление функций ЭП по неполному набору гармоник:
(A) n = 1-40; (B) n = 2-40; (С) n = 0-14, 19-40; (D) n = 0-20, 25-40

Также был исследован неполный набор гармоник, полученный путем добавления гармоники с номером, превышающим N0 на 10 (50). Данная функция восстановления практически совпадает с функцией восстановления по набору гармоник 0-40. Полученные данные также занесены в таблицу.

Рис. 5 - Восстановление функций ЭП по набору гармоник 0-40, 50

Итоговая таблица с характеристикой наборов гармоник в формате xlsx