Занятие 3. Филогенетические деревья

Задание 1.Оценка достоверности реконструированной топологии с помощью бутстреп-анализа

Был проведен бутстреп-анализ выравнивания мутированных последовательностей, соответствующих листьям исходного дерева:
fseqboot ali.fasta -auto   # создает 100 бутстреп-реплик выравнивания
fdnaml ali.fseqboot -auto  # в выходном файле будет 100 скобочных формул, соответствующих реконструкциям, сделанным по каждому из выравниваний
fconsense ali.treefile -auto # в выходном файле будут содержатся результаты бутстреп-анализа
Здесь ali.fasta - файл, содержащий множественное выравнивание предполагаемых потомков RIR1_Ecoli.
ali.treefile - файл, содержащий деревья, полученные методом "максимального правдоподобия".
Выходной файл в текстовом формате лежит тут.
Полученное в результате проведенного анализа дерево приведено также ниже в виде филограммы.
                       +------F
                +100.0-|
         +100.0-|      +------E
         |      |
  +------|      +-------------D
  |      |
  |      |             +------A
  |      +-------100.0-|
  |                    +------B
  |
  +---------------------------C

Как видно, его топология совпадает с топологией исходного дерева.
Чтобы удостоверится в этом посмотрим на описание ветвей дерева как разбиения множества листьев:
C F E D B A
. * * * . .    
. . . . * *    
. * * . . .    
Очевидно, что данное описание аналогично такому же описанию исходного дерева:
A B C D E F
. . * * * *
. . . * * *
. . . . * *
Таким образом, можно сделать вывод о том, что бутстреп-анализ - хорошее средство для оценки достоверности филогенетических деревьев.

Задание 2. Изображение филогенетического дерева в графическом формате

Нижележащее изображение исходного дерева со скобочной формулой
((((A:90,B:90):35,C:70):30,D:50):10,(E:60,F:60):40);	
было построено с помощью программы fdrawtree. Как видно, программа строит неукорененное дерево, причем длины ветвей пропорциональны растояниям указанным в формуле.

Дополнительные упражнения

  1. Оценить достоверность полученной топологии с помощью метода jackknife

    Было повторено обязательное упражнение 1 задания 3, использовав jackknife вместо bootstrap (опция "-test j" программы fseqboot).
    Результат полученный двумя разными методами совпал абсолютно.
  2. Укоренение дерева в среднюю точку

    Для этой цели была использована программа fretree. Сначала вручную была составлена скобочная формула для дерева, полученного при помощи алгоритма Neighbor-joining:
    ((A:0.64,B:0.73):0,(((E:0.56,F:0.38):0.52,D:0.33):0.34,C:0.48):0.37);
    
    Она была помещена в файл tree. Дальнейшая работа проходила с программой fretree.
              fretree 6 tree # 6 - количество листьев исходного дерева.
             
    С помощью однобуквенных команд M (укоренение в среднюю точку), R (запись укорененного дерева) и W (запись дерева в файл) было построено укорененное дерево:
    
                                               ,--------------------------------3:E
                 ,----------------------------11
      ,---------10                             `---------------------4:F
      !          !
      !          `------------------5:D
    --7
      !        ,----------------------------6:C
      `--------9
               !                     ,-------------------------------------1:A
               `---------------------8
                                     `------------------------------------------2:B
    
    
    В выходном файле имеется скобочная формула данного дерева. Это не совпадает с исходным деревом (см. протокол ко второму занятию). Возможно, это объясняется тем, что исходное дерево не является ультраметричным, поэтому укоренять его в среднюю точку неправильно.
  3. Изображение филогенетического дерева в графическом формате

    Было создано изображение переукорененного дерева из предыдущего упражнения как филограммы (phenogram), ориентированной вправо. Для этого была использована программа fdrawgram:
    fdrawgram -intreefile t_n -plotfile t_n.fdraw -style p
    
    Здесь t_n - файл со скобочной формулой дерева из предыдущего задания, t_n.fdraw - выходной файл, p - обозначение филограммы (phenogram).

    Полученное дерево приведено ниже:


    Основное различие в возможностях программ fdrawgram и fdrawtree - fdrawgram строит укорененное дерево, а fdrawtree - неукорененное.
  4. Восстановление предковой последовательности

    Необходимо восстановить предковую последовательность методом максимального правдоподобия (программа fdnamlk). Предложенная программа аналогична программе fdnaml, но подразумевает выполнение гипотезы "молекулярных часов", которая не выполняется в случае моего дерева (см. протокол к занятию 2). Попытаемся всё же восстановить предковую последовательность программой fdnamlk. Для этого выполним следующие команды:

    1. Построим укорененное дерево и восстановим последовательности, соответствующие его узлам:
    2. fdnamlk ali.fasta -hypstate Y -outfile  ml
      
      Полученный файл тут.
    3. Вытащим последовательность предполагаемого предка:
    4. grep ml -e " 4 *[A-z]" > precursor         
      
      После незначительного редактирования выходного файла получим последовательность предка в FASTA формате.
    5. Чтобы оценить качество восстановления, строим выравнивание с "реальной" предковой последовательностью:
    6. needle precursor rir1_gene.fasta -outfile comp -gapopen 100
      
      Штраф за открытие гэпа здесь равен 100, т.к. наша модель делеций не предполагала, а следовательно и гэпов в выравнивании быть не должно. Выходной файл тут.

    Наблюдения и выводы:

    1. Восстановленное дерево отличается по топологии от исходного реального дерева. Можно получить таблицу встречаемости внутрених ветвей без учета корня:

      A B C D E F
      Исходное дерево
      Алгоритм программы fdnamlk
      Алгоритм программы fdnaml
      . . * * * *
      ++ +
      . . . * * *
      + +
      . . . . * *
      ++ +
      . . * * . .
       + 

    2. По-видимому, можно сказать, что положение корня определено программой верно в том смысле, что как у "реального" предка, так и у восстановленного, потомками являются 1)общий предок последовательностей A,B,C,D и 2)общий предок последовательностей E,F.
    3. Полученное выравнивание врядли можно назвать идеальным (Identity ~ 54%), ведь все-таки это одна и та же последовательность. Но, учитывая большие эволюционные расстояния между последовательностями, а также тот факт, что Similarity ~ 80%, можно сказать, что программа справилась с восстановлением гипотетического общего предка, несмотря на то, что гипотеза "молекулярных часов" в данном случае не выполняется. Правда была получена последовательность лишь примерно похожая на "реального" предка.

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

    Однако из этих узлов мы можем выбрать наиболее близкий к общему предку, потому что эволюция была смоделирована. Затем можно сравнивать его с соответствующим узлом реального дерева. Таким образом, можно будет сделать вывод о том, как алгоритм "максимального правдоподобия" восстанавливает последовательности, если гипотеза "молекулярных часов" не выполняется.

    Для проведения этого сравнения был выбран общий предок последовательностей A,B,C,D (см. протокол к занятию 2). Его растояние от реального предка равно 10 замен на 100 нуклеотидов.

    Чтобы найти предполагаемую последовательность общего предка A,B,C,D алгоритмом "максимального правдоподобия" необходимо выполнить следующие команды:

    fdnaml ali.fasta -hypstate Y -outfile  ml2
    
    чтобы построить дерево и восстановить последовательности, соответствующие его узлам (полученный файл тут). Сразу стоит заметить, что топология получившегося дерева совпадает с топологией "реального". А затем:
     
    grep ml -e " 3 *[A-z]" > ABCD_ml2         
    
    чтобы вытащить последовательность предка A,B,C,D (его порядковый номер - 3). После незначительного редактирования выходного файла получим искомую последовательность в формате FASTA. Чтобы сравнить ее с реальной построим их выравнивание.

    Как видно Identity двух последовательностей достаточно велик (~66%). Учитывая эволюционные расстояния между последовательностями A,B,C,D (см. занятие 2) можно сказать, что этот процент достаточно высок, и алгоритм "максимального правдоподобия" хорошо справляется с восстановлением предковых последователностей.

    Но как тогда восстановить ближайшего общего предка всех последовательностей данным алгоритмом без выполнения гипотезы "молекулярных часов"? Возможно, для этой цели необходимо "включить" в дерево последовательность заведомо далекую от каждой из данных. Таким образом, общий предок исходных последовательностей станет "внутренним" узлом дерева, то есть перестанет быть корнем, которым теперь будет общий предок искомого корня и новой последовательности. Тогда мы сможем определить общего предка данных последовательностей более точно в тех случаях, когда не выполняется гипотеза "молекулярных часов".

Вернуться к списку протоколов.

 


©:Сорокин Максим