  Finding the largest few principal components of a matrix of genetic data is a
common task in genome-wide association studies (GWASs), both for dimensionality
reduction and for identifying unwanted factors of variation. We describe a
simple random matrix model for matrices that arise in GWASs, showing that the
singular values have a bulk behavior that obeys a Marchenko-Pastur distributed
with a handful of large outliers. We also implement Golub-Kahan-Lanczos (GKL)
bidiagonalization in the Julia programming language, providing thick restarting
and a choice between full and partial reorthogonalization strategies to control
numerical roundoff. Our implementation of GKL bidiagonalization is up to 36
times faster than software tools used commonly in genomics data analysis for
computing principal components, such as EIGENSOFT and FlashPCA, which use dense
LAPACK routines and randomized subspace iteration respectively.
