The algorithm for proven and young is used to generate a sparse representation of $\mathbf{G}^{-1}$, allowing ssGBLUP evaluations for millions of genotyped animals Misztal (2016). With the APY algorithm, animals are designated as core or noncore, and the computing resources to create the inverse of $\mathbf{G}$ are reduced by inverting only a portion of that matrix for core animals.
Run preGSf90 (or any BLUPF90 software that computes breeding values or variance components) with clean files (after quality control) to compute the number of eigenvalues explaining 98% of the variance of $\mathbf{G}$ Pocrnic et al. (2016). This is done through singular value decomposition. You will need to add the following options:
OPTION no_quality_control
This option turns off all quality control.
OPTION snp_svd stop
This option computes the singular value decomposition, squares the singular values to obtain eigenvalues, and stops the program after the calculations.
The program will output something like this:
All EVs incl.zero Positive EVs excl.zero EIG 90% 4380 4380 EIG 95% 7494 7494 EIG 98% 13030 13030 EIG 99% 17842 17842
Here, the number of eigenvalues explaining 98% is 13030, so this will be the number of core animals in APY. To avoid running this step frequently, the number explaining 99% of the variance of G can be used (i.e., 17842).
Assuming your SNP file name is snp.dat_clean, you can edit the snp.dat_clean_XrefID or you can create a new XrefID file. Make sure you do not change the order of genotyped animals. The XrefID should have the same order as the SNP file. If a new XrefID file is created, e.g., APY_XrefID, use the following:
OPTION SNP_file filename xrefidname
Where filename is the name of the SNP file and xrefidname is the name of the new XrefID that contains an extra column of core and noncore indicator.
OPTION apy Type Position Condition
Type
: integer
1: Replaces the regular $\mathbf{G}^{-1}$ with $\mathbf{APY}$ $\mathbf{G}^{-1}$ .
2: Creates 2 dense blocks and 1 vector of APY $\mathbf{G}^{-1}$. Some options will be ignored.
Position
: integer
Column number in the XrefID file to specify the core and noncore indicator for each genotyped animal.
Condition
: character
Description of the condition for core (proven) or noncore animals (young).
General form:
(proven|young)(.ge.|.gt.|.eq.|.ne.|.lt.|.le.)(integer number)
No spaces between words are allowed.
Examples:
young.eq.0
noncore if the column has 0.proven.le.2008
core if the column has 2008 or less.The “noA22directinv” option can avoid creating the whole $\mathbf{A}_{22}$ and its inverse. Instead, this option creates 3 sub matrices of $\mathbf{A}^{-1}$ via the Henderson's (and Quaas) method.
OPTION noA22directinv 1
This option still needs the diagonal elements of $\mathbf{A}_{22}^{-1}$. You can control the computing method for the diagonals with an option:
OPTION whichA22iDiag Type Argument(s)
Examples
OPTION whichA22iDiag 1 OPTION whichA22iDiag 2 nelements OPTION whichA22iDiag 3 OPTION whichA22iDiag 4 nrounds OPTION whichA22iDiag 5 nrounds nelements
Type=1
→ Exact calculation + default (very slow)Type=2
→ Exact calculation + Simultaneous calculation of multiple elements + Parallelized with OpenMPType=3
→ Monte Carlo approximation with ranlib (extremely slow)Type=4
→ Monte Carlo approximation with a faster random number generator + Parallelized with OpenMPType=5
→ Monte Carlo approximation with a faster random number generator + Simultaneous calculation of multiple elements + Parallelized with OpenMPThe recommended option is
OPTION whichA22iDiag 4 1000
Because this option produced almost the same solutions as ones from Type=1, in a faster way.
Argument(s)=nelements
→ number of elements for simultaneous calculations (Types 2 and 5 only) Argument(s)=nrounds
→ number of rounds for the Monte Carlo approximationUsing the most efficient implementation of APY and assuming the core animals are coded as 10 in the XrefID with core and noncore indicator
OPTION apy 2 3 proven.eq.10 OPTION noA22directinv 1 OPTION whichA22iDiag 4 1000
For the type-1$\mathbf{APY}$ $\mathbf{G}^{-1}$, you can use “saveGInverse” and “readGInverse” for input/output the matrix. For the type-2 $\mathbf{APY}$ $\mathbf{G}^{-1}$, special options are required for the input/output:
OPTION saveApyGInverse OPTION saveApyGInverse filename OPTION readApyGInverse OPTION readApyGInverse filename
The default file name is ApyGi
. If you want to save the file with a different name, replace the filename statement with the desired name.
OPTION no_quality_control
.