PlantNuraEdition 01 · October 2026
THE
Crop Science Brief
The idea behind genomic selection, dissected

Covariance: The Heart of Genomic Prediction

A line that has never been planted can be ranked from its DNA. This edition follows the reason why, from alleles shared by descent to the GEBV, in three figures.

Welcome to the first edition

Every breeder who uses genomic selection has seen it happen. A line that was never planted receives a breeding value, and real decisions are made on it: which lines to advance, which to cross, which to drop.

Most explanations start with the software, the markers or ridge regression. We want to start one step earlier, with the question underneath: what makes it possible to predict anything at all?

The answer is covariance, and covariance has a history. It begins as alleles copied from parents to offspring, becomes a probability, then a matrix, and finally the engine of a mixed model. Here is that story in three acts.

  1. Act I · Figure 1Resemblance is shared historyShared alleles, coancestry, Wright's paths, A
  2. Act II · Figure 2Markers read what really happenedThe same pedigree, now G from DNA
  3. Act III · Figure 3One letter changes everythingData, BLUEs and BLUPs, then GEBVs
Act I

Resemblance is shared history

Start with one locus and a small pedigree (Fig. 1a). Grandparents A and B have two children, C and D, who are full sibs. Each marries into an unrelated family, E and F, and each has one child: i and j, first cousins.

Every allele in this picture is a physical copy of an ancestral allele. Follow A1. Grandparent A passed it to both C and D, and each of them passed it on. The cousins now carry copies of the same piece of ancestral DNA. This is identity by descent (IBD). Two plants can also carry the same allele by coincidence, from unrelated ancestors. That is identity by state, and it creates no lasting resemblance.

Now zoom out from one locus to whole chromosomes (Fig. 1b). Each bar is one chromosome copy, labelled by the grandparental chromosome it came from. Where the copy i received from C and the copy j received from D descend from the same grandparental chromosome, the cousins carry identical DNA (outlined in pink). On chromosome 1 they share a long stretch of B1; on chromosome 3, a piece of A1; on chromosome 4, nothing. Across the genome they share 17.8%, where the pedigree expected 25%.

Any gene for yield inside a pink segment is the same copy in both plants. Whatever it does to i, it does to j. Their genetic values rise and fall together: that is covariance.

Figure 1From shared alleles to the A matrix
aAlleles flow down a pedigreeOne locus, followed from grandparents to cousins commonancestors A A1 A2 B B1 B2 E E1 E2 C A1 B2 D A1 B1 F F1 F2 i A1 E2 j A1 F1 full sibs cousins Both cousins carry a copy of A1 from grandparent A: the same ancestral copy, identical by descent (IBD). bWhere i and j share DNAThree of five simulated chromosomes; each bar is one copy Chr 1 i from E E2 E1 E2 i from C A2 B1 j from D B1 A1 j from F F2 F1 F2 F1 Chr 3 i from E E1 i from C A2 B1 A2 A1 B1 j from D B2 A1 j from F F2 F1 F2 F2 Chr 4 i from E E2 E1 i from C B1 B2 B1 A2 j from D A2 A1 B2 j from F F2 none same ancestral copy in i and j. Genome-wide: 17.8% (expected 25%) A gene for yield on a pink segment is the same copy in both: their genetic values rise and fall together. That is covariance. cEvery pair has a relationshipWright's path rule: add (1/2)ⁿ over paths through common ancestors Coancestry f: chance that one allele drawn from each plant is IBD. Additive relationship a = 2f: the share of alleles held by descent. PAIRPATHS THROUGH A COMMON ANCESTORa A–C parent–offspring A C (1/2)1 1/2 C–D full sibs C A D (1/2)2 C B D (1/2)2 1/2 1/4 + 1/4 i–j cousins i C A D j (1/2)4 i C B D j (1/2)4 1/8 1/16 + 1/16 E–F unrelated no common ancestor 0 dThe A matrix: a covariance for every pairExpected from the pedigree; colours match panel c A A B B C C D D E E F F i i j j 1 0 1/2 1/2 0 0 1/4 1/4 0 1 1/2 1/2 0 0 1/4 1/4 1/2 1/2 1 1/2 0 0 1/2 1/4 1/2 1/2 1/2 1 0 0 1/4 1/2 0 0 0 0 1 0 1/2 0 0 0 0 0 0 1 0 1/2 1/4 1/4 1/2 1/4 1/2 0 1 1/8 1/4 1/4 1/4 1/2 0 1/2 1/8 1 Cov(gx, gy) = axy σ²A for any pair x, y Cov(gA,gC) = 1/2 σ²A Cov(gC,gD) = 1/2 σ²A Cov(gi,gj) = 1/8 σ²A Cov(gE,gF) = 0
a One locus followed from grandparents to cousins: allele A1 reaches i and j by two paths. b Three simulated chromosomes of i and j, each copy labelled by its grandparental origin; pink outlines mark the same ancestral copy in both cousins. c Wright's path rule applied to four kinds of pair in the pedigree. d The A matrix holds the expected covariance of every pair; outlined cells are the pairs from panel c.

Every pair has a relationship, not only the cousins. The coefficient of coancestry, f, is the probability that one allele drawn at random from each of two plants is identical by descent (Malécot, 1948). Twice that is the additive relationship, a = 2f: the share of alleles the two hold by descent. Sewall Wright (1922) showed how to read it straight from a pedigree: find every path that joins the two plants through a common ancestor, and add (1/2)ⁿ for each path of n steps (Fig. 1c). Parent A and child C are one step apart: 1/2. Full sibs C and D are joined through A and through B, two steps each: 1/4 + 1/4 = 1/2. The cousins are joined by two paths of four steps: 1/16 + 1/16 = 1/8. E and F have no common ancestor: 0.

A is a covariance matrix. Write a for every pair, with 1 on the diagonal for each plant with itself, and you have the numerator relationship matrix A (Fig. 1d). Each cell is a covariance in waiting. Multiply by the additive genetic variance and it becomes the covariance of breeding values:

Cov(gx, gy) = axy σ²A
all plants at once: Var(g) = A σ²A
How much two breeding values move together = how much DNA they share by descent × how much that DNA matters for the trait.

Covariance is not a property of a trait, or of a plant. It is a property of shared history. The pedigree supplies the history; the trait supplies the scale.

Act II

Markers read the history that actually happened

A is an expectation. It gives every pair of first cousins 1/8 and every pair of full sibs 1/2, because that is what happens on average. Real pairs drift away from those values, because each parent passes a random half of its genome to each child. This is Mendelian sampling, and the pedigree cannot see it.

So go back to the same pedigree and genotype every plant (Fig. 2a). Each plant now carries a barcode of 2,000 SNPs, scored as 0, 1 or 2 copies of an allele. From these barcodes we build a second relationship matrix, G (Fig. 2b). Its recipe, from VanRaden (2008), compares the barcodes of every pair of plants and adds up the alleles they share over all markers, then scales the result so that it can be read on the same scale as A.

The important point is not the arithmetic but the identity of the object. G is a relationship matrix, and therefore a covariance matrix, exactly like A. Only the source has changed: pedigree records for A, DNA for G.

Figure 2The same pedigree, now read through markers
aThe same pedigree, now genotypedEach plant carries a marker barcode: 0, 1 or 2 copies of an allele at each SNP (10 of 2,000 shown) A 1 1 0 1 0 1 2 0 0 0 B 0 0 1 1 1 2 0 0 1 0 E 1 1 2 2 1 1 1 2 0 1 C 0 0 1 1 1 2 1 0 1 0 D 1 1 1 2 1 1 1 0 0 0 F 0 1 2 2 1 1 0 1 1 2 i 0 1 2 2 1 1 1 1 0 0 j 0 1 2 2 1 1 1 0 1 1 bG: the relationship matrix, now from markersAnother covariance matrix. The source changes from pedigree records to DNA G = ZZ′ / 2Σp(1−p) VanRaden (2008) ZZ′ alleles shared by every pair of plants, added over all 2,000 SNPs 2Σp(1−p) a constant that puts G on the same scale as A cExpected (A) versus realized (G)Same plants, same pairs as Figure 1 A A B B C C D D E E F F i i j j 1 0 1/2 1/2 0 0 1/4 1/4 0 1 1/2 1/2 0 0 1/4 1/4 1/2 1/2 1 1/2 0 0 1/2 1/4 1/2 1/2 1/2 1 0 0 1/4 1/2 0 0 0 0 1 0 1/2 0 0 0 0 0 0 1 0 1/2 1/4 1/4 1/2 1/4 1/2 0 1 1/8 1/4 1/4 1/4 1/2 0 1/2 1/8 1 A · from the pedigree A A B B C C D D E E F F i i j j 1.02 .00 .51 .52 .00 −.01 .28 .27 .00 1.01 .50 .51 .02 .00 .22 .22 .51 .50 .98 .46 .00 .00 .50 .29 .52 .51 .46 1.01 .02 .02 .21 .51 .00 .02 .00 .02 1.00 .00 .51 .00 −.01 .00 .00 .02 .00 .99 .01 .54 .28 .22 .50 .21 .51 .01 1.02 .09 .27 .22 .29 .51 .00 .54 .09 1.03 G · from the markers → PAIRAG A–Cparent and offspring 1/20.51 C–Dfull sibs 1/20.46 i–jcousins 1/80.09 E–Funrelated 00.00 The pedigree gives every pair of cousins 1/8. Markers measure what this pair actually shares.
a The pedigree of Figure 1 with each plant's genotype at 10 of 2,000 SNPs. b G, the genomic relationship matrix: a covariance between plants computed from shared alleles. c A and G side by side for the same plants and the same four pairs.

Compare the two matrices pair by pair (Fig. 2c). Parent and offspring stay at about one half (0.51). The full sibs C and D share 0.46 rather than 0.50. The cousins share 0.09 rather than 0.125, which is exactly the shortfall we saw on their chromosomes in Figure 1b. Unrelated E and F stay at zero. G keeps the family structure of A and replaces each expectation with a measurement.

For a breeder, this is where markers earn their cost. Full sibs from one cross all share the same A, so the pedigree cannot tell them apart. G can, before any of them has been planted.

A says who should be alike. G says who is alike.

Act III

One letter changes everything: from I to G

Now put the covariance to work in a familiar setting (Fig. 3a). Two inbred parents are crossed, and six lines are advanced to F5 by single-seed descent. L1 and L5 come from the same F3 plant, as do L3 and L6; L2 and L4 come from other families. All six are genotyped, giving the 6 × 6 G matrix in panel a. The trial is a randomized complete block design with three blocks (replications).

Route 1, the classical trial (Fig. 3b). All six lines are planted, 18 plots in all. Before any model runs, the data are arranged as three objects: the vector y of plot yields, the design matrix X that records which block each plot sits in, and the design matrix Z that records which line each plot belongs to. Mixed-model software such as ASReml-R or sommer then fits y = Xβ + Zu + e. The block effects β are fixed, and their estimates are BLUEs: 4.78, 5.18 and 5.35 t/ha. The line effects u are random with u ~ N(0, Iσ²u), and their predictions are BLUPs.

The identity matrix I makes a strong statement: every line is unrelated to every other line. Each BLUP is built only from that line's own plots, shrunk toward the mean by how much of its advantage could be plot noise.

Figure 3The same data and model, first with I, then with G
aThe lines P1×P2 F1 self to F5 L1 L2 L3 L4 L5 L6 ■ L1, L5: one F3 plant ■ L3, L6: another ■ L2, L4: other families Genotyped 2,000 SNPs → G L1 .97 −.12 .01 .17 .70 .02 L2 −.12 .95 .10 −.18 .01 .00 L3 .01 .10 .95 .05 .06 .74 L4 .17 −.18 .05 1.00 .01 −.01 L5 .70 .01 .06 .01 .96 .03 L6 .02 .00 .74 −.01 .03 .90 Trial: RCBD,3 blocks (reps) bRoute 1 · Phenotypic BLUPAll six lines grown; lines treated as unrelated ① Data entering the model yield blocks lines 1 2 3 1 2 3 4 5 6 5.7 L1 6.4 6.3 5.1 L2 4.5 6.3 3.5 L3 5.3 4.0 4.8 L4 4.4 4.9 5.9 L5 5.9 5.7 3.7 L6 4.6 4.9 = β + u + e y X Z ② Fit the mixed model in software: ASReml-R, sommer… y = Xβ + Zu + e u ~ N(0, Iσ²) L1 1 0 0 0 0 0 L2 0 1 0 0 0 0 L3 0 0 1 0 0 0 L4 0 0 0 1 0 0 L5 0 0 0 0 1 0 L6 0 0 0 0 0 1 I lines unrelated ③ Results BLUEs · block means (t/ha) B14.78 B25.18 B35.35 BLUPs · line effects L1 +0.77 L2 +0.15 L3 −0.63 L4 −0.30 L5 +0.55 L6 −0.53 The only change: I → G cRoute 2 · Genomic BLUP (GBLUP)Only L1–L4 grown; L5 and L6 have no plots ① Data entering the model yield blocks lines 1 2 3 1 2 3 4 5 6 5.7 L1 6.4 6.3 5.1 L2 4.5 6.3 3.5 L3 5.3 4.0 4.8 L4 4.4 4.9 = β + g + e y X Z ② Fit the mixed model in software: ASReml-R, sommer… y = Xβ + Zg + e g ~ N(0, Gσ²) L1 L2 L3 L4 L5 L6 G lines related by DNA ③ Results BLUEs · block means (t/ha) B14.80 B25.18 B35.40 GEBVs · line effects L1 +0.73 L2 +0.10 L3 −0.64 L4 −0.31 L5 +0.54 L6 −0.48 dHow the model uses G to predict a line it has never seenEach untested line borrows from tested lines in proportion to its relationship with them TESTED LINES · GEBV NEVER GROWN 0.74 0.78 L1 +0.73 L2 +0.10 L3 −0.64 L4 −0.31 L5 +0.54 L6 −0.48 The prediction is a weighted sum ĝ(L5) = 0.74 × (+0.73) + 0.08 × (+0.10) + 0.05 × (−0.64) − 0.10 × (−0.31) = +0.54 t/ha weights = G(new, tested) × G(tested)⁻¹ With I instead of G every weight is 0, no line lends anything, so ĝ(L5) = ĝ(L6) = 0.00 dashed = small negative weight
a Six F5 lines from one cross, genotyped; colours mark lines that share an F3 parent. b All lines grown: yields y, block design X and line design Z enter the mixed model with lines treated as unrelated (I), giving BLUEs for blocks and BLUPs for lines. c Only L1–L4 grown: the Z columns for L5 and L6 are empty, yet the model with G returns GEBVs for all six lines. d How: each untested line's GEBV is a weighted sum of the tested lines' GEBVs, with weights set by G. Numbers come from the R code below.

Route 2, the genomic trial (Fig. 3c). To save field space, only L1 to L4 are planted. The vector y now has 12 plots and X still has three blocks. Z still has six columns, but the columns for L5 and L6 are empty: not a single plot carries their data. The model is the same, with one change: g ~ N(0, Gσ²g). Henderson's mixed-model equations show exactly where G enters:

X′XX′ZZ′XZ′Z + G⁻¹λ
βĝ
=
X′yZ′y
λ = σ²e / σ²g
In Route 1 the highlighted term is I⁻¹λ. Everything else is identical.

The solution contains a value for all six lines. These are genomic estimated breeding values, GEBVs. L5 receives +0.54 t/ha and L6 −0.48 t/ha, although neither was planted. In the simulation their true genetic values were +0.54 and −0.52.

Figure 3d opens the box. The GEBV of an untested line is a weighted sum of the GEBVs of the tested lines, and the weights come from G. L5 takes 0.74 of the value of L1, its sib line, and almost nothing from the others: 0.74 × 0.73 + 0.08 × 0.10 + 0.05 × (−0.64) − 0.10 × (−0.31) = +0.54. L6 leans on its own sib line, L3, with a weight of 0.78. Under I every one of these weights is zero, and both lines are predicted at the population mean.

The whole story in three sentences

Shared ancestry creates covariance. The pedigree gives its expectation (A = 2f), markers measure it (G), and the mixed model turns it into weights on relatives. Replace G with I and the borrowing stops: no relationship, no covariance, no prediction.

Build related training sets

A line can only borrow from relatives that were phenotyped. Accuracy falls as relationships weaken across generations or families.

Select within families

Full sibs share the same A but not the same G. Markers rank sibs before any of them is planted.

Judge new models by their covariance

Single-step, G × E, enviromic and deep-learning models all change the covariance. The mixed model stays the same.

See it move

The whole story in one animated figure

Press play and follow a single allele from the grandparents to the cousins, watch Wright's paths add up to a relationship, see A fill in and turn into G, and then see the mixed model use G to predict a seedling that has never been planted. Use the I / G switch in the last step to see what happens when the relatives are taken away.

The last step of the animated figure: a new seedling predicted from its relatives with G

Open the animation full screen · Five steps, about 50 seconds. Relationships are from our simulation; the yields in step 5 are illustrative.

Try it yourself

Route 1 and Route 2 by hand, in base R

No packages. We build X and Z, write Henderson's equations and solve them, first with I and then with G, using the data in Figure 3.

# Six inbred lines (L1-L6) in an RCBD with 3 blocks. Yield in t/ha.
y     <- c(5.7, 6.4, 6.3,   5.1, 4.5, 6.3,   3.5, 5.3, 4.0,    # L1, L2, L3
           4.8, 4.4, 4.9,   5.9, 5.9, 5.7,   3.7, 4.6, 4.9)    # L4, L5, L6
line  <- factor(rep(paste0("L", 1:6), each = 3))   # line of each plot
block <- factor(rep(1:3, times = 6))               # block of each plot
X <- model.matrix(~ block - 1)     # plots x blocks: the fixed effects
Z <- model.matrix(~ line - 1)      # plots x lines:  the random effects
lambda <- 1                        # sigma2_e / sigma2_g  (plot-level h2 = 0.5)

# ROUTE 1 - lines treated as unrelated: var(u) = I
I6  <- diag(6)
LHS <- rbind(cbind(t(X) %*% X, t(X) %*% Z),
             cbind(t(Z) %*% X, t(Z) %*% Z + solve(I6) * lambda))
RHS <- c(t(X) %*% y, t(Z) %*% y)
sol <- solve(LHS, RHS)             # Henderson's mixed-model equations
round(sol[1:3], 2)                 # BLUEs: the three block means
round(sol[4:9], 2)                 # BLUPs: line effects (deviations from the mean)

# ROUTE 2 - only L1-L4 grown; lines related through markers: var(g) = G
G <- matrix(c( 0.97,-0.12, 0.01, 0.17, 0.70, 0.02,
              -0.12, 0.95, 0.10,-0.18, 0.01, 0.00,
               0.01, 0.10, 0.95, 0.05, 0.06, 0.74,
               0.17,-0.18, 0.05, 1.00, 0.01,-0.01,
               0.70, 0.01, 0.06, 0.01, 0.96, 0.03,
               0.02, 0.00, 0.74,-0.01, 0.03, 0.90), nrow = 6)
G  <- G + diag(0.01, 6)            # tiny boost on the diagonal so G can be inverted
tr <- line %in% c("L1", "L2", "L3", "L4")   # plots of the four tested lines
Xt <- X[tr, ];  Zt <- Z[tr, ];  yt <- y[tr]
LHS2 <- rbind(cbind(t(Xt) %*% Xt, t(Xt) %*% Zt),
              cbind(t(Zt) %*% Xt, t(Zt) %*% Zt + solve(G) * lambda))
RHS2 <- c(t(Xt) %*% yt, t(Zt) %*% yt)
sol2 <- solve(LHS2, RHS2)
round(sol2[1:3], 2)                # BLUEs: block means from the tested plots
round(sol2[4:9], 2)                # GEBVs for all six lines, L5 and L6 included
# Now replace solve(G) with solve(I6) and run Route 2 again: L5 and L6 get exactly 0.
What you should see. Route 1 gives block BLUEs of 4.78, 5.18 and 5.35 and line BLUPs from +0.77 (L1) to −0.63 (L3). Route 2 gives GEBVs for all six lines, with L5 at +0.54 and L6 at −0.48, although neither was grown. Swap solve(G) for solve(I6) in Route 2 and L5 and L6 drop to exactly 0.
From PlantNura

Learn it, analyse it, apply it

EDUCATION

Genomic Selection and Data-Driven Breeding

Six live days, 39 contact hours, online or in Hyderabad. Everything in this edition, built by hand first and then with R packages. Plus the Internship Academy: mentored research on real breeding data. Courses

SOFTWARE

DataViz Pro

No-code, publication-ready figures for plant scientists, including genomic heatmaps of G. KropAnalytiX Pro and BreedPilot are coming soon. See DataViz Pro

DataViz Pro
CONSULTANCY

BioMetriK and BreedForward

Analysis of trial and marker data, and end-to-end redesign of breeding programmes, simulated before any change is made.

Building a genomic selection pipeline?Free 30-minute strategy call · pnura@plantnura.com · www.plantnura.com
Worth reading

Three papers behind this edition

  1. Wright S (1922). Coefficients of inbreeding and relationship. The American Naturalist 56: 330–338.The path rule in Figure 1c, still the cleanest way to read relationship from a pedigree.
  2. Henderson CR (1975). Best linear unbiased estimation and prediction under a selection model. Biometrics 31: 423–447.BLUE and BLUP from one set of mixed-model equations: the engine of Figure 3.
  3. VanRaden PM (2008). Efficient methods to compute genomic predictions. Journal of Dairy Science 91: 4414–4423.The G matrix in Figure 2b, still the default in most software.
Until next month

Next time you see a genomic prediction, ask two questions: what is in its covariance, and how related is the training set to the lines being predicted? Together they explain most of what the model can and cannot do.

Your turn: in your programme, which lines are the least related to your training set? Tell us in the comments.

If this was useful, share it with one colleague and subscribe to The Crop Science Brief.

#CropScience #PlantBreeding #GenomicSelection #QuantitativeGenetics #PlantNura