CHANGES IN VERSION 1.48.0
-------------------------

    o remove "System requirements specified C++11" in DESCRIPTION

    o New optimized C codes for AArch64 (ARM 64-bit) architecture


CHANGES IN VERSION 1.42.0
-------------------------

    o the input of `hlaUniqueAllele()` can be a hlaAttrBagClass object or
      a hlaAttrBagObj object

    o `hlaAlleleToVCF()` outputs 0 instead of NaN if the location of HLA gene
      is unknown or unspecified

    o update the C codes according to '_R_USE_STRICT_R_HEADERS_=true' &
      '_R_CXX_USE_NO_REMAP_=true'


CHANGES IN VERSION 1.40.0
-------------------------

    o new option 'all' in `hlaUniqueAllele()`


CHANGES IN VERSION 1.38.3
-------------------------

    o fix compiler warnings: -Wformat & -Wformat-security

    o new 'use.matching=TRUE' in `hlaPredMerge()`; to set 'use.matching=FALSE'
      for backward compatibility

    o 'ret.postprob=FALSE' by default in `hlaPredMerge()`


CHANGES IN VERSION 1.38.1
-------------------------

    o fix a compiler warning of "unused-but-set-variable" on Apple ARM chips

    o fix the failure of package loading on Apple ARM chips in the R console


CHANGES IN VERSION 1.36.3
-------------------------

    o the output of `hlaPredict(, type="response+prob")` includes dosages

    o new arguments 'ret.dosage', 'ret.postprob', 'max.resolution' and
      'rm.suffix' in `hlaPredMerge()`

    o new arguments 'allele.list' and 'prob.cutoff' in `hlaAlleleToVCF()`
      for more possible outputs

    o `hlaAlleleToVCF()` accepts a list of 'hlaAlleleClass' as the first
      argument: output multiple 'hlaAlleleClass' objects to a single VCF file


CHANGES IN VERSION 1.34.1
-------------------------

    o fix the compiler warning: sprintf is deprecated

    o show "64-bit" correctly when run on Windows


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

    o fix the compiler issue on Mac M1 chip

    o fix the C stack error in RStudio (RStudio tries to capture the internal
      R object structure, but fails in an infinite loop); there is no such
      error when running R in the terminal


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

    o fix the issue on Win32 because of using deprecated
      tbb::task_scheduler_init


CHANGES IN VERSION 1.30.2
-------------------------

    o require GCC >= v8.0 for compiling the AVX-512VPOPCNTDQ intrinsics

    o fix `hlaGDS2Geno()` when loading a SeqArray GDS file


CHANGES IN VERSION 1.30.0
-------------------------

    o add the support of Intel AVX-512VPOPCNTDQ intrinsics (faster than
      AVX512BW)


CHANGES IN VERSION 1.28.0
-------------------------

    o `hlaPredict()` returns the dosage of HLA alleles when
       type="response+dosage", and `hlaPredict()` returns the best guess and
       dosages by default

    o a new option "Pos+Allele" in `hlaPredict()`, `hlaGenoCombine()`,
      `hlaGenoSwitchStrand()`, `hlaSNPID()` and `hlaCheckSNPs()` for matching
      genotypes by positions, reference and alternative alleles; it is
      particularly useful when the training and test set are both matched to
      the same reference genome, e.g., 1000 Genomes Project

    o `hlaGDS2Geno()` supports SeqArray GDS files

    o a new option 'maf' in `hlaAttrBagging()` and `hlaParallelAttrBagging()`

    o 'pos.start' and 'pos.end' are replaced by 'pos.mid' in `hlaFlankingSNP()`
      and `hlaGenoSubsetFlank()`

    o new function `hlaAlleleToVCF()` for converting the imputed HLA classical
      alleles to a VCF file


CHANGES IN VERSION 1.26.1
-------------------------

    o the hlaAttrBagging object can be removed in garbage collection without
      calling `hlaClose()`

    o enable internal GPU API

    o improved multithreaded performance compared with v1.26.0


CHANGES IN VERSION 1.26.0
-------------------------

    o users can interrupt the model building in an interactive R session

    o remove `hlaErrMsg()` since it is never used

    o a new option 'nthread' in `hlaAttrBagging()` as a complement to
      `hlaParallelAttrBagging()`

    o kernel version 1.5: generates the same training model as v1.4,
      but 2-6x faster, by taking advantage of Intel AVX, AVX2 and AVX512
      intrinsics

    o new function `hlaSetKernelTarget()` to automatically select the CPU
      target the algorithm is optimized for


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

    o fix a Win32 compiler issue


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

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


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

    o new function `hlaDistance()`

    o `match.type="Position"` is the default option in `hlaPredict()`


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

    o KIR information in `hlaLociInfo()`

    o new functions `hlaGenoSubsetFlank()` and `hlaLDMatrix()`


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

    o modify the kernel to support the GPU extension

    o add matching proportion to measure the similarity of SNP haplotypes
      between training and test datasets

    o new function `hlaReportPlot()`

    o the argument 'cl' in `predict.hlaAttrBagClass()`, `hlaPredict()` and
      `hlaParallelAttrBagging()` allows a numeric value for the number of cores


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

    o change "hg20" to "hg38" according to the UCSC Genome Browser datasets
      and documentation

    o add "DRB3" and "DRB4" to the HLA gene list


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

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


CHANGES IN VERSION 1.9.0-1.9.3
-------------------------

    o the development version


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

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

    o new arguments 'pos.start' and 'pos.end' in `hlaFlankingSNP()`


CHANGES IN VERSION 1.7.0-1.7.7
-------------------------

    o new functions `hlaCheckAllele()`, `hlaAssocTest()`,
      `hlaConvSequence()` and `summary.hlaAASeqClass()`


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

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


CHANGES IN VERSION 1.5.0-1.5.1
-------------------------

    o increase the test coverage

    o fix an issue when `predict.hlaAttrBagClass(..., allele.check=FALSE)`


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

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


CHANGES IN VERSION 1.3.0-1.3.2
-------------------------

NEW FEATURES

    o support the human genome "hg20"/"hg38"

    o add a new function `hlaGDS2Geno()` to support SNP GDS files (in the
      R/Bioconductor package SNPRelate)

    o `hlaReport()` outputs text with markdown format

SIGNIFICANT USER-VISIBLE CHANGES

    o optimize the calculation of hamming distance using SSE2 and hardware
      POPCNT instructions if available

    o hardware POPCNT: 2.4x speedup for large-scale data, compared to
      the implementation in v1.2.4

    o SSE2 popcount implementation: 1.5x speedup for large-scale data,
      compared to the implementation in v1.2.4

BUG FIXES

    o bug fixes on big-endian machines (like Solaris SPARC, Apple PowerPC)

    o minor fix on random sampling from discrete uniform distribution

    o bug fix if `requireNamespace("HIBAG")` instead of `require(HIBAG)` is
      called from other packages


CHANGES IN VERSION 1.2.1-1.2.4
-------------------------

NEW FEATURES

    o add a new function `hlaOutOfBag()` offering out-of-bag estimation of
      overall accuracy, per-allele sensitivity, etc

    o improve the display of the function `hlaReport()`

SIGNIFICANT USER-VISIBLE CHANGES

    o improve the display of `summary.hlaAlleleClass()`

    o fix warnings in 'R-3.1.1 CMD check'

    o avoid missing values in `hlaFlankingSNP()`

    o add more gene information in `hlaLociInfo()`

BUG FIXES

    o make the C function 'HIBAG_SortAlleleStr' compatible with the
      clang++ compiler on Mac Mavericks


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

NEW FEATURES

    o add a new function `hlaPredMerge()` to merge predictions from multiple
      models via voting

    o add assembly information (like hg19) to the objects of
      'hlaAttrBagClass' and 'hlaAttrBagObj'

    o add a new argument 'stop.cluster' to `hlaParallelAttrBagging()`

    o allow matching SNPs by positions only

    o allow imputing HLA alleles in parallel at a single locus

SIGNIFICANT USER-VISIBLE CHANGES

    o optimize the C code: replace some intensive 'exp' and 'log'
      calculations by precalculated values, roughly 2.5x ~ 4x speedup

    o optimize the C code of the hamming distance calculation between
      genotypes and two haplotypes by SSE2 intrinsics, ~50% faster
      for large datasets

    o the code optimization guarantees the same training and predictive
      accuracies as version 1.1.0

    o remove unused row names in the function `hlaCompareAllele()`

    o improve the function `hlaPublish()`

    o improve vignettes and documents


CHANGES IN VERSION 1.1.0
-------------------------

NEW FEATURES

    o add genome assembly information (such like hg18, hg19)

    o allow class majority voting in `predict.hlaAttrBagClass()`

    o add an autosave function to `hlaParallelAttrBagging()`

    o add a new function `hlaPublish()`

    o allow additional information in the objects of 'hlaAttrBagClass' and
      'hlaAttrBagObj'

SIGNIFICANT USER-VISIBLE CHANGES

    o update citation information

    o change `hlaModelfromObj()` to `hlaModelFromObj()` (a typo)

    o improvement in mismatching alleles for allelic strands


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

SIGNIFICANT USER-VISIBLE CHANGES

    o increase the limit of the possible number of SNPs in a single
      classifier up to 256

BUG FIXES

    o use `useDynLib()` in NAMESPACE instead of 'library.dynam()' since
      R-Ext strongly suggests to use `useDynLib()`

    o update citation information

    o add a vignette


CHANGES IN VERSION 0.9.2-0.9.4
-------------------------

NEW FEATURES

    o add a load balancing function to `hlaParallelAttrBagging()`

    o add `hlaUniqueAllele()`

    o add an argument 'match.pos' to the functions `predict.hlaAttrBagClass()`,
      `hlaGenoCombine()`, `hlaGenoSwitchStrand()`

    o add an argument 'with.pos' to the function `hlaSNPID()`

SIGNIFICANT USER-VISIBLE CHANGES

    o give more warnings about missing SNPs in `predict.hlaAttrBagClass()`

    o a warning is given for strand mismatching when calling
      `hlaGenoSwitchStrand()`

BUG FIXES

    o bug fix: passing only one individual to `predict.hlaAttrBagClass()`

    o avoid the segmentation fault in `predict.hlaAttrBagClass()`
      when all SNPs are missing.


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

    o first release of HIBAG in July, 2012
