Changelog
Source:NEWS.md
dgpsi 2.4.0-9000 (development version)
- Training times for DGP emulators are now approximately 30%-40% faster.
- The computation of (D)GP predictions and Leave-One-Out (LOO) evaluations is now 6-7 times faster.
- The
nb_parallel
argument has been removed from relevant functions, as multi-threading is now integrated by default. - A Vecchia approximation, implemented under the SI framework, is now available across all functions to support large-scale emulations.
- Two new functions,
get_thread_num()
andset_thread_num()
, allow users to inspect and adjust the number of threads used for multi-threaded computations. - A new function,
set_vecchia()
, enables users to easily add or remove the Vecchia approximation for GP, DGP, or linked (D)GP emulators. - Documentation now includes lifecycle status badges to highlight deprecated and newly introduced functions and arguments.
- The default value of the
nugget
parameter in DGP emulators with likelihood layers has been adjusted from1e-6
to1e-4
. - A
Categorical
likelihood option has been added to thedgp()
function’slikelihood
argument, enabling DGP-based classification. - An issue related to the
LD_LIBRARY
environment variable on Linux systems has been resolved via theinit_py()
function. - The
lgp()
function has been enhanced to accept connection information among emulators in the form of a data frame, streamlining linked emulation setup. - A new function,
set_id()
, allows users to assign unique IDs to emulators. - The
plot()
function has been updated to generate validation plots for DGP classifiers (i.e., DGP emulators with categorical likelihoods). - The
summary()
function has been redesigned to provide visualizations of structure and model specifications for (D)GP and linked (D)GP emulators. - A
sample_size
argument has been added to thevalidate()
andplot()
functions, allowing users to adjust the number of samples used for validation when the validation method is set tosampling
. - The following functions are deprecated as of this version and will be removed in the next release:
combine()
,set_linked_idx()
,kernel()
,Poisson()
,Hetero()
, andNegBin()
. These functions are no longer maintained. Please refer to the updated package documentation for alternative workflows. - The basic node functions
kernel()
,Hetero()
,Poisson()
, andNegBin()
, along with thestruc
argument in thegp()
anddgp()
functions, have been deprecated as of this version and will be removed in the next release. Customization of (D)GP specifications can be achieved by modifying the other arguments ingp()
anddgp()
. - Additional vignettes are available, showcasing large-scale DGP emulation and DGP classification.
dgpsi 2.4.0
CRAN release: 2024-01-14
- One can now use
design()
to implement sequential designs usingf
and a fixed candidate set passed tox_cand
withy_cand = NULL
. - The sizes of
.pkl
files written bywrite()
are significantly reduced. - One can now set different kernel functions to nodes in different layers in a DGP emulator by passing a vector of kernel function names to
name
argument ofdgp()
. - The default number of imputations
B
indgp()
andlgp()
is changed to10
for faster validations and predictions. - The default method for sequential designs in
design()
is changed tovigf()
. - A new argument
new_wave
is added todesign()
to allow users to resume sequential designs with or without a separate wave. - A bug in
vigf()
is fixed whenobject
is an instance of thebundle
class andbatch_size
is greater than one. - Static and dynamic pruning of DGP structures are implemented in
prune()
anddesign()
(via the new argumentspruning
andcontrol
) respectively. - Some redundant codes are removed from
update()
which makesdesign()
slightly faster. -
limits
argument indesign()
is now required whenx_cand
is not supplied to avoid under-sampling using the limits inferred from the training data. -
design()
now supportsf
that produceNA
as outputs. This is useful to prevent the sequential design from stopping due to errors orNA
outputs from a simulator at some input locations identified by the sequential design process. - A bug is fixed in
design()
whenx_cand
is supplied and the input dimension is one. -
alm()
,mice()
,pei()
, andvigf()
now accept separate candidate sets (even with different number of candidate points) viax_cand
for bundle emulators. - A slot called
id
is added to instances ofgp
,dgp
,lgp
, andbundle
classes to uniquely identify the emulators.id
can also be passed to instances ofgp
,dgp
,lgp
, andbundle
classes by the newid
argument ingp()
,dgp()
,lgp()
, andpack()
. -
pack()
can now accept a list of (D)GP emulators as the input. - The
check_point
argument is removed fromdesign()
and replaced byautosave
. - Automatic saving of emulators during the sequential design is added to
design()
through the new argumentautosave
. - When a customized evaluation function is provided to
design()
viaeval
, the design information in previous waves will be retained as long as the previous waves of the sequential design also use customized evaluation functions. If different customized evaluation functions are supplied todesign()
in different waves, the trace plot of RMSEs produced bydraw()
will show RMSEs from different evaluation functions in different waves. - One can now link the same emulator multiple times in a chain via
lgp()
by setting different linking information for the emulator viaset_linked_idx()
. - Updates of documentations and vignettes.
dgpsi 2.3.0
CRAN release: 2023-09-03
- A bug from the underlying Python implementations is fixed when
name = 'matern2.5'
ingp()
anddgp()
. - Thanks to @yyimingucl, a bug from the underlying Python implementations for the MICE sequential design criterion
mice()
is fixed. - An argument
reset
is added toupdate()
anddesign()
to reset hyperparameters of a (D)GP emulator to their initial values (that were specified when the emulator is initialized) after the input and output of the emulator are updated and before the emulator is refitted. This argument can be useful for sequential designs in cases where the hyperparameters of a (D)GP emulator get caught in suboptimal estimates. In such circumstances, one can setreset = TRUE
to reinitialize the (D)GP emulator in some steps of the sequential designs as a strategy to escape the poor estimates. - The refitting of an emulator in the final step of a sequential design is no longer forced in
design()
. - An argument
type
is added toplot()
to allow users to draw OOS validation plots with testing data shown as a line instead of individual points when the emulator’s input is one-dimensional andstyle = 1
. - Thanks to @tjmckinley, an issue relating to
libstdc++.so.6
on Linux machines when R is restarting after the installation of the package is fixed. -
alm()
andmice()
can locate new design points for stochastic simulators with (D)GP or bundle emulators that can deal with stochastic outputs. -
design()
can be used to construct (D)GP or bundle emulators adaptively by utilizing multiple realizations from a stochastic simulator at the same design positions through the new argumentreps
whenmethod = alm
ormethod = mice
. - A new slot called
specs
is added to the objects returned bygp()
anddgp()
that contains the key information of the kernel functions used in the constructions of GP and DGP emulators. - Due to a bug in the latest version of an underlying Python package, the emulators saved by
write()
in version2.1.6
and2.2.0
may not work properly withupdate()
anddesign()
when they are loaded back byread()
in this version. This bug has been addressed in this version so emulators saved in this version would not have the compatibility issue in future version. - A new sequential design criterion, called the Variance of Improvement for Global Fit (VIGF), is added to the package with the function
vigf()
. - The sampling from an existing candidate set
x_cand
indesign()
is changed from a random sampling to a conditioned Latin Hypercube sampling inclhs
package. - The python environment is now automatically installed or invoked when a function from the package is executed. One does not need to run
init_py()
to activate the required python environment butinit_py()
is still useful to re-install and uninstall the underlying python environment. Averb
argument is added toinit_py()
to switch on/off the trace information.
dgpsi 2.2.0
CRAN release: 2023-06-05
- The efficiency and speed of imputations involved in the training and predictions of DGP emulators are significantly improved (achieving roughly 3x faster training and imputations) by utilizing blocked Gibbs sampling that imputes latent variables layer-wise rather than node-wise. The blocked Gibbs sampling is now the default method for DGP emulator inference and can be changed back to the old node-wise approach by setting
blocked_gibbs = FALSE
indgp()
. - One can now optimize GP components that are contained in the same layer of a DGP emulator in parallel during the DGP emulator training, using multiple cores by setting the new argument
cores
indgp()
. This option is useful and can accelerate the training speed when the input dimension is moderately large (in which case there is a large number of GP components to be optimized) and the optimization of GP components is computationally expensive, e.g., whenshare = FALSE
in which case input dimensions to individual GP components have different lengthscales. - Thanks to @tjmckinley, a bug in
update()
when theobject
is an instance of thedgp
class (that has been trimmed bywindow()
) is fixed. - Thanks to @tjmckinley, some R memory issues due to the underlying Python implementations are rectified.
-
set_seed()
function is added to ensure reproducible results from the package. - A bug is fixed when candidate sets
x_cand
andy_cand
are provided todesign()
. - One can choose different color palettes using the new argument
color
inplot()
whenstyle = 2
. -
set_linked_idx()
allows constructions of different (D)GP emulators (in terms of different connections to the feeding layers) from a same (D)GP emulator.
dgpsi 2.1.6
CRAN release: 2023-02-08
- A bug is found in multi-core predictions in
predict()
whenobject
is an instance oflgp
class andx
is a list. This bug has been fixed in this version. - Thanks to @tjmckinley, an issue (
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.30' not found
) encountered in Linux machines is fixed automatically during the execution ofinit_py()
. -
gp()
anddgp()
allow users to specify the value of scale parameters and whether to estimate the parameters. -
gp()
anddgp()
allow users to specify the bounds of lengthscales. - The jointly robust prior (Gu, 2019) is implemented as the default inference approach for GP emulators in
gp()
. - The default value of
lengthscale
ingp()
is changed from0.2
to0.1
, and the default value fornugget
ingp()
is changed from1e-6
to1e-8
ifnugget_est = FALSE
. - One can now specify the number of GP nodes in each layer (except for the final layer) of a DGP emulator via the
node
argument indgp()
. - Training data are now contained in the S3 classes
gp
anddgp
. - The RMSEs (without the min-max normalization) of emulators are now contained in the S3 classes
gp
,dgp
, andlgp
after the execution ofvalidate()
. -
window()
function is added to trim the traces and obtain new point estimates of DGP model parameters for predictions. - The min-max normalization can now be switched off in
plot()
by setting the value ofmin_max
. - The default number of imputations
B
fordgp()
is changed from50
to30
to better balance the uncertainty and the speed of DGP emulator predictions. A new functionset_imp()
is made available to change the number of imputations of a trained DGP emulator so one can either achieve faster predictions by further reducing the number of imputations, or account for more imputation uncertainties by increasing the number of imputations, without re-training the emulator. - The default number of imputations
B
forcontinue()
is set toNULL
, in which case the same number of imputations used inobject
will be applied. -
nugget
argument ofdgp()
now specifies the nugget values for GP nodes in different layers rather than GP nodes in the final layer. - The speed of predictions from DGP emulators with squared exponential kernels is significantly improved and is roughly 3x faster than the implementations in version
2.1.5
. - The implementation of sequential designs (with two vignettes) of (D)GP emulators using different criterion is made available.
- Thanks to @tjmckinley, an internal reordering issue in
plot()
is fixed. -
init_py()
now allows users to reinstall and uninstall the underlying Python environment. - A bug that occurs when a linked DGP emulator involves a DGP emulator with external inputs is fixed.
-
Intel SVML
will now be installed with the Python environment automatically for Intel users for faster implementations.