-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adds Monte Carlo Samplers #340
base: develop
Are you sure you want to change the base?
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #340 +/- ##
===========================================
+ Coverage 98.76% 98.81% +0.05%
===========================================
Files 48 52 +4
Lines 3153 3557 +404
===========================================
+ Hits 3114 3515 +401
- Misses 39 42 +3 ☔ View full report in Codecov by Sentry. |
This is ready for a first review. There is a bit more work to do on integration testing for the slower convergence samplers, as well as integrating #357. I believe this PR is in a good state to be integrated into develop, with subsequent PRs improving the design structure and robustness all around. |
""" | ||
raise NotImplementedError | ||
|
||
def verify(self, x): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would not expect a dictionary to be passed here, so let's remove the verify function unless there is a particular reason for it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Given the call stack to this point, it's likely to have this as a dict, as parameters.verify(x)
within cost.evaluate
provides a dict for the cost.compute()
. In this situation, the x
dict for the prior calculation in the LogPosterior class needs to be converted from dict to ndarray for the prior methods.
I think this is probably the best spot for the conversion, as the alternative would be to individually apply the conversion to each cost.compute
, or refactor the prior methods to accept dicts. Do you have a preference?
@@ -372,6 +372,12 @@ def get_sigma0(self) -> list: | |||
|
|||
return sigma0 | |||
|
|||
def priors(self) -> list: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this be a JointPrior
instead (see suggestion below)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure if I follow on this one, are you suggesting it should be renamed joint_priors
or something else?
# Conflicts: # CHANGELOG.md
# Conflicts: # CHANGELOG.md
…dfS1, suggestions from review
…potential thread deadlock in optimisation_options test
… now optional arg with default=1
# Conflicts: # CHANGELOG.md
Description
Adds Pints-based Monte Carlo samplers. The full list of composed samplers can be found here.
This PR includes a base sampling class
BaseSampler
, of whichPintsBaseSampler
is a child. The Pints MCMC samplers are composed of PyBOP classes, which are constructed withinPintsBaseSampler
. This follows a similar structure to theBasePintsOptimiser
class. A genericMCMCSampler
class is included for use as a default, which is conceptually aligned with theOptimisation
class.Additions to the Priors class include
GaussianLogPrior
,ComposedLogPrior
.Two additional PR's will be chained around this one. The order of merge should be:
Issue reference
Fixes #6
Review
Before you mark your PR as ready for review, please ensure that you've considered the following:
Type of change
Key checklist:
$ pre-commit run
(or$ nox -s pre-commit
) (see CONTRIBUTING.md for how to set this up to run automatically when committing locally, in just two lines of code)$ nox -s tests
$ nox -s doctest
You can run integration tests, unit tests, and doctests together at once, using
$ nox -s quick
.Further checks:
Thank you for contributing to our project! Your efforts help us to deliver great software.