Releases: 1313e/PRISM
v1.3.2
v1.3.1.1
v1.3.1
This is the v1.3.1 release of the PRISM package and serves as a small maintenance patch.
Bugfixes:
- Fixed a few PEP8 problems in the code;
- Fixed a few typos in the documentation of the
ModelLink
class.
Changes/Optimizations:
- Replaced
pytest-pep8
withpytest-flake8
for PEP8 testing (this solves the Azure tests failing).
v1.3.0
This is the v1.3.0 release of the PRISM package.
New additions:
- Added the
_get_data_idx_flat
method to theEmulator
class that returns a flattened list ofdata_idx
tuples; - Added the
full_impl_rng
argument to theproject
method, which controls whether the lower limit for the minimum implausibility plot should be set to zero (True
) or to the lowest value plotted (False
, default); - The
ModelLink
class now also has convenient class properties for the model data and parameters; - Added the
_get_sam_dict
method to theModelLink
class to more easily convert a sample set into a sample dict; - Added parameter estimate arrows to the projection figures, which are drawn whenever an estimate is outside the plotted parameter range.
Bugfixes:
- Calling a function in worker mode that in turn calls
_make_call
, but not in worker mode, no longer causes unpredictable behavior; - Redrawing a projection now actually uses the parameters that were used to calculate its data;
- Fixed a problem in Crystal where the projection dictionaries were not always reset properly;
- The colorbar in 3D projections is now scaled properly in different alignments.
Changes/Optimizations:
- The
impl_cut
property can now always be set through the use of_set_impl_par
; - The
impl_par
data is only saved to HDF5 after an analysis ends successfully; - Significant polynomial terms in the regression function are now determined more accurately;
- Reduced memory consumption in certain operations when using large arrays;
- Changed several class properties of the
Pipeline
,Emulator
andModelLink
classes to return more user-readable versions; - Massively improved the interpolation methods used for the projections.
v1.2.3
This is the v1.2.3 release of the PRISM package and serves as an optimization patch.
New additions:
- Added missing
PolyLink
class documentation; - With the introduction of the improved convergence algorithm as described below, projection figures can now be made to either show the entirety of parameter space or solely the part that figure is defined in. The former allows for easier comparison between figures, whereas the latter provides more information;
- Added tooltips to the different projection dictionaries that can be modified in Crystal;
- Backup files made with the
_make_backup
method of theModelLink
class can now be used as external model realization sets inconstruct
. These can be used by providing the unique suffix identifier of the required backup file.
Bugfixes:
- Fixed a bug where if solely the intercept term of a regression process was significant, the construction process would crash;
- Fixed a bug where the regression process could fail in rare cases where a single least-squares fit would not converge.
Changes/Optimizations:
- Copyright notice now includes the year '2020';
- Reanalyzing an emulator iteration now uses the current implausibility cut-offs instead of the global default cut-offs;
- The emulator now only samples over the hypercube in an iteration that contains all of its defined samples. This means that, for example, if a parameter 'A' is only defined over the range
[0.5, 1.0]
in iteration 2, then analyzing iteration 2 will only consider values of 'A' in this range (and a bit extra to account for inaccuracies); - The above massively increases both the accuracy and the convergence rate of the emulator, when parameters show strong preferences for specific parts of their range. Parameters that can take any value in their range are unaffected by this change;
- Projections can no longer be made when its iteration has not been analyzed yet;
- Emulator compatibility warnings are now only emitted once per type.
v1.2.2
This is the v1.2.2 release of the PRISM package and serves as a minor patch/optimization.
New additions:
- Added the
f_impl
emulator parameter to PRISM, which is used to artificially inflate the prior emulator variance of all known samples; - Emulators made with a version earlier than this one, will have the value of
f_impl
set to zero when loaded.
Bugfixes:
- The
poly_terms
Emulator property now returns the proper polynomial terms.
Changes/Optimizations:
- All different uses of the residual variance in the emulator are now pre-calculated, making emulator evaluations faster.
v1.2.1
This is the v1.2.1 release of the PRISM package and serves as a minor patch.
New additions:
- PRISM now uses the new CMasher package for Crystal.
Bugfixes:
- If an exception is raised in worker mode in MPI, the behavior of the pipeline is no longer random. Instead, the pipeline always terminates (as it should).
Changes/Optimizations:
- PRISM now uses QtPy imports instead of PyQt5 imports;
- The lowest line-of-sight depth values for smoothing projections are now calculated using the actual number of segments that the used colormap has;
- Crystal now changes the mouse cursor to a 'busy icon' if it is not using a threaded progress dialog (as the operation cannot be interrupted);
- If an exception is raised during the regression process, the corresponding emulator system index is added to the error message. This makes checking what emulator system failed a lot easier (in the future, a way of doing this for all exceptions should be implemented);
- Starting Crystal will no longer prepare all projections multiple times;
- Removed a few instances where the master HDF5-file was opened for writing unnecessarily;
- When determining mock data, the used data values are now also saved in the
ModelLink
subclass temporarily, in case it needs them.
v1.2.0.1
v1.2.0
This is the v1.2.0 release of the PRISM package.
New additions:
- The PolyLink class was added to PRISM's standard ModelLink subclasses;
- Introduced the new 'req_n_walkers' input argument for the
get_walkers()
function, which can be used to generate a specific number of required walkers using a custom Metropolis-Hastings algorithm; - Added the
get_bibtex()
function, which prints the BibTeX entry for citing the PRISM paper; - Added Crystal, PRISM's Projection GUI;
Crystal can be used to more easily create; draw; compare; and analyze projection figures; - It is now possible to use nested worker modes;
- It is now also possible to make calls to solely workers using the new
_make_call_workers()
method; - Finally, one can now make calls using rank-specific attributes.
Bugfixes:
- Fixed a bug where if one tries to reconstruct the first iteration of the emulator using less data points than before, the emulator would not be reset properly;
- Fixed a bug where analyzing a finished iteration through
construct()
would not work properly in MPI; - Fixed a bug where sometimes the
check_vals()
function would not raise a proper error.
Changes/Optimizations:
- Added several tests to various different functions/methods to make sure that the layouts of provided arguments are correct;
- PRISM's colormaps have been ported to e13Tools;
- The 3D line-of-sight depth plots now use the 'freeze' colormap (new colormap in e13Tools);
- All projection hypercube tuples now also carry the iteration for which they were made;
- The default names of projection hypercubes have been changed slightly;
- Rewritten the worker mode of PRISM into the WorkerMode class;
- Removed all deprecated features from v1.1.
v1.1.3
This is the v1.1.3 release of the PRISM package.
New additions:
- PRISM now has a Gitter chat room;
- Added a section on when (not) to use PRISM;
- The MCMC functions can now also take dicts as inputs;
- The Emulator class now has a new property called 'poly_terms', which is a user-convenience property that shows the 'poly_powers' and 'poly_coef' properties in a more readable way. It has no underlying counterpart;
- Added four Jupyter notebooks with tutorials on how to use PRISM. More will be coming soon.
Bugfixes:
- The requested emul_i is now properly used for calling
project()
in the__call__()
/run()
-method; - The
get_walkers()
-function now returns a copy ofpipe.impl_sam
to avoid modifications to the internally stored values.
Changes/Optimizations:
- Made several modifications to the documentation to better clarify what model parameters and model data means;
- PRISM now uses the
threadpoolctl
package to control the number of OpenMP threads NumPy is allowed to use, depending on the current state of the pipeline; - The calculations of all grid pixels in the projection figures is much more efficient now;
- The number of grid bins in the projection figures now depends more on the chosen DPI and figsize. This ensures that the time required to interpolate for the figures is minimized;
- The calculation of the inverse covariance matrix now uses the Moore-Penrose generalized inverse, which heavily reduces the floating point errors in some calculations;
- The Emulator 'method' is now always saved in lowercase, therefore removing the need to transform it into lowercase every time it is checked;
- The
evaluate()
-method now prints a requested 1D sample as a dict instead of a NumPy array; - The
_check_sam_set()
-method of the ModelLink class is now more efficient and prints more helpful error messages; - Renamed the
get_lnpost_fn()
-function toget_hybrid_lnpost_fn()
, and made it more efficient in terms of memory consumption (the old function name will be removed completely in v1.2.0); - The unit_space input argument for the MCMC functions is now by default set to False;
- Overhauled a large part of the online documentation on hybrid sampling to be more clear about how exactly it works.