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


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

Модель:

  • две молекулы (5 атомов) расположены на отрезке [0,30] (ангстремы)
  • атомы в молекуле связаны ковалентно и находятся на расстоянии 1-1.5 анстрем друг от друга молекулы расположены на расстоянии 3-5 ангстрем

  • Электронные плотности (ЭП) атомов описываются гауссовой кривой и задается с помощью скрипта compile-func.py (сумма пяти гауссовых функций с max в точках 8, 9.5, 15.5, 17 и величиной пиков 5, 15, 10, 32, 27):
    python compile-func.py -g 5,3,8+15,3,9.5+10,3,14+32,3,15.5+27,3,17  
    

    Выходной файл - func.txt - представляет координаты (X, Y) заданной функции. На рис. 1 представлено изображение полученной модельной функции электронной плотности.

    Рис. 1 Функция электронной плотности для системы из двух молекул (5 атомов, одномерный случай)



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

    1. Коэффициенты Фурье

    Коэффициенты Фурье рассчитывались с помощью скрипта func2fourier.py .

     python func2fourier.py -i func.txt
     

    В выходном файле ( func_ft.txt) указаны амплитуды и фазы гармоник, а также их номера.


    2. Отбор гармоник

    Отбор гармоник и восстановление по ним функции осуществлялось с помощью скриптов fourier-filter.py и fourier2func.py. Из 499 гармоник было отобрано 10, 20, 30. Вид функций, восстановленных по n первым гармоникам, представлен на рис. 2.

    python fourier-filter.py -r 0-10 -i func_ft.txt -o func_filtered_0-10.txt
    python fourier2func.py -f func.txt -i func_filtered_0-10.txt -o func_0-10.txt
    
    python fourier-filter.py -r 0-20 -i func_ft.txt -o func_filtered_0-20.txt
    python fourier2func.py -f func.txt -i func_filtered_0-20.txt -o func_0-20.txt
    
    python fourier-filter.py -r 0-30 -i func_ft.txt -o func_filtered_0-30.txt
    python fourier2func.py -f func.txt -i func_filtered_0-30.txt -o func_0-30.txt
     

    Рис. 2 Функции, восстановленные по n первым гармоникам. Слева - с наложенной исходной функцией, справа - без исходной функции.

    Сравнивая восстановленную функцию с исходной можно оценить качество восстановления. При n=10 можно предсказать только примерный размер "молекулы", положение атомов определить не представляется возможным (плохое восстановление). При n=20 можно угадать положение всех максимумов, зная число слагаемых ("атомов"), но на восстановленной функции максимумы от атомов не отличимы от шума (хорошее восстановление). При n = 30 уже можно определить положение максимума всех гауссовых слагаемых функции, несмотря на присутствие небольших шумов (отличное восстановление). Если взять еще болшее число слагаемых, то вид восстановленной функции будет практически неотличим от исходной (рис.3).

    Рис. 3 Функция, восстановленная по 50 первым гармоникам (n=50)


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

    В эксперименте амплитуды определяются не для всех сигналов, интенсивности сигналов (следовательно, и амплитуды) определяются с ошибкой, также фазы для измененных сигналов определяются с ошибкой. Поэтому в модель был добавлен гауссовый шум к амплитудам и фазам: 15% шума к амплитудам или фазам, 30% шума к амплитудам или фазам, 15% шума к амлитудам и фазам, 30% шума к амплитудам и фазам.

    # Добавление шума только к амплитуде
     python func2fourier.py -F 15 -i func.txt -o noise_F15.txt
     python fourier-filter.py -r 0-30 -i noise_F15.txt -o f_noise_F15.txt
     python fourier2func.py -i f_noise_F15.txt -o func_noise_F15.txt
     
     
     # Добавление шума только к фазе
     python func2fourier.py -P 15 -i func.txt -o noise_P15.txt
     python fourier-filter.py -r 0-30 -i noise_P15.txt -o f_noise_P15.txt
     python fourier2func.py -i f_noise_P15.txt -o func_noise_P15.txt
     
      # Добавление шума и к амплитуде, и к фазе
     python func2fourier.py -F 15 -P 15 -i func.txt -o noise_FP15.txt
     python fourier-filter.py -r 0-30 -i noise_FP15.txt -o f_noise_FP15.txt
     python fourier2func.py -i f_noise_FP15.txt -o func_noise_FP15.txt
     

    Восстановление функций проиводилось по 30-ти гармоникам. Изображения восстановленных функций после добавления шумов представлены на рис.4. Данные о качестве восстановления для каждого из случая шумов представлены в табл. 1. В целом, можно отметить, что качество заметно снизилось.

    Рис. 4 Восстановление функций по n=30 гармоникам с шумами, добавленными к амплитуде(F) и/или к фазе (P)


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

    Неполные наборы гармоник были получены путем удаления отдельных гармоник с помощью скрипта fourier-filter.py:

    #Удаление первой гармоники
    python fourier-filter.py -r 1-30 -i func_ft.txt -o func_filtered_1-30.txt
    python fourier2func.py -f func.txt -i func_filtered_1-30.txt -o func_1-30.txt
     
     #Удаление первых двух гармоник
    python fourier-filter.py -r 2-30 -i func_ft.txt -o func_filtered_2-30.txt
    python fourier2func.py -f func.txt -i func_filtered_2-30.txt -o func_2-30.txt
     
    Полученные графики восстановленных функций представлены на рис. 5. Видно, что при удалении первой гармоники график функции электронной плотности смещается по оси ординат. Это связано с тем, что первая гармоника есть константа (длины волны нет). Поэтому при расшифровке пиков сложностей не возникает. При удалении первых двух гармоник график уже немного деформируется, но определение пиков все еще незатруднительно.

    Рис. 5 Восстановление функций с удаленными гармониками: первой (1-30), первой и второй (2-30)

    Далее были удалены гармоники из середины набора (mid1 - удалены гармоники 11, 17, 23; mid2 - удалены гармоники 11, 12). Графики восстановленных по ним функций представлены на рис. 6.

    Рис. 6 Восстановление функций с удаленными гармониками из середины набора.

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

    Рис. 7 Восстановление функций по гармоникам 0-30, 40


    Определение разрешения и полноты

    Разрешением полного набора гармоник называется период (длина волны) гармоники с наибольшим номером. Для данного эксперимента он равен 30/n Å. Полнота определяется как отношение количества гармоник в данном наборе (длина волны этих гармоник не меньше разрешения для полного набора) от числа гармоник в полном наборе. Для определения разрешения неполного набора разумно ввести порог на полноту 90%. То есть разрешение такого набора будет определяться как период гармоники с наибольшим номером при условии что полнота такого набора > 90%.


    Таблица 1.Восстановление функции электронной плотности по коэффициентам ряда Фурье

    Набор гармоник Разрешение (Å) Полнота данных(%) Шум амплитуды (% от величины F) Шум фазы (% от величины phi) Качество восстановления(отличное, хорошее, среднее, плохое)
    Полный набор гармоник
    0-10 3 100% 0 0 Плохое
    0-20 1.5 100% 0 0 Хорошее
    0-30 1 100% 0 0 Отличное
    0-50 1 100% 0 0 Отличное
    0-30 1 100% 15 0 Хорошее
    0-30 1 100% 30 0 Среднее
    0-30 1 100% 0 15 Хорошее
    0-30 1 100% 0 30 Плохое
    0-30 1 100% 15 15 Хорошее
    0-30 1 100% 30 30 Плохое
    Неполный набор гармоник
    1–30 1 96.8% 0 0 Отличное
    2-30 1 93.5% 0 0 Отличное
    0-10, 12-16, 18-22, 24-30 1 90.3% 0 0 Среднее
    0-10, 13-30 1 93.5% 0 0 Хорошее
    0-30, 40 1 100% 0 0 Отличное





    © Васильева Елена, 2015