- New tool: sparse matrix solvers
- Allow sparse matrix input on
BaseProblem.set_jacobian
- Adapt CoFI to new BayesBay API
- New tool: Neighpy
cofi.utils.GaussianPrior
matrix generation aligned with textbook- sigma, instead of the square root of it is taken in now
- BayesBay adjusted according to API change
- New tool: BayesBay
- New tool: CoFI's implementation of the Border Collie Optimization algorithm
- A new class,
cofi.utils.EnsembleOfInversions
, has been introduced to replacecofi.utils.run_multiple_inversions
cofi.utils.run_multiple_inversions
, sequential and parallel options- Make
cofi.utils._reg_base.CompositeRegularization
pickleable
- Better
cofi.simple_newton
solver (more numerically stable; addition of stopping criteria)
- Rewrite
BaseProblem.set_regularization
- Rewrite and implement regularization utils:
cofi.utils.BaseRegularization
cofi.utils.LpNormRegularization
cofi.utils.QuadraticReg
cofi.utils.ModelCovariance
cofi.utils.GaussianPrior
- Bug fix: avoid evaluating log_likelihood if prior is -np.inf
- Enable properties set at
BaseProblem
constructor, e.g.cofi.BaseProblem(forward=my_fwd, model_shape=my_shape)
- Bug fix in
numpy.linalg.lstsq
- Use try block for functools.update_wrapper
- #110
BaseSolver
->BaseInferenceTool
_base_problem._FunctionWrapper
improvements
- Bug fixes in
BaseSolver
- #108 Utility regularization for flattening and smoothing in 1D cases
- #84 Use versioningit in build process
- #91 Raise warning when people set solver params that are not in optional list
- #97 Make walkers_start_pos a property of InversionOptions instead of BaseProblem
- #98 Typo, wording fixes; shorten error messages
- #90 Replaced
BaseProblem.suggest_solvers
withBaseProblem.suggest_tools
- #89 Avoid importing third party modules on
import cofi
- #92 List pytorch optim algorithms dynamically
- torch.optim
- return number of function evaluations
- accept callback function
- return better losses list
- add this to docs tree
- Internal bug fix in PyTorch optimizers: adding "success" key in returned dictionary
- In solvers table:
pytorch
->torch.optim
- Adding PyTorch.optim algorithms
- Simple newton
- Fix dimension issue
- return number of function evaluations
- #63 Minor restructure of
BaseSolver._assign_options()
- Wording change in
BaseProblem.summary()
- Further explanation in
BaseProblem.summary()
- Made CoFI pure Python, requires >=3.7
- Fix
BaseProblem.hessian_times_vector
andBaseProblem.jacobian_times_vector
that are generated from provided hessian / jacobian functions, by squeezing the results to ensure 1D dimensions
- Fix
InversionResult
keys to include underscores (so that attributes can be accessed easily)
cofi.simple_newton
- hide options of line search (until line search is implemented)
- prevent
initial_model
from being modified inplace
- Minor fix (removing debug prints)
- #72
set_data_misfit
error message fix
- Add
util
tocofi
namespace by importing it
matrix-based solvers
->matrix solvers
- #56 Modify BaseProblem.data_misfit to include data covariance matrix
- #70 Words renaming optimise -> optimize, etc.
- #54 Utility functions using findiff to generate the difference matrices
- #68 Optimise special cases in linear system solver
- Fixed potential problem in auto generated "times vector" functions when
input matrix might be of type
numpy.matrix
- Enabled possibility for parallelism with emcee, by making user defined functions pickleable
- #53 Add set_regularisation(reg, reg_matrix, lamda)
- #57 Create our own exception class
- #59 Optimize import cofi by not importing cofi.solvers
- #61 Remove lambda function from BaseProblem to avoid error in multiprocessing
- #55 Linear solvers with Tikhonov regularisations
- Bug fix in
_FunctionWrapper
, for functions with extra arguments likeBaseProblem.hessian_times_vector(m, v)
andBaseProblem.jacobian_times_vector(m, v)
- Bug fix in
BaseSolver.model_covariance
- Bug fix in
BaseSolver._assign_options
BaseProblem.model_covariance_inv
andBaseProblem.model_covariance
BaseProblem.set_data_covariance
and more general linear system solver
- Bugs fix in
EmceeSolver
and result summary
- Bug fixed in
BaseProblem.set_regularisation
- Added
emcee
as new solver, with the following new APIsBaseProblem.set_log_prior
BaseProblem.set_log_likelihood
,BaseProblem.set_log_posterior
,BaseProblem.set_log_posterior_with_blobs
,BaseProblem.set_blobs_dtype
- Process sampler output by converting to
arviz.InferenceData
, with the new API:- class
SamplingResult
SamplingResult.to_arviz()
- class
- Removed
BaseProblem.set_dataset(x,y)
, addedBaseProblem.set_data(y)
- Added args and kwargs for all setting functions in
BaseProblem
_FunctionWrapper
- Relaxed python version
>=3.8
to>=3.6
- Docs improvement, updated with emcee
- bug fixes
InversionRunner
has been changed intoInversion
- Added a references list for each backend tool
- How much information in
BaseProblem
is used for the inversion run now displayed throughInversion.summary()
numpy
andscipy
versions relaxed- Set objective function to be equal to data misfit if regularisation is not set
- Better error message when building failed