Troubleshooting: MA-GBLUP

Comparing MA estimates using meta vs target genetic variance on selected traits

Published

February 25, 2026

MT

Code
par(mfrow= c(2, 3))
par(mar=c(5,7,6,0))
plot(Gh_AYT_O, mt_AYT_O, xlab = expression(hat(g)[AYT_O]), 
     ylab = expression(hat(g)[MetaPAs]), cex.lab= 1.5, col="orangered3")
plot(Gh_AYT_S, mt_AYT_S, xlab = expression(hat(g)[AYT_S]), 
     ylab = expression(hat(g)[MetaPAo]), cex.lab= 1.5, col="gold3")
plot(Gh_PYT_S, mt_PYT_S, xlab = expression(hat(g)[PYT_S]), 
     ylab = expression(hat(g)[MetaAAs]), cex.lab= 1.5, col="forestgreen")

plot(Gh_AYT_O, mt_AYT_O2, xlab = expression(hat(g)[AYT_O]), 
     ylab = expression(hat(g)[MetaPAs]), cex.lab= 1.5, col="orangered3")
plot(Gh_AYT_S, mt_AYT_S2, xlab = expression(hat(g)[AYT_S]), 
     ylab = expression(hat(g)[MetaPAo]), cex.lab= 1.5, col="gold3")
plot(Gh_PYT_S, mt_PYT_S2, xlab = expression(hat(g)[PYT_S]), 
     ylab = expression(hat(g)[MetaAAs]), cex.lab= 1.5, col="forestgreen")
mtext("MT \n Within Estimated SNP effect vs Meta-SNP effect", side =3, line= -4,
      outer = TRUE)

Code
df_var <- data.frame(Within=c(GP_AYT_O, GP_AYT_S, GP_PYT_S), Meta = c(mt2_AYT_O,
                                                                      mt2_AYT_S, mt2_PYT_S),
                     n = c(1698, 850, 7800)) %>%
  `row.names<-`(c("AYT-O", "AYT-S", "PYT-S"))

kable(df_var,caption="Estimated genetic variance") %>% 
  kable_styling(latex_options = "scale_down")%>% 
  add_footnote(c("n= number of lines"))
Estimated genetic variance
Within Meta n
AYT-O 40.14131 43.52643 1698
AYT-S 20.48739 44.97834 850
PYT-S 46.03035 33.59257 7800
a n= number of lines
Code
df_rmse <- data.frame(Meta=c(7.37, 5.62, 6.27), Target = c(7.02, 4.21, 8.42))%>%
  `row.names<-`(c("AYT-O", "AYT-S", "PYT-S"))

kable(df_rmse,caption="RMSE") %>% 
  kable_styling(latex_options = "scale_down")%>% 
  add_footnote(c("Meta=using meta genetic variance","Target=using target genetic variance"))
RMSE
Meta Target
AYT-O 7.37 7.02
AYT-S 5.62 4.21
PYT-S 6.27 8.42
a Meta=using meta genetic variance
b Target=using target genetic variance

PH

Code
par(mfrow= c(2, 3))
par(mar=c(5,7,6,0))
plot(Gh_AYT_O, mt_AYT_O, xlab = expression(hat(g)[AYT_O]), 
     ylab = expression(hat(g)[MetaPAs]), cex.lab= 1.5, col="orangered3")
plot(Gh_AYT_S, mt_AYT_S, xlab = expression(hat(g)[AYT_S]), 
     ylab = expression(hat(g)[MetaPAo]), cex.lab= 1.5, col="gold3")
plot(Gh_PYT_S, mt_PYT_S, xlab = expression(hat(g)[PYT_S]), 
     ylab = expression(hat(g)[MetaAAs]), cex.lab= 1.5, col="forestgreen")

plot(Gh_AYT_O, mt_AYT_O2, xlab = expression(hat(g)[AYT_O]), 
     ylab = expression(hat(g)[MetaPAs]), cex.lab= 1.5, col="orangered3")
plot(Gh_AYT_S, mt_AYT_S2, xlab = expression(hat(g)[AYT_S]), 
     ylab = expression(hat(g)[MetaPAo]), cex.lab= 1.5, col="gold3")
plot(Gh_PYT_S, mt_PYT_S2, xlab = expression(hat(g)[PYT_S]), 
     ylab = expression(hat(g)[MetaAAs]), cex.lab= 1.5, col="forestgreen")
mtext("PH \n Within Estimated SNP effect vs Meta-SNP effect", side =3, line= -4,
      outer = TRUE)

Code
df_var <- data.frame(Within=c(GP_AYT_O, GP_AYT_S, GP_PYT_S), Meta = c(mt2_AYT_O,
                                                                      mt2_AYT_S, mt2_PYT_S),
                     n = c(1698, 850, 7800)) %>%
  `row.names<-`(c("AYT-O", "AYT-S", "PYT-S"))

kable(df_var,caption="Estimated genetic variance") %>% 
  kable_styling(latex_options = "scale_down")%>% 
  add_footnote(c("n= number of lines"))
Estimated genetic variance
Within Meta n
AYT-O 0.9740531 1.1405037 1698
AYT-S 0.7472458 1.1458741 850
PYT-S 1.1832437 0.8984803 7800
a n= number of lines
Code
df_rmse <- data.frame(Meta=c(1.30, 1.03, 1.00), Target = c(1.18, 0.86,1.16))%>%
  `row.names<-`(c("AYT-O", "AYT-S", "PYT-S"))
kable(df_rmse,caption="RMSE") %>% 
  kable_styling(latex_options = "scale_down")
RMSE
Meta Target
AYT-O 1.30 1.18
AYT-S 1.03 0.86
PYT-S 1.00 1.16

TKW

Code
par(mfrow= c(2, 3))
par(mar=c(5,7,6,0))
plot(Gh_AYT_O, mt_AYT_O, xlab = expression(hat(g)[AYT_O]), 
     ylab = expression(hat(g)[MetaPAs]), cex.lab= 1.5, col="orangered3")
plot(Gh_AYT_S, mt_AYT_S, xlab = expression(hat(g)[AYT_S]), 
     ylab = expression(hat(g)[MetaPAo]), cex.lab= 1.5, col="gold3")
plot(Gh_PYT_S, mt_PYT_S, xlab = expression(hat(g)[PYT_S]), 
     ylab = expression(hat(g)[MetaAAs]), cex.lab= 1.5, col="forestgreen")

plot(Gh_AYT_O, mt_AYT_O2, xlab = expression(hat(g)[AYT_O]), 
     ylab = expression(hat(g)[MetaPAs]), cex.lab= 1.5, col="orangered3")
plot(Gh_AYT_S, mt_AYT_S2, xlab = expression(hat(g)[AYT_S]), 
     ylab = expression(hat(g)[MetaPAo]), cex.lab= 1.5, col="gold3")
plot(Gh_PYT_S, mt_PYT_S2, xlab = expression(hat(g)[PYT_S]), 
     ylab = expression(hat(g)[MetaAAs]), cex.lab= 1.5, col="forestgreen")
mtext("TKW \n Within Estimated SNP effect vs Meta-SNP effect", side =3, line= -4,
      outer = TRUE)

Code
df_var <- data.frame(Within=c(GP_AYT_O, GP_AYT_S, GP_PYT_S), Meta = c(mt2_AYT_O,
                                                                      mt2_AYT_S, mt2_PYT_S),
                     n = c(1698, 850, 7800)) %>%
  `row.names<-`(c("AYT-O", "AYT-S", "PYT-S"))

kable(df_var,caption="Estimated genetic variance") %>% 
  kable_styling(latex_options = "scale_down")%>% 
  add_footnote(c("n= number of lines"))
Estimated genetic variance
Within Meta n
AYT-O 11.90081 19.95556 1698
AYT-S 10.47922 19.36336 850
PYT-S 20.98716 11.42676 7800
a n= number of lines
Code
df_rmse <- data.frame(Meta=c(5.11, 4.81, 4.12), Target = c(3.80, 3.49,6.93))%>%
  `row.names<-`(c("AYT-O", "AYT-S", "PYT-S"))
kable(df_rmse,caption="RMSE") %>% 
  kable_styling(latex_options = "scale_down")
RMSE
Meta Target
AYT-O 5.11 3.80
AYT-S 4.81 3.49
PYT-S 4.12 6.93