Releases: johannesulf/nautilus
Releases · johannesulf/nautilus
v0.7.0
Added
- Added the function
sampler.asymptotic_sampling_efficiency
which returns an estimate of the sampling efficiency in the sampling phase.
Changed
- One can now change whether to discard points in the exploration phase after calling
run
by changing thediscard_exploration
argument of the sampler. To achieve this, information about points in the exploration phase is never dropped. Consequently, the sampler does not create a backup of the end of the exploration stage under "filename_exp.hdf5", anymore. - The computational overhead was slightly reduced when new bounds are rejected. Also, the output now specifically mentions when adding a new bound failed because the volume increased.
Fixed
- Likelihoods with large plateaus shouldn't crash, anymore.
- Information updates about bounds are now written during the sampling phase. Previously, if computations were interrupted and restarted during the sampling phase, the volume estimates were noisier than necessary, and some points may have been proposed twice.
Removed
- The
n_jobs
keyword argument for the sampler has been removed. The pool used for likelihood calls is now also used for sampler parallelization, by default. To use independent pools for likelihood calls and sampler calculations, pass a tuple topool
. - The
random_state
keyword argument for the sampler has been removed. Useseed
, instead. - The
enlarge
keyword argument has been removed. Useenlarge_per_dim
, instead.
v0.6
Added
- Added the keyword arguments
n_points_min
andsplit_threshold
to the sampler. Previously, they were not accessible. - Sampling new points can now be parallelized using the
n_jobs
keyword argument.
Changed
- The code now uses the more modern
numpy.random.Generator
framework instead ofnumpy.random.RandomState
. - The default value for
n_points_min
is now the number of dimensions plus 50. Previously, it was hard-coded to be the number of dimensions plus 1. - The multi-ellipsoidal decomposition has been tweaked with the goal of reducing computational overhead for high-dimensional problems.
- The default number of parallel processes has been changed to one. By default, the sampler will not use parallelization.
- Multi-ellipsoidal decomposition now uses Gaussian mixture modeling instead of K-Means. The former typically results in better performance, i.e., smaller boundaries with fewer ellipsoids.
Fixed
- The sampler now correctly writes the random number generator in the sampling phase.
- The keyword argument
n_jobs
is now being correctly passed when training networks. Previously, all cores were used regardless ofn_jobs
. - The sampler doesn't crash when setting
verbose=True
andn_networks=0
.
Deprecated
- The
random_state
keyword argument for the sampler has been deprecated in favor of the new keyword argumentseed
.
v0.5
Changed
- Introduced neural network ensembles. Instead of relying on a single network, the sampler now uses 4 networks by default. This should lead to better sampling performance. The training of the networks is done in parallel, by default. Which means that on multi-core systems, time spent on neural network training shouldn't increase dramatically. The number of networks and training parallelization can be adjusted by the user.
- Introduced new bounds that lead to lower overhead for high-dimensional problems. The number of likelihood calls should be close to unaffected by this change.
- Increased the default number of live points from 1500 to 2000.
- Limited number of threads to 1 when calculating minimum volume enclosing ellipsoid and doing K-means clustering. More often than not, thread parallelization would slow things down while increasing CPU usage.
- When setting the filepath to "filename.hdf5" and discarding points in the exploration stage, the sampler now creates a backup of the end of the exploration stage under "filename_exp.hdf5".
Fixed
- Previously, the sampler would sometimes reject new bounds because their volume was estimated to be larger than the previous bound. However, this was based on very noisy volume estimates in certain situations. The sampler now uses more precise volume estimates, which can increase sampling performance for high-dimensional problems since bounds are updated more often.
- The sampler now doesn't perform unnecessary prior transformations when calculating the fraction of the evidence in the live set. This helps lower the computational overhead when using the sampler in CosmoSIS.
- When discarding points in the exploration phase, blobs are now also correctly removed.
- Fixed a crash when
blobs_dtype
is a single elementary dtype and multiple blobs are returned.
Deprecated
- The
enlarge
keyword argument for the sampler has been deprecated in favor of the new keywordenlarge_per_dim
. Specifyingenlarge
will be ignored but not raise an error.
Removed
- The
use_neural_network
keyword argument for the sampler has been deprecated. To not use neural networks, set the new keyword argumentn_networks
to 0.
v0.4
Changed
- Renamed "tessellation phase" to "exploration_phase". Accordingly, changed the keyword argument
discard_tessellation
todiscard_exploration
forrun
function. - Increased performance for sampling new points from shells.
- Likelihood functions will now never be passed structured numpy arrays. In case they previously received structured numpy arrays, they will now receive dictionaries. Similarly,
nautilus.Prior.physical_to_structure
has been renamed tonautilus.Prior.physical_to_dictionary
and the keyword argument ofnautilus.Sampler
frompass_struct
topass_dict
. - The
n_like_update
keyword argument fornautilus.Sampler
has been renamed ton_like_new_bound
. - The number of points for which the likelihood is evaluated is now always the batch size.
- Renamed
return_dict
keyword argument inSampler.posterior
toreturn_as_dict
.
Added
- Checkpointing and writing the sampler to disk.
- Support for so-called blobs, following the implementation in
emcee
.
v0.3
Added
- Made several parameters such as those of the neural networks available to the user.
Changed
- Changed the default number of live points and neural network structure.
- Now using
threadpoolctl
to limit the number of cores used by the neural network. - The keyword argument
threads
passed to theSampler
class has been removed and absorbed into thepool
keyword argument.
Fixed
- Fixed crash in
Prior
class.
v0.2
Changed
- Improved sampling strategy after tessellation. Sampling each shell now depends on the evidence, the number of likelihood calls and the effective sample size in each shell.
- Changed the way points are assigned to different neural network emulators. Effectively, the number of neural network emulators for each bound has been reduced, often to only one.
- Changed the way neural network emulators are trained.
Removed
- Removed TensorFlow backend in favor of only using scikit-learn.
Fixed
nautilus
now raises an error if sampling with less than 2 parameters. (#2)nautilus
now correctly passes a dictionary as input to the likelihood function ifpass_struct
is True andvectorized
is False.
v0.1
Added
- Initial beta release.