All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Note: this version includes several changes that mean runs performed using previous versions cannot be resumed using this version.
- Add experimental support for discrete parameters (#401)
- Support remapping to the unit hypercube with the standard sampler (#398)
- Support reparameterisations that are not one-to-one (#418)
- Support user-defined for flow proposal classes via the
nessai.proposals
entry point (#411) - Add an
inverse
method toFlowModel
(#419) - Add support for using numpy random generators as inputs to samplers and other classes (#435)
- Add
include_logger_name
toconfigure_logger
(#445) - Add delta logL to the state plot produced by the standard sampler (#442)
- Support resuming the sampler from a different directory to which it was run (#429)
- Rework progress bar to no longer use tqdm (#422)
nessai.proposal.flowproposal.FlowProposal
submodule has been refactored into two classes (#419)N
has been renamed ton_samples
inFlowProposal.populate
(#419)- Use new numpy random number generation for all RNG (#435, #437, #441, )
- Change logging output to only include the name of the base logger (
nessai
) (#445) - Renamed
setup_logger
toconfigure_logger
(#445) - Tweaks to experimental
MCMCFlowproposal
(#432, #438)
- Fix outputs of
FlowProposal.backwards_pass
whendiscard_nans
andreturn_z
are bothTrue
(#419) - Fix
AugmentedFlowProposal
(#421)
- The
flow_class
argument forNestedSampler
is deprecated in favour offlow_proposal_class
(#411) setup_logger
is now deprecated in favour ofconfigure_logger
(#445)
- The deprecated
FlowProposal.rejection_sampling
method has been removed (#419)
- Handle error when
linear_transform='None'
which occurs when usingbilby_pipe
after theflow_config
changes (#414)
- Make tests that require
faiss
are optional in the test suite (#408)
- Add p-value and additional panel to indices plot (#391)
- Add support for numpy 2.0 (#387)
- Add support for arbitrary priors in unit hypercube with the importance sampler (#377)
- Simplify rescaling/reparameterisation configuration #395)
- The default reparameterisation has been changed from rescale-to-bounds to z-score standardisation (#395)
- Change default seaborn style to avoid plotting issues on some systems (#397)
- Rework flow configuration to use
flow_config
andtraining_config
keyword arguments (#394) - Skip nested sampling loop and populating live points if run is already finalised (#393, #400)
- Specifying
model_config
in theflow_config
dictionary is now deprecated (#394) FlowProposal.names
,FlowProposal.rescaled_names
andFlowProposal.rescaled_dims
are now deprecated (#395)
rescale_parameters
,boundary_inversion
,inversion_type
,rescale_bounds
update_bounds
,detect_edges
,detect_edges_kwargs
, have all been removed in favour of using the reparameterisations directly (#395)- Drop support for Python 3.8 (#396)
- Add experimental
ClusteringFlowProposal
(#380) - Add experimental support for using flows directly from
glasflow
(#386)
This release reworks large parts of the importance nested sampler to enable drawing i.i.d samples during sampling.
The high-level API remains unchanged but the APIs for the
ImportanceNestedSampler
and ImportanceFlowProposal
classes have changed.
Existing runs of the importance nested sampler cannot be resumed with this
version.
- Add option to accumulate weights during rejection sampling (#358)
- Add option to draw i.i.d samples during sampling when using the importance nested sampler (#362)
- Add the
OrderedSamples
class for handling samples in the importance nested sampler (#362) - Add the
in_unit_hypercube
andsample_unit_hypercube
methods to the model classModel
(#362) - Add
log-posterior-weights
tonessai.samplers.importance.ImportanceNestedSampler
(#382) - Add explicit support for Python 3.12 (#374)
- Add fractional evidence stopping criterion to the importance nested sampler (#371)
- Add option to recompute
log_q
when resuming the importance nested sampler instead of saving it (#368)
- Standardize how sampling history (run statistics) are stored (#364)
- The importance nested sampler no longer requires the
to_unit_hypercube
method to run (#362) - The
ratio
stopping criterion is now computed using the log-likelihood threshold instead of the live points (#362) - Change various defaults related to the importance nested sampler (#362)
- Random seed is now randomly set if not specified and saved in the result file (#378)
- Rework how weights are handled in the importance nested sampler (#376)
- Fix bug in with legend in
nessai.plot.plot_1d_comparison
(#360) - Fix bug with
truths
argument innessai.plot.corner_plot
(#375)
- Remove the deprecated
max_threads
argument fromnessai.flowsampler.FlowSampler
andnessai.utils.threading.configure_threads
(#363)
- Add log-posterior weights to the result dictionary and file (#341)
- Add support for checkpoint callbacks (#355)
- Explicitly support and test against Python 3.11 (#352)
- Relax tolerance used when checking if the log-prior is vectorised such that bilby priors are treated as vectorised (#343)
birth_log_likelihoods
toNestedSampler
andlogL_birth
to the result dictionary (#318)- Support for non-vectorised log-prior functions (#330)
- Add the live points to the trace plot for the standard nested sampler (#334)
- Add an option to resume from a pickle object rather than a resume file (#337)
- Nested samples are now stored as an array in the result object rather than a dictionary (#318)
- Reduce the size of importance nested sampling checkpoints (#327)
- Rename
nessai.utils.bilbyutils
tonessai.utils.settings
(#332) - Changed name of
dZ
todlogZ
, this does not change how the stopping criterion is calculated (#333)
- Fix a bug with the prior bounds that occurred when
bounds
andnames
had different orders (#329) - Fix a bug with
close_pool
that lead to the pool being closed irrespective of the value (#331)
nessai.utils.bilbyutils
is deprecated in favour onnessai.utils.settings
and will be removed in a future release (#332)
- Add importance nested sampler (#285)
- Add support for using regex for specifying parameters in the reparametersations dictionary (#312)
- Enable constant volume mode with uniform nball latent prior (#306)
- Pass kwargs in RealNVP to the coupling class (#307)
- Use log-scale on state plot (#308)
- Support
forkserver
andspawn
multiprocessing start methods (#313)
- Fix incorrect sign in delta phase reparameterisation (#292)
- Remove maximum scipy version (#295)
- Specify three quantiles in default corner kwargs as required by corner 2.2.2 (#298)
- Add
DeltaPhaseReparameterisation
for GW analyses. (#244) - Add
nessai.utils.sorting
. (#244) - Add
log_posterior_weights
andeffective_n_posterior_samples
to the integral state object. (#248) - Add a check for the multiprocessing start method when using
n_pool
. (#250) - Add option to reverse reparameterisations in
FlowProposal
. - Add
disable_vectorisation
toFlowSampler
. (#254) - Add
likelihood_chunksize
which allows the user to limit how many points are passed to a vectorised likelihood function at once. (#256) - Add
allow_multi_valued_likelihood
which allows for multi-valued likelihoods, e.g. that include numerical integration. (#257) - Add
parameters
keyword argument tonessai.plot.plot_trace
and pass additional keyword arguments to the plotting function. (#259) - Add option to construct live points without non-sampling parameters. (#266)
- Add option to use a different estimate of the shrinkage. Default remains unchanged. (#248, #269)
- Add
ScaleAndShift
reparameterisation which includes Z-score normalisation. (#273) - Add option to specify default result file extension. (#274)
- Refactor
nessai.reparameterisations
into a submodule. (#241) - Use
torch.inference_mode
instead oftorch.no_grad
. (#245) - Changed
CombinedReparameterisations
to sort and add reparameterisations based on their requirements. (#244, #253) - Refactor
nessai.evidence._NSIntegralState
to inherit from a base class. (#248) - Revert default logging level to
INFO
. (#249) - Rework logging statements to reduce the amount of information printed by default. (#249)
- Refactor
nessai.proposal.FlowProposal.verify_rescaling
to be stricter. (#253) - Truth input in
nessai.plot.corner_plot
can now be an iterable or a dictionary. (#255) - Tweak how the prior volume is computed for the final nested sample. This will also change the evidence and posterior weights. (#248, #269)
- Stricter handling of keyword arguments passed to
NestedSampler
. Unknown keyword arguments will now raise an error. (#270) - Rework
nessai.config
to haveconfig.livepoints
andconfig.plot
which contain global settings. Some of the setting names have also changed. (#272) Rescale
reparameterisation is now an alias forScaleAndShift
. (#273)- Change the default result file extension to
hdf5
, old result file format can be recovered by setting it tojson
. (#274) - Optimisations to
FlowProposal.populate
, including changes toModel.in_bounds
and how sampling from the latent prior is handled. (#277) - Add a maximum figure size (
nessai.config.plotting.max_figsize
) to prevent very large trace plots when the number of dimensions is very high. (#282)
- Fix a bug where setting the livepoint precision (e.g.
f16
) did not work. (#272) - Fix plotting failing when sampling large number of parameters. (#281, #282)
- Removed
nessai._NSIntegralState.reset
. (#248) - Removed
nessai.gw.legacy
. (#267) - Removed support for changing the variance of the latent distribution via
draw_latent_kwargs
fromFlowProposal
. (#277)
- Fix bug that led to the multiprocessing pool not being used when resuming. (#261)
Important: in this release the flow backend changed from nflows
to glasflow
which increased the minimum version of PyTorch to 1.11.0.
- Add explicit support for Python 3.10. (#224)
- Add more structure utils (
get_subset_arrays
,isfinite_struct
). (#209) - Add
nessai.sampler.base.BaseNestedSampler
class. (#210) - Add option to use multinomial resampling to
nessai.posterior.draw_posterior_samples
. (#213, #214) - Add features (
log_prob
,sample
,end_iteration
,finalise
, training with weights) toFlowModel
. (#216) - Add option to checkpoint based on elapsed time. (#225)
- Add
stream
option tosetup_logger
for setting the stream forlogging.StreamHandler
. (#229) - Add configurable periodic logging based on either the iteration or elapsed time. (#229)
- Add
glasflow
dependency. (#228) - Add
posterior_sampling_method
toFlowSampler.run
. (#233) - Add options
plot_{indices, posterior, logXlogL}
for disabling plots inFlowSampler.run
. (#233) - Add
FlowSampler.terminate_run
. (#233) - Add
FlowSampler.log_evidence
andFlowSampler.log_evidence_error
. (#233) - Add
nessai.utils.bilbyutils
. (#236) - Add a warning for when the final p-value for the insertion indices is less than 0.05. (#235)
- Add
reset_flow
toNestedSampler
for resetting the entire flow. (#238)
- Change how threading is handled to no longer use
max_threads
. (#208) - Refactor
nessai.nestedsampler
into thenessai.samplers
submodule. (#210) - Refactor
nessai.flowmodel
into a submodule withnessai.flowmodel.{base, utils, config}
. (#216) - Change how
noise_scale
is configuredFlowModel
. User can now specifynoise_type
andnoise_scale
. (#216) - Change
nessai.utils.rescaling.{logit, sigmoid}
to matchtorch.{logit, sigmoid}
. (#218) - Change default checkpoint interval to 10 minutes rather than after training. (#225)
- Change flows to use
glasflow.nflows
instead ofnflows
. (#228) - Change
close_pool
to be called at the end ofFlowSampler.run
rather than at the end ofNestedSampler.nested_sampling_loop
. (#233) - Bump minimum PyTorch version to 1.11.0. (#230)
- Fixed a bug in
nessai.flows.utils.configure_model
that only occurred when the specifieddevice_tag
is invalid. (#216) - Fixed a bug in
nessai.utils.sampling.draw_truncated_gaussian
where the input was being changed by an in-place operation. (#217) - Fixed an infinite loop when resuming a run that was interrupted when switching proposal. (#237)
- Setting
max_threads
is deprecated and will be removed in a future release. (#208) nessai.nestedsampler
is deprecated and will be removed in a future release. Usenessai.samplers.nestedsampler
instead. (#226)nessai.flows.transforms.LULinear
is deprecated in favour ofglasflow.nflows.transforms.LULinear
and will be removed in a future release. (#228)
- Removed unused code for saving live points in
NestedSampler
. (#210) - Removed
nflows
dependency. (#228)
0.6.0 - 2022-08-24
- Add a warning in
Model.verify_model
whenModel.log_prior
returns an array that hasfloat16
precision. (#175) - Add more functionality for configuring live point fields and defaults. (#170)
- Record iteration at which live points are drawn in
it
field of live points. (#170) - Add
nessai.config
for storing package wide defaults. (#170) - Add
nessai.utils.testing
submodule which contains functions to use during testing. (#170) - Add
nessai.livepoint.unstructured_view
andnessai.model.Model.unstructured_view
for constructing unstructured views of live points. (#178) - Add
nessai.plot.corner_plot
as an alternative toplot_live_points
that usescorner
instead ofseaborn
. (#189) - Add new examples. (#195, #198)
- Add
filehandler_kwargs
tonessai.utils.logging.setup_logger
which allows the user to configure theFileHandler
in the logger. (#204) - Add
final_p_value
andfinal_ks_statistic
toNestedSampler
and the result file.
- Change default values for log-likelihood and log-prior in empty live points to be
np.nan
instead of zero. (#170) nessai.livepoint.get_dtype
now returns an instance ofnumpy.dtype
. (#170)- Style for plots is no longer set globally and can be disabled completely. (#194)
- Update examples. (#190)
- Changed behaviour of
from nessai import *
to no longer imports any modules. (#201)
- Fixed a bug in
FlowProposal.populate
which occurred when the pool of samples was not empty (closes #176) (#177) - Fixed a bug in
nessai.model.Model.new_point
where the incorrect number of points were returned. (#200)
- Drop support for Python 3.6. (#188)
- Remove a temporary fix for #46 that was introduced in #47. (#202)
0.5.1 - 2022-06-20
- Fixed a bug where live points where added to the initial points with incorrect log-likelihood and log-prior. (#171)
0.5.0 - 2022-06-14
- Add
dataframe_to_live_points
function tonessai.livepoint
for converting from apandas.DataFrame
to live points. (#133) - Add
fallback_reparameterisation
toFlowProposal
. This allows the user to specify which reparameterisation to use for parameters that are not included in the reparameterisations dictionary. Default behaviour remains unchanged (defaults to no reparameterisation). (#134) - Add
rolling_mean
tonessai.utils.stats
. (#136) - Add
nessai.flows.utils.create_linear_transform
as a common function for creating linear transforms in the flows. (#137) - Add
nessai.flows.transforms.LULinear
to address a bug in nflows that has not been patched and prevents the use of CUDA withLULinear
. (#138) - Add
calibration_example.py
to the gravitational wave examples. (#139) - Add
defaults
keyword argument tonessai.reparameterisations.get_reparameterisation
for overriding the dictionary of default reparameterisations. (#142) - Add explicit tests for
nessai.flowsampler
(#143) - Add more tests for
nessai.reparameterisations
(#145) - Add more tests for
nessai.gw
(#144) - Add support for vectorised likelihoods and automatically detect if the likelihood is vectorised. (#148, #166)
- Add support for passing a user-defined pool instead of using
n_pool
. (#148) - Add an option to disable signal handling in
FlowSampler
. (#159) - Add support for
ray.util.multiprocessing.Pool
(fixes #162). (#163)
NestedSampler.plot_state
now includes the log-prior volume in one of the subplots and the rolling mean of the gradient (|dlogL/dLogX|) is plotted instead of the gradient directly. (#136)- The figure produced by
NestedSampler.plot_state
now includes a legend for the different vertical lines that can appear in the subplots. (#136) RealNVP
andNeuralSplineFlow
now usenessai.flows.utils.create_linear_transform
. (#137)- Updated all of the examples to reflect the new defaults. (#139)
- Rework
nessai.gw.reparameterisations.get_gw_reparameterisation
to useget_reparameterisation
with thedefaults
keyword argument. (#142) - Switch to
os.path.join
for joining paths. (#143, #161) - Context is now passed to the transform in
nessai.flows.base.NFlow
enabling the use of flows with conditional transforms. (#146) - Add
context_features
to RealNVP and NeuralSplineFlows (#146) - Rework
MaskedAutoregressiveFlow
to addcontext_features
(#146) - Rework how likelihood parallelisation is handled. The model now contains the pool instead of the sampler and proposals. (#148)
- Update
parallelisation_example.py
to show use ofn_pool
andpool
for parallelisation. (#148) - Simplify how the normalising flow is reset in
FlowModel
andNestedSampler
. (#150) - Reduce logging level a some statements in
FlowProposal
. (#160)
- Fixed a bug in
RescaleToBounds
when usingpre_rescaling
without boundary inversion. (#145) - Fixed slow integration tests not running if a quick integration test is reran after failing. (#153)
- Fixed a bug that prevented the use of
prior_sampling=True
withFlowSampler
. (#156) - Fix issue when creating multiple instances of
FlowSampler
with the same output directory when resuming is enabled as reported in #155. (#157) - Fixed missing square-root in
nessai.flows.distributions.MultivariateGaussian._sample
and fix the corresponding unit test. (#158) - Fix issue with cosmology in
ComovingDistanceConverter
caused by changes toastropy.cosmology
in version 5.1. (#168) - Fixed bug with caching in
LULinear
transform when reloading a checkpointed flow. (#167)
0.4.0 - 2021-11-23
- Add a constant volume mode to
FlowProposal
. In this mode the radius of the latent contour is fixed to the q'th quantile, which by default is0.95
. (#125) - Add a check for
resume_file
whenresume=True
. (#126) - Change default logging level to
WARNING
. (#126) - Add
angle-cosine
reparameterisation. (#126) - Added an explicit check for one-dimensional models that raises a custom exception
OneDimensionalModelError
. (#121) RealNVP
andNeuralSplineFlow
now raise an error iffeatures<=1
. (#121)- Add option in
nessai.reparameterisations.Angle
to setscale=None
, the scale is then set as2 * pi / angle_prior_range
. (#127) - Add
'periodic'
reparameterisation that usesscale=None
innessai.reparameterisations.Angle
. (#127) - Add the
use_default_reparameterisations
option toFlowProposal
to allow the use of the default reparameterisations inGWFlowProposal
without specifying any reparameterisations. (#129) - Add
chi_1
,chi_2
andtime_jitter
to known parameters inGWFlowProposal
with corresponding defaults. (#130)
- Reparameterisation
angle-sine
is now an alias forRescaledToBounds
instead ofAngle
with specific keyword arguments. (#126) maximum_uninformed=None
now defaults to 2 timesnlive
instead ofnp.inf
. (#126)nlive=2000
by default. (#126)- Default
batch_size
is now 1000. (#126) - Default
n_neurons
is now 2 times the dimensions of the normalising flow. (#126) - Default mode for
FlowProposal
isconstant_volume_mode=True
. (#126) - Proposal plots are now disabled by default. (#126)
cooldown
now defaults to200
to reflect the change innlive
. (#126)- Default optimiser is now
adamw
. (#126) - Rework
AugmentedFlowProposal
to work with the new defaults. (#126) Model.names
andModel.bounds
are now properties by default and their setters include checks to verify the values provided are valid and raise errors if not. (#121)- Logger now has propagation enabled by default. (#128)
FlowProposal.configure_reparameterisations
can now handle an input ofNone
. In this case only the default reparameterisations will be added. (#129)- Changed default reparameterisation for gravitational-wave parameters
a_1
anda_2
to'default'
. (#130)
- Fixed a bug where the parameters list passed to
Reparameterisation
(or its child classes) wasn't being copied and changes made within the reparameterisation would change the original list. (#127)
keep_samples
inFlowProposal
will be removed in the next minor release.
0.3.3 - 2021-11-04
- Fixed a bug in
nessai.livepoint.dict_to_live_points
when passing a dictionary where the entries contained floats instead of objects with a length raised an error. (#119)
0.3.2 - 2021-10-12
- Added more checks to the init method for
nessai.reparameterisations.AnglePair
to catch invalid combinations of priors and/or angle conventions. Now supports RA or azimuth defined on [-pi, pi] in addition to [0, 2pi]. (#114) - Add a check in
nessai.flowmodel.update_config
for'noise_scale'
, aValueError
is now raised ifnoise_scale
is not a float or'adaptive'
. (#115) - Add
codespell
to the pre-commit checks. (#116)
- The dtype for tensors passed to the flow is now set using
torch.get_default_dtype()
rather than always usingfloat32
. (#108) - Incorrect values for
mask
innessai.flows.realnvp.RealNVP
now raiseValueError
and improved the error messages returned by all the exceptions in the class. (#109) - Change scale of y-axis of the log-prior volume vs. log-likelihood plot from
symlog
to the default linear axis. (#110) nessai.plot.plot_trace
now includes additional parameters such aslogL
andlogP
default, previously the last two parameters (assumed to belogL
andlogP
were always excluded). (#111)
- Fixed an issue where
nessai.reparameterisations.AnglePair
would silently break when the prior range for RA or azimuth was set to a range that wasn't [0, 2pi]. It now correctly handles both [0, 2pi] and [-pi, pi] and raises an error for any other ranges. (#114) - Fixed various spelling mistakes throughout the source code and documentation. (#116)
0.3.1 Minor improvements and bug fixes - 2021-08-23
This release has a few minor improvements and bug fixes. It also explicitly adds support for python 3.9, which worked previously but was not tested.
- Add
in_bounds
,parameter_in_bounds
andsample_parameter
methods tonessai.model.Model
. (#90) - Implemented the option to specify the cosmology in
nessai.gw.utils.ComovingDistanceConverter
usingastropy
. Previously changing the value had no effect of the transformation. (#91) - Improve test coverage for
nessai.proposal.base.Proposal
(#92) - Add
'logit'
to the default reparameterisations (#98) - Add example using the Rosenbrock likelihood in two dimensions (#99)
- Add a
colours
argument tonessai.plot.plot_1d_comparison
(#102) - Explicitly support Python 3.9 (Added Python 3.9 to unit tests) (#103)
nessai.gw.utils.DistanceConverter
now inherits fromabc.ABC
andto_uniform_parameter
andfrom_uniform_parameter
are both abstract methods. (#91)nessai.proposal.base.Proposal
now inherits fromabc.ABC
anddraw
is an abstract method. (#92)nessai.proposal.rejection.RejectionProposal
now inherits fromnessai.proposal.analytic.AnalyticProposal
. Functionality is the same but the code will be easier to maintain since this removes several methods that were identical. (#93)noise_scale='adaptive'
option inFlowModel
now correctly uses a standard deviation of 0.2 times the mean nearest neighbour separation as described in Moss 2019. Note that this feature is disabled by default, so this does not change the default behaviour. (#95)- Refactor
nessai.utils
into a submodule. (#96) - Change behaviour of
determine_rescaled_bounds
so thatrescale_bounds
is ignored wheninversion=True
. This matches the behaviour inRescaledToBounds
where when boundary inversion is enabled, values are rescaled to [0, 1] and then if no inversion if applied, changed to [-1, 1]. (#96) - Tweaked
detect_edges
so thatboth
is returned in cases where the lower and upper regions contain zero probability. (#96) NestedSampler
no longer checks capitalisation offlow_class
when determining which proposal class to use. E.g.'FlowProposal'
and'flowproposal'
are now both valid values. (#100)NestedSampler.configure_flow_proposal
now raisesValueError
instead ofRuntimeError
ifflow_class
is an invalid string. (#100)- Raise a
ValueError
ifnessai.plot.plot_1d_comparison
is called with a labels list and the length does not match the number of sets of live points being compared. (#102) nessai.flow.base.BaseFlow
now also inherits fromabc.ABC
and methods that should be defined by the user are abstract methods. (#104)- Changed default to
fuzz=1e-12
innessai.utils.rescaling.logit
andnessai.utils.rescaling.sigmoid
and improved stability. (#105)
- Fixed a typo in
nessai.gw.utils.NullDistanceConverter.from_uniform_parameter
that broke the method. (#91) - Fixed a bug in
nessai.reparameterisations.RescaleToBounds
when usingoffset=True
andpre_rescaling
where the prime prior bounds were incorrectly set. (#97) - Fixed a bug that prevented disabling periodic checkpointing. (#101)
- Fixed a bug when calling
nessai.plot.plot_1d_comparison
with live points that contain a field with only infinite values. (#102) - Fixed the log Jacobian determinant for
nessai.utils.rescaling.logit
andnessai.utils.rescaling.sigmoid
which previously did not include the Jacobian for the fuzz when it was used. (#105)
0.3.0 Testing, testing and more testing - 2021-07-05
This release contains a large number of changes related to bugs and issues that were discovered when writing more tests for nessai
.
It also adds a number of feature and examples.
Note: Runs produced with previous releases are incompatible with this release and cannot be resumed with out manual intervention.
- Added code to catch errors when calling
plot_live_points
whengwpy
is installed. - Added tests for
_NSIntegralState
. - Add code coverage upload
- Added an example of using unbounded priors,
bilby_unbounded_priors.py
- Added
Rescale
reparameterisation that just rescales by a constant and does not require prior bounds. Also add tests for this reparameterisation. - Added more GW examples.
- Added tests for
AugmentedFlowProposal
. - Added an example using
AugmentedFlowProposal
. - Added eggbox example.
- Added an error if calling
FlowProposal.rejection_sampling
withFlowProposal.truncate=True
butworst_q=None
. - Add option to train using dataloaders or directly with tensors. This is faster when using CUDA.
- Add options to train with different optimisers: Adam, AdamW, SGD
- Add tests for
NestedSampler
- Explicitly check prior bounds when using reparameterisations. This catches cases where infinite bounds are used and break some reparameterisations. (#82)
- Add error when calling
FlowProposal.populate
without initialising the proposal. - Add
NestedSampler.plot_insertion_indices
to allow for easier plotting of insertion indices. - Add
filename
keyword argument toNestedSampler.plot_trace
. - Added
batch_norm_within_layers
toNeuralSplineFlow
- Plotting logX vs logL now returns the figure is
filename=None
NestedSampler.plot_state
now has the keyword argumentfilename
and the figure is only saved if it is specified.- Changed name from
_NSintegralState
to_NSIntegralState
. nessai.model.Model
now inherits fromabc.ABC
andlog_prior
andlog_likelihood
are nowabstractmethods
. This prevents the class from being used without redefining those methods.- Updated
AumgentedFlowProposal
to work with current version ofFlowProposal
- Fix random seed unit tests.
- Improved
FlowProposal.reset
so that all attributes that are changed by callingdraw
are reset. - Move
_NSIntegralState
and some functions fromposterior.py
toevidence.py
NestedSampler.check_flow_model_reset
will now NOT reset the flow it has never been trained (i.eproposal.training_count==0
)- Moved all legacy gw functions to
nessai/gw/legacy.py
and removed them from the coverage report. - Minor improvements to
NestedSampler
- Better handling on NaNs in
NestedSampler.populate_live_points
- Minor improvements to plotting in
FlowProposal
and moved plotting to separate methods inFlowProposal
. - Switch to using
os.path.join
when joins paths. - Improved
FlowProposal.reset
- Renamed
FlexibleRealNVP
toRealNVP
, shouldn't affect most uses since the default way to specify a flow is via strings inconfigure_model
. - Renamed
nessai.flows.utils.setup_model
toconfigure_model
. - Renamed
nessai.flows.utils.CustomMLP
toMLP
- Changed default value for
tail_bound
inNeuralSplineFlow
to 5.
- Fixed a bug when plotting the state plot from a saved instance of the sampler where the sampling time was changed based on the current time.
- Fixed a bug when using
plot_trace
,plot_1d_comparison
orplot_live_points
with a single parameter - Total sampling time is now correctly displayed when producing a state plot from a saved sampler.
- Fixed a bug when using unbounded priors related to
Model.verify_model
- Fix inversion-split with
RescaleToBounds
- Fixed
AugmentedGWFlowProposal
. - Fixed a bug with
plot_live_points
when the hue parameter (c
) was constant. - Fixed a bug with the reparameterisation
Rescale
whenscale
was set to a negative number. - Fixed a bug where
scale
could not be changed inToCartesian
. - Fixed a error when specifying
NullReparameterisation
(!82) - Fix typo in
FlowProposal.set_poolsize_scale
whenacceptance=0
- Fixed unintended behaviour when
rescale_parameters
is a list andboundary_inversion=True
, where the code would try apply inversion to all parameters inModel.names
. - Fixed bug where
z
returned byFlowProposal.rejection_sampling
was incorrect when using truncation (which is not recommended). - Fix
prior_sampling
- Fixed minor typos in
nessai.proposal.flowproposal.py
- Remove "clip" option in
FlowProposal
, this was unused and untested.
0.2.4 - 2021-03-08
This release includes a number of bug fixes, changes to make the GWFlowProposal
consistent with LegacyGWFlowProposal
and a number of new unit tests to improve test coverage.
- Add poolsize to
AnalyticProposal
- Add a test for sampling with multiprocessing.
- Add a test for sampling with
AnalyticProposal
andRejectionProposal
. - Add a test for using the proposal methods with
n_pool
- Add tests for reparameterisations.
- Add a test for comparing
GWFlowProposal
andLegacyGWFlowProposal
.
- Changed prime priors in
LegacyGWFlowProposal
to not update. This improves efficiency. - Changes to the reparameterisations to the the proposal consistent with
LegacayGWFlowProposal
:- Use [-1, 1] when inversion is enabled but not applied
- Improved errors when reparameterisations are configured incorrectly.
- Fixed a bug with saving results when multiprocessing is enabled.
- Fixed a bug with
AnalyticProposal
introduced in the last release. - Fixed a bug with resuming when using certain reparameterisations.
0.2.3 - 2021-02-24
Add support for Python >= 3.6 and other minor changes and bug fixes
- Badges for DOI and PyPI versions.
- Add support for Python >= 3.6.
- Improve doc-strings and tweak settings for doc-strings in the documentation.
- Add tests for plotting functions.
- Added sections to README and docs on citing
nessai
.
- Remove
:=
operator to enable support for Python >= 3.6. - Plotting functions are now more consistent and all return the figure if
filename=None
.
- Fixed bug when plotting non-structured arrays with
plot_1d_comparison
and specifyingparameters
. - Fixed bug where
plot_indices
failed if using an empty array but worked with an empty list.
- Remove
plot_posterior
because functionality is include inplot_live_points
. - Remove
plot_likelihood_evaluations
because information is already contained in the state plot. - Remove
plot_acceptance
as it is only by augmented proposal which is subject to change. - Remove
plot_flow
.
0.2.2 - 2021-02-19
This release was added to trigger Zenodo for producing a DOI.
- Docs badge
0.2.1 - 2021-02-18
Minor repository related fixes. Core code remains unchanged.
- PyPI workflow to automatically release package to PyPI
- Fixed issue with README not rendering of PyPi
0.2.0 - 2021-02-18
First public release.
- Complete documentation
- Use
setup.cfg
andpyproject.toml
for installing package reparemeterisations
submodule for more specific reparameterisationshalf_gaussian.py
example
- Change to use
main
instead ofmaster
- Default
GWFlowProposal
changed to usedreparameterisations
- Split
proposal.py
into various submodules - Minor updates to examples
max_threads
default changed to 1.
- Fix a bug where
maximum_uninformed
did not have the expected behaviour.
- Original
GWFlowProposal
method renamed toLegacyGWFlowProposal
. Will be removed in the next release.