Лого сайта
Восстановление электронной плотности

Описание используемой модели

На одномерном отрезке длиной 30Å и началом в 0 расположены две молекулы: 2 атома + 3 атома. Атомы в каждой молекуле связаны ковалентно, и находятся на расстоянии 1-1.5Å Молекулы расположены на расстоянии 4-5 Å (водородная связь или гидрофобное взаимодействие между ними). Электронные плотности (ЭП) атомов описываются гауссовой кривой, формула которой представлена на Рисунке 1. Максимум ЭП в центре атома приблизительно пропорционален числу электронов в атоме.
Функция электронной плотности атомов на этом отрезке была задана с помощью скрипта compile-func.py. График электронной плотности модели представлен на Рисунке 2. Параметры модели подобраны так, что возможно наблюдать за поведением как отдельных пиков, так и перекрывающихся (а так же пиков атомов участвующих в образовании водородной связи).

Скрипт задания модели

python ./compile-func.py -g 28,2,8+24,3,9.5+20,1,12.5+30,1.6,14+20,1,16.5

Рисунок 1. Формула гауссовой кривой, описывающей поведение электронной плотности в используемой модели. λ - высота гауссовской кривой, соответствующая максимуму электронной плотности в центре атома, β - ширина "колокола", примерно соответствующая диаметру атома, γ - координата максимума гауссовой кривой, соответстующая центру атома.

Рисунок 2. Электронная плотность исследуемой модели. Данные в табулятивном формате.

Расчёт коэффициентов Фурье

Полученаая функция электронной плотности разложена в ряд Фурье. Коэффициенты разложения функции в ряд Фурье были получены с помощью скрипта func2fourier.py
Скрипт раскладывает полученный ранее файл func.txt(функцию ЭП) на 499 гармоник на отрезке [0 Å, 30 Å]. Выходной файл скрипта – файл func_ft.txt.

Разложение в ряд Фурье функции ЭП

python func2fourier.py -i func.txt

Восстановление функции электронной плотности по амплитудам и фазам разложения Фурье

Введем критерии оценки качества восстановления:

Для полного набора гармоник

Для полного набора гармоник построен график восстановленной функции электронной плотности модели с помощью скрипта fourier2func.py. Результат восстановления представлен на Рисунке 3.

Восстановление функции ЭП по ее разложению в ряд Фурье

python fourier2func.py -f func.txt -i func_ft.txt -s

Рисунок 3. Восстановленная функция электронной плотности исследуемой модели. Данные в табулятивном формате.

Как видно из Рисунка 3, график восстановленной ЭП совпадает с графиком исходной ЭП (Рисунок 2), что говорит об отличном качестве восстановления. Поскольку полный набор включает 499 гармоник, то разрешение 0.06Å, что сильно избыточно. Попробуем найти минимально возможный набор гармоник, при котором наблюдается отличное качество восстановления.

Восстановление функции ЭП по ее разложению в ряд Фурье для некоторых гармоник


python fourier-filter.py -r 0-1 -i func_ft.txt -o ffr_1.txt
python fourier2func.py -f func.txt -i ffr_1.txt -o ffc_1.txt

python fourier-filter.py -r 0-10 -i func_ft.txt -o ffr_10.txt
python fourier2func.py -f func.txt -i ffr_10.txt -o ffc_10.txt

python fourier-filter.py -r 0-20 -i func_ft.txt -o ffr_20.txt
python fourier2func.py -f func.txt -i ffr_20.txt -o ffc_20.txt

python fourier-filter.py -r 0-30 -i func_ft.txt -o ffr_30.txt
python fourier2func.py -f func.txt -i ffr_30.txt -o ffc_30.txt

python fourier-filter.py -r 0-40 -i func_ft.txt -o ffr_40.txt
python fourier2func.py -f func.txt -i ffr_40.txt -o ffc_40.txt

python fourier-filter.py -r 0-25 -i func_ft.txt -o ffr_25.txt
python fourier2func.py -f func.txt -i ffr_25.txt -o ffc_25.txt


гармоники: 0-1

гармоники: 0-10

гармоники: 0-20

гармоники: 0-30

гармоники: 0-40

гармоники: 0-25

Рисунок 4. Восстановленная функция электронной плотности исследуемой модели при различном числе гармоник. Исходная функция – сплошной линией,
восстановленная функция – пунктирной линией.

Как видно из Рисунка 4, минимальный набор гармоник для отличного восстановления - 31.

Влияние шума на восстановление

Оценим влияние шума на восстановление: добавим шум к фазе, к амплитутде и к фазе и амплитуде разложения Фурье.

Добавление шума только к амплитуде


python func2fourier.py -F 7 -i func.txt -o ft_noise_F7.txt
python fourier-filter.py -r 0-30 -i ft_noise_F7.txt -o ft_noise_F7_30.txt
python fourier2func.py -i ft_noise_F7_30.txt -o func_noise_F7_30.txt

Добавление шума только к фазе


python func2fourier.py -P 7 -i func.txt -o ft_noise_P7.txt
python fourier-filter.py -r 0-30 -i ft_noise_P7.txt -o ft_noise_P7_30.txt
python fourier2func.py -i ft_noise_P7_30.txt -o func_noise_P7_30.txt

Добавление шума к фазе и амплитуде


python func2fourier.py -F 4 -P 4 -i func.txt -o ft_noise_F4P4.txt
python fourier-filter.py -r 0-30 -i ft_noise_F4P4.txt -o ft_noise_F4P4_30.txt
python fourier2func.py -i ft_noise_F4P4_30.txt -o func_noise_F4P4_30.txt


гармоники: 0-30
шум только к амплитуде

гармоники: 0-30
шум только к фазе

гармоники: 0-30
шум к фазе и амплитуде

Рисунок 5. Восстановленная функция электронной плотности исследуемой модели при различных шумах при разложении. Исходная функция – сплошной линией,


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

Из данных на Рисунке 5 видно, что шумы в фазе гораздо сильнее влияют на качество восстановления, чем шумы в амплитуде.

Для неполного набора гармоник

Оценим качество восстановления при различной полноте разложения.

Удаление первой гармоники


python fourier-filter.py -r 1-30 -i func_ft.txt -o ft_begin.txt
python fourier2func.py -i ft_begin.txt -o func_begin.txt

Удаление первых двух гармоник


python fourier-filter.py -r 2-30 -i func_ft.txt -o ft_begin2.txt
python fourier2func.py -i ft_begin2.txt -o func_begin2.txt

Удаление первых трех гармоник


python fourier-filter.py -r 3-30 -i func_ft.txt -o ft_begin3.txt
python fourier2func.py -i ft_begin3.txt -o func_begin3.txt

Удаление гармоник из середины набора (14-16)


python fourier-filter.py -r 0-13,17-30 -i func_ft.txt -o ft_mid.txt
python fourier2func.py -i ft_mid.txt -o func_mid.txt

Удаление гармоник из середины набора (12-18)


python fourier-filter.py -r 0-11,19-30 -i func_ft.txt -o ft_mid2.txt
python fourier2func.py -i ft_mid2.txt -o func_mid2.txt

Добавление гармоники с номером 30+10


python fourier-filter.py -r 0-30,40 -i func_ft.txt -o ft_append.txt
python fourier2func.py -i ft_append.txt -o func_append.txt


гармоники: 1-30

гармоники: 2-30

гармоники: 3-30

гармоники: 0-13,17-30

гармоники: 0-11,19-30

гармоники: 0-30,40

Рисунок 6. Восстановленная функция электронной плотности исследуемой модели при различной полноте. Исходная функция – сплошной линией,
восстановленная функция – пунктирной линией.

При удалении первой гармоники функция заметно смещается вниз по оси ординат, это ожидаемо, т.к. значение первой гаромоники равняется первому коэффициенту ряда Фурье.
Если удалить первые две или три гармоники, то от функции вычитается синусоида с большим периодом.
Есил удалить около 10% гармоник из середины набора, то качество восстановления значимо ухудшается
Добавление гармоники с номером 40 к набору гармоник 0, 1, ..., 30, никак не повлияло.
Значит, что при восстановлении функции наиболее значимый вклад восят гармоники, которые находятся в середине набора.

Определение разрешения набора гармоник

Разрешение для полного набора гармоник для данной модели и ее разложения 0, 1, ..., 30 равно 30 Å / 31 ≈ 1,0 Å.
Полнота данных вычисляется как процент гармоник в наборе, период которых не меньше разрешения, от числа гармоник в полном наборе для этого разрешения.
Для полного набора полнота данных равна 100%. Для неполного набора гармоник нужно всегда указывать, дополнительно полноту данных.

Таблица 1. Восстановление функции электронной плотности по разложению в ряд Фурье
Набор гармоник Разрешение (Å) Полнота данных (%) Шум амплитуды (% от F) Шум фазы (% от phi) Качество восстановления
Полный набор гармоник без шумов
0-498 0.06 100 0 0 отличное
0-1 15 100 0 0 плохое
0-10 2.7 100 0 0 плохое
0-20 1.4 100 0 0 среднее
0-25 1.2 100 0 0 хорошее
0-30 1.0 100 0 0 отличное
0-40 0.73 100 0 0 отличное
Полный набор гармоник с шумами
0-30 1.0 100 7 0 хорошее
0-30 1.0 100 0 7 среднее
0-30 1.0 100 4 4 среднее
Неполный набор гармоник
1-30 1.0 96.8 0 0 отличное
2-30 1.0 93.5 0 0 отличное
3-30 1.0 90 0 0 хорошее
0-13, 17-30 1.0 90 0 0 среднее
0-11, 19-30 1.0 77 0 0 среднее
0-30, 40 1.0 100 0 0 отличное