Changes in version 1.12.20 - Check that parameters ind.row/ind.col are not NULL. Changes in version 1.12.18 (2024-11-26) - Cope with new PLINK2 URLs in download_plink2(). Changes in version 1.12.17 - Now properly errors when ncol(G) != length(infos.chr) in snp_clumping(). Also when nrow(gwas) != length(infos.chr) in snp_manhattan(). Changes in version 1.12.16 - Add function snp_projectSelfPCA() (only bed_projectSelfPCA() existed). Changes in version 1.12.14 - Add a new min.maf = 0.02 parameter to snp_autoSVD() and bed_autoSVD(). Then variants are now discarded when they have either a small MAC or a small MAF. Changes in version 1.12.13 - Can now use matrix accessors for class bed_light as well. Changes in version 1.12.12 - Minor improvements to snp_autoSVD() and bed_autoSVD(): - error when min.mac = 0, - return a better attr(, "lrldr"). Changes in version 1.12.11 - In functions snp_autoSVD() and bed_autoSVD(), now perform the MAC thresholding before the clumping step. This reordering should not change results, but this should be faster now. Changes in version 1.12.10 - In function snp_ancestry_summary(), add parameter sum_to_one to optionally allows for ancestry coefficients to have a sum lower than 1 (when FALSE; default is TRUE). Changes in version 1.12.9 - In function snp_modifyBuild(), you can now provide local_chain as a vector of two, for when using check_reverse. You can now also modify the base_url from where to download the chain files. Changes in version 1.12.8 - In function snp_ancestry_summary(), now also report correlations between input frequencies and each reference frequencies as well as predicted frequencies. Also add a new parameter min_cor to error when the latter correlation is too small. Changes in version 1.12.7 - In function snp_modifyBuild(), fix a ftp broken link, and add the possibility to use a local chain file specified by the new parameter local_chain. Changes in version 1.12.6 - Fix issue with snp_subset() when either $fam or $map are missing. Changes in version 1.12.5 - Add function snp_asGeneticPos2() (and download_genetic_map()) where you can provide any reference genetic map as a data frame. This function uses linear interpolation to transform physical positions (in bp) to genetic positions (in cM). Changes in version 1.12.4 - Add parameter p_bounds in LDpred2-auto to provide bounds for the estimate of the polygenicity p. Changes in version 1.12.3 - Fix sampling issue of snp_simuPheno() when length(ind.possible) is 1. Changes in version 1.12.2 (2023-03-28) - Implement matrix accessors [,] for bed objects. Changes in version 1.12.1 - Use a safer detection of strong divergences in LDpred2 and lassosum2. Changes in version 1.12.0 - Add new parameter ind.corr to snp_lassosum2(), snp_ldpred2_grid() and snp_ldpred2_auto() to be able to use a subset of corr without making a copy of it. - Add new parameter ind.beta to snp_ldsc2() to use a subset of the full LD scores corresponding to df_beta. Changes in version 1.11.12 - Add new parameter pos_scaled to snp_ldsplit(). Changes in version 1.11.11 - Fix C++ code that used integers to store the positions for clumping. Changes in version 1.11.10 - Add other architectures (AMD / ARM) as options for PLINK2. Changes in version 1.11.9 - Add option use_MLE in LDpred2-auto to allow, when using FALSE, for running LDpred2-auto as in previous versions (e.g. v1.10.8), which did not include alpha in the model. Default is TRUE. Changes in version 1.11.8 - Detect strong divergence in LDpred2-auto, and return missing values in that case. Changes in version 1.11.7 - Fix font rendering issue of >= in subtitle of snp_manhattan(). Changes in version 1.11.5 - Autocomplete PLINK builds to be downloaded (fix #383). Changes in version 1.11.4 (2022-10-21) - Extend and improve LDpred2-auto to allow for estimating $h^2$, $p$, and $\alpha$, a new third parameter that controls how expected effect sizes relate to minor allele frequencies. Changes in version 1.11.3 - Can now run snp_ldsc2() with corr as an SFBM. Changes in version 1.11.2 - Now use a sparse format for sampling betas returned in LDpred2-auto, instead of a dense matrix that could require quite some memory to store. Changes in version 1.11.0 - Add two new parameters to snp_simuPheno(): alpha and prob. Changes in version 1.10.7 - Fix a liftOver error in snp_modifyBuild(). Changes in version 1.10.6 - Better snp_ldsplit(): - also return $cost2, the sum of squared sizes of the blocks, - for equivalent splits (with the same cost), now return the one that also minimizes cost2, - now return unique splits only (e.g. could get equivalent splits with different max_size). Changes in version 1.10.5 - Slightly change the default parameters of lassosum2: - delta from c(0.001, 0.005, 0.02, 0.1, 0.6, 3) to c(0.001, 0.01, 0.1, 1), - nlambda from 20 to 30, - maxiter from 500 to 1000. - Add a penalty multiplicative factor for delta and lambda to regularize variants with smaller GWAS sample sizes more (when they are different, as in meta-analyses with different sets of variants). Changes in version 1.10.4 - Now use the same updating strategy for residuals in LDpred2 as in lassosum2. This can make LDpred2-grid and LDpred2-auto an order of magnitude faster, especially for small p. Changes in version 1.10.2 - Better snp_modifyBuild(): more variants should be mapped + add some QC on the mapping (a position is not mapped to more than one, the chromosome is the same, and possibly check whether we can go back to the initial position -> cf. https://doi.org/10.1093/nargab/lqaa054). Changes in version 1.10.1 - Add two new parameters to snp_ldsplit(): max_r2, the maximum squared correlation allowed outside blocks, and max_cost, the maximum cost of reported solutions (i.e. the sum of all squared correlations outside blocks). Using max_r2 offers an extra guarantee that the splitting is very good, and makes the function much faster by discarding lots of possible splits. Changes in version 1.10.0 - LDpred2-grid does not use OpenMP for parallelism anymore, it now simply uses multiple R processes. - LDpred2-grid and LDpred2-auto can now make use of set.seed() to get reproducible results. Note that LDpred2-inf and lassosum2 do not use any sampling. Changes in version 1.9.13 - Enforce scipen = 50 when writing files to turn off scientific format (e.g. for physical positions stored as double). Changes in version 1.9.8 - Fix an issue in snp_readBGI() when using an outdated version of package {bit64}. Changes in version 1.9.7 - snp_cor() and bed_cor() now use less memory. Changes in version 1.9.5 - Remove parameter info from snp_cor() and bed_cor() because this correction is not useful after all. - snp_cor() and bed_cor() now return NaNs when e.g. the standard deviation is 0 (and warn about it). Before, these values were not reported (i.e. treated as 0). Changes in version 1.9.4 - You can now return information on all variants with snp_readBGI(). Changes in version 1.9.3 - Fix snp_manhattan() when non-ordered (chr, pos) are provided. Changes in version 1.9.2 - Enhance function snp_ancestry_summary() by allowing to estimate ancestry proportions after PCA projection (instead of directly using the allele frequencies). Changes in version 1.9.1 - Add function bed_cor() (similar to snp_cor() but with bed files/objects directly). - Add functions snp_ld_scores() and bed_ld_scores(). Changes in version 1.9.0 - Add function snp_ancestry_summary() to estimate ancestry proportions from a cohort using only its summary allele frequencies. Changes in version 1.8.11 - Add function snp_scaleAlpha(), which is similar to snp_scaleBinom(), but has a parameter alpha that controls the relation between the scaling and the allele frequencies. Changes in version 1.8.10 - Function snp_cor() now also uses the upper triangle (@uplo = "U") when the sparse correlation matrix is diagonal, so that it is easier to use with e.g. as_SFBM(). Changes in version 1.8.9 - Add parameter type in snp_asGeneticPos() to also be able to use interpolated genetic maps from here. Changes in version 1.8.8 - Add parameter return_flip_and_rev to snp_match() for whether to return internal boolean variables "_FLIP_" and "_REV_". Changes in version 1.8.7 - Add $perc_kept in the output of snp_ldsplit(), the percentage of initial non-zero values kept within the blocks defined. Changes in version 1.8.6 - Faster snp_prodBGEN(). Changes in version 1.8.5 - Add function snp_prodBGEN() to compute a matrix product between BGEN files and a matrix (or a vector). This removes the need to read an intermediate FBM object with snp_readBGEN() to compute the product. Moreover, when using dosages, they are not rounded to two decimal places anymore. Changes in version 1.8.4 - Trade new parameter num_iter_change for a simpler allow_jump_sign. - Change defaults in LDpred2-auto to use 500 burn-in iterations (was 1000 before) followed by 200 iterations (500 before). Such a large number of iterations is usually not really needed. Changes in version 1.8.2 - Prepare for incoming paper on (among other things) improved robustness of LDpred2-auto: - add parameter shrink_corr to shrink off-diagonal elements of the LD matrix, - add parameter num_iter_change to control when starting to shrink the variants that change sign too much, - also return corr_est, the "imputed" correlations between variants and phenotypes, which can be used for post-QCing variants by comparing those to beta / sqrt(n_eff * beta_se^2 + beta^2). Changes in version 1.8.0 - Replace parameter s by delta in snp_lassosum2(). This new parameter delta better reflects that the lassosum model also uses L2-regularization (therefore, elastic-net regularization). - Now detect strong divergence in lassosum2 and LDpred2-grid, and return missing values for the corresponding effect sizes. Changes in version 1.7.4 - Now use a better formula for computing standard errors in snp_ldsc() when using blocks with different sizes. Changes in version 1.7.3 - Add parameter info to snp_cor() to correct correlations when they are computed from imputed dosage data. Changes in version 1.7.2 - Function snp_readBGEN() now also returns frequencies and imputation INFO scores. Changes in version 1.7.1 - Add parameter rsid to snp_asGeneticPos() to also allow matching with rsIDs. Changes in version 1.7.0 - Add function snp_lassosum2() to train the lassosum models using the exact same input data as LDpred2. Changes in version 1.6.7 - Add parameter report_step in snp_ldpred2_auto() to report some of the internal sampling betas. Changes in version 1.6.6 - Fix crash in snp_readBGEN() when using BGEN files containing ~. Changes in version 1.6.5 - Add parameter thr_r2 in snp_cor(). Changes in version 1.6.4 - Remove penalization in snp_ldsplit(). Instead, report the best splits for a range of numbers of blocks desired. Changes in version 1.6.3 - Penalization in snp_ldsplit() now makes more sense. Also fix a small bug that prevented splitting the last block in some cases. Changes in version 1.6.2 - Add function snp_ldsplit() for optimally splitting variants in nearly independent blocks of LD. Changes in version 1.6.1 (2021-01-11) - Add option file.type = "--gzvcf" for using gzipped VCF in snp_plinkQC(). Changes in version 1.6.0 - Finally remove function snp_assocBGEN(); prefer reading small parts with snp_readBGEN() as a temporary bigSNP object and do the association test with e.g. big_univLinReg(). Changes in version 1.5.7 - Add function snp_thr_correct() for correcting for winner's curse in summary statistics when using p-value thresholding. Changes in version 1.5.6 - Use a better formula for the scale in LDpred2, useful when there are some variants with very large effects (e.g. explaining more than 10% phenotypic variance). - Simplify LDpred2; there was not really any need for initialization and ordering of the Gibbs sampler. Changes in version 1.5.5 - Add option return_sampling_betas in snp_ldpred2_grid() to return all sampling betas (after burn-in), which is useful for assessing the uncertainty of the PRS at the individual level (see https://doi.org/10.1101/2020.11.30.403188). Changes in version 1.5.1 - Add multiple checks in snp_readBGEN() to make sure of the expected format. Changes in version 1.5.0 - Add function snp_fst() for computing Fst. Changes in version 1.4.11 - Workaround for error could not find function "ldpred2_gibbs_auto". Changes in version 1.4.8 - Add option sparse to enable getting also a sparse solution in LDpred2-auto. Changes in version 1.4.6 - Fasten snp_match(). Also now remove duplicates by default. Changes in version 1.4.3 - Fix a bug when using very large correlation matrices in LDpred2 (although we do not recommend to do so). Changes in version 1.4.2 - All 3 LDpred2 functions now use an SFBM as input format for the correlation matrix. - Allow for multiple initial values for p in snp_ldpred2_auto(). - Add function coef_to_liab() for e.g. converting heritability to the liability scale. Changes in version 1.4.1 - Change default of parameter alpha of function snp_cor() to 1. Changes in version 1.4.0 - Add functions snp_ldpred2_inf(), snp_ldpred2_grid() and snp_ldpred2_auto() for running the new LDpred2-inf, LDpred2-grid and LDpred2-auto. - Add functions snp_ldsc() and snp_ldsc2() for performing LD score regression. - Add function snp_asGeneticPos() for transforming physical positions to genetic positions. - Add function snp_simuPheno() for simulating phenotypes. Changes in version 1.3.1 - Also use OpenMP for the parallelization of snp_pcadapt(), bed_pcadapt(), snp_readBGEN() and snp_fastImputeSimple(). Changes in version 1.3.0 (2020-03-09) - Parallelization of clumping algorithms has been modified. Before, chromosomes were imputed in parallel. Now, chromosomes are processed sequentially, but computations within each chromosome are performed in parallel thanks to OpenMP. This should prevent major slowdowns for very large samples sizes (due to swapping). - Use OpenMP to parallelize other functions as well (possibly only sequential until now). Changes in version 1.2.6 - Can now run snp_cor() in parallel. - Parallelization of snp_fastImpute() has been modified. Before this version, chromosomes were imputed in parallel. Now, chromosomes are processed sequentially, but computation of correlation between variants and XGBoost models are performed using parallelization. Changes in version 1.2.5 - Add function snp_subset() as alias of method subset() for subsetting bigSNP objects. Changes in version 1.2.4 - Use new class bed_light internally to make parallel algorithms faster because they have to transfer less data to clusters. Also define differently functions used in big_parallelize() for the same reason. Changes in version 1.2.0 - Use the new implementation of robust OGK Mahalanobis distance in {bigutilsr}. Changes in version 1.1.1 - Fix error object 'obj.bed' not found in snp_readBed2(). Changes in version 1.1.0 - Cope with new read-only option in {bigstatsr} version >= 1.1. Changes in version 1.0.2 - Add option backingfile to subset.bigSNP(). Changes in version 1.0.1 - Add option byrow to bed_counts(). Changes in version 1.0.0 - Add memory-mapping on PLINK (.bed) files with missing values + new functions: - bed() - bed_MAF() - bed_autoSVD() - bed_clumping() - bed_counts() - bed_cprodVec() - bed_pcadapt() - bed_prodVec() - bed_projectPCA() - bed_projectSelfPCA() - bed_randomSVD() - bed_scaleBinom() - bed_tcrossprodSelf() - download_1000G() - snp_modifyBuild() - snp_plinkKINGQC() - snp_readBed2() - sub_bed() - Add 3 parameters to autoSVD(): alpha.tukey, min.mac and max.iter. - Remove option for changing ploidy (that was only partially supported). - Automatically apply snp_gc() to pcadapt. Changes in version 0.12.0 - Add snp_fastImputeSimple(): fast imputation via mode, mean or sampling according to allele frequencies. Changes in version 0.11.3 - Fix a bug in snp_readBGEN() that could not handle duplicated variants or individuals. Changes in version 0.11.1 - When using snp_grid_PRS(), it now stores not only the FBM, but also the input parameters as attributes (the whole result basically). Changes in version 0.11.0 - Add 3 SCT functions snp_grid_*() to improve from Clumping and Thresholding (preprint coming soon). - Add snp_match() function to match between summary statistics and some SNP information. Changes in version 0.10.2 - Parameter is.size.in.bp is deprecated. Changes in version 0.10.1 - Add parameter read_as for snp_readBGEN(). It is now possible to sample BGEN probabilities as random hard calls using read_as = "random". Default remains reading probabilities as dosages. Changes in version 0.10.0 - For memory-mapping, now use mio instead of boost. - snp_clumping() (and snp_autoSVD()) now has a size that is inversely proportional to thr.r2. - snp_pruning() is deprecated (and will be removed someday); now always use snp_clumping(). Changes in version 0.9.0 - When reading bed files, switch reading of Os and 2s to be consistent with other software. Changes in version 0.8.2 - Add function snp_assocBGEN() for computing quick association tests from BGEN files. Could be useful for quick screening of useful SNPs to read in bigSNP format. This function might be improved in the future. Changes in version 0.8.1 - Change url to download PLINK 1.9. Changes in version 0.8.0 - Add function snp_readBGEN() to read UK Biobank BGEN files in bigSNP format. Changes in version 0.7.0 - Add parameter is.size.in.bp to snp_autoSVD() for the clumping part. - Change the threshold of outlier detection in snp_autoSVD() (it now detects less outliers). See the documentation details if you don't have any information about SNPs. Changes in version 0.6 - Use a better strategy for appending to an SFBM ($add_columns()). - Keep up with {bigstatsr}. Changes in version 0.5 - New compact format for SFBMs which should be really useful for LDpred2 (should require about half of memory and be twice as fast). The only thing that you need to change is as_SFBM(corr0, compact = TRUE). Make sure to reinstall {bigsnpr} after updating to {bigsparser} v0.5. Changes in version 0.4.1 - Faster cross-product with an SFBM, which should make all LDpred2 models faster. - Also return $postp_est, $h2_init and $p_init in LDpred2-auto. Changes in version 0.4.0 - Can now directly do as_SFBM(corr0) instead of bigsparser::as_SFBM(as(corr0, "dgCMatrix")). This should also use less memory and be faster. Changes in version 0.3.1 - Provide function snp_gene (as a gist) to get genes corresponding to 'rs' SNP IDs thanks to package {rsnps} from rOpenSci. See README. Changes in version 0.3.0 - Faster as_SFBM(). - Allow for format 01 or 1 for chromosomes in BGI files. - Package {bigsnpr} is published in Bioinformatics. Changes in version 0.2.7 - Faster defaults + possibility to estimate correlations based on a subset of individuals for snp_fastImpute. Also store information in an FBM (instead of a data frame) so that imputation can be done by parts (you can stop the imputation by killing the R processes and come back to it later). Note that the defaults used in the Bioinformatics paper were alpha = 0.02 and size = 500 (instead of 1e-4 and 200 now, respectively). These new defaults are more stringent on the SNPs that are used, which makes the imputation faster (30 min instead of 42-48 min), without impacting accuracy (still 4.7-4.8% of errors). Changes in version 0.2.5 - This package won't be on CRAN. (Okay, it has been back on CRAN since; I was just pissed at BR :D) Changes in version 0.2.4 (2018-02-01) - No longer download PLINK automatically (because it is a CRAN policy violation).