Información

¿Cómo obtener el subárbol más pequeño que contiene un conjunto de nodos de BioPhylo?

¿Cómo obtener el subárbol más pequeño que contiene un conjunto de nodos de 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.

Estoy probando varias bibliotecas filogenéticas en Python. Quiero leer en un árbol de Newick, luego, dada una lista de taxones, generar el árbol más pequeño que los contenga a todos. Esta tarea es bastante simple y eficiente en dendropy y ete2:

newick = '((mapache, oso), ((león marino, foca), ((mono, gato), comadreja)), perro);' taxa = ['mapache', 'sea_lion'] import ete2 tree = ete2.Tree (newick) podado = tree.prune (taxa) import dendropy tree = dendropy.Tree.get_from_string (newick, 'newick') podado = tree.prune_taxa_with_labels (taxones)

Estoy intentando, pero no puedo encontrar una funcionalidad equivalente en el paquete Bio.Phylo. Los árboles tienen un método de "poda", pero poda un solo nodo del árbol.


los ancestro común La función debería darte el resultado que deseas: te da el árbol (creo) que es el ancestro común más reciente de todos los objetivos dados.


Perdón por desenterrar esta vieja pregunta. Pero creo que dado que tienes un árbol sin raíces, el ancestro común tal vez no sea la respuesta correcta.

Lo que debe hacer es lo siguiente: suponga que tiene un árbol sin raíces con n puntas (especies) y, por lo tanto, 2n-3 ramas. Debes cortar el árbol por la mitad en todas estas posibles ramas. Al hacer esto, tendrá 4n-6 subárboles. El subárbol más pequeño que contiene todas las especies seleccionadas será su respuesta.

Esto es diferente del ancestro común porque para un árbol sin raíz, podría decirse de una manera que las especies que no recogió se agrupen primero, todas las especies seleccionadas se convertirán en el grupo externo. Pero si "vuelve a enraizar" el árbol correctamente, aún puede hacer que las especies seleccionadas se agrupen como un clado pequeño y exclusivo.


Cálculo rápido de la distancia del cuarteto entre árboles de grados arbitrarios

Se han desarrollado varios algoritmos para calcular la distancia cuarteto entre dos árboles evolutivos en el mismo conjunto de especies. La distancia del cuarteto es el número de cuartetos (subárboles inducidos por cuatro hojas) que difiere entre los árboles. En su mayoría, estos algoritmos están restringidos para trabajar en árboles binarios, pero recientemente hemos desarrollado algoritmos que funcionan en árboles de grado arbitrario.

Resultados

Presentamos un algoritmo rápido para calcular la distancia del cuarteto entre árboles de grado arbitrario. Árboles de entrada dados T y T ', el algoritmo corre a tiempo O(norte + |V|·|V '| min <identificación, identificación'>) y espacio O(norte + |V|·|V '|), donde norte es el número de hojas en los dos árboles, V y V son los nodos no hoja en T y T ', respectivamente, y identificación y identificación' son el número máximo de nodos no hoja adyacentes a un nodo no hoja en T y T ', respectivamente. Los algoritmos más rápidos publicados anteriormente para árboles de grados arbitrarios se ejecutan en O(norte 3) (independiente del grado del árbol) y O(|V|·|V 'identificación·identificación'), respectivamente. Comparamos experimentalmente el algoritmo con algoritmos existentes para calcular la distancia del cuarteto para árboles generales.

Conclusión

Presentamos un nuevo algoritmo para calcular la distancia cuarteto entre dos árboles de grado arbitrario. El nuevo algoritmo mejora el tiempo de ejecución asintótico para calcular la distancia del cuarteto, en comparación con los métodos anteriores, y los resultados experimentales indican que el nuevo método también funciona significativamente mejor en la práctica.


Introducción

Una tarea fundamental en biología evolutiva es combinar una colección de árboles enraizados en conjuntos de datos parciales, posiblemente superpuestos, en un solo árbol enraizado en el conjunto completo de datos. Este es el objetivo de los métodos de supertárbol, principalmente diseñados y utilizados con el propósito de reconstruir un supertárbol de especies a partir de un conjunto de árboles de especies (ver descripciones generales de los primeros métodos en [4-6] y métodos más recientes en [2,10,21 , 24,25,28,29]).

Idealmente, el supertárbol combinado debería "mostrar" cada uno de los árboles de entrada, en el sentido de que al restringir el supertárbol al conjunto de hojas de un árbol de entrada, obtenemos el mismo árbol de entrada. Sin embargo, esto no siempre es posible, ya que los árboles de entrada pueden contener información filogenética conflictiva. Tenga en cuenta que considerar un conjunto de árboles de entrada que no son todos compatibles conduce a la cuestión de corregir los árboles de genes de entrada o encontrar un subconjunto de árboles o subárboles de entrada compatibles [26]. Aquí, dejamos abiertas estas preguntas y estudiamos la formulación más directa del problema de supertárbol que es considerar un conjunto de árboles de entrada compatibles y encontrar un supertárbol que los muestre todos. El algoritmo BUILD de Aho et al. [1] se puede utilizar para probar, en tiempo polinomial, si una colección de árboles enraizados es compatible y, de ser así, construir un supertárbol compatible, no necesariamente resuelto por completo. Este algoritmo se ha generalizado en [9,20] para generar todos los supertárboles compatibles, y se ha adaptado en [27] para generar todos los supertárboles compatibles mínimamente resueltos.

Aunque los métodos de superárboles se aplican clásicamente a la construcción de árboles de especies, también se pueden utilizar con el propósito de construir árboles genéticos. Varias bases de datos de árboles de genes están disponibles (ver, por ejemplo, Ensembl Compara [30], Hogenom [22], Phog [11], MetaPHOrs [23], PhylomeDB [14], Panther [19]). Por lo tanto, para una familia de genes de interés, pueden estar disponibles muchos árboles genéticos diferentes, y encontrar un único superárbol que los muestre todos lleva a una pregunta de superárbol. Por otro lado, dado un gen de interés, generalmente se usa una herramienta de búsqueda basada en homología para generar todos los homólogos en un conjunto de genomas. La familia de genes resultante puede ser muy grande e incluir secuencias de genes distantes que pueden ser difíciles de alinear, lo que da lugar a árboles con un soporte débil o, lo que es peor, árboles genéticos con un soporte elevado que de hecho son incorrectos. Una forma estándar de reducir tales errores es usar un algoritmo de agrupamiento basado en la similitud de secuencia, como OrthoMCL [18], InParanoid [3], Proteinortho [17] o muchos otros (vea los enlaces de Quest for Orthologs en http: // questfororthologs .org /), para agrupar genes en conjuntos más pequeños de ortólogos o inparalogs (parálogos que surgieron después de una determinada especiación). Los árboles obtenidos para estas familias de genes parciales se pueden combinar utilizando un método de superárboles.

Considerar los árboles de entrada como partes de árboles genéticos en lugar de partes de árboles de especies no hace ninguna diferencia con respecto al procedimiento de prueba de compatibilidad. Sin embargo, para reconstruir un "superárbol genético" compatible, si un árbol de especies es conocido por los taxones de interés, entonces se puede utilizar como información adicional para elegir entre todos los supertárboles posibles que muestren los árboles genéticos parciales de entrada. De hecho, un criterio de optimización natural es minimizar el costo de conciliación, es decir, la duplicación o el costo de duplicación más pérdida, inducido por el árbol de salida. Llamamos al problema de encontrar un superárbol compatible minimizando un costo de conciliación el problema del supergenetree.

En este artículo, primero mostramos cómo los métodos exactos desarrollados para el problema del superárbol se pueden adaptar al problema del superárbol. En cuanto a los algoritmos originales, todas las extensiones también tienen una complejidad exponencial en el peor momento. Luego exhibimos una heurística, que puede verse como un enfoque codicioso usado clásicamente para los problemas de superárboles, que consiste en construir progresivamente el árbol desde su raíz hasta sus hojas. El módulo principal de esta heurística es inferir el número mínimo de duplicaciones que preceden a la primera especiación, que llamamos el Duplicación mínima previa a la especiación problema. Demostramos que el problema del árbol de supergénesis por el costo de duplicación, e incluso su versión restringida, el problema de duplicación mínima previa a la especiación, son NP-difíciles de aproximar dentro de un norte 1 - & # x003f5 factor, para cualquier 0 & # x0003c & # x003f5 & # x0003c 1 (norte siendo el número de genes). Además, estos resultados de inapropiabilidad son válidos incluso para casos en los que solo hay un gen por especie en los árboles de entrada. Finalmente, consideramos el problema de los árboles supergenéticos con restricciones en los árboles de entrada que son relevantes para muchas aplicaciones biológicas. Es decir, requerimos que cada gen aparezca como máximo en un árbol, y que los genes de cualquier árbol estén relacionados solo a través de la ortología. Este es, por ejemplo, el caso de los árboles genéticos obtenidos para los clusters de OrthoMCL denominados ortogrupos [18]. Demostramos que incluso para esta restricción, el problema del árbol de supergéneres sigue siendo NP-difícil por el costo de duplicación.

La siguiente sección presenta notaciones preliminares que serán necesarias en el resto del artículo.


Herramientas filogenéticas para biología comparada

Es casi seguro que esta sea la última publicación sobre este tema hoy, pero hice algunos refinamientos adicionales de plot.backbonePhylo, mi nuevo método de trazado para mostrar los subárboles como triángulos.

Los tres cambios principales son los siguientes: (1) siguiendo la sugerencia de Luke, los subárboles que contienen solo 1 taxón ahora se trazan como una línea (en realidad, un triángulo con ancho cero, pero yo garantía no podrá notar la diferencia), en lugar de como un triángulo con ancho de unidad (2) siguiendo la sugerencia de Graham Slater, hice un pequeño cambio para que haya un espacio entre triángulos adyacentes; la consecuencia es que los clados con 2 los taxones son de longitud unitaria, los clados con 10 taxones tienen 9 unidades de ancho, etc., que en realidad se alinean con puntas que contienen 1 taxón, que ahora tienen un ancho de unidad y (3) agregué el factor de escala opcional vscale, que escala la vertical dimensión para que los subárboles grandes se puedan representar sin dejar de permitir singletons y espaciado entre triángulos.

Todas estas actualizaciones están disponibles aquí, pero también son parte de una nueva compilación de phytools (phytools 0.3-51).

Sin embargo, tenemos que tener cuidado con esto, porque si ajustamos los anchos de nuestros clados de manera que sean menos de 1 unidad, obtendremos algunos gráficos realmente extraños.


Un método general para la comparación de árboles basado en la similitud de subárboles y su uso en una base de datos taxonómica.

Se han utilizado varias métricas para comparar la estructura de ramificación de los árboles como herramientas importantes en el análisis cuantitativo de árboles evolutivos. Se ha prestado menos atención al desarrollo de una metodología de comparación general para diferentes árboles N etiquetados con hojas, como árboles de clasificación y varios tipos de dendrogramas. En este artículo se propone un método para medir la similitud general basada en la similitud del subárbol. Los coeficientes de asociación se pueden usar para medir la similitud entre cada par de subárboles en dos árboles, y se describe un algoritmo llamado `método de matriz de correas & # x27 para calcular la similitud general en este método. Además, se introduce el uso de este método para la búsqueda y comparación de árboles en una base de datos taxonómica.


Algoritmos y aplicaciones exactos para la cubierta de juego ponderada en forma de árbol ☆

Presentamos un caso especial NP-completo del problema de Cobertura de conjunto ponderado y mostramos su manejabilidad de parámetro fijo con respecto al tamaño máximo de subconjunto, un parámetro que parece ser pequeño en aplicaciones relevantes. Más precisamente, en esta variante prácticamente relevante requerimos que la colección dada C de subconjuntos de un conjunto base S debe ser "similar a un árbol". Es decir, los subconjuntos en C se puede organizar en un árbol T tal que cada subconjunto uno a uno corresponde a un nodo de árbol y, para cada elemento s de S, los nodos correspondientes a los subconjuntos que contienen s inducir un subárbol de T. Esto es equivalente al problema de encontrar una cobertura de borde mínima en un hipergráfico acíclico ponderado por los bordes. Nuestro resultado principal es un algoritmo que se ejecuta en un tiempo O (3 k ⋅ m n) donde k denota el tamaño máximo del subconjunto, n: = | S | , ym: = | C | . El algoritmo también implica un resultado de tractabilidad de parámetro fijo para el problema NP-completo Multicorte en árboles, que complementa los resultados de aproximación anteriores. Nuestros resultados encuentran aplicaciones en biología computacional en filogenómica y para ahorrar memoria en algoritmos de gráficos basados ​​en descomposición de árboles.


1 respuesta 1

Puede calcular los números con programación dinámica.

Sea $ c (n, l) $ el número de BST con $ n $ nodos y $ l $ hojas, donde los nodos se seleccionan de un conjunto de $ n $ nodos distintos. Entonces tenemos la siguiente relación de recurrencia en casos generales,

  • La suma externa es superior a $ i $, el número de nodos en el sub-BST izquierdo de un BST con $ n $ nodos y $ l $ hojas.
  • La suma interna es superior a $ j $, el número de hojas en el sub-BST izquierdo de los nodos $ i $.
  • El producto $ c (i, j) cdot c (ni-1, lj) $ es el número de BST cuya sub-BST izquierda tiene $ i $ nodos y $ j $ hojas y cuya sub-BST derecha tiene $ ni- 1 $ nodos y $ lj $ se van. Tenga en cuenta que la raíz de dicha BST solo tiene una opción, a saber, el $ (i + 1) ^$ nodo más pequeño.

Te dejaré averiguar los valores límite de $ c (n, l) $ como cuando $ n = 0 $ o $ n = 1 $ o $ l = 0 $. Puede haber algunos casos diferentes. Sin embargo, esto debería ser suficiente para indicarle la dirección correcta.


Fondo

La genómica comparada es un enfoque central en el análisis de secuencias y se han obtenido muchos resultados biológicos importantes a través de su uso. Entre los diferentes programas y paquetes desarrollados para la genómica comparada, son de especial interés los que utilizan la información contenida en árboles filogenéticos. De hecho, el poder explicativo que aportan los árboles aún no tiene rival para problemas como la detección de ortología, la predicción de la transferencia horizontal de genes (HGT) o los estudios evolutivos a gran escala. Para la detección de ortólogos, el enfoque más riguroso para determinar si los genes homólogos son ortólogos o parálogos consiste en comparar un árbol genético con el árbol de especies considerado como referencia [1-4]. De manera similar, se puede utilizar el mismo enfoque para la detección de HGT [5]. Por último, varios tipos de estudios evolutivos han sido posibles solo mediante el uso de una gran colección de árboles, p.ej., detección de selección positiva en la evolución de vertebrados [6], análisis de los niveles de metilación del ADN en mamíferos [7] o evolución del contenido de GC [8].

El problema es que la exploración manual de colecciones que contienen miles de árboles genéticos es una tarea tediosa & # x02013 y ahora, casi imposible de realizar & # x02013, y se requieren herramientas automatizadas para estudios a gran escala. Por lo tanto, hemos desarrollado TPMS, un conjunto de programas dedicados a la manipulación y consulta de árboles. Su funcionalidad central es un algoritmo de coincidencia de patrones destinado a encontrar árboles genéticos que contengan motivos específicos. Esos patrones se escriben utilizando un formato Newick extendido y generalmente incluyen algún tipo de restricción, como la naturaleza del nodo (duplicación, especiación), el contenido del subárbol o el nivel de soporte estadístico para los nodos (p.ej., bootstrap, jackknife o aLRT). La segunda funcionalidad principal aportada por TPMS es una herramienta de enraizamiento de árboles basada en el uso de una puntuación de unicidad genética y criterios taxonómicos. Su objetivo es ubicar la raíz de un árbol genético para minimizar las incongruencias observadas entre este árbol y un árbol de especies de referencia.

El algoritmo de búsqueda de patrones de árbol utilizado por TPMS es una versión mejorada del que publicamos anteriormente [1]. La principal mejora es la posibilidad de consultar las colecciones de árboles creadas por los usuarios. Nuestra versión anterior se implementó en FamFetch, una interfaz gráfica de usuario (GUI) que solo podía consultar un conjunto de bases de datos predefinidas instaladas en un servidor centralizado [9].


2 respuestas 2

Creo que tendrá que hacer un trabajo de consulta XML para obtener ese costo estimado.

Vea si esto es lo que está buscando:

Esto devolverá el costo de los extractos individuales dentro de un lote. Es posible que deba trabajar en alguna agrupación si necesita el costo total estimado del subárbol para todo el lote.

Así es como utilicé la respuesta a mi pregunta.

Soy un gran fan de sp_whoisactive. Si no tiene eso, deje de leer descargar aquí.

Así que lo configuré para recopilar una instantánea cada 10 minutos, así:

Lo dejé correr por un tiempo (hasta 3 días). Luego convierto los datos recopilados de esta manera:

Y finalmente obtengo una lista que me muestra dónde está el costo estimado pequeña en comparación con el tiempo de ejecución, sin que el trabajo se bloquee en absoluto

Está una lista muy interesante, pero viene con un poco de ruido. Para empezar, he optado por ignorar los pequeños trabajos rápidos que se ejecutan en menos de 10 minutos, pero ese límite depende de su situación.

Ahora es mucho más fácil encontrar trabajos que se ejecuten con un plan incorrecto.
Muchas gracias por su ayuda.


Detalles de implementacion

Nuestro algoritmo se implementa (en Java) como una herramienta llamada FRUUT (Fast RNA Unordered Unrooted Tree Mapper). La representación del árbol de ARN se describe en la Sección & # x02018 Representación del árbol de ARN & # x02019 y el esquema de puntuación empleado por FRUUT se describe en la Sección & # x02018 Función de costo de alineación & # x02019. FRUUT permite al usuario seleccionar cualquier combinación de modo de alineación (enraizado / no enraizado, ordenado / desordenado, local / global) y calcular alineaciones óptimas por pares de árboles de ARN con un modelo de puntuación de significancia adjunto descrito en la Sección & # x02018p-Value computation & # x02019. También proporcionamos un servidor web PHP interactivo para ejecutar FRUUT en nuestro sitio web (los gráficos de ARN son generados por el Paquete de Viena [2]).

Representación del árbol de ARN

Hay varios modelos previos para representar una estructura secundaria de ARN libre de pseudonudos (ejemplo en la Figura & # x000a0 9 a) como un árbol ordenado y enraizado [3,9,10,13,45-48]. Por ejemplo, [45] representó la estructura del ARN como un árbol, donde los nodos corresponden a elementos de bucle de la estructura secundaria (bucles, protuberancias, bucles internos o bucles múltiples) y los bordes corresponden a regiones de pares de bases (tallo). Otra representación diferente se da en el trabajo de Zhang & # x02019s [9]: los nodos del árbol representan bases no apareadas (hojas) o bases pareadas (nodos internos). Cada nodo está etiquetado con una base o un par de bases, respectivamente. Hay dos tipos de bordes, que conectan alternativamente los pares de bases de tallo consecutivos o la base de una hoja con el último par de bases en el tallo correspondiente. Los árboles antes mencionados están enraizados y ordenados, su orden corresponde a la orientación 5 & # x02019-3 & # x02019 de una secuencia de ARN y su raíz es tradicionalmente un nodo designado que cría el motivo en el que participa la primera base 5 & # x02019.

Demostración de la representación de ARN seleccionada.& # x02009 (a) Estructura secundaria de ARN presentada por [2]. (B) La representación de árbol de (a) en nuestro modelo. Cada apilamiento de pares de bases se corresponde con el color que representa la rama en el árbol.

La representación de árbol que empleamos utiliza un modelo similar al de H & # x000f6chsman et al. [48], con algunas variaciones que describimos a continuación. Dada una estructura secundaria de ARN, cada bucle, par de bases e intervalo de bases no apareadas genera un nodo en la representación de árbol de la estructura. Las etiquetas se asignan a los nodos del árbol para indicar su tipo y contenido. Los tipos de nodos son: BP & # x02009 (par de bases), UPI (intervalo de base no apareado), HP & # x02009 (horquilla), IL (bucle interno o abultamiento), ML & # x02009 (bucle múltiple) y EXT & # x02009 (bucle externo). Para un nodo UPI & # x02009, la etiqueta también incluye la secuencia de bases 5 & # x02019 a 3 & # x02019 del intervalo correspondiente, y para un nodo BP & # x02009, la etiqueta incluye las bases correspondientes (ver Figura & # x000a0 9).

Cada nodo de bucle (HP, IL, ML y EXT) está conectado, en orden de secuencia 5 & # x02019 a 3 & # x02019, a todos los nodos UPI & # x02009 que corresponden a intervalos de bases no emparejadas asociadas al bucle, y a todos los BP & # x02009nodos que corresponden a pares de bases de terminación de vástago adyacentes al bucle. Los nodos BP & # x02009 son nodos de grado 2, donde los dos vecinos de dichos nodos son los nodos BP & # x02009 que corresponden a pares de bases apilados adyacentes. El conjunto de hojas en el árbol corresponde al conjunto de UPI & # x02009nodes o BP & # x02009nodes que terminan tallos sin bucles.

Función de coste de alineación

Los costos de suavizado de nodos se establecieron en 3 para BP, 11 para ML / EXT & # x02009 y 5 para IL. Para los costos de poda de subárboles, hemos diseñado una función de costo que cuenta las ocurrencias de diferentes tipos de elementos que aparecen en el subárbol y deduce la penalización correspondiente. La función tiene la forma: pagrtunortemi(T) & # x02009 = & # x02009Ctupag& # x02009 & # x000b7 & # x02009nortetupag& # x02009 + & # x02009CBpag& # x02009 & # x000b7 & # x02009norteBpag& # x02009 + & # x02009Chpag& # x02009 & # x000b7 & # x02009nortehpag& # x02009 + & # x02009 & # x02026, donde los valores de CX& # x02009son factores de penalización constantes, nortetupag& # x02009es el número de bases no emparejadas en T, norteBpag& # x02009es el número de pares de bases, nortehpag& # x02009es el número de horquillas, etc. (específico CX los valores se dan en la Tabla & # x000a0 1). La tabla & # x000a0 2 & # x02009 resume los costos de emparejar pares de nodos por alineación. Los costes de alineación de secuencias y los costes de alineación de pares de bases se establecieron utilizando la matriz de puntuación RIBOSUM85-60 [49]. Para admitir el modo de alineación local, agregamos una opción para establecer el costo de poda del subárbol en cero: pagrtunortemi(T) & # x02009 = & # x020090.