Diallel experiments represent a relevant topic for plant breeding, although they can be found in several disciplines of applied biology. If you are reading this page you probably know already what a diallel experiment is, but it will not hurt if I just remind you that, from the ancient Greek language, the ‘diallel’ word means ‘reciprocating’ and a diallel cross is a set of several possible crosses and selfs between some parental lines. For example, if we take the male lines A, B and C together with the same female lines A, B and C and we imagine to cross those lines with one another, we obtain:
The performances of crosses and/or selfs and/or reciprocals can be compared by planning field experiments, usually known as diallel experiments and designed as randomised complete blocks with 3-4 replicates.
For these diallel experiments, six main diallel models (with several variations) are available in literature, to quantify genetic effects, such as general combining ability (GCA), specific combining ability (SCA), reciprocal (maternal) effects and heterosis. All these effects are determined as linear combinations of means for crosses, for selfed parents and for reciprocals and, therefore, it might be expected that fitting diallel models to experimental data from diallel experiments should be a straightforward task for breeders.
When I started dealing with diallel models, I was very surprised by the fact that these models were often presented as separate entities, to be fitted by using specialised software; indeed, to the eyes of a biostatistician, it would appear that all diallel models are only different parameterisations of the same general linear model (Mohring et al., 2011). Therefore, it seemed to me very strange that we could not fit diallel models by simply using the
lm() function in R and related platform.
A deeper diving in this subject showed me that the main implementation problem was that certain effects, such as the GCA effect, require the definition of unconventional design matrices, which were not yet available in R. Indeed, the packages
sommer permit, e.g., the overlay of design matrices (function
sommer), but none of the two packages plays well with the
lm() function in R.
Therefore, together with Niccolò and Luigi, we decided to enhance the
model.matrix() function in R, building a handful of new R functions, aimed at producing the correct design matrices for all types of diallel models. All these functions are now available within the
lmDiallel package, which is available on gitHub and may be regarded as a consistent platform to fit all main types of diallel models in R.
This webpage aims to provide examples, commented R code and datasets, to show how the proposed methods can be easily reproduced with other datasets. In order to follow this tutorial, you will need to install the
lmDiallel package, by using the ‘install_github()’ function, as available in the ‘devtools’ package. Therefore, if necessary, install this package first. The code is as follows:
install.packages("devtools") # Only at first instance library(devtools) install_github("OnofriAndreaPG/lmDiallel")
Building this site is still an ongoing task, so, please forgive us if you do not find what you are looking for. In the meantime, you can take a look at the paper ‘Linear models for diallel crosses: a review with R functions’, where we reviewed diallel models and gave examples on how they can be fitted with our new package ‘lmDiallel’. In that manuscript, we concentrated on fixed models, but showed how the facilities we provide can be used to fit also random effects diallel models. Further information can also be found in my blog, at this page.
Thanks for reading and, please, stay tuned! If you have comments, please, drop me a line at the address firstname.lastname@example.org.