Releases: pace-neutrons/Euphonic
v1.2.0
-
Improvements:
- Euphonic now tests on Python 3.11
- Euphonic now provides PyPI wheels for Python 3.11
-
New features:
- You can now perform linear interpolation of phonon frequencies and
eigenvectors with theBrille <https://brille.github.io/stable/index.html>
_
library using the new
euphonic.brille.BrilleInterpolator
object. This should provide
performance improvements for large unit cells which require the
dipole correction. - There is a new command-line tool
euphonic-brille-convergence
to
assist with choosing theBrilleInterpolator.from_force_constants
arguments to achieve the desired accuracy. - Brille interpolation can be accessed from the
euphonic-powder-map
tool
using the new--use-brille
,--brille-grid-type
,--brille-npts
and--brille-npts-density
arguments.
- You can now perform linear interpolation of phonon frequencies and
v1.1.0
-
New features:
- There is a new function
ForceConstants.from_total_fc_with_dipole
to allow
reading force constants from other programs which contain long-ranged
dipole-dipole interactions.
- There is a new function
-
Bug fixes:
- Avoid occasional segmentation faults when using OpenBLAS, workaround for
#191 <https://github.com/pace-neutrons/Euphonic/issues/191>
_ - Correctly read force constants from Phonopy with dipole-dipole
interactions, see#239 <https://github.com/pace-neutrons/Euphonic/issues/239>
_.
- Avoid occasional segmentation faults when using OpenBLAS, workaround for
v1.0.0
-
Changes:
-
Support for Python 3.6 has been dropped. This has also resulted in
changes to the following dependencies:- numpy requirement increased from
1.12.1
to1.14.5
- scipy requirement increased from
1.0.0
to1.1.0
- pint requirement increased from
0.9
to0.10.1
- matplotlib requirement increased from
2.0.0
to2.2.2
- h5py requirement increased from
2.7.0
to2.8.0
- numpy requirement increased from
-
The following deprecated features have been removed:
- The
return_mode_widths
argument inForceConstants.calculate_qpoint_phonon_modes
andForceConstants.calculate_qpoint_frequencies
has been removed - The
eta_scale
argument incalculate_qpoint_phonon_modes/frequencies
has been removed - The alias command-line tool argument
--weights
has been removed - The alias arguments
x_label
,y_label
,y_min
andy_max
to
plot_1d/2d
have been removed - The
modes_from_file
andforce_constants_from_file
functions from
euphonic.cli.utils
have been removed - Calling
broaden
on aSpectrum
with uneven bin widths without
specifying themethod='convolve'
argument will now raise aValueError
- The
-
DOS and PDOS calculated by the
calculate_dos
and
calculate_dos_map
methods ofQpointPhononModes
and
QpointFrequencies
, andQpointPhononModes.calculate_pdos
are
now calculated per atom rather than per unit cell (integrated area
is3
rather than3*N_atom
). This is to keep consistency with
the structure factors calculated by
QpointPhononModes.calculate_structure_factor
which are calculated
per atom. -
The option
average_repeat_points
when importing q-point modes or
frequencies from a CASTEP .phonon file with
QpointFrequencies/QpointPhononModes.from_castep
is nowTrue
by default. To recover previous behaviour set this toFalse
.
-
v0.6.5
-
New Features:
-
Kinematic constraints have been implemented for 2-D S(q,w)-like data.
- A function
euphonic.spectra.apply_kinematic_constraints(Spectrum2d, **kwargs) -> Spectrum2D
is implemented which masks out inaccessible data, replacing it with NaN. - Both direct-geometry and indirect-geometry are supported, by
using the appropriate argument to set incident or final neutron energy. - This function is exposed to the
euphonic-powder-map
tool, so these
plots can be produced directly from the CLI. - Some parameters from real-world instruments are collected in the
documentation for convenience.
- A function
-
There is a new function
euphonic.util.convert_fc_phases
, which converts
a force constants matrix which uses the atom coordinates in the phase
during interpolation (Phonopy-like), to one which uses the cell origin
coordinates (Euphonic, CASTEP-like). -
When importing q-point modes or frequencies from a CASTEP .phonon
file, a new option (average_repeat_points=True
) allows
repeated entries (with the same q-point index) to be identified
and their weights divided down by the number of entries. This
option should give better statistics for sampling meshes that
include the Gamma-point with LO-TO splitting.
-
-
Improvements:
-
Documentation on the shape and format of the force constants, and how to
read them from other programs has been improved. -
The
euphonic.util.get_qpoint_labels
function, which is called when
importing band-structure data to identify and label significant points,
primarily identifies these points by searching for turning-points
in the band path. The function will now also pick up any q-point
that appears twice in succession. This is a common convention in
band-structure calculations and helps with edge-cases such as when
the path passes through a high-symmetry point without changing
direction. This may pick up some previously-missing points in
band-structure plots generated witheuphonic-dispersion
and
euphonic-intensity-map
-
-
Bug fixes:
- Allow read of
phonopy.yaml
quantities in'au'
(bohr) units.
Previously this was interpreted as an astronomical unit by Pint.
- Allow read of
v0.6.4
-
Improvements:
-
The
euphonic-dos
,euphonic-dispersion
and
euphonic-intensity-map
command-line tools can now read
files that don't contain eigenvectors, if eigenvectors are
not required for the chosen options. -
A new
--save-json
option is available for command-line tools
which produce plots, this will output the produced spectrum to
a Euphonic .json file. -
There is now the option to use a fast, approximate variable-width broadening method when
adaptively broadening dos:- Added new
adaptive_method
andadaptive_error
arguments forcalculate_dos
which specify which adaptive broadening method to use (reference
orfast
) and an
acceptable error level when using thefast
method. - Fast adaptive broadening can be used in the
euphonic-dos
tool with the
--adaptive-method
and--adaptive-error
arguments.
- Added new
-
-
Changes:
euphonic.cli.force_constants_from_file
andmodes_from_file
have been deprecated in favour ofeuphonic.cli.load_data_from_file
.- Using
Spectrum1D/1DCollection/2D.broaden
on an axis with unequal
bin widths is now deprecated, as broadening is performed via convolution,
which is incorrect in this case. In the future, this will raise a
ValueError
. To broaden anyway,method='convolve'
can be supplied,
which will just emit a warning.
v0.6.3
-
New Features:
-
New
Spectrum1D.to_text_file
andSpectrum1DCollection.to_text_file
methods to write to column text files -
An expanded and consistent set of styling options is made
available for command-line tools that produce plots. -
Consistent styling and advanced changes can be made using
Matplotlib stylesheet files, either as a CLI argument or
usingmatplotlib.style.context()
in a Python script.
-
-
Improvements:
- Internally, plot theming has been adjusted to rely on Matplotlib
style contexts. This means user changes and style context are more
likely to be respected. - Additional aliases for plot arguments in the command-line tools have
been added, for example either--x-label
or--xlabel
can be used.
- Internally, plot theming has been adjusted to rely on Matplotlib
-
Changes:
x_label
,y_label
,y_min
andy_max
ineuphonic.plot
functions have been deprecated in favour ofxlabel
,ylabel
,
ymin
andymax
respectively, to match the Matplotlib arguments
they refer to, and to match other arguments likevmin
,vmax
.
v0.6.2
-
Improvements:
- Wheels are now provided with PyPI releases
- Type hinting is now handled more consistently across different Euphonic
classes and functions
-
Bug Fixes:
- Will no longer raise a KeyError reading from
phonopy.yaml
if
physical_unit
key is not present, instead will assume default units - Can now read Phonopy BORN files where the (optional) NAC conversion
factor is not present
- Will no longer raise a KeyError reading from
v0.6.1
-
Bug fixes:
- The scaling of S(Q,w) as produced by
StructureFactor.calculate_sqw_map
was incorrect, and did not correctly scale with energy bin size (given its
units are nowlength**2/energy
). This has been fixed, and S(Q,w) scale
has changed by a factor of (hartee to energy bin unit conversion)/(energy
bin width magnitude). e.g. if using an energy bin width of 0.1 meV, the new
S(Q,w) will be scaled by 2.72e4/0.1 = 2.72e5. The original structure factors
can now be correctly recovered by multiplying S(Q,w) by the energy bin width.
- The scaling of S(Q,w) as produced by
v0.6.0
-
Euphonic can now calculate neutron-weighted partial density of states, and
has newSpectra
features to handle PDOS data:- Added
QpointPhononModes.calculate_pdos
method - Added
QpointFrequencies.calculate_dos_map
method - New
Spectrum1D.__add__
method, which adds 2 spectra together - New
Spectrum1DCollection.__add__
method, which concatenates 2 collections - Enabled indexing of
Spectrum1DCollection
by a sequence - Added
Spectrum1DCollection.group_by
method, which allows grouping and
summing spectra by metadata keys e.g.group_by('species')
- Added
Spectrum1DCollection.select
method, which allows selection
of spectra by metadata keys e.g.select(species='Si')
- Added
Spectrum1DCollection.sum
method, which sums all spectra in a
collection - Added
-w={'coherent-dos','incoherent-dos','coherent-plus-incoherent-dos'}
neutron-weighted PDOS options toeuphonic-dos
andeuphonic-powder-map
- Added
--pdos
options for plotting specific species PDOS to
euphonic-dos
andeuphonic-powder-map
- Deprecated
--weights
command-line argument in favour of--weighting
for consistency withcalculate_pdos
- Added
-
Improvements:
- LICENSE and
CITATION.cff <https://citation-file-format.github.io/>
_
files are now included in Euphonic's installation - Add ability to interactively change the colormap intensity limits
ineuphonic-powder-map
euphonic-optimise-dipole-parameter
can now read from Phonopy sourceseuphonic-optimise-dipole-parameter
can now also be used for non-polar
materials to get general per-qpoint timings- Dimensioned Euphonic properties (e.g.
frequencies
,cell_vectors
)
now have setters so can be set, previously this would raise an
AttributeError
- LICENSE and
-
Changes:
- The units of density of states as produced by
calculate_dos
have
changed from dimensionless to1/energy
- The scaling of density of states has also changed. Previously the
integration would sum to 1 (if thex_data
were converted to Hartree
units), now the integration will sum to 3N in the same units asx_data
StructureFactor.structure_factors
have been changed to be in absolute
units per atom (rather than per unit cell) so will have changed by a
factor of1/2*n_atoms
, this formulation change has been reflected in the
calculate_structure_factor
docstring- The default unit of
StructureFactor.structure_factors
has been changed
fromangstrom**2
tomillibarn
- The unit of S(Q,w) as produced by
StructureFactor.calculate_sqw_map
has changed dimension fromlength**2
tolength**2/energy
. Also,
as its unit is derived from the inputStructureFactor
object, its
default units are nowmillibarn/meV
- The
eta_scale
argument incalculate_qpoint_phonon_modes
has been
deprecated,dipole_parameter
should be used instead. - This means the
euphonic-optimise-eta
script has been renamed to
euphonic-optimise-dipole-parameter
.
- The units of density of states as produced by
v0.5.2
-
Improvements:
- Added
broaden
method toSpectrum1DCollection
- Added
-
Changes:
- The
return_mode_widths
argument incalculate_qpoint_phonon_modes
has been deprecated in favour ofreturn_mode_gradients
. The mode
widths can still be obtained from the mode gradients with
util.mode_gradients_to_widths
- The
-
Bug fixes:
- Fixed memory leak when using the C extension and making multiple calls to
calculate_qpoint_phonon_modes/frequencies
- Fixed bug which resulted in incorrect energy bins being generated
ineuphonic-powder-map
if units other than meV are used and
--e-max
and--e-min
aren't specified - Use correct number of energy bins in
euphonic-intensity-map
,
euphonic-powder-map
andeuphonic-dos
. Previously only
ebins - 1
bins were generated
- Fixed memory leak when using the C extension and making multiple calls to