Releases: pace-neutrons/Euphonic
v1.6.0
-
Requirements
-
Increased minimum version of SeeK-path to 2.2.1
- Recent updates provide improved compatibility with recent spglib versions
and allow q-point paths to be generated in the input cell orientation.
- Recent updates provide improved compatibility with recent spglib versions
-
Security
- Bumped wheel requirement for docs and testing to 0.46.2. (
CVE-2026-24049 <https://www.cve.org/CVERecord?id=CVE-2026-24049>_)
- Bumped wheel requirement for docs and testing to 0.46.2. (
-
-
Bug fixes
-
Band structures paths could be generated with incorrect
correspondence of q-points to symmetry labels if the input cell
was transformation of reference primitive cell. (e.g. different
order of lattive vectors). This is now fixed by using features of
SeeK-path 2.1+. -
Band structure paths would be inappropriately generated and
labelled if the input cell was a supercell of the primitive cell.
This scenario now emits a warning (from Seek-path) and the tick
labels will not use the traditional high-symmetry labels.
-
-
Improvements
-
Extended
pathlib.Pathsupport and annotations throughout the code. Removing
references toos.pathwhere no longer relevant. -
Rework
Spectrum*.copy()to meet Pythoncopy <https://docs.python.org/3/library/copy.html>__ specifications.
-
-
Maintenance
- Replace
tmpdirin tests withtmp_pathand usePathhandling.
- Replace
v1.5.1
-
Requirements
-
Test requirements
- Added pytest-xdist and pytest-cov requirements for parallel
testing at pytest level.
- Added pytest-xdist and pytest-cov requirements for parallel
-
-
Bug fixes
- Fix typing of calls to Spectrum.broaden() by brille_convergence
and intensity_map command-line tools.
- Fix typing of calls to Spectrum.broaden() by brille_convergence
-
Compatibility fixes
- Fixed handling of new SpglibError class for expected errors from spglib 2.7.0
- Include required arguments to np.divide call, avoiding deprecation
warning which would trigger test failure.
-
Maintenance
-
Reworked CI strategy from parallelism over tox environments to
parallelism over unit tests. This addresses OpenMP conflicts
between simultaneous test environments, and gives a large speedup
when testing a single Python version. (i.e. typical local testing
scenario before pushing to CI.) -
Stopped testing every master push against Python 3.15
-
v1.5.0
-
Requirements
-
Python 3.10-3.14 is supported
-
Test requirements
-
Migrated from pytest 7 to pytest 8
-
Migrated from pytest-lazy-fixture (which appears to be
unmaintained and incompatible) to pytest-lazy-fixtures, an
active project with similar functionality.
-
-
-
Bug fixes
-
Added defences at runtime against OpenMP library conflicts. This
scenario is most commonly encounted when using PyPI wheels for
Euphonic and Brille on MacOS. If multiple OpenMP libraries are
loaded, Euphonic will raise a warning and fallback to serial
operation to reduce the risk of a deadlock or other unpleasant
interaction.This is a known problem with OpenMP distributed in Python wheels,
cited as a reason to avoid use of OpenMP in SciPy. See e.g.
https://pypackaging-native.github.io/key-issues/native-dependencies/blas_openmp/To get high performance of Euphonic Fourier interpolation while
loading another OpenMP-using library (such as brille) it may be
necessary for users to build the software from source. (Pip
install with--no-binarymay be sufficient.) Compatibility can
also be ensured when programs are distributed with a beyond-python
package manager such as Conda or apt.
-
-
Improvements
-
Improved error message when C extension import fails due to
missing dynamic libraries. -
Random sampling functions (including deterministic sampling
functions with a random jitter option) accept a newrng
parameter for a numpy.random Generator (generally preferred) or
RandomState (used for testing). This allows the user to manipulate
the random seed and bit generator to ensure reproducible or
independent calculations. -
The default argument to
rngis a quasi-global Generator
instance ineuphonic.util. This avoids the computational
overhead of creating a new generator every time a random function
is called.
-
-
Maintenance
-
Bumped cibuildwheel to v3.3.0
-
Bumped github action versions: actions/checkout@v6, actions/setup-python@v6
-
Started testing with Python 3.15 pre-release. (Currently there are
Numpy build problems, this is ok.) -
On Mac, unit tests with and without brille are run separately. This
enables full OpenMP parallelism for tests that don't require
brille to be loaded.
-
v1.4.5
Features
- CLI tools will now accept phonopy data produced by janus-core, with filenames in the form "{label}-phonopy.yml" and "{label}-force_constants.hdf5".
Bug fixes
-
Fixed a bug in subtraction of dipole-dipole contribution from force constants with non-symmetric supercell matrix. This affects import from Phonopy results where
a) Born effective charges and dielectric tensor were included;
b) sc_matrix != sc_matrix.T .
Maintenance
-
Pytest configuration has been moved from tests_and_analysis/test/pytest.ini to the main pyproject.toml. This means it is more likely to be picked up automatically when running tests outside of the CI workflows.
-
Some Einstein summations have been replaced with equivalent matrix multiplications; this should improve performance and legibility.
-
Fixed a unit test which used
pytest.approx()incorrectly.
v1.4.4
-
Requirements
- The minimum required version of spglib is increased to 2.1.0
-
Bug fixes
- euphonic-intensity-map incorrectly rejecting files with phonon
mode data for coherent scattering calculations. (Introduced in
v1.4.3.)
- euphonic-intensity-map incorrectly rejecting files with phonon
-
Maintenance
- Numpy random number generators have been updated to use a Generator from
np.random.default_rng - Improved test coverage of error states
- Numpy random number generators have been updated to use a Generator from
v1.4.3
-
Features
- Add methods get_bin_edges, get_bin_centers to
Spectrum2DCollection, making interface consistent with other
Spectrum classes.
- Add methods get_bin_edges, get_bin_centers to
-
Bug fixes
- Fix tox version number in Pyproject.toml; installation with [ci]
"extra" was broken. - Fix the mode_gradients_unit argument to
euphonic.readers.castep.read_phonon_dos_data; this was
returning consistent data/units but ignoring the preference
expressed in that argument.
- Fix tox version number in Pyproject.toml; installation with [ci]
-
Maintenance
-
Avoid incompatible-pointer-types in C compilation; this is an
error in GCC14 and warning in older versions. -
Moved unit register definition to new "ureg" module. This is to defend against
internal import loops: users remain welcome to access things via
from euphonic import ureg, Quantity. -
Introduced ruff-based linting with a (fair-sized) subset of rules enabled.
-
This cleanup may have introduced some small improvements to error and
warning messages. -
The executable bits on some files have changed, for better
consistency and to express more clearly how they are used.
-
-
Improved test coverage, removed some unused code
-
v1.4.2
-
Bug fixes
- Make Spectrum directly accessible from euphonic.spectra. (This was
accidentally lost in a refactor, affecting downstream that uses
Spectrum as a type annotation.)
- Make Spectrum directly accessible from euphonic.spectra. (This was
v1.4.1
-
Bug fixes
-
CASTEP 25.1 allows Born effective charges to be calculated by
Berry Phase methods without a corresponding dielectric tensor. In
such cases, no long-range term can be subtracted from the Force
Constants (or reconstructed). Euphonic uses the presence of Born
effective charges to indicate such a subtraction; to prevent
ill-defined cases, ForceConstants now sets both Born charges and
dielectric tensor to None if only one was provided. -
An optional parameter is provided to change how bin edges are
obtained from bin centres: previously the bin edges were constrained
to the initial data range, but this can lead to incorrect scaling
when performing broadening. Variable-width broadening schemes are
now allowed to extrapolate the bin edges in order to get the correct
width scaling.Outside of broadening, the default behaviour is unchanged in order
to maintain backward compatibility. This is likely to be changed
in the next "major version" (i.e. API-breaking release) of
Euphonic.
-
-
Maintenance
-
The euphonic.spectra module has been broken up into a subpackage
with the single-spectrum classes defined in euphonic.spectra.base
and the collections in euphonic.spectra.collections. This is not a
breaking change: the public classes, functions and type annotations
remain importable from euphonic.spectra. -
CASTEP 25.1 includes an extra field in .castep_bin files,
indicating whether Born effective charges were read from an
external file. For clarity and safety, this field is now
explicitly read by the Euphonic .castep_bin parser, but remains unused. -
The release process has been reworked to reduce manual steps: a
top-level "release" action will now sequence most of the
steps. (Post-release testing is still separate.)
-
v1.4.1rc2
This pre-release was created to test changes to release workflow. See v1.4.1rc1 for summary of changes.
v1.4.1rc1
-
Bug fixes
-
CASTEP 25.1 allows Born effective charges to be calculated by
Berry Phase methods without a corresponding dielectric tensor. In
such cases, no long-range term can be subtracted from the Force
Constants (or reconstructed). Euphonic uses the presence of Born
effective charges to indicate such a subtraction; to prevent
ill-defined cases, ForceConstants now sets both Born charges and
dielectric tensor to None if only one was provided. -
An optional parameter is provided to change how bin edges are
obtained from bin centres: previously the bin edges were constrained
to the initial data range, but this can lead to incorrect scaling
when performing broadening. Variable-width broadening schemes are
now allowed to extrapolate the bin edges in order to get the correct
width scaling.Outside of broadening, the default behaviour is unchanged in order
to maintain backward compatibility. This is likely to be changed
in the next "major version" (i.e. API-breaking release) of
Euphonic.
-
-
Maintenance
-
The euphonic.spectra module has been broken up into a subpackage
with the single-spectrum classes defined in euphonic.spectra.base
and the collections in euphonic.spectra.collections. This is not a
breaking change: the public classes, functions and type annotations
remain importable from euphonic.spectra. -
CASTEP 25.1 includes an extra field in .castep_bin files,
indicating whether Born effective charges were read from an
external file. For clarity and safety, this field is now
explicitly read by the Euphonic .castep_bin parser, but remains unused. -
The release process has been reworked to reduce manual steps: a
top-level "release" action will now sequence most of the
steps. (Post-release testing is still separate.)
-