Marks a pedigree whose third column is the MATERNAL GRANDSIRE of each animal, the
format of a sire model (Mrode and Pocrnic 2023, secs. 3.6 and 3.7; Henderson 1975,
1976). The breeding value is then u_i = u_s / 2 + u_k / 4 + m_i with the maternal
granddam unknown: the grandsire path weighs 1/4 instead of 1/2, the Mendelian variance
is 11/16 - F_s/4 - F_k/16 (3/4 - F_s/4 with the sire alone, 15/16 - F_k/16 with
the grandsire alone), and the inverse gets (1, -1/2, -1/4) in the rules of Henderson.
The declaration travels with the data: pass the result as pedigree = to any fitter,
or to pedigree(), a_inverse() and a22_inverse(), and every one of them uses the
grandsire rules. Subsetting with [ keeps the declaration.
Value
a data.frame with columns id, sire and mgs (and dam before mgs in a
mixed pedigree), of class br_ped_mgs
Details
The inbreeding this gives is not the true inbreeding: every relationship through the
granddams is ignored, the assumption every program that offers the format makes
(ASReml !MGS, DMU method 3). A declared grandsire pedigree does not combine with
metafounders, with a maternal() term (the dam is not in it), with partial_a() or
with dominance_matrix() or dominance_inverse(); each of those is refused.
With dam = the pedigree is MIXED, the file of a population where the dams of some
animals are recorded and only the maternal grandsire of others: a row with a known dam
takes the ordinary sire-dam rules, and only a row without one takes the grandsire path.
The rules are per row, so the two kinds mix in one A^-1 without approximation beyond
the unknown granddams of the grandsire rows. When a row has both, the grandsire column
must agree with the sire of that dam: a disagreement is an error listing the rows,
and a dam whose own sire is unknown receives it from the column (the same fact written
twice), with a message saying how many were filled.
References
Henderson, C.R. (1975). Journal of Dairy Science 58:1917-1921; (1976) 59:1585-1588.
Quaas, R.L., Everett, R.W. & McClintock, A.E. (1979). Journal of Dairy Science 62:1648-1654.
Examples
touros <- data.frame(id = c("s1", "s2", "s3"), sire = c("0", "0", "s1"),
mgs = c("0", "0", "s2"))
pedigree(sire_mgs(touros))
#> Sire / maternal-grandsire pedigree with 3 animals, 2 founder(s)
#> Mean F 0, maximum 0, 0 animal(s) with F > 0
#> id sire mgs F
#> 1 s1 NA NA 0
#> 2 s2 NA NA 0
#> 3 s3 1 2 0