BOLFI and BOLFIRE sample several MCMC chains that could be examined with arviz tools, but the current idata returned from the sample class does not separate the chains. Here the idata in BOLFI and BOLFIRE samples is updated to include the individual chains. This means that we can for example use arviz.rhat(idata) and arviz.plot_trace(idata, kind='rank_bars') to examine the MCMC results. Meanwhile for example arviz.plot_posterior(idata) produces the same result with the current and updated idata.
Since there is no difference* in how BOLFI and BOLFIRE samples are created based on MCMC chains, this update also combines the BolfiSample and BOLFIRESample classes into an McmcSample. In practice this means that we do not need to duplicate code for new functionalities (like the idata update) in two classes. For example in the current version, plot_traces is only implemented in the BolfiSample class while BOLFIRE uses the same MCMC methods to sample the posterior and could benefit from the same analysis.
*There was small a difference in that BOLFI uses the keyword warmup to save how many samples should be discarded as warmup while BOLFIRE uses the same keyword to save chains where the warmup samples have been discarded. I assumed the latter was a mistake since it would be better that the same keyword is used to save the same information.
Summary:
BOLFI and BOLFIRE sample several MCMC chains that could be examined with
arviz
tools, but the currentidata
returned from the sample class does not separate the chains. Here theidata
in BOLFI and BOLFIRE samples is updated to include the individual chains. This means that we can for example usearviz.rhat(idata)
andarviz.plot_trace(idata, kind='rank_bars')
to examine the MCMC results. Meanwhile for examplearviz.plot_posterior(idata)
produces the same result with the current and updatedidata
.Since there is no difference* in how BOLFI and BOLFIRE samples are created based on MCMC chains, this update also combines the
BolfiSample
andBOLFIRESample
classes into anMcmcSample
. In practice this means that we do not need to duplicate code for new functionalities (like theidata
update) in two classes. For example in the current version,plot_traces
is only implemented in theBolfiSample
class while BOLFIRE uses the same MCMC methods to sample the posterior and could benefit from the same analysis.*There was small a difference in that BOLFI uses the keyword
warmup
to save how many samples should be discarded as warmup while BOLFIRE uses the same keyword to save chains where the warmup samples have been discarded. I assumed the latter was a mistake since it would be better that the same keyword is used to save the same information.Please make sure
If your contribution adds, removes or somehow changes the functional behavior of the package, please check that
make lint
,make docs
andmake test
and the proposed changes pass all unit tests (check step 6 of CONTRIBUTING.rst for details)
Copyright and Licensing
Please list the copyright holder for the work you are submitting (this will be you or your assignee, such as a university or company):
By submitting this pull request, the copyright holder is agreeing to license the submitted work under the following licenses: