CHANGES IN VERSION 1.34.0
-------------------------

    o fix the compiler warning: sprintf is deprecated


CHANGES IN VERSION 1.32.0
-------------------------

    o update the web links


CHANGES IN VERSION 1.30.1
-------------------------

    o return a object of S3 class "snpgdsGRMClass" in `snpgdsGRM()` instead of
      a list when `with.id=TRUE`

    o fix a portable issue with Fortran character strings via
      USE_FC_LEN_T & FCONE


CHANGES IN VERSION 1.24.0
-------------------------

    o definition of IBS in the `snpgdsIBS()` help file


CHANGES IN VERSION 1.22.0
-------------------------

    o 'allow.fork=TRUE' is the default in `snpgdsOpen()` since v1.21.2

    o add `print.snpgdsPCAClass`, `print.snpgdsEigMixClass`,
      `print.snpgdsPCASNPLoadingClass`, `print, snpgdsEigMixSNPLoadingClass`,
      `print.snpgdsIBDClass`, `print.snpgdsDissClass`, `print.snpgdsIBSClass`

    o fix a Win32 compiler issue with gcc-4.9

    o update `snpgdsBED2GDS()` with comment.char=""


CHANGES IN VERSION 1.20.1
-------------------------

    o Bug fix: eigenvalues and TraceXTX are correctly calculated in
      `snpgdsPCA(, algorithm="randomized")`


CHANGES IN VERSION 1.20.0
-------------------------

    o a leading tilde in the file path is allowed in `snpgdsGDS2BED()`

    o change the file name "vignettes/SNPRelateTutorial.Rmd" to
      "vignettes/SNPRelate.Rmd", so `vignette("SNPRelate")` can work directly


CHANGES IN VERSION 1.18.1
-------------------------

    o support long vector in `snpgdsIBDSelection()`


CHANGES IN VERSION 1.18.0
-------------------------

    o `snpgdsBED2GDS()` allows a single file name without the extended file
      names (.bed, .fam, .bim)


CHANGES IN VERSION 1.16.0
-------------------------

    o a new option 'useMatrix' for the packed symmetric matrix using the Matrix
      package in `snpgdsIBDMoM()`, `snpgdsIBDKING()`, `snpgdsIBS()`,
      `snpgdsIndivBeta()` and `snpgdsGRM()` to reduce memory usages

    o fix a bug of missing sample and SNP IDs in the output of `snpgdsIndInb()`

    o new option 'start.pos' in `snpgdsLDpruning()`

    o new methods in `snpgdsIndInb()`: gcta1, gcta2, gcta3; progress
      information is shown during running the function

    o `snpgdsCombineGeno()` supports dosages


CHANGES IN VERSION 1.14.0
-------------------------

    o the default compression is "LZMA_RA" in `snpgdsBED2GDS()`,
      `snpgdsVCF2GDS()` and `snpgdsVCF2GDS_R()` for annotations

    o support Intel C++ compiler with SSE2/AVX2

    o allow interrupting requests in the calculation

    o new method options in `snpgdsPairScore()`: GVH.major, GVH.minor,
      GVH.major.only, GVH.minor.only

    o force to use integers for 'snp.position' in `snpgdsCreateGeno()`

    o unit tests for merging GRMs in `snpgdsMergeGRM()`

    o the function `snpgdsSNPListStrand()` is merged to
      `snpgdsSNPListIntersect()`, and it is removed from the package

    o update `snpgdsSNPListIntersect()` and `snpgdsCombineGeno()` (work
      correctly)

    o replace INF/-INF by NaN in the output of `snpgdsIBDKING()`


CHANGES IN VERSION 1.12.0-1.12.2
-------------------------

    o new arguments 'with.sample.id' and 'with.snp.id' in `snpgdsSNPRateFreq()`

    o fix an issue in the C code 'LENGTH or similar applied to NULL object'

    o a new option 'method="Jacquard"' in `snpgdsPairIBD()`

    o `snpgdsGRM()` can output the GRM matrix to a GDS file

    o a new function `snpgdsMergeGRM()` to merge multiple GRMs


CHANGES IN VERSION 1.10.0-1.10.2
-------------------------

    o new functions `snpgdsAdmixPlot()` and `snpgdsAdmixTable()`

    o `snpgdsPCASNPLoading()` and `snpgdsPCASampLoading()` support the eigen
      results of `snpgdsEIGMIX()` allowing projecting new samples to the
      existing coordinate

    o `snpgdsFst()` provides W&C84 mean Fst together with weighted Fst

    o a new argument 'outgds' in `snpgdsPCACorr()` allows exporting
      correlations to a gds file

    o a friendly warning is given when openning a SeqArray file with
      `snpgdsOpen()`

    o a new option "Corr" in `snpgdsGRM()` for scaled GRM

    o progress information: showing overall running time when completed

    o An unexpected exception in a thread could result in deadlock: the current
      implementation shows error information and exits the R session


CHANGES IN VERSION 1.8.0
-------------------------

    o add a new function `snpgdsIndivBeta()`


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

    o fix an issue in `snpgdsVCF2GDS()` if sample.id has white space

    o bug fix in `snpgdsPCASampLoading()` when the input is SeqArray GDS file

    o improve `snpgdsGetGeno()`

    o the version number was bumped for the Bioconductor release version 3.3

    o new implement of thread pool

    o bitwise intrinsics (SSE2/AVX2) to accelerate `snpgdsIBSNum()`,
      `snpgdsIBS()`, `snpgdsIBDMoM()`, `snpgdsIBDKing()` (+50% to +300%)

    o v1.6.4: bug fix in v1.6.3 (allele counting error with SSE2 implement)

    o v1.6.5: `snpgdsGRM()`, renames the option "Visscher" to "GCTA",
      new option 'dosage' in `snpgdsPairScore()`,
      new function `plot.snpgdsPCAClass()`


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

    o update GENEVA website address

    o add a new function `snpgdsPairScore()`

    o improve `snpgdsGRM()`

    o support the SeqArray data format (requiring SeqArray >= v1.9.2)

    o modification according to gdsfmt_1.5.7

    o bug fix in `snpgdsLDMat()` when genotype data are from SeqArray

    o bug fix: https://github.com/zhengxwen/SNPRelate/issues/14

    o `snpgdsLDMat()` supports multiple threads and covariance

    o `snpgdsPCA()`: non-computed eigenvalues are NaN to avoid misuse of
      'eigenval' when `eigen.method="DSPEVX"`


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

    o fix a bug in `snpgdsVCF2GDS()` when 'method="biallelic.only"'

    o add `snpgdsVCF2GDS_R()` for the R implementation

    o fix a bug in `snpgdsBED2GDS()` if 'family=TRUE'

    o `snpgdsGDS2BED()` allows the file name of GDS

    o improve `snpgdsSlidingWindow()`

    o add an option 'ignore.chr.prefix' to the function `snpgdsVCF2GDS()`

    o a new function `snpgdsHWE()`

    o add "Fst estimation" to the vignette

    o bug fix if `requireNamespace("SNPRelate")` is called from other packages

    o `snpgdsPCA()` uses 'DSPEVX' to compute eigenvalues and
      eigenvectors instead of 'DSPEV' if top eigenvalues are required only
      (significant improvement on computing speed)

    o the original Rnw vignette is replaced by a R Markdown vignette

    o a new function `snpgdsPED2GDS()`


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

    o The version number was bumped for the Bioconductor release version


CHANGES IN VERSION 0.99.1-0.99.3
-------------------------

    o an option to create an integer snp.id when converting from PLINK

    o a new function `snpgdsFst()` to estimate Fst

    o minor fixes


CHANGES IN VERSION 0.99.0
-------------------------

    o be a Bioconductor package

    o fully support long vectors (>= R v3.0)

    o >5x speedup in the function `snpgdsVCF2GDS()`

    o SNP GDS format allows character-type chromosome codes

    o add a new argument 'ref.allele' in `snpgdsVCF2GDS()`

    o add new functions `snpgdsOpen()` and `snpgdsClose()`

    o add a new function `snpgdsTranspose()` to transpose the genotypic matrix

    o add a new function `snpgdsAlleleSwitch()` to switch alleles if needed

    o add a new function `snpgdsApartSelection()`

    o add a new function `snpgdsGEN2GDS()` to import Oxford GEN data

    o use NA instead of 3 as missing value in `snpgdsGetGeno()`

    o add a new argument 'snpfirstdim' in the function `snpgdsGDS2BED()`

    o add a new argument 'with.id' in the functions `snpgdsSNPRateFreq()`
      and `snpgdsSampMissRate()`

    o return a numeric vector instead of data.frame in `snpgdsLDpair()`

    o add estimating nine Jacquard's coefficients in `snpgdsIBDMLE()`

    o fix the memory issues reported by valgrind


CHANGES IN VERSION 0.9.15-0.9.19
-------------------------

    o improve `snpgdsIBDKING()` to avoid misleading arguments and examples

    o improve `snpgdsIBDSelection()`

    o the names of column 'sample1', 'sample2' and 'kinshipcoeff' are changed
      to 'ID1', 'ID2' and 'kinship' in the output of `snpgdsIBDSelection()`

    o avoid compiler issues when the version of R < v3.0

    o minor fixes in `snpgdsIBDSelection()`: allow non-character-type sample
      IDs and missing IBD coefficients


CHANGES IN VERSION 0.9.14:
-------------------------

    o `snpgdsGDS2BED()` gives a warning if the allele information is missing

    o add `snpgdsIBDKING()` (KING robust relationship inference in genome-wide
      association studies)

    o bug fixes in `snpgdsIBS()` and `snpgdsIBSNum()`

    o some warnings in `snpgdsSummary()` are replaced by hints

    o bug fix in `snpgdsVCF2GDS()`: duplicate SNP id when importing multiple
      VCF files

    o improve hint information in `snpgdsGDS2BED()`


CHANGES IN VERSION 0.9.10-0.9.13
-------------------------

    o disable parallel functions in the Windows version of SNPRelate, until
      the internal multi-thread funcitons are replaced by the functions
      in win-pthreads

    o fix compiling issues in the Windows version of SNPRelate

    o add 'GetRNGstate' and 'PutRNGstate' to the C function `gnrDistPerm()`

    o remove the upper limit of 200 chromosomes in `snpgdsVCF2GDS()` according
      to scaffolds/contigs from a de novo assembly not chromosomes

    o improve `snpgdsSummary()`

    o bug fixes in `snpgdsPairIBD()`

    o bug fix in `snpgdsVCF2GDS()`: to use "\t" as the field separator
      character

    o bug fixes according to gdsfmt v0.9.11

    o improve the vignette


CHANGES IN VERSION 0.9.8-0.9.9
-------------------------

    o adds a new argument 'family' to `snpgdsBED2GDS()`

    o improves `snpgdsCutTree()`

    o adds a new function `snpgdsDrawTree()`

    o adds an argument 'option' to the function `snpgdsBED2GDS()`

    o outputs chromosome codes according to `snpgdsOption()` in
      `snpgdsGDS2BED()`

    o add an alternative method extracting variants from a VCF file in
      `snpgdsVCF2GDS()`

    o supports multiple files in `snpgdsVCF2GDS()`

    o add `snpgdsOption()`

    o add `snpgdsHCluster()`

    o add `snpgdsCutTree()`

    o add `snpgdsDiss()`


CHANGES IN VERSION 0.9.1-0.9.7
-------------------------

    o bug fix: an important bug of missing genotypes in `snpgdsVCF2GDS()`

    o bug fix: a bug in `snpgdsGDS2BED()` (output 23, 24, ..., instead of
      X, Y, XY)

    o bug fix: a bug in `snpgdsCombineGeno()` (due to duplicate SNPs)

    o `snpgdsLDpair()` provides haplotype frequency estimates

    o `snpgdsLDMat()` allows specifying sliding window size

    o add RUnit tests

    o add a vignette

    o bug fixes

    o add functions to `snpgdsIBDMLE()` and `snpgdsIBDMoM()`

    o add a new function `snpgdsVCF2GDS()`


CHANGES IN VERSION 0.9.0 (03-Aug-2011)
-------------------------

    o first public release of SNPRelate