Preface#

Why Julia?#

Whole-genome analyses are usually computationally intensive even for data sets of moderate size. Although these analyses can be implemented with most dynamic languages such as R or Python with very readable code that is easy to understand, modify and extend, they are often too slow for real data analyses. Therefore, for computational efficiency, compiled languages such as C, C++, or Fortran have historically been used to implement methods for genomic analyses. In order to make these more accessible, a dynamic language such as R may be used as a user interface to the underlying methods that are written in the compiled language. The problem of using compiled languages, however, is that they are usually hard to understand, modify, extend and maintain, in addition to being difficult to readily deploy across different operating systems. Julia, a relatively new scientific programming language, approaches the computing speed of compiled languages, but retains the benefits of dynamic languages.

What is this book for?#

The purpose of this book is to help you develop skills in computer programming and algorithm development useful for research projects and applications in quantitative genetics, especially genomic prediction. Julia, which is a modern programming language, will be used for this course. It is assumed that you have some programming experience, and concepts in genomic prediction will be introduced through examples. The focus of this book is not Julia. Rather, it is the use of Julia for applications in quantitative genetics. These include:

  • Mixed effects models with polygenic, maternal and permanent environment effects

  • Use of pedigree information

  • Iterative methods for solving linear systems, e.g, Jacobi, Gauss–Seidel

  • GBLUP and Bayesian alphabet

  • Variance component estimation

  • Single-step methods

Useful resources#