¿Qué es Rove?
Rove es un proyecto de inferencia filogenética escrito en Rust. Empieza con un kernel de verosimilitud para datos morfológicos, diseñado primero para CPUs ARM. El objetivo es la inferencia independiente: ejecutar un análisis desde una matriz de caracteres hasta una muestra de árboles sin depender de BEAST.
El nombre viene de explorar, recorrer y descubrir caminos.
Estado del proyecto
Etapa inicial. El núcleo de verosimilitud, el lector de NEXUS, la compresión de patrones y las pruebas numéricas están implementados. Hay un experimento de referencia con BEAST 2.7.8 documentado. La inferencia independiente, las rutas de código SIMD y las comparaciones de rendimiento entre motores siguen siendo trabajo futuro. El trabajo se sigue en los issues.
Por qué otro kernel
Los espacios de estados pequeños y los alineamientos morfológicos cortos merecen medirse como una carga de trabajo propia.
- Mk tiene una forma cerrada,
P(t) = e·I + (1 − e)·π, que permite una actualización O(k) por hijo y por patrón en lugar de una multiplicación de matrices O(k²) completa. El crate actual construye estas matrices; la ruta de poda directa está planificada. - La vectorización específica para ARM y la reutilización de cálculos repetidos son optimizaciones candidatas. Su valor requiere benchmarks comparables, que incluyan los costos de preparación y de actualización parcial.
- La referencia documentada con BEAST 2.7.8 usó su núcleo de verosimilitud en Java. Esa observación no establece el backend que usa cada versión, instalación o modelo de BEAST.
Rove parte de los datos: una disposición que vectoriza a lo largo de los patrones de sitio, y rutas rápidas para los modelos que usan los morfólogos. La página de diseño recorre las decisiones.
Lo que existe hoy
El repositorio es un único crate de Rust sin dependencias en tiempo de ejecución.
LikelihoodCore: poda de Felsenstein sobre una disposición por patrones, con categorías de tasa, reescalado opcional por nodo y guardado/restauración del estado de los nodos para un muestreador.model::Mk: el modelo Mk con su matriz de transición en forma cerrada, para frecuencias de estados uniformes o personalizadas.reference::Problem: una implementación recursiva simple que se conserva como referencia en las pruebas.nexus::parseydata::Matrix::compress: entrada morfológica, observaciones preservadas, particiones explícitas y patrones de sitio ponderados. Ver Lectura de NEXUS.- Pruebas de propiedades que comparan el núcleo con la referencia en árboles aleatorios de 2 a 10 terminales, 2 a 6 estados y 1 a 4 categorías de tasa.
- Una matriz sintética de control positivo de 20 taxones y 50 caracteres binarios, con el script que la genera y variantes degradadas.
La página del núcleo de verosimilitud muestra cómo llamarlo. La página de matrices sintéticas describe el control.
Lo que aún no existe
- Inferencia independiente: propuestas de árboles, MCMC, priors y modelos de reloj.
- La ruta rápida de la forma cerrada de Mk dentro del kernel, y la corrección de ascertainment de Mkv.
- Rutas de código NEON o AVX2. El kernel actual es Rust escalar; la disposición está preparada para la vectorización.
- Comparaciones de rendimiento entre motores con BEAST o BEAGLE.
- Una interfaz de usuario y los adaptadores opcionales para BEAST 2 o BEAGLE.
Nada de esta lista se documenta como disponible en ningún lugar de este sitio. El roadmap indica el orden.
BEAST, como referencia
BEAST no es una dependencia. Es la referencia para validación y benchmarking: primero se comparan verosimilitudes en estados fijos, después ejecuciones de inferencia completas. BEAST 2 y BEAST X son bases de código distintas, y los resultados de una no establecen los de la otra, así que las comparaciones nombran la implementación y la versión contra las que se ejecutaron.
