Change Log¶
Version: 4.3¶
Improvement: Updated requirements to Python 3.9 or later (Python 3.8 end of life was Oct 7, 2024) and numpy<1.27.0, scipy>=1.11,<1.12 to avoid Python NNLS freeze
Improvement: made DYNAMITE compatible with numpy 2.0.0 and matplotlib 3.9.0 (removed use of deprecated features)
Bugfix: fix a bug that prevents Bayes LOSVD kinematic maps from being created more than once
Improvement: misc. improvements in documentation and tutorials.
Improvement: Sampling of grid recording the intrinsic moments (in r, theta, phi) can optionally be defined in the config file’s orblib settings.
Improvement: The installation procedure has been changed to make DYNAMITE compatible with Python 3.12. Installing and uninstalling is now done using pip.
Improvement: added a new tutorial notebook
7_orbital_distributions.ipynb
which takes a closer look at orbit distributions.Improvement: the
weight
attribute of kinematics is now officially DEPRECATED as it has always been ignored by DYNAMITE.Improvement: DYNAMITE now checks for nan values in the kinematics and mges when first reading the data
Improvement: prevent DYNAMITE from crashing if NNLS weight solving fails.
Improvement: the Gauss Hermite kinematic maps new parameter value cbar_lims=’user’ allows user-defined velocity and velocity dispersion limits (see Plotter.plot_kinematic_maps()).
Improvement: reduced the main memory requirements of the Python NNLS solvers.
Bugfix: fix a crash when creating the BayesLOSVD kinematics file in rare cases where the completed bins were determined incorrectly.
New feature:
data_prep/generate_kin_input.py
implements reading NIFS kinematics with an arbitrary number of GH moments.Improvement: improved checks and error messages for velocity and spatial bin input data inconsistencies.
Improvement: save disk space by cleaning up decompressed files after a crash and removing unused legacy file nn_orbmat.out after solving.
Improvement: stability fix in MGE: if q>0.9999 it will be set to 0.9999 (before, it was 0.99999).
Bugfix: the chi2 plot now shows correct axis ticks for log quantities.
Bugfix: fixed colorbar overlap with x-axis in the chi2 plot if only two parameters are varied and added label to chi2 plot colorbar.
Improvement:
LegacyWeightSolver
is now DEPRECATED and will be removed along with GALAHAD in a future version of DYNAMITE. Use weight solvertype: "NNLS"
instead if you can.
Version: 4.2¶
Improvement: if
number_GH
in the config file is larger than the kinematic order of the observed data, then DYNAMITE ensures that the corresponding systematic errors are > 0.Bugfix: fixed a bug in the kinematics errors (affects NNLS solves).
New feature: Gauss-Hermite kinematic maps can now be plotted for any number of Gauss-Hermite coefficients.
Improvement: removed broken link from tutorial 2 and added some data preparation comments to tutorials 1 and 2
Bugfix: fixed crash when different kinematics had different numbers of PSF components.
Bugfix: fixed a bug in retrofitting kinmapchi2 in old all_models tables.
Improvement: removed deprecated silent option from config reader.
Improvement: the Plotter’s new optional argument
dpi
(default: 100) allows to change the resolution of all saved figures except the kinematic maps (always 300 dpi).Improvement: the beta plots now work for all implemented weight solvers.
Version: 4.1¶
Improvement: calculation of kinmapchi2 now aligns with number_GH in config file’s weight_solver_settings
Bugfix: fixed crash when the number of GH coefficients a kinematics file does not match number_GH in config file’s weight_solver_settings
Improvement: The bash test script
dev_tests/test_notebooks.sh
executes all tutorial notebooks for testing a valid DYNAMITE installationImprovement: updated tutorial notebooks
Bugfix: Re-enable support for directly instantiating a Model object (bypassing ModelIterator) if the all_models table is empty. Only recommended for testing.
Version: 4.0¶
New feature: kinmapchi2 (directly calculated from the kinematic maps) is now also available for the python NNLS solver
New feature: added support for bar/disk decomposition
New feature: added support for getting intrinsic model moments for both Gauss Hermite and a BayesLOSVD models
Improvement: Eliminated unused position_angle system attribute from the configuration file (the angle is read from aperture.dat)
Improvement: DYNAMITE can now be built without GALAHAD (LegacyWeightSolver will not be available then)
Improvement: plotting gh kinematic maps is more efficient and now works for all weight solvers
New feature: New parameter generator SpecificModels generates and runs a predefined list of models or models resulting from a cartesian product of parameter values
Improvement: the orbit plot (Plotter.orbit_plot) now works for all implemented weight solvers
Bugfix: fixed a bug that under certain circumstances prevented the staging files from being deleted after a successful iteration
Bugfix: removed logging from the list of requirements because it is in the Python standard library
New feature: added a new DYNAMITE module analysis, its class Decompostion creates decomposition plots
Improvement: Changed the ml directory name format to ‘05.2f’ so all model directory names have the same length
New feature: Added AllModels.remove_unused_orblibs() utility method to free up disk space
New feature: Added a new method AllModels.make_best_models_table() that creates a table of the best models (best n models or models within a chi2-threshold of the best) and saves it to disk
Bugfix: If reattempt_failures=False, in certain cases it could occur that orblibs of successful models were deleted
Bugfix: Fixed a bug related to a nonexistent model directory if a crash occurs between the parameter generator adding a model and starting to solve it
Improvement: Dynamite will no longer crash upon Legacy Fortran errors (except when executables are not found), but issue warnings and assign nan to the affected chi2 values
Improvement: When executing a dummy run (do_dummy_run==True), model_iterator will set both kinchi2 and kinmapchi2 to nan (instead of zero)
Improvement: DYNAMITE will retrofit existing all_models tables with the new column kinmapchi2 and calculate its values for existing models whenever possible
New feature: chi2 can now be directly calculated from the kinematic maps when using the LegacyWeightSolver via which_chi2: “kinmapchi2”
Improvement: when instantiating the Configuration object, the user can now specify the name of the logfile (several options), avoiding log conflicts with multiple DYNAMITE runs in the same directory
Bugfix: Fixed a bug that may cause a crash in case a parameter does not have a minstep value
Improvement: DYNAMITE will catch and correct the erroneous parameter generator setting minstep>step by setting minstep=step for non-fixed component parameters
Bugfix: Fixed a bug that may occur in the parameter generators (ensures that DYNAMITE creates all possible models)
Improvement: now the models of the first two iterations are computed together, better utilizing parallel computing
Bugfix: included cmasher in the list of required packages
Bugfix: reattempt_failures will no longer result in an error if multiple to-delete models share the same orblib or the orblib directory does not exist
Improvement: made DYNAMITE compatible with more Linux distributions
Improvement: update publication list
Bugfix: fixed wrong version number and copyright year in documentation
Version: 3.0¶
Improvement: DYNAMITE now works with newer versions of Astropy. The new requirement is astropy>=5.0.4
New feature: Integrate tube and box orbits in parallel by setting the multiprocessing option orblibs_in_parallel
New feature: Added support for new dark halo component type NFW_m200_c (fixed m200_c relation)
New feature: The Configuration object parameter reset_existing_output will delete previously existing data and create a new output directory tree
Improvement: The presence of datfil/orblib.dat.bz2 and datfil/orblibbox.dat.bz2 is now a more reliable indicator for existing orblibs. In the past, a crash may have resulted in corrupt bz2 files.
New feature: add new data-preparation method BayesLOSVD.center_v_systemic
New feature: Each model writes a file model_done_staging.ecsv upon completion. After a crash, DYNAMITE will update the all_models table with the completed models’ data and delete any “all_done==False” models
New feature: New weight_solver_settings option reattempt_failures for reattempting failed weight solving when an orbit library already exists
Improvement: For better tracking, each model folder holds a copy of the config file now (instead of saving the config file in the output folder)
New feature: The new model iterator SplitModelIterator calculates orbit libraries and weights consecutively with independently adjustable number of threads
Improvement: Cleaned up the legacy_fortran folder and the makefile in it, unused orbgen.f90 and partgen.f90 moved to subfolder
Bugfix: Fixed a bug that on rare occasion caused an error when updating the timestamp entry when continuing an aborted run
Implement the correction to orbit mirroring introduced in Quenneville et al 2021
Implement kinematic maps for BayesLOSVD data
Version: 2.0¶
New feature: Wherever appropriate, the configuration object is now passed to instantiated classes like Plotter, AllModels, Model, the weight solvers, and LegacyOrbitLibrary. This changes the DYNAMITE user interface! Please refer to the tutorials and
dev_tests/
scripts on how to use.Bugfix: fixed sorting of the chisquare values in chi2plot so that the best-fit value is plotted last and always visible
New feature: upon reading mge data, q values too close to 1 are set to q=0.99999 for numerical stability
Updated: Require astropy v4.2 due to ecsv file compatibility problems with later versions
Improvement: Make sure DYNAMITE stops with an error if a legacy Fortran executable does not succeed, even if its return code is zero
Bugfix: Fixed a bug preventing negative values of logarithmic parameters
New feature: the number of configuration file backups can be better controlled by
config_reader.Configuration.backup_config_file(...)
optionsImprovement: The bash test script
dev_tests/test_all.sh
executes a grid of test scenarios (different base scripts with different parameter generators and weight solvers) either locally or via SlurmImprovement: Greatly improved performance of the chi2 plot
Bugfix: Fixed a bug in the path in
model.Model.get_model_directory()
New feature: The new method
model.AllModels.get_n_best_models(...)
returns then
best models based on theirchi2
/kinchi2
valuesNew feature: The new method
model.AllModels.get_mods_within_chi2_thresh(...)
returns all models within a givenchi2
/kinchi2
thresholdUpdated: All tests in
dev_tests/
now usekinchi2
rather thanchi2
Version: 1.0¶
New feature: Added Galahad compilation script that auto-magically downloads and installs the latest galahad + it’s dependencies
New feature: Added a script for the preparation of the kinematic data and a tutorial
New features: Added Bayes LOSVD solver and a tutorial
New feature: Added gridSearch that searches in a regular grid for the bestfit parameters
New feature: In addition to the NFW profile, DYNAMITE can fit now a generalised NFW, Hernquist and a Triaxial cored log potential dark matter profile. The type is chosen in the “dh” component of the config file.
New feature: All plotting routines from schwpy are implemented in DYNAMITE now
New feature: Added multiprocessing such that DYNAMITE can run multiple models simultaneously. The keyword “multiprocessing_settings: ncpus:” is added in the config file
Improvement: New (python-based) NNLS solvers are added. The type can be chosen in “weight solver”
Improvement: Multiple kinematics data set can be fitted simultaneously
Improvement: Changed paramsb and parameter file to “parameters_lum” and “parameters_pot” to avoid confusion. The mass mge and the lum mge can be different now and are added separately in the config file
Improvement: Changed the model directory names to avoid directory naming inconsistencies in the future
Improvement: Logging added
Improvement: The DYNAMITE scrips no longer change the system path
Improvement: Added “validate_parset” to the system and its components to avoid incorrect use of DYNAMITE
Improvement: Relative/absolute stopping criteria in LegacyGridSearch and GridWalk
Improvement: Option for threshold_del_chi2 to be given as fraction of sqrt(2*n_obs)
Improvement: “get_orbit_ics” and “get_orbit_library” are split now in LegacyOrbitLibrary
Updated: Installation guide and documentation were updated
Updated: Replaced Plotbin4dyn with the latest version from plotbin (https://pypi.org/project/plotbin/)
Updated: We added a randomNumberGenerator to get reproducible orbit libraries. This number called “random_seed” is included in the config file. Users should put this number to -1
Bugfix: A galaxy with position angle of 0 does not cause error when reading in the config file anymore
Bugfix: Fix the stars component bug: stellar component was called system.cmp_list[2] before and relied on the stars being the third component. Now this component is called “stars”
Bugfix: The plotting did not work correctly in VSC where X11 does not work. We therefore put the matplotlib backend to “Agg”
Bugfix: Removed unused import statements and code clean-up