Skip to content

Commit

Permalink
Fix/mean predictions (#221)
Browse files Browse the repository at this point in the history
* V0.6.0 (#213)

* 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 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>

* Fix/kerneldist (#130)

* bugfix to catch situation where kernel distance returns NaN

* following confirmed bug fix, incremented version number for master update

* V0.4.0 (#148)

* 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

* 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)

*…
  • Loading branch information
6 people authored Feb 18, 2022
1 parent a07cfc1 commit b97a0e4
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 7 deletions.
6 changes: 4 additions & 2 deletions mogp_emulator/GaussianProcess.py
Original file line number Diff line number Diff line change
Expand Up @@ -503,7 +503,7 @@ def get_design_matrix(self, inputs):
dm = np.ones((inputs.shape[0], 1))
else:
try:
dm = dmatrix(self._mean, data={"x": inputs.T})
dm = np.array(dmatrix(self._mean, data={"x": inputs.T}))
except PatsyError:
raise ValueError("Provided mean function is invalid")
if not dm.shape[0] == inputs.shape[0]:
Expand Down Expand Up @@ -658,6 +658,8 @@ def fit(self, theta):

self.theta.mean = calc_mean_params(self.Ainv, self.Kinv_t,
self._dm, self.priors.mean)

self.Kinv_t_mean = self.Kinv.solve(self.targets - np.dot(self._dm, self.theta.mean))

if self.priors.mean.has_weak_priors:
n_coeff = self.n - self.n_mean
Expand Down Expand Up @@ -874,7 +876,7 @@ def predict(self, testing, unc=True, deriv=False, include_nugget=True):
mtest = np.dot(dmtest, self.theta.mean)
Ktest = self.get_cov_matrix(testing)

mu = mtest + np.dot(Ktest.T, self.Kinv_t)
mu = mtest + np.dot(Ktest.T, self.Kinv_t_mean)

var = None
if unc:
Expand Down
10 changes: 9 additions & 1 deletion mogp_emulator/MultiOutputGP.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
)
from mogp_emulator.Kernel import KernelBase
from mogp_emulator.Priors import GPPriors
from patsy import ModelDesc

class MultiOutputGP(object):
"""Implementation of a multiple-output Gaussian Process Emulator.
Expand Down Expand Up @@ -70,6 +71,10 @@ def __init__(self, inputs, targets, mean=None, kernel="SquaredExponential", prio

assert isinstance(mean, list), "mean must be None, a string, a valid patsy model description, or a list of None/string/mean functions"
assert len(mean) == self.n_emulators

if any([isinstance(m, ModelDesc) for m in mean]):
warnings.warn("Specifying mean functions using a patsy ModelDesc does not support parallel " +
"fitting and prediction with MultiOutputGPs")

if isinstance(kernel, str) or issubclass(type(kernel), KernelBase):
kernel = self.n_emulators*[kernel]
Expand Down Expand Up @@ -200,8 +205,11 @@ def predict(self, testing, unc=True, deriv=False, include_nugget=True,
predict_method = _gp_predict_default_NaN
else:
predict_method = self.GPClass.predict

serial_predict = (platform.system() == "Windows" or
any([isinstance(em._mean, ModelDesc) for em in self.emulators]))

if platform.system() == "Windows":
if serial_predict:
predict_vals = [predict_method(gp, testing, unc, deriv, include_nugget)
for gp in self.emulators]
else:
Expand Down
13 changes: 11 additions & 2 deletions mogp_emulator/tests/test_GaussianProcess.py
Original file line number Diff line number Diff line change
Expand Up @@ -500,8 +500,11 @@ def test_GaussianProcess_fit_logposterior(x, y, mean, nugget, sn):

mean_expect = np.linalg.solve(A, np.dot(gp._dm.T, Kinv_t_expect))

Kinv_t_mean_expect = np.linalg.solve(K, y - np.dot(gp._dm, mean_expect))

assert_allclose(L_expect, gp.Kinv.L)
assert_allclose(Kinv_t_expect, gp.Kinv_t)
assert_allclose(Kinv_t_mean_expect, gp.Kinv_t_mean, atol=1.e-10)
assert_allclose(LA_expect, gp.Ainv.L)
assert_allclose(mean_expect, gp.theta.mean)
assert_allclose(logpost_expect, gp.current_logpost)
Expand Down Expand Up @@ -807,7 +810,7 @@ def test_GaussianProcess_predict(x, y, dx):
K = np.exp(theta[-1])*gp.kernel.kernel_f(x, x, theta[:-1])
Ktest = np.exp(theta[-1])*gp.kernel.kernel_f(x_test, x, theta[:-1])

mu_expect = np.dot(Ktest, gp.Kinv_t)
mu_expect = np.dot(Ktest, gp.Kinv_t_mean)
var_expect = np.exp(theta[-1]) - np.diag(np.dot(Ktest, np.linalg.solve(K, Ktest.T)))

assert_allclose(mu, mu_expect)
Expand Down Expand Up @@ -853,13 +856,19 @@ def test_GaussianProcess_predict(x, y, dx):
Ktest = np.exp(theta[-1])*gp.kernel.kernel_f(x_test, x, theta[:-1])
R = dm_test.T - np.dot(gp._dm.T, np.linalg.solve(K, Ktest.T))

mu_expect = m + np.dot(Ktest, gp.Kinv_t)
mu_expect = m + np.dot(Ktest, gp.Kinv_t_mean)
var_expect += np.diag(np.dot(R.T, np.linalg.solve(np.dot(gp._dm.T, np.linalg.solve(K, gp._dm)),
R)))

assert_allclose(mu, mu_expect)
assert_allclose(var, var_expect)

# check that predictions at inputs are close to mean

mu, var, deriv = gp.predict(x)

assert_allclose(mu, y)

# nonzero mean priors

# gp = GaussianProcess(x, y, mean="x[0]",
Expand Down
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
MAJOR = 0
MINOR = 7
MICRO = 0
PRERELEASE = 0
ISRELEASED = True
PRERELEASE = 1
ISRELEASED = False
version = "{}.{}.{}".format(MAJOR, MINOR, MICRO)

if not ISRELEASED:
Expand Down

0 comments on commit b97a0e4

Please sign in to comment.