Создайте консенсусное дерево из нескольких деревьев, используя Bio.phylo

Меня интересуют 4 гена домашнего хозяйства в геноме энтеробактерий.

Итак, у меня есть гены домашнего хозяйства, я взорвал NR и загрузил выровненные последовательности.

Я построил филогенетические деревья с помощью программы MEGA7 методом максимального сходства. Метод Boostrap был выполнен с 200 итерациями.

Я экспортирую свои деревья как файлы newick.

Итак, теперь у меня есть 4 дерева для моих 4 генов домашнего хозяйства. Я хочу создать дерево консенсуса из моих 4 деревьев.

Лично я пытался использовать дерево консенсуса от Bio.Phylo (http://biopython.org/DIST/docs/api/Bio.Phylo.Consensus-module.html#strict_consensus) (http://biopython.org/wiki/Phylo). Я выбираю функцию most_consensus, и она работает очень хорошо. Но у меня есть проблема.

Мой "сценарий" такой:

import os

import sys

from Bio import Phylo

from Bio.Phylo.Consensus import *

fichier=sys.argv[1]

fichier2=sys.argv[2]

fichier3=sys.argv[3]

fichier4=sys.argv[4]

tree1=Phylo.read(fichier, 'newick')

tree2=Phylo.read(fichier2, 'newick')

tree3=Phylo.read(fichier3, 'newick')

tree4=Phylo.read(fichier4, 'newick')

trees=tree1,tree2,tree3,tree4

majority_tree = majority_consensus(trees, 0.5)

Phylo.draw(majority_tree)

Проблема в том, что дерево консенсуса зависит от порядка. У меня был другой результат, например, когда я try trees = tree1,tree2,tree3,tree4 и trees = tree2,tree4,tree1,tree3

Кто-нибудь знает другое программное обеспечение для создания дерева консенсуса из файлов newick?

И мне нужна помощь с Bio.Phylo. Если кто-то знает больше об этом пакете, это будет здорово.


person Nono_sad    schedule 03.04.2017    source источник
comment
Добро пожаловать в СО. Ваш английский ясен, но ваш вопрос нет. Похоже, речь идет о биологии и особенностях алгоритма построения дерева, который вы собираетесь использовать. Возможно, ваш вопрос больше подходит для обмена стеками биологии. Однако, если ваш вопрос на самом деле касается программирования, вы должны перефразировать его: пропустите подробности о статистике и биологии. Приведите пример, который могут воспроизвести другие (например, у нас нет ваших файлов). Четко изложите суть вашей проблемы с программированием. Это повысит ваши шансы получить ответы.   -  person snake_charmer    schedule 03.04.2017
comment
Спасибо. BioGeek хорошо понял мою проблему. Это о биологии, но это информационная проблема. Спасибо вам за ваш ответ :)   -  person Nono_sad    schedule 05.04.2017
comment
Я рад, что вы получили удовлетворительный ответ :-) Теперь я лучше понимаю ваш вопрос, когда прочитал ответ и увидел иллюстрацию формата Ньюика.   -  person snake_charmer    schedule 05.04.2017


Ответы (1)


Поскольку вы не опубликовали свои файлы newick, давайте попробуем воспроизвести вашу проблему, чтобы у нас был минимальный, полный и проверяемый пример. это показывает, что дерево консенсуса зависит от порядка.

Начнем со следующих трех деревьев:

три дерева

В формате Newick они представлены следующим образом:

newicks = {1: '((A,B,C),(D,(E,F)))',
           2: '(((A,B),C),(D,(E,F)))',
           3: '((A,B,C),(E,(D,F)))'}

Теперь мы пробуем все возможные перестановки этих трех деревьев, создаем дерево консенсуса и смотрим, все ли они одинаковы:

from io import StringIO
from Bio import Phylo
from Bio.Phylo.Consensus import majority_consensus
from itertools import permutations

def read_newick(treedata):
    handle = StringIO(treedata)
    return Phylo.read(handle, "newick")

for keys in permutations(newicks.keys()):
    trees = [read_newick(newicks[key]) for key in keys]
    majority_tree = majority_consensus(trees, 0.5)
    print('majority consensus for order: {}'.format(keys))
    Phylo.draw_ascii(majority_tree)

Результат:

majority consensus for order: (1, 2, 3)
                           ________________________ A
                          |
  ________________________|________________________ B
 |                        |
_|                        |________________________ C
 |
 |                         ________________________ D
 |________________________|
                          |                         ________________________ E
                          |________________________|
                                                   |________________________ F

majority consensus for order: (1, 3, 2)
                           ________________________ A
                          |
  ________________________|________________________ B
 |                        |
_|                        |________________________ C
 |
 |                         ________________________ D
 |________________________|
                          |                         ________________________ E
                          |________________________|
                                                   |________________________ F

majority consensus for order: (2, 1, 3)
                           ________________________ A
                          |
  ________________________|________________________ B
 |                        |
_|                        |________________________ C
 |
 |                         ________________________ D
 |________________________|
                          |                         ________________________ E
                          |________________________|
                                                   |________________________ F

majority consensus for order: (2, 3, 1)
                           ________________________ A
                          |
  ________________________|________________________ B
 |                        |
_|                        |________________________ C
 |
 |                         ________________________ D
 |________________________|
                          |                         ________________________ E
                          |________________________|
                                                   |________________________ F

majority consensus for order: (3, 1, 2)
                           ________________________ A
                          |
  ________________________|________________________ B
 |                        |
_|                        |________________________ C
 |
 |                         ________________________ E
 |________________________|
                          |                         ________________________ D
                          |________________________|
                                                   |________________________ F

majority consensus for order: (3, 2, 1)
                           ________________________ A
                          |
  ________________________|________________________ B
 |                        |
_|                        |________________________ C
 |
 |                         ________________________ E
 |________________________|
                          |                         ________________________ D
                          |________________________|
                                                   |________________________ F

Таким образом, два последних дерева консенсуса действительно отличаются от первых четырех деревьев консенсуса.

Чтобы понять, почему это происходит, мы рассмотрим исходный код для majority_consensus. (). Там мы видим, что первым шагом является создание корневой клады. Порядок терминальных кладов определяется первым предоставленным деревом.

Таким образом, для (tree1, tree2, tree3) первое предоставленное дерево — tree1, а корневая ветвь — ABCDEF. Но для (tree3, tree2, tree1) первым предоставленным деревом будет tree3, а корневая ветвь станет ABCEDF.

Итак, это ограничение самого алгоритма, и любая реализация консенсуса большинства даст вам другой порядок, зависящий от первого предоставленного дерева.

person BioGeek    schedule 04.04.2017
comment
Спасибо. Ваш пример очень ясен, и вы действительно хорошо поняли мою проблему. Извините, что не публикует мои данные, это своего рода большое дерево, и я не знаю, как я могу его опубликовать. Но благодаря вам. Вы дали отличный пример. Так что я ничего не могу сделать для этого. Потому что я жду одинакового дерева консенсуса независимо от порядка входных файлов. Спасибо вам большое за ответ :) - person Nono_sad; 05.04.2017
comment
Я удивлен, что правило большинства зависит от порядка ввода. Если это так в случае с биопитоном, возможно, алгоритм неверен. Результат должен содержать кладу (E, F), так как она присутствует в 2/3 деревьев. - person bli; 20.04.2017