Definiendo pedigríes
sencillos
Hola queridos!
Hoy os voy a mostrar una de las cosas más entretenidas de
relMix, la definición de los pedigríes. Es como hacer sudokus! Incluso
podríamos hacer una competición para ver quién hace el pedigrí más complejo.
Como sabéis, por defecto, relMix ya viene con los típicos
pedigríes de un caso estándar de paternidad: el que define el trío
padre-madre-hijo (llamado «Paternity») y el que define que el presunto
padre no está realmente relacionado con el hijo (llamado «Unrelated»,
definiendo sólo la relación madre-hijo). Seguro que os habéis preguntado cómo
relMix establece las relaciones de parentesco. Bueno, pues lo hace con una de
las funciones de Familias en R, llamada FamiliasPedigree, creada por Peter
Mostad y que se basa en una función anterior llamada kinship2. Me parece
bastante difícil que yo pueda entender con claridad cómo funciona
FamiliasPedigree, pero es bastante fácil darle órdenes.
Esto os va a ser muy útil para usar relMix con otros
pedigríes que no sean el típico trío, ya vemos un ejemplo después. Pero es
mejor empezar por lo más sencillo, el trío. El pedigrí se define mediante 4
vectores. Ya empezamos … vectores, estudié esto en el Jurásico!! Pero no nos
compliquemos, un vector no es más que una lista de valores, y para que R lo
entienda hay que escribirlo con una «c» y unos paréntesis que
contienen los valores. Ejemplo
para tres valores: c(«valor1», «valor2»,
«valor3»).
Bueno, pues ya casi sabemos todo lo que necesitamos saber en
cuanto a programación, lo demás es lógica pura. Vamos a ver entonces los cuatro vectores
necesarios:
a) En el primer vector (llamado id), definimos los
individuos necesarios para el pedigrí, por ejemplo: c(«mother»,
» child», «AF») para el típico trío
b) En el segundo vector (llamado dadid) definimos los padres
de cada uno de los individuos del primer vector. En el caso del trío, no nos
interesa para nada quién es el padre de «mother», ni quién es el
padre del presunto padre «AF», así que sólo tenemos que decir que
«Not Available» (NA). El orden de los valores es el que define a
quién nos estamos refiriendo, me explico, en el vector id, el valor
«mother» está en la primera posición, así que en este vector
«dadid», tenemos poner quién es el padre de «mother»
también en la primera posición. Y lo mismo para las siguientes posiciones. Así,
con el vector
c(NA, «AF», NA)
estamos diciendo que no nos importa quién es el padre de
«mother» (primera posición), que el padre de «child» es
«AF» (segunda posición), y que no nos no nos importa quién es el
padre de «AF» (tercera posición). ¿Se entiende?
c) En el tercer vector (llamado momid) definimos las madres
de cada uno de los individuos del primer vector. En el caso del trío, también
teniendo en cuenta sus posiciones:
c(NA, «mother», NA)
Traducido a frase: no nos importa quién es la madre de
«mother», la madre de «child» es «mother», y no
nos no nos importa quién es la madre de «AF».
d) Y el cuarto vector (llamado sex) nos sirve para
establecer el género de cada individuo. En el caso de que «child»
fuera una niña, el vector se definiría:
c(«female», «female», «male»)
Es decir, «mother» es «female»,
«child» es también «female» y «AF» es
«male». El hecho de que los varones no puedan quedarse embarazados
facilita mucho este vector ;)))))
Bueno, pues ya casi lo tenemos! Ahora sólo tenemos que
llamar a FamiliasPedigree y mandarle que cree el pedigrí teniendo en cuenta la
información que le damos en los 4 vectores. Hay varias formas de escribir el
código para esto, pero la más sencilla tiene la estructura:
ped1 <- FamiliasPedigree(vector1, vector2, vector3,
vector4)
Es decir, en el ejemplo que hemos visto, sería:
ped1 <-
FamiliasPedigree(c(«mother», «child», «AF»), c(NA,
«AF», NA), c(NA, «mother», NA), c(«female»,
«female», «male»))
Qué contenta
estoy!! Me siento menos analfabeta al saber interpretar unas líneas de código!!
Los jóvenes no pensaréis lo mismo, pero para los que somos del siglo pasado
esto es todo un hito!
Una vez que ya sabemos todo esto, es más fácil definir el
pedigrí para hipótesis alternativa (AF no está relacionado con child):
ped2 <-
FamiliasPedigree(c(«mother», «child», «AF»),
c(NA, NA, NA), c(NA, «mother», NA), c(«female»,
«female», «male»))
La única diferencia con ped1 está en el segundo vector
(dadid), que define quién es el padre de «child».
Bueno, algo muy importante, los vectores dadid, momdid y sex
deben tener la misma longitud que el vector id siempre, es decir, si id tiene
tres valores, los demás deben tener también 3 valores. Como os he dicho, lógica
pura.
Podéis descargaros aquí un resumen de
todo lo que hemos visto.
En el siguiente post veremos cómo definir los pedigríes para
resolver este caso:
Una mujer mantiene relaciones sexuales con dos hermanos y
queda embarazada. Con el fin de saber cuál de los dos es el padre del bebé
antes de su nacimiento, se somete a una prueba no invasiva de paternidad a
partir de plasma.
Y nada más por hoy, que me he enrollado mucho! Dejarme sólo que le de las gracias a Thore por revisarme esto. Y esta vez se merece mucho el agradecimiento, pues están teniendo temperaturas de 20 grados por las noches en Oslo y él ha tenido la paciencia de sentarse a leer esto, perdiéndose un rato del Caribe Noruego!!
Gracias a todos!! Nos ayudan a estar actualizados siempre.
Saludos