Releases: materialsproject/pymatgen
v2024.9.17
- Emergency release to fix broken phase diagram plotting due to completely unnecessary refactoring. (Thanks @yang-ruoxi for fixing.)
v2024.9.10
💥 Breaking: NumPy/Cython integer type changed from np.long
/np.int_
to int64 on Windows to align with NumPy 2.x, changing the default integer type to int64 on Windows 64-bit systems in favor of the platform-dependent np.int_
type.
Recommendation: Please explicitly declare dtype=np.int64
when initializing a NumPy array if it's passed to a Cythonized pymatgen function like find_points_in_spheres
. You may also want to test downstream packages with NumPy 1.x on Windows in CI pipelines.
🛠 Enhancements
- Formatting customization for
PWInput
by @jsukpark in #4001 - DOS Fingerprints enhancements by @naik-aakash in #3946
- Add HSE-specific vdW parameters for dftd3 and dftd3-bj to MPHSERelaxSet. by @hongyi-zhao in #3955
- Add VASP setting for the dftd4 vdW functional and extend PBE_64 support. by @hongyi-zhao in #3967
- Add SOC & multiple
PROCAR
parsing functionalities by @kavanase in #3890 - Add modification to aims input to match atomate2 magnetic order script by @tpurcell90 in #3878
🐛 Bug Fixes
- Ion: fix CO2- and I3- parsing errors; enhance tests by @rkingsbury in #3991
- Fix ruff PD901 and prefer
sum
overlen
+if
by @janosh in #4012 - Explicitly use
int64
in Numpy/cython code to avoid OS inconsistency by @DanielYang59 in #3992 - Update
FermiDos.get_doping()
to be more robust by @kavanase in #3879 - Fix missing
/src
in doc links to source code by @DanielYang59 in #4032 - Fix
LNONCOLLINEAR
match inOutcar
parser by @DanielYang59 in #4034 - Fix in-place
VaspInput.incar
updates having no effect ifincar
is dict (notIncar
instance) by @janosh in #4052 - Fix typo in
Cp2kOutput.parse_hirshfeld
add_site_property("hirshf[i->'']eld")
by @janosh in #4055 - Fix
apply_operation(fractional=True)
by @kavanase in #4057
💥 Breaking Changes
📖 Documentation
- Docstring tweaks for
io.vasp.inputs
and format tweaks for some other parts by @DanielYang59 in #3996 - Replace HTTP URLs with HTTPS, avoid
from pytest import raises/mark
by @DanielYang59 in #4021 - Fix incorrect attribute name in
Lobster.outputs.Cohpcar
docstring by @DanielYang59 in #4039
🧹 House-Keeping
- Use
strict=True
withzip
to ensure length equality by @DanielYang59 in #4011
🚀 Performance
🚧 CI
- Install optional boltztrap, vampire and openbabel in CI by @DanielYang59 in #3985
💡 Refactoring
- Make AimsSpeciesFile a dataclass by @tpurcell90 in #4054
🧪 Tests
- Remove the
skip
mark fortest_delta_func
by @njzjz in #4014 - Recover commented out code in tests and mark with
pytest.mark.skip
instead by @DanielYang59 in #4027 - Add unit test for
io.vasp.help
by @DanielYang59 in #4020
🧹 Linting
- Fix failing ruff
PT001
on master by @DanielYang59 in #4003 - Fix fixable
ruff
rules by @DanielYang59 in #4015 - Fix
S101
, replace allassert
in code base (except for tests) by @DanielYang59 in #4017 - Fix
ruff
PLC0206 and PLR6104 by @janosh in #4035
🏥 Package Health
- Drop Python 3.9 support by @DanielYang59 in #4009 (min supported Python is now 3.10 following numpy)
- Avoid importing namespace package
pymatgen
directly by @DanielYang59 in #4053
🏷️ Type Hints
- Set
kpoints
infrom_str
method as integer in auto Gamma and Monkhorst modes by @DanielYang59 in #3994 - Improve type annotations for
io.lobster.{lobsterenv/outputs}
by @DanielYang59 in #3887
🤷♂️ Other Changes
New Contributors
Full Changelog: v2024.8.9...v2024.9.10
v2024.8.9
- Revert bad split of sets.py, which broke downstream code.
🎉 New Features
- Add multiwfn QTAIM parsing capabilities by @espottesmith in #3926
🐛 Bug Fixes
- Fix chemical system method for different oxidation states by @danielzuegner in #3915
- Fix coordination number bug by @jmmshn in #3954
- Fix Ion formula parsing bug; add more special formulas by @rkingsbury in #3942
- Dedup
numpy
dependency inpyproject
by @janosh in #3970 - test_graph: add filename only to pdf list by @drew-parsons in #3972
- Bugfix:
io.pwscf.PWInput.from_str()
by @jsukpark in #3931 - Fix d2k function by @tpurcell90 in #3932
- Assign frame properties to molecule/structure when indexing trajectory by @CompRhys in #3979
🛠 Enhancements
Element
/Species
: orderfull_electron_structure
by energy by @rkingsbury in #3944- Extend
CubicSupercell
transformation to also be able to look for orthorhombic cells by @JaGeo in #3938 - Allow custom
.pmgrc.yaml
location via newPMG_CONFIG_FILE
env var by @janosh in #3949 - Fix MPRester tests and access phonon properties from the new API without having
mp-api
installed. by @AntObi in #3950 - Adding Abinit magmoms from netCDF files to Structure.site_properties by @gbrunin in #3936
- Parallel Joblib Process Entries by @CompRhys in #3933
- Add OPTIMADE adapter by @ml-evs in #3876
- Check Inputs to Trajectory. by @CompRhys in #3978
📖 Documentation
- Replace expired BoltzTraP link by @DanielYang59 in #3929
- Correct method
get_projection_on_elements
docstring underProcar
class by @DanielYang59 in #3945
🧹 House-Keeping
🚧 CI
- Install some optional dependencies in CI by @DanielYang59 in #3786
💡 Refactoring
- Fix
Incar
check_params
forUnion
type by @DanielYang59 in #3958
🏥 Package Health
🏷️ Type Hints
- Improve types for
electronic_structure.{bandstructure/cohp}
by @DanielYang59 in #3873 - Improve types for
electronic_structure.{core/dos}
by @DanielYang59 in #3880
🤷♂️ Other Changes
- switch to attr access interface for transformation matrix by @tsmathis in #3964
- Fix import sorting by @janosh in #3968
- Don't run
issue-metrics
on forks by @ab5424 in #3962 - Enable Ruff rule family "N" and "S" by @DanielYang59 in #3892
New Contributors
- @danielzuegner made their first contribution in #3915
- @tsmathis made their first contribution in #3964
- @jsukpark made their first contribution in #3931
Full Changelog: v2024.7.18...v2024.8.8
v2024.7.18
layout: default
title: Change Log
v2024.6.10
layout: default
title: Change Log
v2024.6.4
What's Changed
🐛 Bug Fixes
- Run CI with two different
uv
resolution strategies:highest
andlowest-direct
by @janosh in #3852 - Fix filter condition for warn msg of unphysical site occupancy in
io.cif
by @DanielYang59 in #3853
🛠 Enhancements
📖 Documentation
- Clarify argument
shift
forSlabGenerator.get_slab
by @DanielYang59 in #3748
🚧 CI
Full Changelog: v2024.5.31...v2024.6.4
v2024.5.31
What's Changed
🐛 Bug Fixes
- Make
Beautifulsoup
optional by @ab5424 in #3774 - Fix overlayed subplots in
BSPlotterProjected.get_projected_plots_dots()
by @janosh in #3798 - Fix
_get_dipole_info
for DDEC6ChargemolAnalysis
and add test case by @JonathanSchmidt1 in #3801 Cp2kOutput.parse_initial_structure()
use regex for line matching to allow arbitrary white space between Atom/Kind/Element/... by @janosh in #3810- Fix the minor document error in
POTCAR Setup
. by @hongyi-zhao in #3834 - Use
isclose
over==
for overlap position check inSlabGenerator.get_slabs
by @DanielYang59 in #3825 - [Deprecation] Replace
Element
propertyis_rare_earth_metal
withis_rare_earth
to include Y and Sc by @DanielYang59 in #3817
🛠 Enhancements
- Add
is_radioactive
property to Element class by @AntObi in #3804 - Add a
from_ase_atoms()
method toStructure
by @Andrew-S-Rosen in #3812 - Adapt to the latest version of PWmat output file by @lhycms in #3823
- Update VASP sets to transition atomate2 to use pymatgen input sets exclusively by @esoteric-ephemera in #3835 (slightly breaking, see #3860 for details)
📖 Documentation
- Imperative
get_...
method and@property
doc strings by @janosh in #3802 - Doc string standardization by @janosh in #3805
🧹 House-Keeping
- Add types for
core.(molecular_orbitals|operations|sites|spectrum|tensor|xcfunc)
by @DanielYang59 in #3829 - Move test structures out of
util
directory by @DanielYang59 in #3831
🧪 Tests
- Improve type annotations for
core.(trajectory/units)
by @DanielYang59 in #3832
🏷️ Type Hints
- More type annotations by @janosh in #3800
- Add types for
core.periodic_table/bonds/composition/ion/lattice/libxcfunc
, new typeMillerIndex
and fix Lattice hash by @DanielYang59 in #3814 - Guard
TYPE_CHECKING
only imports by @DanielYang59 in #3827 - Improve type annotations and comments for
io.cif
by @DanielYang59 in #3820 - Improve type annotations for
core.structure
by @DanielYang59 in #3837 - Add type annotations for
io.vasp.outputs
by @DanielYang59 in #3776
🤷♂️ Other Changes
- mixing scheme: change default for verbose by @tschaume in #3806
ruff
0.4.3 auto-fixes by @janosh in #3808- Re-enable some useful
ruff
rules by @DanielYang59 in #3813 pandas.read_csv
: replace deprecateddelim_whitespace=True
withsep="\s+"
by @ab5424 in #3846- Improve unphysical (greater than 1) occupancy handling in
CifParser
and add missing site labelif not check_occu
by @DanielYang59 in #3819
Full Changelog: v2024.5.1...v2024.5.31
v2024.5.1
What's Changed
🐛 Bug Fixes
- Fix OPTIMADE rester URL contruction and improve testing by @ml-evs in #3756
- Add fix for SFAC writer by @stefsmeets in #3779
- Fix LobsterSet by @naik-aakash in #3771
- Update
vasprun.converged_ionic
logic whenEDIFFG=0
, REDO of PR #3765 by @matthewkuner in #3783 - Fix for incorrect file path in
tests/io/test_zeopp.py
by @AntObi in #3784 - Fix for writing non-unique site labels in
CifWriter
by @stefsmeets in #3767 - Homogenize return type of
Lattice.get_points_in_sphere
to always benp.array
(s) by @janosh in #3797
📖 Documentation
- Add note to documentation for usage of CrystalNN by @JaGeo in #3764
- Update to average Grüneisen documentation by @JaGeo in #3773
- Format doc strings by @janosh in #3790
- Imperative doc strings by @janosh in #3792
🧹 House-Keeping
pyright
fixes forext/io/phonon/symmetry/transformations/util/vis/dev_scripts
and improveio.lobster
by @DanielYang59 in #3757- Separate test files by modules and collect test files
csv/cif
into folders by @DanielYang59 in #3746
🚧 CI
🏥 Package Health
- Remove
gulp
from package data, code base and CI tests by @DanielYang59 in #3789
🏷️ Type Hints
- Add type annotations for
io.vasp.inputs/optics
by @DanielYang59 in #3740 pyright
fixes by @DanielYang59 in #3777- Convert
kpts
inKpoints
toSequence[tuple]
and set it asproperty
by @DanielYang59 in #3758
🤷♂️ Other Changes
- add
get_string->get_str
alias forPoscar
by @timurbazhirov in #3763 - Fix
ruff
FURB192 by @janosh in #3785
New Contributors
- @timurbazhirov made their first contribution in #3763
- @AntObi made their first contribution in #3784
Full Changelog: v2024.4.13...2024.5.1
v2024.4.13
Hot fix release for v2024.4.12 to be yanked on PyPI due to #3751.
🐛 Bug Fixes
- Revert mistaken
Cohp.has_antibnd_states_below_efermi
rename by @JaGeo in #3750 - Fix
typing_extension
ImportError
in downstream packages by @janosh in #3752 - Update some of the OPTIMADE aliases by @ml-evs in #3754
🧹 House-Keeping
- Remove duplicate ruff rule in
pyproject.toml
by @Andrew-S-Rosen in #3755
Full Changelog: v2024.4.12...v2024.4.13
v2024.4.12
What's Changed
🎉 New Features
- Add
pymatgen.io.openff
module by @orionarcher in #3729
🐛 Bug Fixes
- Fix blank line bug in
io.res.ResWriter
by @stefsmeets in #3671 - Reset label for sites changed by
Structure.replace_species()
by @stefsmeets in #3672 - Fix
phonopy.get_pmg_structure
site_properties
key for magmoms by @JonathanSchmidt1 in #3679 - Improve Bandoverlaps parser by @naik-aakash in #3689
- Convert some
staticmethod
toclassmethod
by @DanielYang59 in #3710 - Correct units of Element.atomic_orbitals by @esoteric-ephemera in #3714
- Add a fix for if a parameter is None in AimsControlIn by @tpurcell90 in #3727
- Replace general
raise Exception
and add missingraise
keyword by @DanielYang59 in #3728 - Fix
ChemicalPotentialDiagram
2D plot not respectingformal_chempots
setting by @uliaschauer in #3734 - Update ENCUT type to float in incar_parameters.json by @yuuukuma in #3741
- Clean up
core.surface
comments and docstrings by @DanielYang59 in #3691 - Fix
io.cp2k.input.DataFile
by @DanielYang59 in #3745
🛠 Enhancements
- Ensure
MSONAtoms
is indeedMSONable
whenAtoms.info
is loaded with goodies by @Andrew-S-Rosen in #3670 - Generalize fatband plots from Lobster by @JaGeo in #3688
- Plotting of Multicenter COBIs by @JaGeo in #2926
- Support appending vectors to positions in XSF format by @mturiansky in #3704
- Define
needs_u_correction(comp: CompositionLike) -> set[str]
utility function by @janosh in #3703 - Add more flexibility to
PhononDOSPlotter
andPhononBSPlotter
by @ab5424 in #3700 - Define
ElementType
enum incore/periodic_table.py
by @janosh in #3726
📖 Documentation
- Reformat docstrings to Google style and add type annotations by @DanielYang59 in #3694
🧹 House-Keeping
- Breaking: all plot methods return
plt.Axes
by @janosh in #3749 - Clean up test files: VASP outputs by @DanielYang59 in #3653
- Clean up test files: VASP inputs by @DanielYang59 in #3674
- Clean up test files: dedicated VASP directories,
xyz
,mcif
,cssr
,exciting
,wannier90
by @DanielYang59 in #3681 - Remove exception printing when importing phonopy by @lan496 in #3696
- Standardize test names: e.g.
LatticeTestCase
->TestLattice
by @janosh in #3693 - Clean up tests by @janosh in #3713
- Fix import order for
if TYPE_CHECKING:
block by @DanielYang59 in #3711 - Use
Self
type in Method Signatures by @DanielYang59 in #3705 - Remove deprecated
analysis.interface
, rename classes to PascalCase and renamewith_*
tofrom_*
by @DanielYang59 in #3725 - Test
EntrySet.ground_states
and CIF writing inNEBSet.write_input
by @janosh in #3732
🚀 Performance
- Migrate CI dependency installation from
pip
touv
by @janosh in #3675 - Dynamic
__hash__
forBalancedReaction
by @DanielYang59 in #3676
🚧 CI
🧪 Tests
- Clean up tests 2 by @janosh in #3716
- Remove unnecessary
unittest.TestCase
subclassing by @janosh in #3718
🔒 Security Fixes
- Avoid using
exec
in code by @DanielYang59 in #3736 - Avoid using
eval
, replace manual offset inenumerate
and rename single letter variables by @DanielYang59 in #3739
🏷️ Type Hints
Self
return type onfrom_dict
methods by @janosh in #3702- Return
self
fromStructure
methodsreplace
,substitute
,remove_species
,remove_sites
by @janosh in #3706 Self
return type onLattice
methods by @janosh in #3707
🤷♂️ Other Changes
New Contributors
- @JonathanSchmidt1 made their first contribution in #3679
- @uliaschauer made their first contribution in #3734
Full Changelog: v2024.3.1...v2024.4.12