En dos estudios previos1,2, a partir de datos de crecimiento de ganado Braunvieh mexicano, se aplicó una estrategia de depuración de datos que llevó a una reducción sustancial en el número de ecuaciones necesarias para resolver evaluaciones genéticas, disminuyendo así los costos computacionales tanto en tiempo como en recursos. En las evaluaciones genéticas, los registros fenotípicos son la principal fuente de información. La forma en que esta información se distribuye genéticamente en la población está definida por la matriz de relaciones genéticas, que puede basarse en el pedigrí, en la genómica o en una combinación de ambas (híbrida). La partición de la varianza fenotípica en varios componentes aleatorios (por ejemplo, genéticos y residuales) se describe mediante los componentes de varianza. Por ejemplo, la heredabilidad cuantifica la partición genética de la varianza fenotípica y refleja cuánto de la superioridad del progenitor se transmite a la descendencia.
El método de depuración de datos funciona descartando animales que no aportan información
a la evaluación genética (es decir, sin registro fenotípico) y que no transmiten información
(es decir, no progenitores). Como resultado, solo los animales fenotipados y sus progenitores
permanecen en el análisis. Este es el caso de las evaluaciones genéticas basadas en
el pedigrí (BLUP3). En cambio, las evaluaciones genéticas basadas en genómica (GBLUP4) no permiten este tipo de filtrado de datos, ya que todos los animales genotipados
transmiten información a través de la matriz de relaciones genómicas. En evaluaciones
genéticas híbridas, donde animales genotipados y no genotipados se evalúan simultáneamente
mediante una matriz de relaciones de pedigrí-genómicas aumentada (ssGBLUP5,6), los animales fenotipados, genotipados y sus progenitores se mantienen en el análisis,
y otros animales pueden suprimirse. Por ejemplo, en evaluaciones BLUP de rasgos de
crecimiento para el ganado Braunvieh mexicano1, el método de depuración redujo el número de animales en la evaluación de 193,442
a 64,501, de los cuales 37,738 tenían datos fenotípicos. Esto reduce el número de
ecuaciones por resolver y las demandas computacionales. Esto no significa que los
animales excluidos del análisis no vayan a ser evaluados. De hecho, se requieren evaluaciones
genéticas para esos animales. Esos animales reciben su evaluación genética únicamente
de sus progenitores (no por descendencia ni por su propio desempeño). El promedio
parental de esos animales puede calcularse a partir del modelo de evaluación genética,
y la confiabilidad de su evaluación genética (promedio parental) se calcula como
Nilforooshan y Garrick8 desarrollaron un método para reducir el número de ecuaciones para animales fenotipados
y obtener iterativamente las soluciones para animales no fenotipados. La dimensión
de las ecuaciones para ese modelo es considerablemente menor que la del modelo utilizado
en el enfoque de depuración de datos presentado. El modelo que utiliza los datos depurados
contiene ecuaciones para animales fenotipados y sus progenitores, incluidos los antepasados.
No obstante, ese método8 requiere introducir una matriz personalizada
Este estudio presenta los algoritmos y el código R para la depuración de datos, así como el cálculo de los valores de cría y de las confiabilidades para animales descartados. Dado que R es un software popular y libre, el código se presenta en el lenguaje de programación R9. Para mayor claridad educativa, solo se usaron funciones base de R, evitando el uso de paquetes adicionales de R. Se proporcionaron puntos de referencia (tiempo de ejecución de la CPU, uso máximo de memoria y número de ecuaciones) utilizando datos de un estudio anterior1.
Depuración de pedigrí: Dado que los registros fenotípicos son la principal fuente de información, se conservan todos los animales fenotipados y el pedigrí incluye animales fenotipados y sus progenitores. Hay dos formas de lograrlo. El primer enfoque, tal como lo describen Nilforooshan et al1, consiste en rastrear el pedigrí de los animales fenotipados hasta que no queden más progenitores por añadir. Esto puede hacerse usando la función pedup del paquete ggroups de R10. La función pedup requiere tres argumentos: (1) pedup, un marco de datos con tres columnas para los identificadores (IDs) de animal, padre y madre; (2) progeny, aquí, el vector de IDs de animales fenotipados; (3) maxgen, un entero positivo que indica el número de generaciones a rastrear. Si se omite maxgen, se reduce el límite superior del número de generaciones y el pedigrí se rastrea hasta la población base (antepasados con ambos progenitores desconocidos). El segundo enfoque consiste en descartar iterativamente a los no progenitores no fenotipados. Esto se hace iterativamente para descartar a los progenitores no fenotipados de animales no fenotipados. El procedimiento se ilustra en el siguiente pseudocódigo:
Input:
ped: data frame containing columns ID, SIRE, and DAM (pedigree information). Missing parents are coded as 0.
phe: vector containing IDs of phenotyped animals, all available in ped.
Algorithm:
Create a copy of ped (ped_prn).
Initialize nrowped to be the number of rows in ped_prn plus 1.
While the number of rows in ped_prn reduces (< nrowped):
Update nrowped to the current number of rows in ped_prn.
Retain in ped_prn only those rows where ID is present in phe or in the list of parents.
Output:
The pruned ped_prn, containing phenotyped animals and their parents.
y en el siguiente bloque de código R:
ped_prn <- ped
nrowped <- nrow(ped_prn) + 1 # Initialize to ensure the loop starts
while(nrow(ped_prn) < nrowped)
{
nrowped <- nrow(ped_prn)
ped_prn <- ped_prn[ped_prn$ID %in% phe | ped_prn$ID %in% c(
unique(ped_prn[ped_prn$SIRE > 0,]$SIRE),
unique(ped_prn[ped_prn$DAM > 0,]$DAM)),]
}
En el caso de ssGBLUP, la lista de animales genotipados no fenotipados se añade a la lista de animales fenotipados (es decir, phe <- c(phe, geno_no_phe)) para evitar que los animales genotipados se descarten.
Evaluación genética: Se realiza utilizando el pedigrí depurado. Se estiman los valores de cría y las confiabilidades para los animales fenotipados y sus progenitores.
Resolución hacia atrás: En este paso se obtienen los valores de cría y las confiabilidades de los animales omitidos, a partir de los valores de cría y las confiabilidades estimadas de sus progenitores en el paso anterior. La resolución hacia atrás se realiza de forma iterativa generación tras generación. En la primera iteración, las soluciones para animales cuyos progenitores son evaluados en el modelo de evaluación genética se resuelven hacia atrás. El proceso se explica en el siguiente pseudocódigo:
Input:
ped: data frame containing columns ID, SIRE, and DAM (pedigree information). Missing parents are coded as 0.
ped_prn: a subset of ped used in the genetic evaluation model.
ge_results: data frame containing columns ID, EBV, and REL for animals evaluated in the genetic evaluation model.
Algorithm:
Merge ped_prn and ge_results by ID.
Extract rows of ped, where ped$ID is not in ge_results$ID (ped_no_ge).
While the number of ped_no_ge rows > 0:
Find rows of ped_no_ge with known parents in ped_prn$ID.
For those rows, calculate EBV and REL from the parent(s).
Append those rows to ped_prn and discard them from ped_no_ge.
Sort ped_prn by ID.
Output:
The full ped data frame with additional (EBV and REL) columns.
y en el siguiente bloque de código R:
ped_prn <- merge(ped_prn, ge_results, by="ID")
ped_no_ge <- ped[!ped$ID %in% ge_results$ID,]
while(nrow(ped_no_ge) > 0)
{
tmp <- ped_no_ge[ped_no_ge$SIRE %in% c(0, ped_prn$ID) &
ped_no_ge$DAM %in% c(0, ped_prn$ID),]
tmp <- merge(tmp, ped_prn[,c("ID", "EBV", "REL")],
by.x="SIRE", by.y="ID", all.x=TRUE)
colnames(tmp)[colnames(tmp)=="EBV"] <- "SIRE_EBV"
colnames(tmp)[colnames(tmp)=="REL"] <- "SIRE_REL"
tmp <- merge(tmp, ped_prn[,c("ID", "EBV", "REL")],
by.x="DAM", by.y="ID", all.x=TRUE)
colnames(tmp)[colnames(tmp)=="EBV"] <- "DAM_EBV"
colnames(tmp)[colnames(tmp)=="REL"] <- "DAM_REL"
tmp[is.na(tmp)] <- 0
tmp$EBV <- (tmp$SIRE_EBV + tmp$DAM_EBV)/2
tmp$REL <- (tmp$SIRE_REL + tmp$DAM_REL)/4
tmp <- tmp[,colnames(ped_prn)]
ped_prn <- rbind(ped_prn, tmp)
ped_no_ge <- ped_no_ge[!ped_no_ge$ID %in% tmp$ID,]
}
ped_prn <- ped_prn[order(ped_prn$ID),]
Ejemplo: La Figura 1 ilustra un ejemplo del pedigrí de diez animales, tres de ellos fenotipados. Este ejemplo demuestra el proceso de depuración a lo largo de las iteraciones, qué animales permanecen en el modelo de evaluación genética y la evaluación de los animales excluidos se resuelve hacia atrás en cada iteración. Los animales 9 y 10 se descartan en la primera iteración de depuración. Los animales 7 y 5 se omiten en la segunda y la tercera iteración, respectivamente. Los animales 1, 2, 3, 4, 6 y 8 se evalúan en el modelo de evaluación genética. Los valores de cría y las confiabilidades de los animales 5 y 9 (de los animales 4 y 6) se resuelven hacia atrás en la primera iteración. El valor de cría y la confiabilidad de los animales excluidos con ambos progenitores ausentes (animal 5) se establecen en 0 en la primera iteración. Los valores de cría de los animales 7 (de los animales 4 y 5) y 10 (de los animales 7) se resuelven hacia atrás en la segunda y tercera iteración, respectivamente.

Este ejemplo se demuestra en acción (Nilforooshan11), donde se imprime la salida de cada iteración de depuración y de resolución hacia atrás para ilustración. También se demuestra la equivalencia entre los resultados del análisis completo y los del análisis reducido, seguida de la resolución hacia atrás.
Extensión a modelos con grupos genéticos: El método presentado puede extenderse a modelos con grupos genéticos. La única diferencia es que los grupos genéticos deben tratarse como progenitores conocidos en la fase de resolución hacia atrás. Los grupos genéticos asignados a progenitores desconocidos de animales descartados deben estar disponibles entre los grupos genéticos asignados a progenitores desconocidos de animales que permanecen en el modelo de evaluación genética. La razón es que los animales omitidos no pueden proporcionar información que respalde soluciones para grupos genéticos.
Evaluación comparativa: Se utilizaron datos de un estudio anterior1 para comparar el tiempo de ejecución de la CPU, el uso máximo de memoria y el número de ecuaciones. Los resultados se presentan en el Cuadro 1. El análisis tri-variado en Nilforooshan et al1 se comparó con el pedigrí completo de 193,442 animales vs al pedigrí reducido de 64,501 animales. Hubo 36,972, 24,255 y 16,121 animales fenotipados para el peso al nacimiento (PN), el peso al destete (PD) y el peso al año (PA), respectivamente. Los 37,738 animales fenotipados para al menos un rasgo se utilizaron para la reducción del pedigrí. Consulte Nilforooshan et al1 para conocer el número de animales fenotipados para diferentes combinaciones de rasgos, las estadísticas básicas de los rasgos y los modelos estadísticos. Los análisis se realizaron utilizando los programas más relevantes de la familia de programas BLUPF9012 (Cuadro 1) en un procesador Intel(R) Xeon(R) Platinum 8280L con una frecuencia de procesador de 2.70 GHz. El procesador estaba equipado con 64 núcleos. No obstante, para que los tiempos de ejecución de la CPU fueran independientes del número de CPU, los análisis se ejecutaron en un solo núcleo.
| Programa* | Datos completos | Datos reducidos | ||
|---|---|---|---|---|
| Tiempo de ejecución | Memoria pico | Tiempo de ejecución | Memoria pico | |
| RENUMF90 | 7.4 | 27,020 | 4.2 | 16,392 |
| BLUPF90 | 51.7 | 1’215,956 | 22.1 | 607,772 |
| ACCF90 | 10.0 | 77,636 | 3.1 | 35,308 |
| REMLF90 | 13,320.9 | 2’672,512 | 9,692.6 | 1’702,380 |
Los análisis completo y reducido tuvieron 7,615 ecuaciones correspondientes a efectos fijos (2537, 2540 y 2538 para PN, PD y PA, respectivamente). El número de ecuaciones para efectos fijos no cambia, ya que no hay pérdida de datos fenotípicos. El número de ecuaciones correspondientes a efectos aleatorios fue cinco veces el número de animales del pedigrí (193,442 y 64,501 animales para el pedigrí completo y el reducido, respectivamente). Esto se debe a que tres rasgos y PD tienen efectos aleatorios adicionales (aparte de la genética aditiva directa) para la genética materna y los efectos ambientales permanentes maternos.
Las diferencias en el tiempo de ejecución entre el análisis completo y el reducido no fueron significativas, salvo en la estimación de los componentes de varianza (Cuadro 1: REMLF90). Los análisis completos usaron más memoria para todas las tareas. Para los datos estudiados, es posible realizar los análisis completos en una computadora portátil económica con 8 GB de RAM. Sin embargo, para datos de mayor tamaño, eso podría significar depender de un servidor en lugar de una computadora portátil.
La principal diferencia computacional entre los datos completos y los depurados se observó en la estimación de los componentes de varianza. Debido a limitaciones computacionales, usar un subconjunto de datos para estimar los componentes de varianza es una práctica común. Los datos para la mayoría de las evaluaciones genéticas nacionales son mucho más grandes que los datos estudiados, y usar los datos completos para estimar los componentes de varianza suele no ser una opción. Además, el uso de datos poco informativos puede ralentizar o provocar una mala convergencia. La depuración de datos presentada puede servir como primer paso para crear un subconjunto de datos que permita eliminar datos poco informativos y hacer factible la estimación de los componentes de varianza para datos grandes.
Debido a que no hubo pérdida de datos fenotípicos entre el análisis completo y el reducido, los valores de cría y las confiabilidades estimadas fueron idénticos entre el análisis completo y el reducido. También fue cierto para los valores de cría resueltos hacia atrás, ya que esos son totalmente condicionales (iguales) a los promedios parentales.
Aunque la confiabilidad de los animales descartados fue idéntica entre el análisis completo y el reducido, las confiabilidades obtenidas iterativamente hacia atrás para los animales omitidos se sobreestimaron en comparación con las predichas por el análisis completo (Figura 2). No está claro si esta sobreestimación se relaciona únicamente con la simplificación (ignorando la relación entre progenitores) realizada en la resolución hacia atrás de la confiabilidad de la descendencia a partir de las confiabilidades de los progenitores. Se necesita más investigación sobre este asunto. La mayoría de las confiabilidades resueltas hacia atrás fueron cercanas a cero, por lo que, dadas algunas sobrestimaciones grandes, las inflaciones promedio de confiabilidad fueron solo 0.061, 0.047 y 0.040 para PN, PD y PA, respectivamente. Las medianas correspondientes fueron 0.051, 0.035 y 0.029.

La depuración de pedigrí y la resolución hacia atrás son computacionalmente sencillas y rápidas, y requieren solo unos segundos para realizarse. Estas tareas no se sometieron a pruebas comparativas, ya que las técnicas avanzadas de programación podían reducir aún más el tiempo de ejecución y los requisitos de memoria. Para fines educativos, se mantuvo el código simple y en base R.
Observaciones finales: Este estudio introduce algoritmos y códigos para la depuración de pedigrí con el fin de mantener a los animales fenotipados y a sus progenitores en la evaluación genética, así como para obtener, posterior al análisis, los valores de cría (promedios parentales) y las confiabilidades para los animales excluidos del análisis, lo cual es menos exigente computacionalmente que evaluar directamente a esos animales en el modelo de evaluación genética. El número de ecuaciones en el modelo de evaluación genética correspondientes a los efectos aleatorios de los animales se reduce y, en consecuencia, las demandas computacionales también se reducen. Este método es especialmente ventajoso para rasgos y poblaciones en los que los fenotipos son escasos y la mayoría de los animales de las últimas generaciones no están fenotipados. La resolución de ecuaciones BLUP y la aproximación de confiabilidades fueron lo suficientemente rápidas como para que las diferencias de tiempo computacional entre el análisis completo y el reducido fueran insignificantes. Cuando la memoria no es una limitación, los datos completos pueden utilizarse para estas tareas. No obstante, dadas las limitaciones computacionales para estimar componentes de varianza, el algoritmo de depuración de pedigrí introducido es una excelente opción como primer paso para preparar un subconjunto de datos.