• new feature: ZIPLN (PLN with zero inflation) for standard PLN and PLN Network
    • ZIPLN() and ZIPLNfit-class to allow for zero-inflation in the standard PLN model (merge PR #116)
    • ZIPLNnetwork() and ZIPLNfit_sparse-class to allow for zero-inflation in the PLNnetwork model (merge PR #118)
    • Code factorization between PLNnetwork and ZIPLNnetwork (and associated classes)
  • fix inconsistency between fitted and predict (merge PR #115)
  • Update documentation of PLN*_param() functions to include torch optimization parameters
  • Add (somehow) explicit error message when torch convergence fails
  • Change initialization in variance_jackknife() and variance_bootstrap() to prevent estimation recycling, results from those functions are now comparable to doing jackknife / bootstrap “by hand”.
  • Merge PR #110 from Cole Trapnell to add:
    • bootstrap estimation of the variance of model parameter
    • improved interface for model initialization / optimisation parameters, which are now passed on to jackknife / bootstrap post-treatments
    • better support of GPU when using torch backend
  • Change behavior of predict() function for PLNfit model to (i) return fitted values if newdata is missing or (ii) perform one VE step to improve fit if responses are provided (fix issue #114)
  • changed initial value in optim for variational variance (1 -> 0.1) in VE-step of PLN and PLNPCA
  • fix sign in objective of VE_step for PLN with full covariance Issue #100
  • add a scale argument compute_offset() to force the offsets (RLE, CSS, GMPR, Wrench) to be on the same scale as the counts, like TSS.
  • add a new “TMM” for compute_offset()
  • fix nb_param for PLNLDA, which caused wrong BIC/ICL and erratic model selection
  • fix minor issues #102, #103 plus some others
  • fix package file documentation as suggested in https://github.com/r-lib/roxygen2/issues/1491
  • higher tolerance on a single test (among 700) that fails on the ‘noLD’ additional architecture on CRAN (tests without long double)
  • changed initial value in optim for variational variance (1 -> 0.1), which caused failure in some cases
  • fix bug when using inception in PLNnetwork()
  • starting handling of missing data
  • slightly faster (factorized) initialization for PCA
  • fix in the use of future_lapply which used to make post-Treatments in PLNPCA last for ever with multicore in v1.0.0…
  • prevent use of bootstrap/jackknife when not appropriate
  • fix bug in PLNmixture() when the sequence of cluster numbers (clusters) is not of the form 1:K_max
  • use bibentry to replace citEntry in CITATION

Breaking changes

  • interface for controlling the fits now use list generated by dedicated functions
    • PLN_param() for PLN
    • PLNLDA_param() for PLNLDA
    • PLNnetwork_param() for PLNnetwork
    • PLNPCA_param() for PLNPCA
    • PLNmixture_param() for PLNmixture The use of ‘control = list()’ is deprecated: the code stop and send an error.
  • The regression coefficients are now denoted by B, not Theta, such as B = t(Theta). We keep on sending back Theta as a field of myPLNmodelparTheta, but this will soon be deprecated

New features

  • added Barents fish data set
  • support for PLN when (inverse) covariance is known/fixed
  • estimator of the variance of the model parameters
    • integration of sandwich estimator of the variance-covariance of Theta when Sigma is fixed
    • variational estimation of the variance-covariance based on variational approximation of the Fisher information
    • jackknife estimation of the variance of Theta and Sigma
    • bootstrap estimation of the variance of Theta and Sigma
  • handle list of penalty weights in PLNnetwork
  • first support for torch optimizers (for PLN and PLNLDA)

Bug fixes

  • fix in objective functions of ve_step of standard PLN models
  • fix in objective functions of main of standard PLN models
  • fix expression of ELBO in VEstep, related to #91
  • typos and regeneration of documentation( HTML5)
  • added an S3 method predict_cond to perform conditional predictions
  • fix #89 bug by forcing an intercept in PLNLDA() and changing extract_model() to conform with model.frame()
  • fix wrong use of all.equal
  • fix linking problem in new version of nloptr (>=2.0.0)
  • fixing #79 by using the same variational distribution to approximate the spherical case as in the fully parametrized and diagonal cases
  • faster examples and build for vignettes
  • additional R6 method $VEStep() for PLN-PCA, dealing with low rank matrices
  • additional R6 method $project() for PLN-PCA, used to project newdata into PCA space
  • use future_lapply in PLNmixture_family
  • remove a NOTE due to a DESeq2 link and a failure on solaris on CRAN machines
  • some bug fixes
  • use future_lapply in PLNPCA, PLNmixture and stability_selection (plan must be set by the user)
  • bug fix in prediction for PLN-LDA
  • bug fix in gradients of PLN-network and PLN-spherical
  • suppressing method $latent_pos() which is equivalent to active binding $latent
  • finalizing integration of PLNmixture (in particular faster smoothing)
  • added an argument ‘reverse’ to the plot methods for criteria, so that users can get their “usual” BIC definition (-2 loglik)
  • support for covariates in PLNmixture (spherical, diagonal, full)
  • more support for PLNmixture (S3/R6 methods, vignette)
  • Rewriting C++ by merging modern_cpp to dev, thanks to François Gindraud
  • various bug fixes in offset
  • less verbose about R squared when questionable
  • correction in BIC/ICL for PLNPCA
  • Enhanced vignettes for PLNPCA and PLNmixture
  • Add compatibility with factoextra for PLNPCA
  • Add development version of PLNmixture
  • add type = “poscounts” option to RLE normalization
  • added wrench normalization to the list of available offsets
  • added the oaks data set from Jakuschkin et al (2016)
  • Correction in likelihood of diagonal PLN
  • amending test-pln to fulfill CRAN request (error on ATLAS variant of BLAS…)
  • Refactor code of R6 classes to benefit from Roxygen 7.0.0 R6-related new features for documentation
  • Change name of variational variance parameters to S2 (used to be S)
  • use spell_check to check spelling, found many typos
  • Change in optimization for all PLN models (PLNs, PCA, LDA, networks): solving in S such that S = S² for the variational parameters, thus avoiding lower bound and constrained optimization. Slightly finer results/estimations for similar computational cost, but easier to maintain.
  • Fix bug in predict() methods when factor levels differ between train and test datasets.
  • Fix bug in PLNPCAfit S3 plot() method
  • Some simplification in C++ code
  • correction/changes in PLN likelihoods? + added constant terms in all likelihoods of all PLN models
  • VEstep now available for all model of covariance in PLN (full, diagonal, spherical)
  • removed any use of rmarkdown::paged_table() in the vignettes
  • added screenshot.force = FALSE, in knitr options in the vignettes
  • removing dependencies to bioconductor packages, too cumbersome to maintain on CRAN
  • correction in test to comply new class of matrix object
  • added the possibility for matrix of weights for the penalty in PLNnetworks
  • various bug fixes
  • Use nloptr to prepare CRAN release
  • Enhancement in PLNLDA
  • Preparing first CRAN release
  • Added a NEWS.md file to track changes to the package.