Skip to content

Commit 41c3615

Browse files
edaubots22nbarlowATIUbuntu
authored
v0.5.0 (#191)
* Method to update hyperparameters (GPU) * Extend tests of GaussianProcess to cover GaussianProcessGPU too Sometimes this means relying on the fallback-to-CPU behaviour of the latter class, which is okay. * Simple (inefficient) implementation of batch prediction * Add initial GaussianProcessGPU docs * Fix to test (GaussianProcess) * Update state to include inv covariance matrix (GaussianProcessGPU) * Add GPU kernel for computing diagonal elements of the covariance matrix (GaussianProcessGPU) * Add batch prediction and predictive variance (GPU) * Wrap long lines in docstrings * Versioning (#38) * added code needed for versioning to devel branch * forgot to modify setup.py file * corrected line accidentally deleted from __init__.py * added prerelease number to devel branch to track commits on devel * corrected comments in conf.py to reflect full release numbering * Exceptions for GaussianProcessGPU; refactor tests - Distinguish unimplemented functionality from GPU/library unavailability - Handle these situations when running tests more carefully (allowing that the test environment may not have GPUs available, but warn) - Split large `test_GaussianProcess_predict` test - Forward unspecified args/kwargs to super().predict on fallback * Expose batch and variance predictions in python interface (GPU) * GaussianProcessGPU.predict docstring * Bugfix: no transpose in cublas dgemm call * Handle exception caused by unavailable GPU in remaining tests * Handle one UnavailableError (GPU) * Add failing variance test (GPU) * Single variance prediction (GPU) * Enable batched variance * Batched variance (GPU) * Only use batched predictions (GPU) * Add some matrix utilities * Calculate Cholesky factors/invQ (GPU) * Bugfix: targets on device * Constructing GP on-device doesn't set invQ The main consequence of this is that `GaussianProcessGPU._set_params` must call `update_theta` in all cases. Some tests fail at the moment, that involve taking derivatives, or pickling. * Fix test failures related to pickling and adaptive nugget * Remove invQ/invQt arguments to GP constructor and update_theta * Tweak to parameter setting (GPU) * WIP: logdet GPU * WIP: logdet GPU * added simple demos for GP and MICE (#46) * added simple demos for GP and MICE * incremented prerelease number for merge * History Matching (#39) * initial commit of history matching class and benchmark with minor tweaks * broke benchmark and sanity checks into two files for history matching * reindented code to use 4 spaces * added unit tests and some bug fixes for HistoryMatching * added tests for implausability plus some other checks and bug fixes in HistoryMatching * fixed misspelling of implausibility * changed file name for benchmark in makefile * fixed documentation in HistoryMatching class to be consistent with others * improved documentation, cleaned up code, added a few unit tests for HistoryMatching * fixed some docstring formatting and base rst file for HistoryMatching * full implementation of history matching with unit tests and documentation * simplified model discrepancy based on discussion with Danny * fixes to history matching file and tests * fixed some comparisons with None in SequentialDesign * broke up long test for Hessian into parts * incremented prerelease for history match merge * Feature/mucmtoolkit (#54) * added toolkit with converted pages and images * incremented version number * Feature/mucmtoolkit (#55) * fixed bug in documentation to display methods * version number change for corrected PR * merge input derivative bugfix into devel (#61) * WIP: deriv GPU * Fix/cachefactmat (#62) * corrected GP class to cache factorized matrix rather than inverse plus cleaned up a few unneeded internal variables * incremented prerelease version number * missed a line that should have been deleted * added test to confirm that variance predictions are stable * fixed solve routines to use cho_solve in scipy * Fix/toolkitcorr (#63) * toolkit proofreading and corrections * continuing updates of toolkit pages * edits to toolkit pages * finished corrections up through meta section * updated toolkit threads section * updates to proc section of toolkit * incremented prerelease version number * reset version to 0.3.0dev0 be consistent with master update (#70) * Feature/meanfunc (#74) * initial working implementation of mean function with tests * implemented polynomial mean function * added finite difference tests to mean function unit tests * made finite difference spacing a fixture * changed fixed mean to use a function rather than lambda for derivative * implemented mean function (note only unit tests assume zero mean, will write new ones during refactor of interface) * fixed bugs in mean function implementation * implemented additional mean function capabilities and wrote tests * added docstrings to base mean function class * documented mean sum class * documented mean product class * documented mean composite class * documented fixed mean class * added documentation and a few other checks to the fixed mean function implementations * added documentation for coefficient class * added documentation for polynomial mean class * added module docstring and test for indexing error in composite mean * added documentation page for mean function * implemented power mean function * fixed bugs in mean power and wrote unit tests * updated pre-release version for merge to devel * Feature/formula (#77) * initial working implementation of mean function with tests * implemented polynomial mean function * added finite difference tests to mean function unit tests * made finite difference spacing a fixture * changed fixed mean to use a function rather than lambda for derivative * implemented mean function (note only unit tests assume zero mean, will write new ones during refactor of interface) * fixed bugs in mean function implementation * implemented additional mean function capabilities and wrote tests * added docstrings to base mean function class * documented mean sum class * documented mean product class * documented mean composite class * documented fixed mean class * added documentation and a few other checks to the fixed mean function implementations * added documentation for coefficient class * added documentation for polynomial mean class * added module docstring and test for indexing error in composite mean * added documentation page for mean function * implemented power mean function * fixed bugs in mean power and wrote unit tests * basic working formula parser on linear terms * wrote tokenizer function * modified tokenizer to correct exponentiation and wrote expression parser * removed unneeded function * appear to have working formula parser * fixed issue with square bracket parsing * added class method and moved some things around * added some unit tests for formula parsing * implemented tests for tokenizing, parsing, and evaluating functions * full set of unit tests for formulas and additional method in mean function to create from a formula * changed base name and created functional interface for formula plus string methods * added docstrings and renamed some functions * added documentation for formulas and modified the mean function page a bit * added patsy to install for testing and updated python version to 3.7 * updated version number for merge into devel * Feature/GPrefactor (#81) * initial working implementation of mean function with tests * implemented polynomial mean function * added finite difference tests to mean function unit tests * made finite difference spacing a fixture * changed fixed mean to use a function rather than lambda for derivative * implemented mean function (note only unit tests assume zero mean, will write new ones during refactor of interface) * fixed bugs in mean function implementation * implemented additional mean function capabilities and wrote tests * added docstrings to base mean function class * documented mean sum class * documented mean product class * documented mean composite class * documented fixed mean class * added documentation and a few other checks to the fixed mean function implementations * added documentation for coefficient class * added documentation for polynomial mean class * added module docstring and test for indexing error in composite mean * added documentation page for mean function * implemented power mean function * fixed bugs in mean power and wrote unit tests * basic working formula parser on linear terms * wrote tokenizer function * modified tokenizer to correct exponentiation and wrote expression parser * removed unneeded function * appear to have working formula parser * fixed issue with square bracket parsing * added class method and moved some things around * added some unit tests for formula parsing * implemented tests for tokenizing, parsing, and evaluating functions * full set of unit tests for formulas and additional method in mean function to create from a formula * changed base name and created functional interface for formula plus string methods * added docstrings and renamed some functions * added documentation for formulas and modified the mean function page a bit * added patsy to install for testing and updated python version to 3.7 * replaced GP class with new version and unit tests * refactored some GP methods to use property decorator * initial implementation of MLE fitting function * fixed dimension reduction tests to use new GP interface * fixed history matching to work with new GP interface * fixed mice code to handle new GP interface * remove multi output GP as planned part of refactor * wrote unit test for MLE fitting function * added code to GP class to allow for priors * put bare bones MOGP class back into repository * changed code to use log posterior and wrote fitting routine in parallel for MOGP * initial implementation of normal and inverse gamma priors * added gamma distribution to priors and put in second derivatives * fixed scale parameter in gamma distribution to be consistent with scipy definition * fixed other tests and classes to use new MAP function and added unit test for single GP MAP routine * correctly passed uncertainty/derivative flags to multiouput predict method * added some bare bones tests for MultiOutputGP * added tests for prior classes * added unit tests and put in extra checks on nugget prior * put more tests on priors into GP class * fixed mean function in MOGP to accept strings * added test for multiplt output fitting * made some functions in formula module private * added brief docstrings for Priors and added priors to documentation * cleaned up some GP documentation * improved docstring and made nugget parameter more configurable for MOGP * improvde fitting documentation * put better math in prior docstrings * fixed bug in prior inputs to MOGP * fixed docstring issue needing raw string * wrote R example using GP fitting and prediction * updated prerelease version number for merge * Fix/powermeanderiv (#83) * fixed bugs in computation of PowerMean derivatives plus unit tests to verify * incremented version number for merge into devel * added code of conduct to project documentation (#86) * added code of conduct to project documentation * updated prerelease number for merge into devel * Feature/requirements (#92) * added additional requirements files for optional packages, testing packages, and documentation * incremented version number * GPU implementation of dloglik_dtheta (untested) * Add strided_range.hpp * Fix/absoluteimports (#98) * fconverted to absolute imports for clarity and to fix issue with docs building * added missing init file in linalg package * corrected travis file to use requirements files * incremented version number for merge * Fix/pdfdocs (#99) * fixed latex typos in threads section of toolkit * corrected tex rendering in proc section of toolkit * fixed tex formatting in examples section of toolkit * fixed latex formatting in disc section of toolkit * modified docs pages to fix latex build in alt section of toolkit * incremented version number for merge into devel * forcing pytest version in travis file to fix conflicting dependency * moved pytest requirement to requirements file * Feature/refactor readme (#106) * added contributing guidelines and fixed typo in code of conduct * refactored index page on docs, moved implementation docs to separate directory to avoid clutter * added demo pages to documentation * moved benchmarks to a separate benchmark directory from the unit tests * added symlinks from benchmarks to test directory in case those are used somewhere * added some additional link targets to facilitate links between pages * fixed some doc errors in benchmarks * refactored readme and intro doc pages * removed lfs storage file .gitattributes * fixed link issue in README * reworked intro sections and added workflow figure * added blurb on pip installation to installation docs page * incremented version number for merge * Fix/windows mogp (#107) * default to single process when running on windows * made multi output tests only use a single processor for consistency * incremented version number * Feature/tutorial (#116) * added tutorial code and projectile simulator code to demos * finished implementing tutorial code * wrote tutorial up through validation section * slight edits to docs organization and index page * finished writing tutorial and added image showing output * fixed a few typos and made a few corrections to tutorial * increment version number for merge * clarified requirement for scipy version 1.4 in tutorial * Fix/gp interface (#117) * fixed issue with empty list in GP init function and added support for string version of kernels * updated docstrings in GP class to match new options * incremented versin number for merge * updated GP docstrings to fix some issues * fixed prior and kernel initiation in MOGP class * fixed up docstring with Oliver's suggestion * Fix/predictnugget (#120) * included predictions in nugget with a corresponding unit test * incremented version number for merge * modified MOGP class to include nugget flag * MultiOutputGP Optimization start points (#121) * modified fitting routine to accept different start points for each emulator * increment version number * minor tweak to fitting function wrapper * trying to fix occasional runtime errors in mogp fitting tests * Fix/demo updates (#124) * rewrote GP demo to use new interface and use priors to improve emulator * moved convenience function for printing into projectile * modified tutorial to use printing function * modified MICE demo to match new interface * modified benchmarks to use new interface * tidied a few things in MICE demo * removed link to nonexistent file * updated setup.py for merge * fix/test fitting (#127) * fixed minor issue in mogp fitting tests where tests did not fail correctly * updated version number for merge to devel * reset version number to start work on next release (#129) * Fix/kerneldist (#131) * Merge updated devel branch into master (#12) * Fixed tsunami benchmarks to use numpy for loading data and added more detailed readme file * added files for sphinx documentation and made some docstring corrections for autodoc compatability * fixed minor formatting issues in readme headings * added files needed for Travis CI * fixed tests to be slightly more tolerant with numerical comparisons * removed python 3.7 from Travis and decreased tolerance on minimization algorithms in GP unit tests * additional increase in tolerance for GP unit tests for minimization * added version number in setup.py file that is automatically found in package and docs * need to install package in travis to get version number to load * implemented fix to correctly compute kernel derivatives with respect to inputs * added unit tests for input derivatives of kernel * added docstrings for new kernel functions * incremented version number for bug fix * reformatted kernel tests to shorten lines and a few other things * V0.2.0rc (#64) * Add dimension reduction functionality (python impl. of gKDR) * Tweaks to dimension reduction test * Add documentation for DimensionReduction * Add/fix some tests for DimensionReduction * Fix test (DimensionReduction) * Docstring -> raw string to fix invalid escape sequence warning * Add sanity checks for parameters passed to DimensionReduction * Fix assertion in DimensionReduction constructor * Fix assertion in DimensionReduction constructor * Test: optimize structural dimension * First attempt at tuning the structural dimension (kdr) * Make GaussianProcess objects callable (for prediction) * Add 'train_model' interface to GaussianProcess * DimensionReduction tweak to example * Introduce X_scale/Y_scale parameters in gKDR kernel (DimensionReduction) * Fix whitespace * DimensionReduction: use specialized Hermitian eigensolver * Tune parameters (structural dimension and kernel lengthscales) within gKDR - rename tune_structural_dimension -> tune_parameters - documentation - improved optimization routine * Improved tests for parameter tuning (gKDR) * Tweak to test (DimensionReduction) * Whitespace cleanup * Correct naming of variable (DimensionReduction) * Factor out internal loss function from gKDR.tune_parameters * Use a smaller test example to reduce test runtime * MCMC (#33) * added separate functions to calculated squared exponential kernel * added matern 5/2 covariance function * put kernel computations into a separate function and removed conjugate gradient based unit test that always gave problems * moved kernel functions and tests to separate files * added function to compute gradient of the squared exponential kernel * changed GP class to use derivative function * added derivatives for matern 5/2 kernel * quick and dirty modification to GP in order to use kernel functions * cleaned up distance calculation to use standardized euclidean distance * modified fast GP in MICE code to use kernel interface * made correction to meaning of nugget parameter for MICE candidate GP to be relative to current variance * fixed minor issues in MICE design to allow for zero samples and ensuring that parameter values are correctly set * updated MICE benchmark details * cosmetic tweaks to MICE benchmark * full hessian implementation in kernel functions * refactored kernel functions into objects * implemented Hessian computation into GP class * Documented base kernel class * Documented derived kernel classes * added documentation pages for kernels * corrected documentation to include newly implemented classes and fixed some old bugs * renamed run_init_design to be consistent with other methods that use *_initial_design * made minor change in MICEFastGP documentation * broke up prediction methods into single and multiple parameter sets, plus some other changes needed to accomodate them * added routine to compute local covariance matrix from hessian * implemented approximate normal hyperparameter sampling * added utility functions for MCMC sampling * fully implemented basic MCMC sampler * working MCMC implementation with full set of tests * fixed a few bugs in GP and MCMC implmentation * fixed bug in variance prediction where roundoff error can cause negative variance * added docstrings for MCMC routines * added documentation for MCMC-related methods and code additions * created benchmark for MCMC sampling and added documentation pages for it * added information on MCMC benchmark to readme * added additional pages to documentation for MCMC sampling * removed renamed mcmc benchmark file * fixed MCMC docstring in GP class * Fix whitespace in Makefile * Forward kwargs (gKDR._compute_loss); correct number of cross-validation folds * Add benchmark for gKDR * Wrap long lines in docstrings * Versioning (#38) * added code needed for versioning to devel branch * forgot to modify setup.py file * corrected line accidentally deleted from __init__.py * added prerelease number to devel branch to track commits on devel * corrected comments in conf.py to reflect full release numbering * added simple demos for GP and MICE (#46) * added simple demos for GP and MICE * incremented prerelease number for merge * History Matching (#39) * initial commit of history matching class and benchmark with minor tweaks * broke benchmark and sanity checks into two files for history matching * reindented code to use 4 spaces * added unit tests and some bug fixes for HistoryMatching * added tests for implausability plus some other checks and bug fixes in HistoryMatching * fixed misspelling of implausibility * changed file name for benchmark in makefile * fixed documentation in HistoryMatching class to be consistent with others * improved documentation, cleaned up code, added a few unit tests for HistoryMatching * fixed some docstring formatting and base rst file for HistoryMatching * full implementation of history matching with unit tests and documentation * simplified model discrepancy based on discussion with Danny * fixes to history matching file and tests * fixed some comparisons with None in SequentialDesign * broke up long test for Hessian into parts * incremented prerelease for history match merge * Feature/mucmtoolkit (#54) * added toolkit with converted pages and images * incremented version number * Feature/mucmtoolkit (#55) * fixed bug in documentation to display methods * version number change for corrected PR * merge input derivative bugfix into devel (#61) * Fix/cachefactmat (#62) * corrected GP class to cache factorized matrix rather than inverse plus cleaned up a few unneeded internal variables * incremented prerelease version number * missed a line that should have been deleted * added test to confirm that variance predictions are stable * fixed solve routines to use cho_solve in scipy * Fix/toolkitcorr (#63) * toolkit proofreading and corrections * continuing updates of toolkit pages * edits to toolkit pages * finished corrections up through meta section * updated toolkit threads section * updates to proc section of toolkit * incremented prerelease version number * modified version for release v0.2.0 * Adjust the paper references in DimensionReduction.py * Update paper reference in documentation * V0.3.0rc (#125) * Add dimension reduction functionality (python impl. of gKDR) * Tweaks to dimension reduction test * Add documentation for DimensionReduction * Add/fix some tests for DimensionReduction * Fix test (DimensionReduction) * Docstring -> raw string to fix invalid escape sequence warning * Add sanity checks for parameters passed to DimensionReduction * Fix assertion in DimensionReduction constructor * Fix assertion in DimensionReduction constructor * Test: optimize structural dimension * First attempt at tuning the structural dimension (kdr) * Make GaussianProcess objects callable (for prediction) * Add 'train_model' interface to GaussianProcess * DimensionReduction tweak to example * Introduce X_scale/Y_scale parameters in gKDR kernel (DimensionReduction) * Fix whitespace * DimensionReduction: use specialized Hermitian eigensolver * Tune parameters (structural dimension and kernel lengthscales) within gKDR - rename tune_structural_dimension -> tune_parameters - documentation - improved optimization routine * Improved tests for parameter tuning (gKDR) * Tweak to test (DimensionReduction) * Whitespace cleanup * Correct naming of variable (DimensionReduction) * Factor out internal loss function from gKDR.tune_parameters * Use a smaller test example to reduce test runtime * MCMC (#33) * added separate functions to calculated squared exponential kernel * added matern 5/2 covariance function * put kernel computations into a separate function and removed conjugate gradient based unit test that always gave problems * moved kernel functions and tests to separate files * added function to compute gradient of the squared exponential kernel * changed GP class to use derivative function * added derivatives for matern 5/2 kernel * quick and dirty modification to GP in order to use kernel functions * cleaned up distance calculation to use standardized euclidean distance * modified fast GP in MICE code to use kernel interface * made correction to meaning of nugget parameter for MICE candidate GP to be relative to current variance * fixed minor issues in MICE design to allow for zero samples and ensuring that parameter values are correctly set * updated MICE benchmark details * cosmetic tweaks to MICE benchmark * full hessian implementation in kernel functions * refactored kernel functions into objects * implemented Hessian computation into GP class * Documented base kernel class * Documented derived kernel classes * added documentation pages for kernels * corrected documentation to include newly implemented classes and fixed some old bugs * renamed run_init_design to be consistent with other methods that use *_initial_design * made minor change in MICEFastGP documentation * broke up prediction methods into single and multiple parameter sets, plus some other changes needed to accomodate them * added routine to compute local covariance matrix from hessian * implemented approximate normal hyperparameter sampling * added utility functions for MCMC sampling * fully implemented basic MCMC sampler * working MCMC implementation with full set of tests * fixed a few bugs in GP and MCMC implmentation * fixed bug in variance prediction where roundoff error can cause negative variance * added docstrings for MCMC routines * added documentation for MCMC-related methods and code additions * created benchmark for MCMC sampling and added documentation pages for it * added information on MCMC benchmark to readme * added additional pages to documentation for MCMC sampling * removed renamed mcmc benchmark file * fixed MCMC docstring in GP class * Fix whitespace in Makefile * Forward kwargs (gKDR._compute_loss); correct number of cross-validation folds * Add benchmark for gKDR * Wrap long lines in docstrings * Versioning (#38) * added code needed for versioning to devel branch * forgot to modify setup.py file * corrected line accidentally deleted from __init__.py * added prerelease number to devel branch to track commits on devel * corrected comments in conf.py to reflect full release numbering * added simple demos for GP and MICE (#46) * added simple demos for GP and MICE * incremented prerelease number for merge * History Matching (#39) * initial commit of history matching class and benchmark with minor tweaks * broke benchmark and sanity checks into two files for history matching * reindented code to use 4 spaces * added unit tests and some bug fixes for HistoryMatching * added tests for implausability plus some other checks and bug fixes in HistoryMatching * fixed misspelling of implausibility * changed file name for benchmark in makefile * fixed documentation in HistoryMatching class to be consistent with others * improved documentation, cleaned up code, added a few unit tests for HistoryMatching * fixed some docstring formatting and base rst file for HistoryMatching * full implementation of history matching with unit tests and documentation * simplified model discrepancy based on discussion with Danny * fixes to history matching file and tests * fixed some comparisons with None in SequentialDesign * broke up long test for Hessian into parts * incremented prerelease for history match merge * Feature/mucmtoolkit (#54) * added toolkit with converted pages and images * incremented version number * Feature/mucmtoolkit (#55) * fixed bug in documentation to display methods * version number change for corrected PR * merge input derivative bugfix into devel (#61) * Fix/cachefactmat (#62) * corrected GP class to cache factorized matrix rather than inverse plus cleaned up a few unneeded internal variables * incremented prerelease version number * missed a line that should have been deleted * added test to confirm that variance predictions are stable * fixed solve routines to use cho_solve in scipy * Fix/toolkitcorr (#63) * toolkit proofreading and corrections * continuing updates of toolkit pages * edits to toolkit pages * finished corrections up through meta section * updated toolkit threads section * updates to proc section of toolkit * incremented prerelease version number * reset version to 0.3.0dev0 be consistent with master update (#70) * Feature/meanfunc (#74) * initial working implementation of mean function with tests * implemented polynomial mean function * added finite difference tests to mean function unit tests * made finite difference spacing a fixture * changed fixed mean to use a function rather than lambda for derivative * implemented mean function (note only unit tests assume zero mean, will write new ones during refactor of interface) * fixed bugs in mean function implementation * implemented additional mean function capabilities and wrote tests * added docstrings to base mean function class * documented mean sum class * documented mean product class * documented mean composite class * documented fixed mean class * added documentation and a few other checks to the fixed mean function implementations * added documentation for coefficient class * added documentation for polynomial mean class * added module docstring and test for indexing error in composite mean * added documentation page for mean function * implemented power mean function * fixed bugs in mean power and wrote unit tests * updated pre-release version for merge to devel * Feature/formula (#77) * initial working implementation of mean function with tests * implemented polynomial mean function * added finite difference tests to mean function unit tests * made finite difference spacing a fixture * changed fixed mean to use a function rather than lambda for derivative * implemented mean function (note only unit tests assume zero mean, will write new ones during refactor of interface) * fixed bugs in mean function implementation * implemented additional mean function capabilities and wrote tests * added docstrings to base mean function class * documented mean sum class * documented mean product class * documented mean composite class * documented fixed mean class * added documentation and a few other checks to the fixed mean function implementations * added documentation for coefficient class * added documentation for polynomial mean class * added module docstring and test for indexing error in composite mean * added documentation page for mean function * implemented power mean function * fixed bugs in mean power and wrote unit tests * basic working formula parser on linear terms * wrote tokenizer function * modified tokenizer to correct exponentiation and wrote expression parser * removed unneeded function * appear to have working formula parser * fixed issue with square bracket parsing * added class method and moved some things around * added some unit tests for formula parsing * implemented tests for tokenizing, parsing, and evaluating functions * full set of unit tests for formulas and additional method in mean function to create from a formula * changed base name and created functional interface for formula plus string methods * added docstrings and renamed some functions * added documentation for formulas and modified the mean function page a bit * added patsy to install for testing and updated python version to 3.7 * updated version number for merge into devel * Feature/GPrefactor (#81) * initial working implementation of mean function with tests * implemented polynomial mean function * added finite difference tests to mean function unit tests * made finite difference spacing a fixture * changed fixed mean to use a function rather than lambda for derivative * implemented mean function (note only unit tests assume zero mean, will write new ones during refactor of interface) * fixed bugs in mean function implementation * implemented additional mean function capabilities and wrote tests * added docstrings to base mean function class * documented mean sum class * documented mean product class * documented mean composite class * documented fixed mean class * added documentation and a few other checks to the fixed mean function implementations * added documentation for coefficient class * added documentation for polynomial mean class * added module docstring and test for indexing error in composite mean * added documentation page for mean function * implemented power mean function * fixed bugs in mean power and wrote unit tests * basic working formula parser on linear terms * wrote tokenizer function * modified tokenizer to correct exponentiation and wrote expression parser * removed unneeded function * appear to have working formula parser * fixed issue with square bracket parsing * added class method and moved some things around * added some unit tests for formula parsing * implemented tests for tokenizing, parsing, and evaluating functions * full set of unit tests for formulas and additional method in mean function to create from a formula * changed base name and created functional interface for formula plus string methods * added docstrings and renamed some functions * added documentation for formulas and modified the mean function page a bit * added patsy to install for testing and updated python version to 3.7 * replaced GP class with new version and unit tests * refactored some GP methods to use property decorator * initial implementation of MLE fitting function * fixed dimension reduction tests to use new GP interface * fixed history matching to work with new GP interface * fixed mice code to handle new GP interface * remove multi output GP as planned part of refactor * wrote unit test for MLE fitting function * added code to GP class to allow for priors * put bare bones MOGP class back into repository * changed code to use log posterior and wrote fitting routine in parallel for MOGP * initial implementation of normal and inverse gamma priors * added gamma distribution to priors and put in second derivatives * fixed scale parameter in gamma distribution to be consistent with scipy definition * fixed other tests and classes to use new MAP function and added unit test for single GP MAP routine * correctly passed uncertainty/derivative flags to multiouput predict method * added some bare bones tests for MultiOutputGP * added tests for prior classes * added unit tests and put in extra checks on nugget prior * put more tests on priors into GP class * fixed mean function in MOGP to accept strings * added test for multiplt output fitting * made some functions in formula module private * added brief docstrings for Priors and added priors to documentation * cleaned up some GP documentation * improved docstring and made nugget parameter more configurable for MOGP * improvde fitting documentation * put better math in prior docstrings * fixed bug in prior inputs to MOGP * fixed docstring issue needing raw string * wrote R example using GP fitting and prediction * updated prerelease version number for merge * Fix/powermeanderiv (#83) * fixed bugs in computation of PowerMean derivatives plus unit tests to verify * incremented version number for merge into devel * added code of conduct to project documentation (#86) * added code of conduct to project documentation * updated prerelease number for merge into devel * Feature/requirements (#92) * added additional requirements files for optional packages, testing packages, and documentation * incremented version number * Fix/absoluteimports (#98) * fconverted to absolute imports for clarity and to fix issue with docs building * added missing init file in linalg package * corrected travis file to use requirements files * incremented version number for merge * Fix/pdfdocs (#99) * fixed latex typos in threads section of toolkit * corrected tex rendering in proc section of toolkit * fixed tex formatting in examples section of toolkit * fixed latex formatting in disc section of toolkit * modified docs pages to fix latex build in alt section of toolkit * incremented version number for merge into devel * forcing pytest version in travis file to fix conflicting dependency * moved pytest requirement to requirements file * Feature/refactor readme (#106) * added contributing guidelines and fixed typo in code of conduct * refactored index page on docs, moved implementation docs to separate directory to avoid clutter * added demo pages to documentation * moved benchmarks to a separate benchmark directory from the unit tests * added symlinks from benchmarks to test directory in case those are used somewhere * added some additional link targets to facilitate links between pages * fixed some doc errors in benchmarks * refactored readme and intro doc pages * removed lfs storage file .gitattributes * fixed link issue in README * reworked intro sections and added workflow figure * added blurb on pip installation to installation docs page * incremented version number for merge * Fix/windows mogp (#107) * default to single process when running on windows * made multi output tests only use a single processor for consistency * incremented version number * Feature/tutorial (#116) * added tutorial code and projectile simulator code to demos * finished implementing tutorial code * wrote tutorial up through validation section * slight edits to docs organization and index page * finished writing tutorial and added image showing output * fixed a few typos and made a few corrections to tutorial * increment version number for merge * clarified requirement for scipy version 1.4 in tutorial * Fix/gp interface (#117) * fixed issue with empty list in GP init function and added support for string version of kernels * updated docstrings in GP class to match new options * incremented versin number for merge * updated GP docstrings to fix some issues * fixed prior and kernel initiation in MOGP class * fixed up docstring with Oliver's suggestion * Fix/predictnugget (#120) * included predictions in nugget with a corresponding unit test * incremented version number for merge * modified MOGP class to include nugget flag * MultiOutputGP Optimization start points (#121) * modified fitting routine to accept different start points for each emulator * increment version number * minor tweak to fitting function wrapper * trying to fix occasional runtime errors in mogp fitting tests * Fix/demo updates (#124) * rewrote GP demo to use new interface and use priors to improve emulator * moved convenience function for printing into projectile * modified tutorial to use printing function * modified MICE demo to match new interface * modified benchmarks to use new interface * tidied a few things in MICE demo * removed link to nonexistent file * updated setup.py for merge * updated version number for update to master * fix/test fitting (#127) * fixed minor issue in mogp fitting tests where tests did not fail correctly * updated version number for merge to devel * Fix markdown link to Contributor Covenant * Fix gpu and fpga label links Co-authored-by: Oliver Strickson <ostrickson@turing.ac.uk> Co-authored-by: Oliver Strickson <ots22@users.noreply.github.com> * bugfix to catch situation where kernel distance returns NaN * following confirmed bug fix, incremented version number for master update Co-authored-by: Oliver Strickson <ostrickson@turing.ac.uk> Co-authored-by: Oliver Strickson <ots22@users.noreply.github.com> * Feature/excaliburdemo (#133) * code to create example plots in excalibur workshop talk * updated docs to include excalibur workshop demo * increment version number * Comment out work-in-progress dloglik_dtheta * Bugfix: copy hyperparameters to device correctly * Add some tests of basic functionality of the GPU library (from C++) * WIP add gp_gpu.cu with first draft of pybind11 wrapper for DenseGP_GPU class * Use Eigen matrices in DenseGP interface - the pybind wrapper will pass numpy ndarrays to these correctly * Don't pass theta to DenseGP constructor (unused); predict_batch determines Nbatch from argument * add remaining DenseGP_GPU methods to gp_gpu.cu pybind interface * modify Makefile to build libgpgpu.so using the pybind11 bindings * Modify setup.py to compile cuda code and produce libgpgpu library * Merge devel branch into feature/gpu branch * resolve merge conflicts in GaussianProcess.py (taking all changes from devel) * Move old GaussianProcessGPU implementation (using ctypes) to GaussianProcessGPU_old, and add new (WIP) GaussianProcessGPU class using the pybind11 bindings * only try to compile cuda code if we find nvcc executable * Repo name change (#147) * updated urls and pip installation instructions * updated numpy version needed for travis * increment version number for merge * V0.5.0dev0 (#149) * Merge updated devel branch into master (#12) * Fixed tsunami benchmarks to use numpy for loading data and added more detailed readme file * added files for sphinx documentation and made some docstring corrections for autodoc compatability * fixed minor formatting issues in readme headings * added files needed for Travis CI * fixed tests to be slightly more tolerant with numerical comparisons * removed python 3.7 from Travis and decreased tolerance on minimization algorithms in GP unit tests * additional increase in tolerance for GP unit tests for minimization * added version number in setup.py file that is automatically found in package and docs * need to install package in travis to get version number to load * implemented fix to correctly compute kernel derivatives with respect to inputs * added unit tests for input derivatives of kernel * added docstrings for new kernel functions * incremented version number for bug fix * reformatted kernel tests to shorten lines and a few other things * V0.2.0rc (#64) * Add dimension reduction functionality (python impl. of gKDR) * Tweaks to dimension reduction test * Add documentation for DimensionReduction * Add/fix some tests for DimensionReduction * Fix test (DimensionReduction) * Docstring -> raw string to fix invalid escape sequence warning * Add sanity checks for parameters passed to DimensionReduction * Fix assertion in DimensionReduction constructor * Fix assertion in DimensionReduction constructor * Test: optimize structural dimension * First attempt at tuning the structural dimension (kdr) * Make GaussianProcess objects callable (for prediction) * Add 'train_model' interface to GaussianProcess * DimensionReduction tweak to example * Introduce X_scale/Y_scale parameters in gKDR kernel (DimensionReduction) * Fix whitespace * DimensionReduction: use specialized Hermitian eigensolver * Tune parameters (structural dimension and kernel lengthscales) within gKDR - rename tune_structural_dimension -> tune_parameters - documentation - improved optimization routine * Improved tests for parameter tuning (gKDR) * Tweak to test (DimensionReduction) * Whitespace cleanup * Correct naming of variable (DimensionReduction) * Factor out internal loss function from gKDR.tune_parameters * Use a smaller test example to reduce test runtime * MCMC (#33) * added separate functions to calculated squared exponential kernel * added matern 5/2 covariance function * put kernel computations into a separate function and removed conjugate gradient based unit test that always gave problems * moved kernel functions and tests to separate files * added function to compute gradient of the squared exponential kernel * changed GP class to use derivative function * added derivatives for matern 5/2 kernel * quick and dirty modification to GP in order to use kernel functions * cleaned up distance calculation to use standardized euclidean distance * modified fast GP in MICE code to use kernel interface * made correction to meaning of nugget parameter for MICE candidate GP to be relative to current variance * fixed minor issues in MICE design to allow for zero samples and ensuring that parameter values are correctly set * updated MICE benchmark details * cosmetic tweaks to MICE benchmark * full hessian implementation in kernel functions * refactored kernel functions into objects * implemented Hessian computation into GP class * Documented base kernel class * Documented derived kernel classes * added documentation pages for kernels * corrected documentation to include newly implemented classes and fixed some old bugs * renamed run_init_design to be consistent with other methods that use *_initial_design * made minor change in MICEFastGP documentation * broke up prediction methods into single and multiple parameter sets, plus some other changes needed to accomodate them * added routine to compute local covariance matrix from hessian * implemented approximate normal hyperparameter sampling * added utility functions for MCMC sampling * fully implemented basic MCMC sampler * working MCMC implementation with full set of tests * fixed a few bugs in GP and MCMC implmentation * fixed bug in variance prediction where roundoff error can cause negative variance * added docstrings for MCMC routines * added documentation for MCMC-related methods and code additions * created benchmark for MCMC sampling and added documentation pages for it * added information on MCMC benchmark to readme * added additional pages to documentation for MCMC sampling * removed renamed mcmc benchmark file * fixed MCMC docstring in GP class * Fix whitespace in Makefile * Forward kwargs (gKDR._compute_loss); correct number of cross-validation folds * Add benchmark for gKDR * Wrap long lines in docstrings * Versioning (#38) * added code needed for versioning to devel branch * forgot to modify setup.py file * corrected line accidentally deleted from __init__.py * added prerelease number to devel branch to track commits on devel * corrected comments in conf.py to reflect full release numbering * added simple demos for GP and MICE (#46) * added simple demos for GP and MICE * incremented prerelease number for merge * History Matching (#39) * initial commit of history matching class and benchmark with minor tweaks * broke benchmark and sanity checks into two files for history matching * reindented code to use 4 spaces * added unit tests and some bug fixes for HistoryMatching * added tests for implausability plus some other checks and bug fixes in HistoryMatching * fixed misspelling of implausibility * changed file name for benchmark in makefile * fixed documentation in HistoryMatching class to be consistent with others * improved documentation, cleaned up code, added a few unit tests for HistoryMatching * fixed some docstring formatting and base rst file for HistoryMatching * full implementation of history matching with unit tests and documentation * simplified model discrepancy based on discussion with Danny * fixes to history matching file and tests * fixed some comparisons with None in SequentialDesign * broke up long test for Hessian into parts * incremented prerelease for history match merge * Feature/mucmtoolkit (#54) * added toolkit with converted pages and images * incremented version number * Feature/mucmtoolkit (#55) * fixed bug in documentation to display methods * version number change for corrected PR * merge input derivative bugfix into devel (#61) * Fix/cachefactmat (#62) * corrected GP class to cache factorized matrix rather than inverse plus cleaned up a few unneeded internal variables * incremented prerelease version number * missed a line that should have been deleted * added test to confirm that variance predictions are stable * fixed solve routines to use cho_solve in scipy * Fix/toolkitcorr (#63) * toolkit proofreading and corrections * continuing updates of toolkit pages * edits to toolkit pages * finished corrections up through meta section * updated toolkit threads section * updates to proc section of toolkit * incremented prerelease version number * modified version for release v0.2.0 * Adjust the paper references in DimensionReduction.py * Update paper reference in documentation * V0.3.0rc (#125) * Add dimension reduction functionality (python impl. of gKDR) * Tweaks to dimension reduction test * Add documentation for DimensionReduction * Add/fix some tests for DimensionReduction * Fix test (DimensionReduction) * Docstring -> raw string to fix invalid escape sequence warning * Add sanity checks for parameters passed to DimensionReduction * Fix assertion in DimensionReduction constructor * Fix assertion in DimensionReduction constructor * Test: optimize structural dimension * First attempt at tuning the structural dimension (kdr) * Make GaussianProcess objects callable (for prediction) * Add 'train_model' interface to GaussianProcess * DimensionReduction tweak to example * Introduce X_scale/Y_scale parameters in gKDR kernel (DimensionReduction) * Fix whitespace * DimensionReduction: use specialized Hermitian eigensolver * Tune parameters (structural dimension and kernel lengthscales) within gKDR - rename tune_structural_dimension -> tune_parameters - documentation - improved optimization routine * Improved tests for parameter tuning (gKDR) * Tweak to test (DimensionReduction) * Whitespace cleanup * Correct naming of variable (DimensionReduction) * Factor out internal loss function from gKDR.tune_parameters * Use a smaller test example to reduce test runtime * MCMC (#33) * added separate functions to calculated squared exponential kernel * added matern 5/2 covariance function * put kernel computations into a separate function and removed conjugate gradient based unit test that always gave problems * moved kernel functions and tests to separate files * added function to compute gradient of the squared exponential kernel * changed GP class to use derivative function * added derivatives for matern 5/2 kernel * quick and dirty modification to GP in order to use kernel functions * cleaned up distance calculation to use standardized euclidean distance * modified fast GP in MICE code to use kernel interface * made correction to meaning of nugget parameter for MICE candidate GP to be relative to current variance * fixed minor issues in MICE design to allow for zero samples and ensuring that parameter values are correctly set * updated MICE benchmark details * cosmetic tweaks to MICE benchmark * full hessian implementation in kernel functions * refactored kernel functions into objects * implemented Hessian computation into GP class * Documented base kernel class * Documented derived kernel classes * added documentation pages for kernels * corrected documentation to include newly implemented classes and fixed some old bugs * renamed run_init_design to be consistent with other methods that use *_initial_design * made minor change in MICEFastGP documentation * broke up prediction methods into single and multiple parameter sets, plus some other changes needed to accomodate them * added routine to compute local covariance matrix from hessian * implemented approximate normal hyperparameter sampling * added utility functions for MCMC sampling * fully implemented basic MCMC sampler * working MCMC implementation with full set of tests * fixed a few bugs in GP and MCMC implmentation * fixed bug in variance prediction where roundoff error can cause negative variance * added docstrings for MCMC routines * added documentation for MCMC-related methods and code additions * created benchmark for MCMC sampling and added documentation pages for it * added information on MCMC benchmark to readme * added additional pages to documentation for MCMC sampling * removed renamed mcmc benchmark file * fixed MCMC docstring in GP class * Fix whitespace in Makefile * Forward kwargs (gKDR._compute_loss); correct number of cross-validation folds * Add benchmark for gKDR * Wrap long lines in docstrings * Versioning (#38) * added code needed for versioning to devel branch * forgot to modify setup.py file * corrected line accidentally deleted from __init__.py * added prerelease number to devel branch to track commits on devel * corrected comments in conf.py to reflect full release numbering * added simple demos for GP and MICE (#46) * added simple demos for GP and MICE * incremented prerelease number for merge * History Matching (#39) * initial commit of history matching class and benchmark with minor tweaks * broke benchmark and sanity checks into two files for history matching * reindented code to use 4 spaces * added unit tests and some bug fixes for HistoryMatching * added tests for implausability plus some other checks and bug fixes in HistoryMatching * fixed misspelling of implausibility * changed file name for benchmark in makefile * fixed documentation in HistoryMatching class to be consistent with others * improved documentation, cleaned up code, added a few unit tests for HistoryMatching * fixed some docstring formatting and base rst file for HistoryMatching * full implementation of history matching with unit tests and documentation * simplified model discrepancy based on discussion with Danny * fixes to history matching file and tests * fixed some comparisons with None in SequentialDesign * broke up long test for Hessian into parts * incremented prerelease for history match merge * Feature/mucmtoolkit (#54) * added toolkit with converted pages and images * incremented version number * Feature/mucmtoolkit (#55) * fixed bug in documentation to display methods * version number change for corrected PR * merge input derivative bugfix into devel (#61) * Fix/cachefactmat (#62) * corrected GP class to cache factorized matrix rather than inverse plus cleaned up a few unneeded internal variables * incremented prerelease version number * missed a line that should have been deleted * added test to confirm that variance predictions are stable * fixed solve routines to use cho_solve in scipy * Fix/toolkitcorr (#63) * toolkit proofreading and corrections * continuing updates of toolkit pages * edits to toolkit pages * finished corrections up through meta section * updated toolkit threads section * updates to proc section of toolkit * incremented prerelease version number * reset version to 0.3.0dev0 be consistent with master update (#70) * Feature/meanfunc (#74) * initial working implementation of mean function with tests * implemented polynomial mean function * added finite difference tests to mean function unit tests * made finite difference spacing a fixture * changed fixed mean to use a function rather than lambda for derivative * implemented mean function (note only unit tests assume zero mean, will write new ones during refactor of interface) * fixed bugs in mean function implementation * implemented additional mean function capabilities and wrote tests * added docstrings to base mean function class * documented mean sum class * documented mean product class * documented mean composite class * documented fixed mean class * added documentation and a few other checks to the fixed mean function implementations * added documentation for coefficient class * added documentation for polynomial mean class * added module docstring and test for indexing error in composite mean * added documentation page for mean function * implemented power mean function * fixed bugs in mean power and wrote unit tests * updated pre-release version for merge to devel * Feature/formula (#77) * initial working implementation of mean function with tests * implemented polynomial mean function * added finite difference tests to mean function unit tests * made finite difference spacing a fixture * changed fixed mean to use a function rather than lambda for derivative * implemented mean function (note only unit tests assume zero mean, will write new ones during refactor of interface) * fixed bugs in mean function implementation * implemented additional mean function capabilities and wrote tests * added docstrings to base mean function class * documented mean sum class * documented mean product class * documented mean composite class * documented fixed mean class * added documentation and a few other checks to the fixed mean function implementations * added documentation for coefficient class * added documentation for polynomial mean class * added module docstring and test for indexing error in composite mean * added documentation page for mean function * implemented power mean function * fixed bugs in mean power and wrote unit tests * basic working formula parser on linear terms * wrote tokenizer function * modified tokenizer to correct exponentiation and wrote expression parser * removed unneeded function * appear to have working formula parser * fixed issue with square bracket parsing * added class method and moved some things around * added some unit tests for formula parsing * implemented tests for tokenizing, parsing, and evaluating functions * full set of unit tests for formulas and additional method in mean function to create from a formula * changed base name and created functional interface for formula plus string methods * added docstrings and renamed some functions * added documentation for formulas and modified the mean function page a bit * added patsy to install for testing and updated python version to 3.7 * updated version number for merge into devel * Feature/GPrefactor (#81) * initial working implementation of mean function with tests * implemented polynomial mean function * added finite difference tests to mean function unit tests * made finite difference spacing a fixture * changed fixed mean to use a function rather than lambda for derivative * implemented mean function (note only unit tests assume zero mean, will write new ones during refactor of interface) * fixed bugs in mean function implementation * implemented additional mean function capabilities and wrote tests * added docstrings to base mean function class * documented mean sum class * documented mean product class * documented mean composite class * documented fixed mean class * added documentation and a few other checks to the fixed mean function implementations * added documentation for coefficient class * added documentation for polynomial mean class * added module docstring and test for indexing error in composite mean * added documentation page for mean function * implemented power mean function * fixed bugs in mean power and wrote unit tests * basic working formula parser on linear terms * wrote tokenizer function * modified tokenizer to correct exponentiation and wrote expression parser * removed unneeded function * appear to have working formula parser * fixed issue with square bracket parsing * added class method and moved some things around * added some unit tests for formula parsing * implemented tests for tokenizing, parsing, and evaluating functions * full set of unit tests for formulas and additional method in mean function to create from a formula * changed base name and created functional interface for formula plus string methods * added docstrings and renamed some functions * added documentation for formulas and modified the mean function page a bit * added patsy to install for testing and updated python version to 3.7 * replaced GP class with new version and unit tests * refactored some GP methods to use property decorator * initial implementation of MLE fitting function * fixed dimension reduction tests to use new GP interface * fixed history matching to work with new GP interface * fixed mice code to handle new GP interface * remove multi output GP as planned part of refactor * wrote unit test for MLE fitting function * added code to GP class to allow for priors * put bare bones MOGP class back into repository * changed code to use log posterior and wrote fitting routine in parallel for MOGP * initial implementation of normal and inverse gamma priors * added gamma distribution to priors and put in second derivatives * fixed scale parameter in gamma distribution to be consistent with scipy definition * fixed other tests and classes to use new MAP function and added unit test for single GP MAP routine * correctly passed uncertainty/derivative flags to multiouput predict method * added some bare bones tests for MultiOutputGP * added tests for prior classes * added unit tests and put in extra checks on nugget prior * put more tests on priors into GP class * fixed mean function in MOGP to accept strings * added test for multiplt output fitting * made some functions in formula module private * added brief docstrings for Priors and added priors to documentation * cleaned up some GP documentation * improved docstring and made nugget parameter more configurable for MOGP * improvde fitting documentation * put better math in prior docstrings * fixed bug in prior inputs to MOGP * fixed docstring issue needing raw string * wrote R example using GP fitting and prediction * updated prerelease version number for merge * Fix/powermeanderiv (#83) * fixed bugs in computation of PowerMean derivatives plus unit tests to verify * incremented version number for merge into devel * added code of conduct to project documentation (#86) * added code of conduct to project documentation * updated prerelease number for merge into devel * Feature/requirements (#92) * added additional requirements files for optional packages, testing packages, and documentation * incremented version number * Fix/absoluteimports (#98) * fconverted to absolute imports for clarity and to fix issue with docs building * added missing init file in linalg package * corrected travis file to use requirements files * incremented version number for merge * Fix/pdfdocs (#99) * fixed latex typos in threads section of toolkit * corrected tex rendering in proc section of toolkit * fixed tex formatting in examples section of toolkit * fixed latex formatting in disc section of toolkit * modified docs pages to fix latex build in alt section of toolkit * incremented version number for merge into devel * forcing pytest version in travis file to fix conflicting dependency * moved pytest requirement to requirements file * Feature/refactor readme (#106) * added contributing guidelines and fixed typo in code of conduct * refactored in…
1 parent ecec9ea commit 41c3615

51 files changed

Lines changed: 7295 additions & 2230 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
*.pyc
22
*.DS_Store
3+
*~
4+
docs/_build/*
5+
mogp_gpu/obj
6+
mogp_gpu/bin
37
docs/_build/*
48
mogp_emulator/benchmarks/*.png
59
mogp_emulator/benchmarks/*.pdf

docs/benchmarks/benchmarks.rst

Lines changed: 54 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -8,69 +8,86 @@ Benchmarks
88
rosenbrock
99
branin
1010
tsunami
11-
mcmc_benchmark
1211
mice_benchmark
12+
pivot_benchmark
1313
gkdr_benchmark
1414
histmatch_benchmark
1515

16-
The code includes a series of benchmarks that illustrate various pieces of the implementation. Benchmarks
17-
can be run from the ``mogp_emulator/tests`` directory by entering ``make all`` or ``make benchmarks`` to
18-
run all benchmarks, or ``make rosenbrock``, ``make branin``, ``make tsunami``, ``make mcmc``, ``make mice``, ``make gKDR``, or ``make histmatch`` to run the individual benchmarks.
16+
The code includes a series of benchmarks that illustrate various
17+
pieces of the implementation. Benchmarks can be run from the
18+
``mogp_emulator/benchmarks`` directory by entering ``make all`` or ``make
19+
benchmarks`` to run all benchmarks, or ``make rosenbrock``, ``make
20+
branin``, ``make tsunami``, ``make mice``, ``make pivot``, ``make
21+
gKDR``, or ``make histmatch`` to run the individual benchmarks.
1922

2023
Single Emulator Convergence Tests
2124
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2225

23-
The first benchmark examines the convergence of a single emulator applied to the Rosenbrock function in
24-
several different dimensions (more details can be found `here <https://www.sfu.ca/~ssurjano/rosen.html>`__).
25-
This illustrates how the emulator predictions improve as the number of training points is increased
26-
for different numbers of input parameters. The benchmark evaluates the Rosenbrock function in 4, 6, and
27-
8 dimensions and shows that the mean squared prediction error and the mean variance improve with the
28-
number of training points used. Matplotlib can optionally be used to visualize the results.
26+
The first benchmark examines the convergence of a single emulator
27+
applied to the Rosenbrock function in several different dimensions
28+
(more details can be found `here
29+
<https://www.sfu.ca/~ssurjano/rosen.html>`__). This illustrates how
30+
the emulator predictions improve as the number of training points is
31+
increased for different numbers of input parameters. The benchmark
32+
evaluates the Rosenbrock function in 4, 6, and 8 dimensions and shows
33+
that the mean squared prediction error and the mean variance improve
34+
with the number of training points used. Matplotlib can optionally be
35+
used to visualize the results.
2936

3037
Multi-Output Convergence Tests
3138
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3239

33-
The second benchmark examines the convergence of multiple emulators derived from the same input values.
34-
This benchmark is based on the 2D Branin function (more details on this function can be found `here <https://www.sfu.ca/~ssurjano/branin.html>`__)
35-
. The code uses 8 different realizations of the Branin
36-
function using different parameter values, and then examines the convergence of the 8 different
37-
emulators fit using different number of parameter values based on the prediction errors and
38-
variance values. The results can optionally be visualized using Matplotlib.
40+
The second benchmark examines the convergence of multiple emulators
41+
derived from the same input values. This benchmark is based on the 2D
42+
Branin function (more details on this function can be found `here
43+
<https://www.sfu.ca/~ssurjano/branin.html>`__) . The code uses 8
44+
different realizations of the Branin function using different
45+
parameter values, and then examines the convergence of the 8 different
46+
emulators fit using different number of parameter values based on the
47+
prediction errors and variance values. The results can optionally be
48+
visualized using Matplotlib.
3949

4050
Multi-Output Performance Benchmark
4151
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4252

43-
A performance benchmark is included that uses a set of Tsunami simulation results to examine the
44-
speed at which the code fits multiple emulators in parallel. The code fits 8, 16, 32, and 64 emulators
45-
using 1, 2, 4, and 8 processess and notes the time required to perform the fitting. Note that the results
46-
will depend on the number of cores on the computer -- once you exceed the number of cores, the performance
47-
will degrade. As with the other benchmarks, Matplotlib can optionally be used to plot the results.
53+
A performance benchmark is included that uses a set of Tsunami
54+
simulation results to examine the speed at which the code fits
55+
multiple emulators in parallel. The code fits 8, 16, 32, and 64
56+
emulators using 1, 2, 4, and 8 processess and notes the time required
57+
to perform the fitting. Note that the results will depend on the
58+
number of cores on the computer -- once you exceed the number of
59+
cores, the performance will degrade. As with the other benchmarks,
60+
Matplotlib can optionally be used to plot the results.
4861

49-
MCMC Benchmark
62+
MICE Benchmark
5063
~~~~~~~~~~~~~~
5164

52-
A benchmark applying the software to fitting an emulator with MCMC sampling is included. The code
53-
draws hyperparameter samples and compares the resulting posterior distributions with the values
54-
found via maximum likelihood estimation. If Matplotlib is installed, a histogram of the parameter
55-
samples is shown.
65+
A benchmark comparing the MICE Sequential design method to Latin
66+
Hypercube sampling is also available. This creates designs of a
67+
variety of sizes and computes the error on unseen data for the 2D
68+
Branin function. It compares the accuracy of the sequential design to
69+
the Latin Hypercube for both the predictions and uncertainties.
5670

57-
MICE Benchmark
58-
~~~~~~~~~~~~~~
71+
Pivoted Cholesky Benchmark
72+
~~~~~~~~~~~~~~~~~~~~~~~~~~
5973

60-
A benchmark comparing the MICE Sequential design method to Latin Hypercube sampling is also available.
61-
This creates designs of a variety of sizes and computes the error on unseen data for the 2D Branin
62-
function. It compares the accuracy of the sequential design to the Latin Hypercube for both the
63-
predictions and uncertainties.
74+
This benchmark shows how a duplicated input can degrade emulator performance
75+
and how using pivoting can fix this more effectively than adding a nugget.
76+
It compares the accuracy of the emulator and its uncertainty for pivoting
77+
and adaptive nugget handling to the 2D Branin function.
6478

6579
Dimension Reduction Benchmark
6680
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6781

68-
A benchmark illustrating gradient-based kernel dimension reduction is available in ``tests/benchmark_kdr_GP.py``
69-
This problem contains a 100 dimension function with a single active dimension and shows how the loss depends
70-
on the number of dimensions included in the reduced dimension space.
82+
A benchmark illustrating gradient-based kernel dimension reduction is
83+
available in ``tests/benchmark_kdr_GP.py`` This problem contains a 100
84+
dimension function with a single active dimension and shows how the
85+
loss depends on the number of dimensions included in the reduced
86+
dimension space.
7187

7288
History Matching Benchmark
7389
~~~~~~~~~~~~~~~~~~~~~~~~~~
7490

75-
A benchmark illustrating use of the ``HistoryMatching`` class to rule out parts of the input space
76-
using a GP emulator to make predictions. The benchmark contains a 1D and a 2D example.
91+
A benchmark illustrating use of the ``HistoryMatching`` class to rule
92+
out parts of the input space using a GP emulator to make
93+
predictions. The benchmark contains a 1D and a 2D example.

docs/benchmarks/mcmc_benchmark.rst

Lines changed: 0 additions & 7 deletions
This file was deleted.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
.. _pivot_benchmark:
2+
3+
**********************************
4+
Pivoted Cholesky Benchmark
5+
**********************************
6+
7+
.. automodule:: mogp_emulator.benchmarks.benchmark_pivot

docs/demos/gp_demoGPU.rst

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
.. _gpdemoGPU:
2+
3+
Gaussian Process Demo (GPU)
4+
=========================
5+
This demo illustrates a simple example of fitting a GP emulator to results of the projectile
6+
problem discussed in the :ref:`tutorial`, using the GPU implementation of the emulator.
7+
8+
Note that in order for this to work, it must be run on a machine with an Nvidia GPU, and with
9+
CUDA libraries available. It also depends on Eigen and pybind.
10+
11+
The example uses Maximum Likelihood Estimation with a Squared Exponential kernel, which is currently
12+
the only kernel supported by the GPU implementation.
13+
14+
15+
.. literalinclude::
16+
../../mogp_emulator/demos/gp_demo_gpu.py

docs/demos/historymatch_demos.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
.. _historymatch_demos:
2+
3+
History Matching Demos
4+
========================================================
5+
6+
This demo shows how to carry out History Matching using a GP emulator.
7+
The two examples show how a fit GP can be passed directly to the
8+
`HistoryMatching` class, or how the predictions object can be passed
9+
instead. The demo also shows how other options can be set.
10+
11+
.. literalinclude::
12+
../../mogp_emulator/demos/historymatch_demos.py

docs/demos/kdr_demos.rst

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
.. _kdr_demos:
2+
3+
Kernel Dimension Reduction (KDR) Demos
4+
========================================================
5+
6+
This demo shows how to use the ``gKDR`` class to perform dimension reduction
7+
on the inputs to an emulator. The examples show how dimension reduction
8+
with a known number of dimensions can be fit, as well as how the class
9+
can use cross validation to infer a best number of dimensions from the
10+
data itself.
11+
12+
.. literalinclude::
13+
../../mogp_emulator/demos/kdr_demos.py
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
.. _GaussianProcessGPU:
2+
3+
**********************************
4+
The ``GaussianProcessGPU`` Class
5+
**********************************
6+
7+
.. automodule:: mogp_emulator.GaussianProcessGPU
8+
:noindex:
9+
10+
.. autoclass:: mogp_emulator.GaussianProcessGPU.GaussianProcessGPU
11+
:members:
12+
13+
.. automethod:: __init__
14+
15+
.. automodule:: libgpgpu

docs/implementation/implementation.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ mogp_emulator Implementation Details
88
:caption: Class and Function Implementation Details:
99

1010
GaussianProcess
11+
GaussianProcessGPU
1112
MultiOutputGP
1213
fitting
1314
MeanFunction
@@ -18,4 +19,4 @@ mogp_emulator Implementation Details
1819
ExperimentalDesign
1920
SequentialDesign
2021
HistoryMatching
21-
MCMC
22+
linalg
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
.. _MCMC:
1+
.. _linalg:
22

33
**********************************
4-
The ``MCMC`` Module
4+
The ``linalg`` Module
55
**********************************
66

7-
.. automodule:: mogp_emulator.MCMC
7+
.. automodule:: mogp_emulator.linalg.cholesky
88
:members:

0 commit comments

Comments
 (0)