knitr::opts_chunk$set(echo = FALSE, results = 'asis')
### # load functions defined in this package
devtools::load_all()

Selektion und Variabilität

Verschiedene Arten der Ähnlichkeit

rmddochelper::insertOdgAsPdf(psOdgFileStem = "ibd_ibs", 
                             psOdgDir = "../zl_hs_2016_w5_course_notes_rel_inb/odg")

Verwandtschaft

$$\mathcal{P}(\text{Allele an beliebigem Locus IBD}) > 0$$

$$a_{x,y} = \sum_{i=1}^P\left({1\over 2}\right)^{t_1^{(i)}+t_2^{(i)}}(1+F_{Z_i})$$

wobei $i$ über alle möglichen Verbindungen im Pedigree zwischen den Tieren $x$ und $y$ läuft und $Z_i$ der gemeinsame Ahne von $x$ und $y$ auf der Verbindung $i$ darstellt.

Diagram zum Verwandtschaftsgrad

rmddochelper::insertOdgAsPdf(psOdgFileStem = "ComputeRelationshipCoeff", 
                             psOdgDir = "../zl_hs_2016_w5_course_notes_rel_inb/odg", 
                             pnPaperWidthScale = 0.8)

Inzucht

\begin{eqnarray} F_x &=& {1\over 2}a_{m(x),v(x)} \nonumber\ &=& {1\over 2}\sum_{i=1}^P\left({1\over 2}\right)^{t_1^{(i)}+t_2^{(i)}}(1+F_{Z_i}) \nonumber\ &=& \sum_{i=1}^P\left({1\over 2}\right)^{t_1^{(i)}+t_2^{(i)}+1}(1+F_{Z_i}) \nonumber \end{eqnarray}

Matrixmethode

  1. Tiere dem Alter nach von links nach rechts in Matrix anordnen. Erstes Tier ist unbekanntes Tier NA.
  2. Oberhalb jedes Tieres werden Eltern eingetragen
  3. Offdiagonalelemente der ersten Zeile und ersten Kolonne werden mit lauter Nullen aufgefüllt.
  4. Als Diagonalelement für Tier $x$ tragen wir $1+F_x$ ein
  5. Offdiagonalelemente für Tier $x$ werden mit den Verwandtschaftsgraden $a_{x,y}$ aufgefüllt. Dabei gilt, dass

$$a_{xy} = {1\over 2}(a_{x,m(y)} + a_{x,v(y)})$$

  1. Damit Matrix symmetrisch, Zeilenelemente für Tier $x$ in die Kolonnen für Tier $x$ übertragen.

Beispiel

rmddochelper::insertOdgAsPdf(psOdgFileStem = "MatMethPedigree", 
                             psOdgDir = "../zl_hs_2016_w5_course_notes_rel_inb/odg")

Pedigree Liste

nNrAni <- 10
suppressPackageStartupMessages(library(pedigreemm))
pedEx1 <- pedigree(sire = as.integer(c(NA,NA,NA,NA,1,3,3,6,6,8)), 
                   dam  = as.integer(c(NA,NA,NA,NA,2,2,4,5,7,9)), 
                   label = as.character(1:nNrAni))
### # show the pedigree
print(pedEx1)
### # compute relationship matrix
matApedEx1 <- as.matrix(getA(pedEx1))

Schritt 1

relMat <- matrix(data = "", nrow = nNrAni+2, ncol = nNrAni+2)
relMat[1,] <- c(NA,"NA",as.character(1:nNrAni))
relMat[,1] <- c(NA,"NA",as.character(1:nNrAni))
cat("$$\\left[")
cat(paste(sGetTexMatrix(pmatAMatrix = relMat), collapse = "\n"))
cat("\\right]\n")
cat("$$\n")

Schritt 2

vecParentRow <- sGetParentRow(pPed = pedEx1, pbShowBothNaParents = FALSE)
relMat <- rbind(c(NA,NA,vecParentRow),relMat)
cat("$$\\left[")
cat(paste(sGetTexMatrix(pmatAMatrix = relMat), collapse = "\n"))
cat("\\right]\n")
cat("$$\n")

Schritt 3

relMat[3,3:(ncol(relMat))] <- 0
relMat[4:nrow(relMat),2] <- 0
relMat[3,2] <- "1"
cat("$$\\left[")
cat(paste(sGetTexMatrix(pmatAMatrix = relMat), collapse = "\n"))
cat("\\right]\n")
cat("$$\n")

Schritt 4

relMat[4,3] <- matApedEx1[1,1]
cat("$$\\left[")
cat(paste(sGetTexMatrix(pmatAMatrix = relMat), collapse = "\n"))
cat("\\right]\n")
cat("$$\n")

Schritt 5

relMat[4,4:ncol(relMat)] <- matApedEx1[1,2:ncol(matApedEx1)]
cat("$$\\left[")
cat(paste(sGetTexMatrix(pmatAMatrix = relMat), collapse = "\n"))
cat("\\right]\n")
cat("$$\n")

Schritt 6

relMat[5:nrow(relMat),3] <- matApedEx1[2:nrow(matApedEx1),1]
cat("$$\\left[")
cat(paste(sGetTexMatrix(pmatAMatrix = relMat), collapse = "\n"))
cat("\\right]\n")
cat("$$\n")

Abschluss

\tiny

cat("$$A = \\left[")
cat(paste(sGetTexMatrix(pmatAMatrix = matApedEx1, pnDigits = 4), collapse = "\n"))
cat("\\right]\n")
cat("$$\n")


charlotte-ngs/ZLHS2016 documentation built on May 13, 2019, 3:33 p.m.