Em formação

Como obter a menor subárvore contendo um conjunto de nós do BioPhylo?

Como obter a menor subárvore contendo um conjunto de nós do BioPhylo?


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

Estou testando várias bibliotecas filogenéticas em Python. Quero ler em uma árvore de Newick, então, dada uma lista de táxons, gere a menor árvore que contenha todos eles. Esta tarefa é bastante simples e eficiente em dendropia e ete2:

newick = '((guaxinim, urso), ((leão do mar, foca), ((macaco, gato), doninha)), cão);' taxa = ['guaxinim', 'sea_lion'] import ete2 tree = ete2.Tree (newick) pruned = tree.prune (taxa) import dendropy tree = dendropy.Tree.get_from_string (newick, 'newick') pruned = tree.prune_taxa_with_labels (taxa)

Estou tentando, mas não consigo encontrar uma funcionalidade equivalente no pacote Bio.Phylo. Árvores têm um método de "podar", mas ele remove um único nó da árvore.


o ancestral comum A função deve fornecer o resultado que você deseja: ela fornece a árvore (eu acho) que é o ancestral comum mais recente de todos os alvos fornecidos.


Desculpe por desenterrar esta velha questão. Mas acho que, dado que você tem uma árvore sem raiz, o ancestral comum talvez não seja a resposta correta.

O que você precisa fazer é o seguinte: Suponha que você tenha uma árvore sem raiz com n pontas (espécies) e, portanto, 2n-3 ramos. Você deve cortar a árvore ao meio em todos esses galhos possíveis. Ao fazer isso, você terá de 4 a 6 subárvores. A menor subárvore contendo todas as espécies selecionadas será sua resposta.

Isso é diferente do ancestral comum porque, para uma árvore sem raiz, pode ser colocado de forma que as espécies não escolhidas por você sejam agrupadas primeiro, todas as suas espécies selecionadas se tornam o grupo externo. Mas se você "enraizar novamente" a árvore corretamente, ainda poderá fazer com que as espécies selecionadas se agrupem como um pequeno clado exclusivo.


Cálculo rápido da distância de quarteto entre árvores de graus arbitrários

Vários algoritmos foram desenvolvidos para calcular a distância de quarteto entre duas árvores evolucionárias no mesmo conjunto de espécies. A distância de quarteto é o número de quartetos - subárvores induzidas por quatro folhas - que difere entre as árvores. Geralmente, esses algoritmos são restritos para trabalhar em árvores binárias, mas recentemente desenvolvemos algoritmos que funcionam em árvores de grau arbitrário.

Resultados

Apresentamos um algoritmo rápido para calcular a distância de quarteto entre árvores de grau arbitrário. Árvores de entrada fornecidas T e T ', o algoritmo é executado no tempo O(n + |V|·|V '| min <Eu iria, Eu iria'>) e espaço O(n + |V|·|V '|), onde n é o número de folhas nas duas árvores, V e V são os nós não-folha em T e T ', respectivamente, e Eu iria e Eu iria' são o número máximo de nós não-folha adjacentes a um nó não-folha em T e T ', respectivamente. Os algoritmos mais rápidos publicados anteriormente para árvores de graus arbitrários executados em O(n 3) (independente do grau da árvore) e O(|V|·|V 'Eu iria·Eu iria'), respectivamente. Comparamos experimentalmente o algoritmo com os algoritmos existentes para calcular a distância do quarteto para árvores gerais.

Conclusão

Apresentamos um novo algoritmo para calcular a distância de quarteto entre duas árvores de grau arbitrário. O novo algoritmo melhora o tempo de execução assintótico para calcular a distância do quarteto, em comparação com os métodos anteriores, e os resultados experimentais indicam que o novo método também tem um desempenho significativamente melhor na prática.


Introdução

Uma tarefa fundamental na biologia evolutiva é combinar uma coleção de árvores enraizadas em conjuntos de dados parciais, possivelmente sobrepostos, em uma única árvore enraizada no conjunto completo de dados. Este é o objetivo dos métodos de superárvore, principalmente concebidos e usados ​​com o propósito de reconstruir uma superárvore de espécies a partir de um conjunto de árvores de espécies (ver visões gerais dos métodos anteriores em [4-6], e métodos mais recentes em [2,10,21 , 24,25,28,29]).

Idealmente, a superárvore combinada deve "exibir" cada uma das árvores de entrada, no sentido de que, ao restringir a superárvore ao conjunto de folhas de uma árvore de entrada, obtemos a mesma árvore de entrada. No entanto, isso nem sempre é possível, pois as árvores de entrada podem conter informações filogenéticas conflitantes. Observe que considerar um conjunto de árvores de entrada que nem todas são compatíveis leva à questão de corrigir árvores de genes de entrada ou encontrar um subconjunto de árvores de entrada ou subárvores compatíveis [26]. Aqui, deixamos em aberto essas questões e estudamos a formulação mais direta do problema da superárvore que é considerar um conjunto de árvores de entrada compatíveis e encontrar uma superárvore exibindo todas elas. O algoritmo BUILD de Aho et al. [1] pode ser usado para testar, em tempo polinomial, se uma coleção de árvores enraizadas é compatível e, em caso afirmativo, construir uma superárvore compatível, não necessariamente totalmente resolvida. Este algoritmo foi generalizado em [9,20] para produzir todas as superárvores compatíveis e adaptado em [27] para produzir todas as superárvores minimamente resolvidas.

Embora os métodos de superárvore sejam classicamente aplicados à construção de árvores de espécies, eles também podem ser usados ​​para o propósito de construir árvores de genes. Vários bancos de dados de árvore de genes estão disponíveis (ver, por exemplo, Ensembl Compara [30], Hogenom [22], Phog [11], MetaPHOrs [23], PhylomeDB [14], Panther [19]). Para uma família de genes de interesse, muitas árvores gênicas diferentes podem estar disponíveis, e encontrar uma única superárvore exibindo todas elas leva a uma questão da superárvore. Por outro lado, dado um gene de interesse, uma ferramenta de busca baseada em homologia é geralmente usada para produzir todos os homólogos em um conjunto de genomas. A família de genes resultante pode ser muito grande, envolvendo sequências de genes distantes que podem ser difíceis de alinhar, levando a árvores com suporte fraco - ou ainda pior, árvores de genes com suporte elevado que são de fato incorretas. Uma maneira padrão de reduzir tais erros é usar um algoritmo de agrupamento baseado em similaridade de sequência, como OrthoMCL [18], InParanoid [3], Proteinortho [17] ou muitos outros (veja os links Quest for Orthologs em http: // questfororthologs .org /), para agrupar genes em conjuntos menores de ortólogos ou inparalogs (parálogos que surgiram após uma determinada especiação). Árvores obtidas para essas famílias gênicas parciais podem então ser combinadas usando um método de superárvore.

Considerar as árvores de entrada como partes de árvores genéticas em vez de partes de árvores de espécies não faz nenhuma diferença em relação ao procedimento de teste de compatibilidade. No entanto, para reconstruir uma "árvore supergênica" compatível, se uma árvore de espécie for conhecida pelos táxons de interesse, ela pode ser usada como uma informação adicional para escolher entre todas as superárvores possíveis que exibem as árvores gênicas parciais de entrada. Na verdade, um critério de otimização natural é minimizar o custo de reconciliação, ou seja, a duplicação ou a duplicação mais custo de perda, induzida pela árvore de saída. Chamamos o problema de encontrar uma superárvore compatível, minimizando um custo de reconciliação o problema da árvore supergenética.

Neste artigo, primeiro mostramos como os métodos exatos desenvolvidos para o problema da superárvore podem ser adaptados ao problema da superárvore. Quanto aos algoritmos originais, todas as extensões também possuem complexidade exponencial de pior tempo. Em seguida, exibimos uma heurística, que pode ser vista como uma abordagem gananciosa classicamente usada para os problemas da superárvore, que consiste em construir progressivamente a árvore da raiz às folhas. O módulo principal desta heurística é inferir o número mínimo de duplicações que precedem a primeira especiação, que chamamos de Duplicação mínima de pré-especiação problema. Mostramos que o problema do supergênero para o custo de duplicação, e mesmo sua versão restrita, o problema de Duplicação de pré-especiação mínima, são NP-difíceis de aproximar dentro de um n 1 - fator & # x003f5, para qualquer 0 & # x0003c & # x003f5 & # x0003c 1 (n sendo o número de genes). Além disso, esses resultados de inadequação são válidos até mesmo para casos em que há apenas um gene por espécie nas árvores de entrada. Finalmente, consideramos o problema da árvore do supergênero com restrições às árvores de entrada que são relevantes para muitas aplicações biológicas. A saber, exigimos que cada gene apareça em no máximo uma árvore e que os genes de qualquer árvore sejam relacionados apenas por meio da ortologia. Este é, por exemplo, o caso de árvores gênicas obtidas para clusters OrthoMCL chamados de ortogrupos [18]. Mostramos que mesmo para essa restrição, o problema da árvore supergenética permanece NP-difícil para o custo de duplicação.

A seção a seguir apresenta as notações preliminares que serão exigidas no restante do artigo.


Ferramentas filogenéticas para biologia comparativa

Esta é praticamente a última postagem sobre este tópico hoje, mas fiz alguns refinamentos adicionais de plot.backbonePhylo, meu novo método de plotagem para mostrar subárvores como triângulos.

As três mudanças principais são as seguintes: (1) seguindo a sugestão de Lucas, as subárvores contendo apenas 1 táxon são agora plotadas como uma linha (na verdade - um triângulo com largura zero, mas eu garantia você não será capaz de dizer a diferença), em vez de como um triângulo com largura unitária (2) seguindo a sugestão de Graham Slater, fiz uma pequena mudança para que houvesse um espaço entre triângulos adjacentes - a consequência é que clados com 2 táxons são de comprimento unitário, clados com 10 táxons têm largura de 9 unidades, etc., que na verdade se alinham com pontas contendo 1 táxon, que agora tem largura unitária e (3) eu adicionei o fator de escala opcional vscale, que escala o vertical dimensão para que grandes subárvores possam ser retratadas, embora ainda permitindo singletons e espaçamento entre triângulos.

Todas essas atualizações estão disponíveis aqui, mas também fazem parte de uma nova construção de fitools (fitools 0.3-51).

Temos que ter cuidado com isso, entretanto, porque se ajustarmos as larguras de nossos clados de forma que qualquer um seja menor que 1 unidade, então teremos alguns gráficos realmente estranhos.


Um método geral para comparação de árvore com base na similaridade de subárvore e seu uso em um banco de dados taxonômico

Uma série de métricas para comparar a estrutura ramificada das árvores têm sido usadas como ferramentas importantes na análise quantitativa das árvores evolutivas. Menos atenção tem sido dada ao desenvolvimento de uma metodologia geral de comparação para diferentes árvores N marcadas com folhas, como árvores de classificação e vários tipos de dendrogramas. Neste artigo, é proposto um método para medir a similaridade geral com base na similaridade da subárvore. Os coeficientes de associação podem ser usados ​​para medir a similaridade entre cada par de subárvores em duas árvores, e um algoritmo denominado `método da matriz webbing & # x27 é delineado para calcular a similaridade geral neste método. Além disso, é introduzido o uso deste método para pesquisa e comparação de árvores em um banco de dados taxonômico.


Algoritmos e aplicativos exatos para cobertura de conjunto ponderada semelhante a uma árvore ☆

Apresentamos um caso especial NP-completo do problema da Cobertura de Conjunto Ponderado e mostramos sua tratabilidade de parâmetro fixo em relação ao tamanho máximo do subconjunto, um parâmetro que parece ser pequeno em aplicações relevantes. Mais precisamente, nesta variante praticamente relevante, exigimos que a coleção dada C de subconjuntos de um conjunto base S deve ser “semelhante a uma árvore”. Ou seja, os subconjuntos em C pode ser organizado em uma árvore T de modo que cada subconjunto um para um corresponda a um nó da árvore e, para cada elemento s do S, os nós correspondentes aos subconjuntos contendo s induzir uma subárvore de T. Isso é equivalente ao problema de encontrar uma cobertura de borda mínima em um hipergrafo acíclico de borda ponderada. Nosso principal resultado é um algoritmo em execução no tempo O (3 k ⋅ m n), onde k denota o tamanho máximo do subconjunto, n: = | S | e m: = | C | . O algoritmo também implica um resultado de tratabilidade de parâmetro fixo para o problema NP-completo Multicorte em Árvores, complementando os resultados de aproximação anteriores. Nossos resultados encontram aplicações em biologia computacional em filogenômica e para economia de memória em algoritmos de grafos baseados em decomposição de árvores.


1 resposta 1

Você pode calcular os números com programação dinâmica.

Seja $ c (n, l) $ o número de BSTs com $ n $ nós e $ l $ folhas, onde os nós são selecionados de um conjunto de $ n $ nós distintos. Então temos a seguinte relação de recorrência em casos gerais,

  • A soma externa é superior a $ i $, o número de nós no sub-BST esquerdo de um BST com $ n $ nós e $ l $ folhas.
  • O somatório interno é superior a $ j $, o número de folhas no sub-BST esquerdo de $ i $ nós.
  • O produto $ c (i, j) cdot c (ni-1, lj) $ é o número de BSTs cujo sub-BST esquerdo tem $ i $ nós e $ j $ folhas e cujo sub-BST direito tem $ ni- 1 $ nodes e $ lj $ folhas. Observe que a raiz de tal BST tem apenas uma escolha, a saber, o $ (i + 1) ^$ menor nó.

Vou deixar você descobrir os valores limites de $ c (n, l) $, como quando $ n = 0 $ ou $ n = 1 $ ou $ l = 0 $. Pode haver alguns casos diferentes. No entanto, isso deve ser o suficiente para apontar a direção certa.


Fundo

A genômica comparativa é uma abordagem central na análise de sequências, e muitos resultados biológicos importantes foram obtidos por meio de seu uso. Entre os diferentes programas e pacotes desenvolvidos para genômica comparativa, aqueles que usam as informações contidas em árvores filogenéticas são de especial interesse. Na verdade, o poder explicativo trazido pelas árvores ainda não tem páreo para problemas como detecção de ortologia, previsão de transferência horizontal de genes (HGT) ou estudos evolutivos em grande escala. Para a detecção de ortólogos, a abordagem mais rigorosa para determinar se os genes homólogos são ortólogos ou parálogos consiste em comparar uma árvore de genes com a árvore de espécies considerada como referência [1-4]. Da mesma forma, a mesma abordagem pode ser usada para detecção de HGT [5]. Por último, vários tipos de estudos evolutivos foram possíveis apenas através do uso de uma grande coleção de árvores, por exemplo., detecção de seleção positiva na evolução de vertebrados [6], análise dos níveis de metilação do DNA em mamíferos [7] ou evolução do conteúdo de GC [8].

O problema é que a navegação manual de coleções contendo milhares de árvores gênicas é uma tarefa tediosa & # x02013 e agora, quase impossível de executar & # x02013, e ferramentas automatizadas são necessárias para estudos em grande escala. Portanto, desenvolvemos o TPMS, um conjunto de programas dedicados à manipulação e consulta de árvores. Sua funcionalidade central é um algoritmo de correspondência de padrões com o objetivo de encontrar árvores genéticas contendo motivos específicos. Esses padrões são escritos usando um formato Newick estendido e geralmente incluem algum tipo de restrição, como natureza do nó (duplicação, especiação), conteúdo da subárvore ou nível de suporte estatístico para os nós (por exemplo., bootstrap, jackknife ou aLRT). A segunda funcionalidade principal trazida pelo TPMS é uma ferramenta de enraizamento de árvores baseada no uso de uma pontuação de unicidade de gene e critérios taxonômicos. Seu objetivo é colocar a raiz de uma árvore gênica de forma a minimizar as incongruências observadas entre esta árvore e uma árvore de espécies de referência.

O algoritmo de busca de padrão de árvore usado pelo TPMS é uma versão melhorada do que publicamos anteriormente [1]. A principal melhoria é a possibilidade de consultar coleções de árvores construídas pelos usuários. Nossa versão anterior foi implementada em FamFetch, uma interface gráfica de usuário (GUI) que só era capaz de consultar um conjunto de bancos de dados predefinidos instalados em um servidor centralizado [9].


2 respostas 2

Acredito que você terá que fazer algum trabalho de consulta XML para obter esse custo estimado.

Veja se é isso que você está procurando:

Isso retornará o custo de declarações individuais dentro de um lote. Você pode precisar trabalhar em algum agrupamento se precisar do custo total estimado da subárvore para todo o lote.

Aqui está como usei a resposta à minha pergunta.

Sou um grande fã de sp_whoisactive. Se você não tem isso, pare de ler o download aqui.

Então, eu configurei para coletar um instantâneo a cada 10 minutos, como este:

Deixei funcionar por um tempo (até 3 dias). Então eu converto os dados coletados assim:

E, finalmente, recebo uma lista que me mostra onde está o custo estimado pequena em comparação com o tempo de execução, sem que o trabalho seja bloqueado

Isto é uma lista muito interessante, mas vem com um pouco de ruído. Para começar, optei por ignorar pequenos trabalhos rápidos que são executados em menos de 10 minutos, mas esse limite depende da sua situação.

Agora é muito mais fácil encontrar empregos que funcionam com um plano ruim.
Muito obrigado por sua ajuda.


Detalhes de implementação

Nosso algoritmo é implementado (em Java) como uma ferramenta chamada FRUUT (Fast RNA Unordered Unrooted Tree mapper). A representação da árvore de RNA é descrita na Seção & # x02018RNA da árvore de representação & # x02019 e o esquema de pontuação empregado pela FRUUT é descrito na Seção & # x02018 Função de custo de alinhamento & # x02019. O FRUUT permite que o usuário selecione qualquer combinação de modo de alinhamento (enraizado / não enraizado, ordenado / não ordenado, local / global) e calcule alinhamentos pares ideais de árvores de RNA com um modelo de pontuação de significância anexado descrito na Seção & # x02018p-cálculo de valor & # x02019. Nós também fornecemos um servidor web PHP interativo para rodar o FRUUT em nosso site (os gráficos de RNA são gerados pelo Pacote de Viena [2]).

Representação de árvore de RNA

Existem vários modelos anteriores para representar uma estrutura secundária de RNA sem pseudo nó (exemplo na Figura & # x000a0 9 a) como uma árvore ordenada com raiz [3,9,10,13,45-48]. Por exemplo, [45] representou a estrutura do RNA como uma árvore, onde os nós correspondem a elementos de loop da estrutura secundária (loops em gancho, protuberâncias, loops internos ou multi-loops) e as bordas correspondem a regiões emparelhadas de base (haste). Outra representação diferente é dada no trabalho de Zhang & # x02019s [9]: os nós da árvore representam bases desemparelhadas (folhas) ou bases emparelhadas (nós internos). Cada nó é rotulado com uma base ou um par de bases, respectivamente. Existem dois tipos de arestas, alternativamente conectando pares de bases consecutivas de haste ou uma base de folha com o último par de bases na haste correspondente. As árvores acima mencionadas são enraizadas e ordenadas, sua ordem corresponde à orientação 5 & # x02019-3 & # x02019 de uma sequência de RNA e sua raiz é tradicionalmente um nó designado parente do motivo no qual a primeira base 5 & # x02019 participa.

Demonstração da representação do RNA selecionado.& # x02009 (uma) Estrutura secundária do RNA apresentada por [2]. (b) A representação em árvore de (a) em nosso modelo. Cada empilhamento de pares de base é correspondido por cor a ele & # x02019s que representa o ramo na árvore.

A representação em árvore que empregamos usa uma modelagem semelhante à de H & # x000f6chsman et al. [48], com algumas variações que descrevemos a seguir. Dada uma estrutura secundária de RNA, cada loop, par de bases e intervalo de bases desemparelhadas gera um nó na representação em árvore da estrutura. Os rótulos são atribuídos aos nós da árvore para indicar seu tipo e conteúdo. Os tipos de nó são: BP & # x02009 (par de base), UPI (intervalo de base não pareada), HP & # x02009 (grampo de cabelo), IL (loop interno ou protuberância), ML & # x02009 (multi-loop) e EXT & # x02009 (loop externo). Para um nó UPI & # x02009, o rótulo também inclui a sequência de base 5 & # x02019 a 3 & # x02019 do intervalo correspondente e para um nó BP & # x02009 o rótulo inclui as bases correspondentes (consulte a Figura & # x000a0 9).

Cada nó de loop (HP, IL, ML e EXT) é conectado, na ordem de sequência 5 & # x02019 a 3 & # x02019, a todos os nós UPI & # x02009 que correspondem a intervalos de bases desemparelhadas associadas ao loop e a todos os BP & # x02009nodos que correspondem a pares de bases de terminação de haste adjacentes ao loop. Os nós BP & # x02009 são nós de grau 2, onde os dois vizinhos de tais nós são os nós BP & # x02009 que correspondem aos pares de bases adjacentes empilhados. O conjunto de folhas na árvore corresponde ao conjunto de nós UPI & # x02009 ou nós BP & # x02009 que terminam com hastes livres de loop.

Função de custo de alinhamento

Os custos de suavização de nó foram definidos como 3 para BP, 11 para ML / EXT & # x02009 e 5 para IL. Para os custos de poda de subárvore, projetamos uma função de custo que conta as ocorrências de diferentes tipos de elementos que aparecem na subárvore e deduz uma penalidade correspondente. A função tem a seguinte forma: prvocêne(T) & # x02009 = & # x02009Cvocêp& # x02009 & # x000b7 & # x02009Nvocêp& # x02009 + & # x02009Cbp& # x02009 & # x000b7 & # x02009Nbp& # x02009 + & # x02009Chp& # x02009 & # x000b7 & # x02009Nhp& # x02009 + & # x02009 & # x02026, onde os valores de Cx& # x02009 são fatores de penalidade constantes, Nvocêp& # x02009 é o número de bases desemparelhadas em T, Nbp& # x02009 é o número de pares de bases, Nhp& # x02009é o número de grampos de cabelo e assim por diante (específico Cx os valores são fornecidos na Tabela & # x000a0 1). A Tabela & # x000a0 2 & # x02009 resume os custos de combinar pares de nós pelo alinhamento. Custos de alinhamento de sequência e custos de alinhamento de par de base foram definidos usando a matriz de pontuação RIBOSUM85-60 [49]. Para oferecer suporte ao modo de alinhamento local, adicionamos uma opção para definir o custo de poda da subárvore como zero: prvocêne(T) & # x02009 = & # x020090.



Comentários:

  1. Croften

    Eu acho que esta é uma frase maravilhosa

  2. Hunt

    Sim, de fato. Eu concordo com todos os itens acima. Vamos discutir esta questão. Aqui ou em PM.

  3. Jeshurun

    Sinto muito, mas acho que você está errado. Vamos discutir. Envie -me um email para PM, vamos conversar.

  4. Mardel

    O post foi ordenado pelo nosso governo :)

  5. Oxnaford

    Obrigado pela ajuda nesta questão, como posso agradecer?

  6. Rolfe

    Na minha opinião, você admite o erro. Eu me ofereço para discutir isso. Escreva para mim em PM, conversaremos.

  7. Yozshurr

    idéia muito excelente e é oportuna

  8. Treasach

    Você está enganado, provável?



Escreve uma mensagem