CHANGES IN VERSION 2.13.1
-------------------------

    o SPA root-finding hardening in `SPATest.cpp`: the saddlepoint equation
      solvers `Saddle_Prob()` and `Saddle_Prob_Fast()` now use a bracketed
      safeguarded Newton (rtsafe) fallback for `getroot_K1()` /
      `getroot_K1_fast()`. Since K1_adj is strictly increasing (dK1/dt = K2 > 0)
      the root is unique and bracketable, so the bisection safeguard guarantees
      convergence. The fallback is hybrid: the existing fast Newton runs first
      and rtsafe is invoked only when it reports non-convergence, so there is no
      added cost on the common path. This removes the rare non-convergence that
      silently reverts the variant to the anticonservative normal approximation

CHANGES IN VERSION 2.12.0
-------------------------

    o fix a C++ error where 'span' is ambiguous

    o new functions `seqRefitNullGLMM()`, `seqAssocGLMM_GT()` and
      `seqAssocGLMM_ACAT_O_GT()`

    o SAIGEgds supports optional OpenCL-based GPU acceleration for the GRM
      cross-product computation during null model fitting

    o new `use.gpu` argument in `seqFitSparseGRM()` and `seqFitDenseGRM()` for
      OpenCL GPU-accelerated GRM construction

    o new 'geno.model' argument in `seqAssocGLMM_SPA()`, `seqAssocGLMM_GT()`,
      `seqAssocGLMM_Burden()`, `seqAssocGLMM_SKAT()`, `seqAssocGLMM_ACAT_V()`,
      `seqAssocGLMM_ACAT_O()` and `seqAssocGLMM_ACAT_O_GT()` for additive,
      dominant, or recessive genetic models


CHANGES IN VERSION 2.10.2
-------------------------

    o 'fork.loading' is deprecated in `seqFitNullGLMM_SPA()`, use
      'parallel.loading' instead


CHANGES IN VERSION 2.9.2
-------------------------

    o improve the workload balancing in `seqAssocGLMM_SPA()` according to
      SeqArray_1.49.6

    o new option 'verbose.pval' to improve the display in `seqAssocGLMM_SPA()`


CHANGES IN VERSION 2.4.1
-------------------------

    o add an option `load.balancing` to `seqAssocGLMM_SPA()`


CHANGES IN VERSION 2.4.0
-------------------------

    o update `seqFitLDpruning()`

    o reduce the memory usage in `seqAssocGLMM_SPA()` when the genotype file
      is not split by chromosomes


CHANGES IN VERSION 2.2.1
-------------------------

    o fix the compiler warning: -Wformat-security

    o fix a compiler issue with gcc v7.5


CHANGES IN VERSION 2.2.0
-------------------------

    o fix the "Matrix-deprecated" warning from the Matrix package when calling
      `as(<dsCMatrix>, "dgCMatrix")`


CHANGES IN VERSION 2.0.0
-------------------------

NEW FEATURES

    o New features to use a sparse genetic relationship matrix in generalized
      linear mixed models (GLMMs) according to the SAIGE-GENE paper
      (Zhou et al., 2020)

    o a new argument 'grm.mat' in `seqFitNullGLMM_SPA()`: the dense or sparse
      genetic relationship matrix (GRM) can be specified via 'grm.mat'

    o MAC categories for multiple variance ratios in `seqFitNullGLMM_SPA()`,
      `seqAssocGLMM_SPA()`, designed for rare variants

    o new function `seqAssocGLMM_SKAT()` for the SKAT aggregate method

    o new feature `seqAssocGLMM_ACAT_O()` to include the SKAT aggregate method
      for full ACAT-O tests

    o faster `seqSAIGE_LoadPval()` when merging multiple input files


CHANGES IN VERSION 1.12.5
-------------------------

    o enable RCPP_PARALLEL_USE_TBB=1 on Windows


CHANGES IN VERSION 1.12.4
-------------------------

    o fix the compiling issue on ARM64
      (see https://github.com/AbbVie-ComputationalGenomics/SAIGEgds/issues/8)


CHANGES IN VERSION 1.12.1
-------------------------

    o fix the memory issue because of using deprecated tbb::task_scheduler_init
      in RcppParallel


CHANGES IN VERSION 1.6.0
-------------------------

    o `seqFitNullGLMM_SPA()` can use imputed dosages directly without
      converting the dosages to the best-guess genotypes

    o new function `glmmHeritability()` for approximate heritability estimates


CHANGES IN VERSION 1.4.0
-------------------------

    o set-based tests: burden, ACAT-V


CHANGES IN VERSION 1.2.2
-------------------------

    o update the citation

    o work around gcc-10


CHANGES IN VERSION 1.2.0
-------------------------

    o `seqAssocGLMM_SPA()` can save to a RDS file


CHANGES IN VERSION 1.0.2
-------------------------

    o fix an issue when there is no covariate in the formula (e.g., y ~ 1)


CHANGES IN VERSION 1.0.1
-------------------------

    o add a new option for the threshold of missing variant to
      `seqAssocGLMM_SPA()`

    o change the output column 'AC.alt' to 'mac' in `seqAssocGLMM_SPA()`

    o retry model fitting at least 10 times if the matrix is singular or not
      positive definite, or large variance is observed


CHANGES IN VERSION 1.0.0
-------------------------

    o first Bioconductor release


CHANGES IN VERSION 0.99.0 (10-02-2019)
-------------------------

    o package submitted to Bioconductor


CHANGES IN VERSION 0.9.10 (08-12-2019)
-------------------------

    o SAIGE algorithm implementation for quantitative outcomes


CHANGES IN VERSION 0.9.9 (07-24-2019)
-------------------------

    o add a vignette to the package

    o the default of random number generator changes in R: "Rounding" was the
      default in `RNGkind()` prior to R_3.6.0, but "Rejection" is used in
      R (>= v3.6.0). For reproduction of the results created by R (< v3.6.0),
      please use `RNGkind("Mersenne-Twister", "Inversion", "Rounding")` in
      R (>= v3.6.0)


CHANGES IN VERSION 0.9.7 (06-08-2019)
-------------------------

    o seqAssocGLMM_SPA(): load balancing in parallel


CHANGES IN VERSION 0.9.0 (01-07-2019)
-------------------------

    o first version of SAIGEgds
