In [30]:
import numpy as np
import matplotlib.pyplot as plt
In [31]:
run compilefunc.py -g 19,3,5+3,3.5,6+8,3,10+6,3,11.2+8,3.4,12.2
File func.txt created

Электронная плотность, которую я смоделировала, иммитирует две молекулы, состоящие из 2х и 3х атомов. Функция задается тремя характеризующими ее числами. Максимумы в точках 5, 6, 10, 11.2,12.2 высота 19, 3, 8, 6, 8; третий задает ширину гауссиана.

Графики восстановленной функции.

Отличное восстановление – по графику восстановленной функции можно определить положение максимума всех гауссовых слагаемых функции ("атомов")

Хорошее восстановление – можно угадать положение всех максимумов, зная число слагаемых ("атомов"), хотя на восстановленной функции максимумы от атомов не отличимы от шума

Среднее восстановление – положение каких-то атомов определить по восстановленной функции нельзя, других - можно

Плохое восстановление – положение атомов определить не представляется возможным; можно только предсказать примерный размер "молекулы"

In [32]:
run func2fourier.py -i func.txt -o out.txt
..Done
In [35]:
run fourier-filter.py -i out.txt -r 0-5 -o third.txt
..Done
In [36]:
run fourier2func.py -f func.txt -i third.txt -o fourth.txt
File fourth.txt with function and its recovering is created

На рисунке функция, восстановленная по гармоникам 0-5. Такое количество гармоник позволяет детектировать центры двух молекул по пикам. Однако я привела эту функцию как пример плохого восстановления, потому что как-либо охарактеризовать молекулы еще нельзя.

In [4]:
run fourier-filter.py -i out.txt -r 0-12 -o fifth.txt
..Done
In [47]:
run fourier2func.py -f func.txt -i fifth.txt -o sixt.txt
File sixt.txt with function and its recovering is created

На рисунке синтез 12 гармоник. Можно заметить, что пик молекулы из трех атомов раздвоился. Самый высокий пик первой молекулы стал более ярко выраженным. Это восстановление я охарактеризовала как среднее.

In [53]:
run fourier-filter.py -i out.txt -r 0-25 -o seventh.txt
..Done
In [54]:
run fourier2func.py -f func.txt -i seventh.txt -o eightth.txt
File eightth.txt with function and its recovering is created

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

In [29]:
run fourier-filter.py -i out.txt -r 0-33 -o nineth.txt
..Done
In [12]:
run fourier2func.py -f func.txt -i nineth.txt -o tenth.txt
File tenth.txt with function and its recovering is created

Отличное восстановление по 0-33 гармоникам. Четко видны пики, шум практически отсутствует.Функция практически полностью совпадает с исходной электронной плотностью.

Добавление шума

In [79]:
run func2fourier.py -i func.txt -o ten.txt -F 40
..Done
In [80]:
run fourier-filter.py -i ten.txt -r 0-33 -o twelve.txt
..Done
In [81]:
run fourier2func.py -f func.txt -i twelve.txt -o thirteen.txt
File thirteen.txt with function and its recovering is created

В данном задании необходимо добавить шум к амплитудам и фазам. Я выбрала восстановление по полному набору гармоник на интервале 0-33. Первый рисунок иллюстрирует добавление шума к амплитуде (40%). По выбранному в практикуме критерию, хорошее восстановление – когда можно угадать положение всех максимумов, зная число слагаемых ("атомов"), хотя на восстановленной функции максимумы от атомов не отличимы от шума. Пики изменили свою высоту и определить атом по ним стало сложнее. Атомы второй молекулы стало труднее отличить. Такое восстановление я охарактеризовываю как хорошее. Если бы мы не знали число атомов, тогда можно было бы принять пики за что-то важное и добавить пару несуществующих атомов. В таком случае хорошим восстановление назвать нельзя было бы. При подходе, когда мы знаем количество слагаемых - можно.

In [220]:
run func2fourier.py -i func.txt -o fourteen.txt -P 40
..Done
In [221]:
run fourier-filter.py -i fourteen.txt -r 0-33 -o fifteen.txt
..Done
In [222]:
run fourier2func.py -f func.txt -i fifteen.txt -o sixteen.txt
File sixteen.txt with function and its recovering is created

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

In [214]:
run func2fourier.py -i func.txt -o seventeen.txt -P 40 -F 40
..Done
In [215]:
run fourier-filter.py -i seventeen.txt -r 0-33 -o eighteen.txt
..Done
In [216]:
run fourier2func.py -f func.txt -i eighteen.txt -o nineteen.txt
File nineteen.txt with function and its recovering is created

Шум в 30% по обоим параметрам на рисунке. Глядя на пики нельзя сказать однозначно, что за атом мы видим без знания о молекулах. Некоторые пики неотличимы от шума. Ярко выражен только пик с наибольшим количством электронов. Восстановление все же не плохое, а среднее. Логично, что такое зашумление по двум параметрам сделало картинку хуже.

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

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

In [226]:
run fourier-filter.py -i out.txt -r 2-33 -o twenty.txt
..Done
In [227]:
run fourier2func.py -f func.txt -i twenty.txt -o thirty.txt
File thirty.txt with function and its recovering is created

Удаление двух первых гармоник привело к изменениям, невлияющим на определение положения атомов и в целом не испортило картинку исследователя.

In [101]:
run fourier-filter.py -i out.txt -r 0-16,19-20,21-33 -o fourty.txt
..Done
In [102]:
run fourier2func.py -f func.txt -i fourty.txt -o fifity.txt
File fifity.txt with function and its recovering is created

Пропуск 3 гармоник также несильно отразился на восприятии молекул. Восстановление можно даже считать отличным. Наверное, сильнее всего отсутствие гармоник сказалось на теоретическом атоме с малым количеством электронов.

In [234]:
run fourier-filter.py -i out.txt -r 0-33,43 -o sixty.txt
..Done
In [235]:
run fourier2func.py -f func.txt -i sixty.txt -o seventy.txt
File seventy.txt with function and its recovering is created

Добаление гармоники высоко ранга не повлияло на ркачество восстановления электронной плотности.