Releases: materialsproject/pymatgen
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_ioniclogic whenEDIFFG=0, REDO of PR #3765 by @matthewkuner in #3783 - Fix for incorrect file path in
tests/io/test_zeopp.pyby @AntObi in #3784 - Fix for writing non-unique site labels in
CifWriterby @stefsmeets in #3767 - Homogenize return type of
Lattice.get_points_in_sphereto 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
pyrightfixes forext/io/phonon/symmetry/transformations/util/vis/dev_scriptsand improveio.lobsterby @DanielYang59 in #3757- Separate test files by modules and collect test files
csv/cifinto folders by @DanielYang59 in #3746
🚧 CI
🏥 Package Health
- Remove
gulpfrom package data, code base and CI tests by @DanielYang59 in #3789
🏷️ Type Hints
- Add type annotations for
io.vasp.inputs/opticsby @DanielYang59 in #3740 pyrightfixes by @DanielYang59 in #3777- Convert
kptsinKpointstoSequence[tuple]and set it aspropertyby @DanielYang59 in #3758
🤷♂️ Other Changes
- add
get_string->get_stralias forPoscarby @timurbazhirov in #3763 - Fix
ruffFURB192 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_efermirename by @JaGeo in #3750 - Fix
typing_extensionImportErrorin 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.tomlby @Andrew-S-Rosen in #3755
Full Changelog: v2024.4.12...v2024.4.13
v2024.4.12
What's Changed
🎉 New Features
- Add
pymatgen.io.openffmodule by @orionarcher in #3729
🐛 Bug Fixes
- Fix blank line bug in
io.res.ResWriterby @stefsmeets in #3671 - Reset label for sites changed by
Structure.replace_species()by @stefsmeets in #3672 - Fix
phonopy.get_pmg_structuresite_propertieskey for magmoms by @JonathanSchmidt1 in #3679 - Improve Bandoverlaps parser by @naik-aakash in #3689
- Convert some
staticmethodtoclassmethodby @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 Exceptionand add missingraisekeyword by @DanielYang59 in #3728 - Fix
ChemicalPotentialDiagram2D plot not respectingformal_chempotssetting by @uliaschauer in #3734 - Update ENCUT type to float in incar_parameters.json by @yuuukuma in #3741
- Clean up
core.surfacecomments and docstrings by @DanielYang59 in #3691 - Fix
io.cp2k.input.DataFileby @DanielYang59 in #3745
🛠 Enhancements
- Ensure
MSONAtomsis indeedMSONablewhenAtoms.infois 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
PhononDOSPlotterandPhononBSPlotterby @ab5424 in #3700 - Define
ElementTypeenum incore/periodic_table.pyby @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.Axesby @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,wannier90by @DanielYang59 in #3681 - Remove exception printing when importing phonopy by @lan496 in #3696
- Standardize test names: e.g.
LatticeTestCase->TestLatticeby @janosh in #3693 - Clean up tests by @janosh in #3713
- Fix import order for
if TYPE_CHECKING:block by @DanielYang59 in #3711 - Use
Selftype 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_statesand CIF writing inNEBSet.write_inputby @janosh in #3732
🚀 Performance
- Migrate CI dependency installation from
piptouvby @janosh in #3675 - Dynamic
__hash__forBalancedReactionby @DanielYang59 in #3676
🚧 CI
🧪 Tests
- Clean up tests 2 by @janosh in #3716
- Remove unnecessary
unittest.TestCasesubclassing by @janosh in #3718
🔒 Security Fixes
- Avoid using
execin code by @DanielYang59 in #3736 - Avoid using
eval, replace manual offset inenumerateand rename single letter variables by @DanielYang59 in #3739
🏷️ Type Hints
Selfreturn type onfrom_dictmethods by @janosh in #3702- Return
selffromStructuremethodsreplace,substitute,remove_species,remove_sitesby @janosh in #3706 Selfreturn type onLatticemethods 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
v2024.3.1
What's Changed
🐛 Bug Fixes
- Fix
BSPlotterProjected.get_projected_plots_dots_patom_pmorbfix set & list intersect by @janosh in #3651 - Remove rounding during FEFF writing by @matthewcarbone in #3345
- Fix
get_niggli_reduced_latticeif entering A1 case by @packer-jp in #3657 - Remove BadPoscarWarning when POSCAR elements set by POTCAR by @esoteric-ephemera in #3662
- Fix RuntimeError triggered in CI of downstream packages by @janosh in #3664
🛠 Enhancements
Kpoint.__eq__andPhononBandStructureSymmLine.__eq__methods + tests by @janosh in #3650- LOBSTER IO improvements by @naik-aakash in #3649
📖 Documentation
- Lobsterout update doc-string to match renamed class variable by @naik-aakash in #3655
- Fix installation.md formatting by @Andrew-S-Rosen in #3661
🧹 House-Keeping
🧪 Tests
- Deprecate
_parse_atomic_densitiesinBaderAnalysisand fixBadertest setup by @DanielYang59 in #3656
🏷️ Type Hints
- Improve INCAR tag check by @DanielYang59 in #3621
🤷♂️ Other Changes
- Avoid
bader_callerfrom altering compressed file in place by @DanielYang59 in #3660
New Contributors
- @matthewcarbone made their first contribution in #3345
- @packer-jp made their first contribution in #3657
Full Changelog: v2024.2.23...v2024.3.1
v2024.2.23
What's Changed
🐛 Bug Fixes
- Modify
BadInputSetWarninglogic for relaxations of a likely metal by @Andrew-S-Rosen in #3634 - Fix Lobsterenv Bug by @naik-aakash in #3637
- [BugFix] Subclass Construction Locpot<:VolumetricData by @jmmshn in #3639
- Guard
MSONAtomsdefinition behind ASE package availability by @ml-evs in #3645 - Remove properties from abivars dict as this breaks the interface with… by @gmatteo in #3642
🛠 Enhancements
- Add interface to icet SQS tools through SQSTransformation by @esoteric-ephemera in #3593
- Modified CifParser.check() as one possible solution for issue #3626 by @kaueltzen in #3628
- Add capability for Vasprun to read KPOINTS_OPT data by @bfield1 in #3509
🧪 Tests
- Compress test vasprun.xml files by @DanielYang59 in #3648
🤷♂️ Other Changes
New Contributors
Full Changelog: v2024.2.20...v2024.2.23
v2024.2.20
What's Changed
This release addresses an important security issue that might affect some users of pymatgen who are parsing untrusted user input, for example a server using pymatgen to parse a user-uploaded CIF file. More information is available in the associated CVE. Thank you to William Khem-Marquez (@SteakEnthusiast) for the discovery and responsible disclosure of this issue.
🐛 Bug Fixes
- Revert back
TransformedStructure.__getattr__by @mjwen in #3617 - Fixed Incar object to allow for ML_MODE vasp tag by @davidwaroquiers in #3625
- Add missing
MPSCANRelaxSet.yamlparameters and alphabetize by @Andrew-S-Rosen in #3615 - Fix
bader_analysis_from_pathusing warning as file path and reinstate test by @janosh in #3632
🛠 Enhancements
- Breaking: fix SubstrateAnalyzer film + substrate vectors not using original crystal coordinates by @jinlhr542 in #3572
- Handle invalid selective dynamics info in POSCAR by @DanielYang59 in #3539
- Return
selffrom allSiteCollection/Structure/Moleculein-place modification methods by @janosh in #3623 - Make the POTCAR setup instructions clearer by @Andrew-S-Rosen in #3630
🧹 House-Keeping
🚀 Performance
- Speeding up
get_nn_infoin local_env.py by @ftherrien in #3635
💥 Breaking Changes
- Lobsterenv improvements by @naik-aakash in #3624
🤷♂️ Other Changes
- Fix URL joining in OptimadeRester by @rdamaral in #3613
- Create a
CODEOWNERSby @Andrew-S-Rosen in #3616 - Adds support for an
MSONAtomsclass that's anMSONableform of an ASEAtomsobject by @Andrew-S-Rosen in #3619 - Lobster io improvements by @naik-aakash in #3627
New Contributors
- @jinlhr542 made their first contribution in #3572
- @rdamaral made their first contribution in #3613
- @ftherrien made their first contribution in #3635
Full Changelog: v2024.2.8...v2024.2.20
v2024.2.8
What's Changed
🐛 Bug Fixes
- Fix
Vasprun.get_potcarssearch method; tweak fake POTCARs by @esoteric-ephemera in #3587
🛠 Enhancements
- Aims input sets by @tpurcell90 in #3482
- Add
SiteCollection.reduced_formulaproperty by @janosh in #3610 - Add
Entry.(formula|reduced_formula)by @janosh in #3611 - VASP IO
copy()methods by @janosh in #3602
📖 Documentation
- Adding FHI-aims inputs developers by @tpurcell90 in #3592
🧹 House-Keeping
- chore: fix a typo by @VsevolodX in #3609
🧪 Tests
🏥 Package Health
🤷♂️ Other Changes
- Fix text formatting in
bug_report.yamlby @Andrew-S-Rosen in #3589 - Minor update to avoid deprecation warning by @kavanase in #3601
New Contributors
- @VsevolodX made their first contribution in #3609
Full Changelog: v2024.1.27...v2024.2.8
v2024.1.27
Full Changelog: v2024.1.26...v2024.1.27
v2024.1.26
What's Changed
🐛 Bug Fixes
- Fix label propagation in
Symmetry.from_spacegroupby @stefsmeets in #3527 - Bug fix: SpectrumPlotter.add_spectra by @minhsueh in #3529
- Fix bug in SQSTransformation by @esoteric-ephemera in #3541
- Fix failing CI due to broken BoltzTraP2 install by @janosh in #3543
- Enforce
zvalto be an integer to avoid improper syntax in.crifile by @wladerer in #3502 - Fix MaterialsProjectCompatibility run type handling for GGA+U by @rkingsbury in #3540
- Accept
Pathobjects asfilenameinIStructure.to()by @janosh in #3553 - Retain
Structure.propertiesinstructure_from_abivars()/structure_to_abivars()round trip by @janosh in #3552 - Support
magmomsinget_phonopy_structure()by @tomdemeyere in #3555 - Fix
ValueError: Invalid fmtwithStructure.to(fmt='yml')by @janosh in #3557 - Improve CIF checking, support for isotopes, and correct handling of new VASP 6.4.2 POSCAR format incl. slashes in header by @esoteric-ephemera in #3542
- Deprecate
Structure.ntypespreplaced byStructure.n_elemsby @janosh in #3562 - Ruff fixes by @janosh in #3564
- Fix highly-nested parens when formula parsing in
Compositionby @janosh in #3569 - Fix floating point imprecision error in ordering property of CollinearMagneticStructureAnalyzer by @kaueltzen in #3574
- Support parsing of "final_energy" in Q-Chem 6.1.1 by @Andrew-S-Rosen in #3580
🛠 Enhancements
- Add GitHub Issue Templates by @DanielYang59 in #3528
- Improve
PhononBandStructure.has_imaginary_gamma_freq()by checking for negative freqs at all q-points close to Gamma by @janosh in #3530 - Add default issue template labels by @DanielYang59 in #3531
- Add functionality to read ASE *.traj file in Trajectory class method from_file() by @exenGT in #3422
- Add
PhononDos.r2_scoremethod by @janosh in #3535 - Add codespace container for reproducing issues by @DanielYang59 in #3537
- Phonon convenience imports by @janosh in #3544
- Add diffusive thermal conductivity model proposed by Agne et al. by @naik-aakash in #3546
- Add flag
write_site_properties = FalseinCifWriterfor writingStructure.site_propertiesas_atom_site_{prop}by @Andrew-S-Rosen in #3550 - Add
pymatgen.io.pwmatmodule by @lhycms in #3512 - Lazy import
pandasinStructure.as_dataframe()to improve startup speed by @janosh in #3568 - Return
selfinSiteCollectionspin/oxi state add/remove methods by @janosh in #3573 - Added threshold_ordering parameter to CollinearMagneticStructureAnalyzer in addition to PR #3574 by @kaueltzen in #3577
🧹 House-Keeping
- Pass file IO modes as kwarg by @janosh in #3560
- Remove deprecated
(to|from|as|get)_stringmethods by @janosh in #3561
🧪 Tests
- Improve handling of Vasprun POTCAR search, expanded fake POTCAR library for VASP I/O tests by @esoteric-ephemera in #3491
- Add test for
NEBAnalysis.get_plot()by @janosh in #3570 tests/io/aimsusenumpy.testing.assert_allcloseandpytest.MonkeyPatchby @janosh in #3575
💥 Breaking Changes
- Breaking: remove single-use
PolarizationLatticewhich inherited fromStructure(antipattern) by @janosh in #3585
🤷♂️ Other Changes
New Contributors
- @DanielYang59 made their first contribution in #3528
- @minhsueh made their first contribution in #3529
- @exenGT made their first contribution in #3422
- @wladerer made their first contribution in #3502
- @tomdemeyere made their first contribution in #3555
- @lhycms made their first contribution in #3512
Full Changelog: v2023.12.18...v2024.1.26
v2023.12.18
What's Changed
🐛 Bug Fixes
- Improve doc strings substitution_probability.py by @JaGeo in #3477
- Convert all FHI-aims stresses to be 3x3 instead of Voigt notation by @tpurcell90 in #3476
- Revert
pymatgen/symmetry/groups.pymodule-scopedSymmOpimport causing circular import by @janosh in #3486 - fix reciprocal_density in MPHSEBSSet and tests by @fraricci in #3499
- fix TypeError when attr force_field not exists by @xjf729 in #3495
- Fix pdplotter.show with matplotlib backend by @lbluque in #3493
- Fix legend label order in
PhononBSPlotter.plot_compare()by @janosh in #3510
🛠 Enhancements
- Define
PBE64Base.yamlfor new VASP PBE_64 POTCARs by @janosh in #3470 (Structure|Molecule).alphabetical_formulaby @janosh in #3478- Improvements to
PhononDosPlotterandPhononBSPlotterby @janosh in #3479 PhononDosPlotter.plot_dos()add support for existingplt.Axesby @janosh in #3487- Allow Structure.interpolate to extrapolate by @kyledmiller in #3467
- Updates for Vasprun with MD simulations by @gpetretto in #3489
- Add gradient, Hessian, and orbital coeffs scratch file parsers to
pymatgen.io.qchem.outputsby @Andrew-S-Rosen in #3483 - Add multipole parsing for Q-Chem IO by @espottesmith in #3490
CifParseronly warn aboutprimitivedefault value change toFalseif not passed toparse_structuresexplicitly by @janosh in #3505PhononBSPlotter.plot_compare()add legend labels by @janosh in #3507- Define arithmetic ops
__add____sub____mul____neg____eq__forPhononDoswith tests by @janosh in #3511 - Equalize
Phonon(Dos|BS)Plottercolors, allow custom plot settings per-DOS by @janosh in #3514 - Add bold flag to
latexifyby @janosh in #3516 CompositionraiseValueErrorifformulastring is only numbers and spaces by @janosh in #3517- Raise
ValueErrorforfloat('NaN')inCompositionby @janosh in #3519 - Add
PhononDos.mae()andPhononBandStructure.has_imaginary_gamma_freq()methods by @janosh in #3520 PhononDos.get_smeared_densitiesreturn unchanged forsigma=0by @janosh in #3524- Add
PhononDos.get_last_peak()by @janosh in #3525
📖 Documentation
- QCInput: add docstrings for svp and pcm_nonels by @rkingsbury in #3522
🚀 Performance
🧪 Tests
🏷️ Type Hints
New Contributors
- @kyledmiller made their first contribution in #3467
Full Changelog: v2023.11.12...v2023.12.18