# Pedigrees - pedigree representation and extractors

## Pedigree representation

A pedigree is represented as a Julia type
constructed from two integer vectors, `sire`

and `dam`

. A parent not
in the pedigree is coded as `0`

.

By default the `Pedigree`

constructor reorders the pedigree according
to the "longest ancestral path" for each animal. This guarantees that
parents in the pedigree occur before their offspring, because the
longest ancestral path of the offspring is greater than that of either
parent. The permutation is stored in the `Pedigree`

object.

## Additive relationship matrix

An important tool in fitting models that take into account genetic
relationships is the additive relationship matrix, usually written
`A`

, for a pedigree. (See R.A. Mrode, *Linear Models for the
Prediction of Animal Breeding Values, 2nd edition*, 2004, chapter 2).

In practice, the Cholesky factor, `L`

, which is a lower triangular
matrix with positive diagonal elements and satisfying `A = LL'`

is
more useful. The `Ltrans`

function in this package evaluates the
transpose of `L`

as a sparse matrix. The reason for evaluating `L'`

and not `L`

is because the result is in the `SparseMatrixCSC`

format
and it is the rows of `L`

that are easier to evaluate than the
columns. In other words, a column-oriented format is more suitable
for `L'`

.

The `inbreeding`

function evaluates both the inbreeding coefficients
and `L'`

.