Skip to content

Align history with pymatgen#3

Merged
shyuep merged 1151 commits intomaterialsproject:mainfrom
esoteric-ephemera:history
Feb 24, 2026
Merged

Align history with pymatgen#3
shyuep merged 1151 commits intomaterialsproject:mainfrom
esoteric-ephemera:history

Conversation

@esoteric-ephemera
Copy link
Copy Markdown
Contributor

@esoteric-ephemera esoteric-ephemera commented Feb 23, 2026

Related PR for pymatgen-core. Aligning the histories here as best as possible

General steps to reproduce, including renaming:

Step 1: Basic setup

if [ -d pymatgen-filtered ] ; then
    rm -rf pymatgen-filtered
fi

git clone https://github.com/materialsproject/pymatgen.git pymatgen-filtered
git clone https://github.com/materialyzeai/pymatgen-test-files.git

cd pymatgen-filtered
# This is the commit just before this package was linked into `pymatgen`
git checkout 1232b7f752ace3c346b7b0a1cee38ba24bef0f38

find pymatgen-test-files -type f -not -path '.git' > ./test_files.txt

Step 2: Get a list of files and args for git-filter-repo

import os
from tempfile import NamedTemporaryFile
from tqdm import tqdm
from pathlib import Path

with open("test_files.txt","r") as f:
    test_files = [line.strip() for line in f]

os.chdir("pymatgen-filtered")

args = "git filter-repo --force "
for file in tqdm(test_files):
    orig_file = "tests/files/" + (file[2:] if file.startswith("./") else file).replace("(","\(").replace(")","\)")
    with NamedTemporaryFile() as f:
        os.system(f'git log --follow --name-only --format="" -- {orig_file} > {f.name}')
        paths = []
        with open(f.name,"rt"):
            for _line in f:
                line = _line.strip().decode()
                if not paths or paths[-1] != line:
                    paths.append(line)

    if not paths:
        continue

    if len(paths := list(reversed(paths))) > 1:
        for i in range(1,len(paths)):
            args += f' \\\n    --path-rename "{paths[i-1]}:{paths[i]}"'
    args += f" \\\n    --path {paths[-1]}"

new_args = ""
for p in Path("../pymatgen-test-files").glob("*"):
    if p.is_dir() and not p.name.startswith("."):
        new_args += f" \\\n    --path-rename test_files/{p.name}:tests/files/{p.name}"
        new_args += f" \\\n    --path tests/files/{p.name}"
        new_args += f" \\\n    --path-rename tests/files/{p.name}:{p.name}"

with open("../filter-repo.sh","w+") as f:
    f.write(
        (args + new_args).replace("(","\(").replace(")","\)")
    )

Step 3: Run git-filter-repo

This is not a perfect process, there are many name collisions for files in pymatgen's history. I ended up semi-manually cleaning out these files that caused problems while running git filter-repo --dry-mode.

The final list is included here:
filter-repo.sh

Once that completes, then we rebase history and fix conflicts

git remote add origin https://github.com/esoteric-ephemera/pymatgen-test-files.git
git fetch origin
git merge origin/history --allow-unrelated-histories -X theirs
< fix merge conflicts>
git push origin HEAD:history

shyuep and others added 30 commits June 12, 2021 19:27
Avoid error exit for ALGO=CHI
QChem: detect NLebdevPts error in QCOutput
# Conflicts:
#	pymatgen/io/qchem/inputs.py
This commit adds support for a separate_spins keyword when calculating the eigenvalue band properties with the VASP Eigenval reader and Vasprun reader. Test cases also included.
Changes due to new lobster version and changes to lobsterenv
naik-aakash and others added 24 commits October 17, 2024 09:32
* added new LOBSTER 5.0/5.1 keywords

* update grosspop parser

* remove redundant condition check

* add POLARIZATION.lobster parser

* update icohplist parser

* update lobsterout parser

* update lobsterout test

* add parser to read BWDF.lobster files

* minor doc-string improvement

* adapt icohplist, cohpcar parsers to work with *.LCFO.lobster files

* make doscar partially work with doscar.lcfo.lobster files (LobsterCompleteDos methods needs to be updated)

* add todo comment

* add todo comment

* minor improvment in doscar parser

* bypass LobsterCompleteDos error when reading DOSCAR.LCFO.lobster files

* add test files

* update grosspop tests

* update charge, doscar & gropsspop parser

* add BWDF and polarization test

* minor improvments

* replace special character from Polarization parser

* rename test files, update icohplist & polarization parser

* try adding encoding to parser

* add test files, update icohplist parser tests

* add tests for doscar.lcfo reading

* gzipped test files and added pending tests

* use path for filename

* use path for filename

* address review comments

* fix typo in exception

* add exeception test

* address review comments > add new arg is_lcfo to the parsers

---------

Co-authored-by: J. George <JaGeo@users.noreply.github.com>
* pass comment

* add test for gamma centered and other comment

* take comment as arg

* tweak comment and type
…which leads to infinite loop (#4133)

* add min_vol check

* increase min_vol to 1

* round volume to 4 digits

* add test

* use min thickness for robustness

* compress test file

* lower the threshold even further

* update comment
* add NBANDS parser

* add unit test

* test more vasp versions

* remove repeat default arg

* add overridden test
* TO BE REVERTED: mark spglib deprecation as error

* filter known deprecation warning

* replace some deprecated API

* revert debug filter

* set deprecation warning as error

* MaterialsProjectCompatibility -> MaterialsProject2020Compatibility

* remove non-existent arg

* filter known warning

* fix grammar

* revert warning filter

---------

Co-authored-by: Shyue Ping Ong <shyuep@users.noreply.github.com>
… for other text files (#4218)

* explicit utf-8 encoding for kpoints from file

* explicit utf-8 elsewhere

* fix root level and dev_scripts

* simplify PMG PKG path

* fix analysis, cli, command_line

* fix electronic_structure, entries and ext

* fix io, phonon and symmetry

* fix alchemy and anlysis tests

* fix apps, command_line, core, elec_struct, entries, ext and vis tests

* finish io and phonon tests

* remove unnecessary seek

* revert encoding for json dump

* type custom paths

* revert another json dump

* ignore userwarning by default

* relocate test-only env var

* remove unneeded default tag for non-userwarning

* also explicit utf-8 for json dump though forced ASCII

* utf8 is alias to utf-8 in codecs, but maybe prefer the standard name

* fix missing encoding in comment

* add test for Γ decoding

* better error message

---------

Signed-off-by: Matthew Horton <mkhorton@users.noreply.github.com>
Co-authored-by: Shyue Ping Ong <shyuep@users.noreply.github.com>
Co-authored-by: Matthew Horton <mkhorton@users.noreply.github.com>
* Add AseTrajAdaptor

* add docstr

* precommit / docstr

* remove molecules logic from trajectory that was already migrated to the ASE traj interface

* ensure Trajectory raises import error if ase not installed but ase functinoality requested

* remove ciruclar import, make AseTrajAdaptor static methods on Trajectory; add tests

* docstr cleanup / ruff

* remove lingering import statments from io.ase

* ensure frame_properties are checked for none in ase conversion

* is_mol --> is_pbc

* turn off delete in temp file for windows support

* simplify names per review comments

* simplify names per review comments

* remove to_ase_trajectory staticmethod
automatically add the override warning when using libxc
* JDFTx IO module - input submodules

* JDFTx IO module - input submodules testing

* Moving "flatten_list" utility function to "generic_tags" submodule and deleting "_input_utils.py" as it contained only one method that was used once in "generic_tags.py"

* privatizing utility method "flatten_list"

* Update from master

* empty file for tmp

* Update from master

* explicit testing of "initial-magnetic-moments"

* Correction for ruff - PLC0206 (Extracting value from dictionary without calling `.items()`) - This does not appear in my local pre-commit (which I believe is running correctly) but started causing the "lint" action to fail starting around 11/22 (along with other failures from unrelated pre-existing parts of pymatgen)

* changing the previous "as_dict" method to be private, making a public "as_dict" method that passes through the __setitem__ method so that the values within the dictionary fed to "as_dict" can be as flexible as the values set explicitly by the user (also made minor updates to __setitem__ to handle setting multiple values for repeatable tags better)

* Partial cleanup of tests

* Partial cleanup of tests

* Partial cleanup of tests

* Cleanup of inputs - homogenized wording in error messages, added value validation methods to AbstractTag for validations that are called multiple times, cleaned up cluttered tests and added comments to make it more clear what is being tested

* pre-commit auto-fixes

* Length units consistency in inputs module

* Changing all "zopen" to just "open" due to an error raised when monty.io tries to raise an "EncondingWarning", changing the dump files dir to be a fixture that creates itself, yields the path, and then removes itself (parts after a "yield" only run once the test using the fixture has finished)

---------

Co-authored-by: Matthew Horton <mkhorton@users.noreply.github.com>
Co-authored-by: Shyue Ping Ong <shyuep@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* sourcing output code from master to this branch

* sourcing output code from master to this branch

* Update from master

* source from master

* update from master

* changing enumeration of valence electrons (the `valences` method does not exactly what I thought it did. I still think its a helpful function to have but not what I need here)

* added "to_dict" method to JDFTXOutfile

* adding `JDFTXOutfileSlice` to "test_dict_repr" in "test_repr_out.py"

* removing fatal error from retrieving t_s from a JOutStructure that is None

* Correction for ruff - PLC0206 (Extracting value from dictionary without calling `.items()`) - This does not appear in my local pre-commit (which I believe is running correctly) but started causing the "lint" action to fail starting around 11/22 (along with other failures from unrelated pre-existing parts of pymatgen)

* We found some weird behavior when trying to export the JDFTXOutfile object to a mongo-db. A lot of the mystery in this output module was in how properties were being forced into memory through getattr, so here all properties are now attributes set up in post_init , get getatr is no longer explicitly defined (this also takes up a lot less lines to make reviewing easier). The only exception is charges and magnetic_moments for JOutStructure

* adding **kwargs for JOutStructure for flexibility

* Partial cleanup of tests

* Partial cleanup of tests

* Partial cleanup of tests

* Adding "structure" attribute to JOutStructure for convenient way to avoid any issues with using a JOutStructure in place of a Structure, adding eigenvals and bandProjections to JDFTXOutputs

* fixes for trajectory

* fix "structure" attribute being initialized as a JOutStructure

* old updates

* Changing all "zopen" to just "open" due to an error raised when monty.io tries to raise an "EncondingWarning", changing the dump files dir to be a fixture that creates itself, yields the path, and then removes itself (parts after a "yield" only run once the test using the fixture has finished)

* missing updated from master

* Oversight that causes ionic positions from previous strucure to be passed incorrectly

---------

Co-authored-by: Matthew Horton <mkhorton@users.noreply.github.com>
Co-authored-by: Shyue Ping Ong <shyuep@users.noreply.github.com>
* add types

* use timeout in communicate

* enable timeout test

* reduce timeout

* fix types

* increase timeout to reveal the issue

* fix test command

* avoid passing default args

* avoid single letter var also avoid shadowing outside

* send SIGKILL after timeout

* update timeout test

* compress test file

* err msg with more details
…le.electron_configuration` (#4278)

* add types

* make module level private variables all cap

* clarify valence elec config

* use symbol over sym as sym could be mistaken for symmetry?

* Revert "use symbol over sym as sym could be mistaken for symmetry?"

This reverts commit 66da01cb2da153d39f9341d433702bf884680b6e.

* remove unnecessary type ignore

* enhance unit test and add scrambled POTCARs

* use explicit None check instead of truthy

* fix fake POTCAR position

* rewrite electron config parser

* avoid Ambiguous variable name l

* less explicit tuple as i'm unable to cast type

* replace K_sv with Ca_sv as it seems to interfer with LOBSTER test

* drop unnecessary temp config recording

* add occu_cutoff

* add test for POT_PAW_PBE_64

* also change species full_electronic_structure property

* implement tolerance
* First pass add functional Vaspout parser

* Add POTCAR spec attrs to standardize spec, add from_spec method to Potcar class, standardize potcar checking

* pre-commit auto-fixes

* fix failing lobster tests

* pre-commit auto-fixes

* pre-commit auto-fixes

* Add Vaspout tests, fix  method

* pre-commit and fix test names

* fix remaining linting and mypy errors

* pre-commit auto-fixes

* Fix python 3.9 support, add charge and magnetization site_properties in Vaspout.ionic_steps

* pre-commit auto-fixes

* Fix projected DOS parsing

* linting / typing

* remove dunder methods from potcar spec

* linting

* increase support for auto k point generation

* linting

* precommit

* add h5py to ci extra install for testing

* make vaspout tests optional

* explicit reason pass to pytest skipif

* remove os system call

* precommit

* tweak dos parsing

* precommit

---------

Signed-off-by: Aaron Kaplan <33381112+esoteric-ephemera@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Adding "tests/files/io/jdftx/*" to codespell exception

* Changing shortening of "structure" from "struc" to "struct" as no longer an excepted word by codespell

* adding option for JDFTXOutfileSlice's to be initialized as None if there are issues initializing any particular slice. The default for this option is False for now

* Converting JElSteps(s) docustrings to google style, privatizing non-user methods and attributes for JElStep(s) (this includes initialization methods as these objects are not supposed to be created by users) + using/updating Structure site_properties for charges and magnetic_moments (now set as properties instead of attributes)

* fixing incomplete function renaming refactoring

* fixing incomplete function renaming refactoring

* privatizing JOutStructure initialization helpers, converting docustrings to google style

* privatizing JOutStructures initialization helpers, converting docustrings to google style

* privatizing JOutStructures initialization helpers, converting docustrings to google style

* privatizing JDFTXOutfileSlice initialization helpers, converting docustrings to google style

* converting docustrings to google style

* incomplete renaming fixes, protection from setting magnetic moments and charges to None

* privitizing jdftx io utils module

* privitizing jdftx io utils module

* docustring update to google style

* docustring update to google style

* site_properties behavior correction

* syncing unit test for testing valences from feature-ptable branch

* renaming test file

* separating _utils.py into _input_utils.py and _output_utils.py

* updating module docustring for _output_utils

* input/output utils testing separation

* sourcing changes made in feature-jdftx-inputs

* renaming test file to matching renaming of "JEiters" to "JElSteps"

* Moving test files to directories with more descriptive names, removing test files not being used

* moving multi_(has/get)_attr from output utils to inputs.py (only used in inputs.py) and made them both private

* changing enumeration of valence electrons (the `valences` method does not exactly what I thought it did. I still think its a helpful function to have but not what I need here)

* explicit testing of "initial-magnetic-moments"

* added "to_dict" method to JDFTXOutfile

* adding `JDFTXOutfileSlice` to "test_dict_repr" in "test_repr_out.py"

* removing fatal error from retrieving t_s from a JOutStructure that is None

* Correction for ruff - PLC0206 (Extracting value from dictionary without calling `.items()`) - This does not appear in my local pre-commit (which I believe is running correctly) but started causing the "lint" action to fail starting around 11/22 (along with other failures from unrelated pre-existing parts of pymatgen)

* changing the previous "as_dict" method to be private, making a public "as_dict" method that passes through the __setitem__ method so that the values within the dictionary fed to "as_dict" can be as flexible as the values set explicitly by the user (also made minor updates to __setitem__ to handle setting multiple values for repeatable tags better)

* removing __getattr__ and writing allocating everything in the __postinit__

* replaced all properties within JDFTXOutfile and JDFTXOutfileSlice as initialized attributes and fixed hidden errors revealed by doing so

* removing review requests for files with anticipated changes coming up

* replaced all properties within JElStep(s) and JOutStructure as initialized attributes (skipped for charges and magnetic_moments as the setter/getter methods are important as the user might interact with this object)

* Cleaning up __post_init__ methods to iterate over a list of variables for more easier reading

* removing now unneeded __getattr__ from JDFTXOutfileSlice, no longer have properties in JDFTXOutfile

* consistent "to_dict" methods

* Removing references to properties

* adding **kwargs for JOutStructure for flexibility

* "from_calc_dir" init method for JDFTXOutfile

* Partial cleanup of tests

* Partial cleanup of tests

* Partial cleanup of tests

* parsing for necessary data to interact with eigenvals + projections for pDOS/pCOHP analysis

* updates to necessary stored metadata and example files for testing

* Adding "structure" attribute to JOutStructure for convenient way to avoid any issues with using a JOutStructure in place of a Structure, adding eigenvals and bandProjections to JDFTXOutputs

* Changed trajectory to pull from Structure objects (instead of JOutStructure objects), added a "constant_lattice" bool attribute to JDFTXOutfileSlice for creating a Trajectory, changed the "_get_trajectory" method for JDFTXOutfile to instead concatenate the "trajectory" attributes of the JDFTXOutfileSlice's

* None-type protection for setting constant_lattice in JDFTXOutfileSlice, removing test for ValueError no longer raised in _set_trajectory in JDFTXOutfileSlice

* oversight - this should've always been a Structure

* Cleanup of inputs - homogenized wording in error messages, added value validation methods to AbstractTag for validations that are called multiple times, cleaned up cluttered tests and added comments to make it more clear what is being tested

* populating attributes taken from `jstrucs` for `JDFTXOutfileSlice` within a for-loop now, adding "forces" as an attribute passed upstread to JDFTXOutfile

* Removing commented out code (all attributes set within the above for loop)

* fixes to consistent ion coordinate units - added missing bohr_to_ang when reading initial coordinates in joustructures.py (_get_initial_coords), added missing 1/bohr_to_ang when creating a JDFTXInfile from a pmg Structure, added specification of coords-type when creating JDFTXInfile from a pmg Structure, added keyword argument for from_structure to store ion position tags as fractional or cartesian coordinates

* fixes for formatting on TagContainer writing with linebreak_nth_entry

* removing commented out code

* activating none_slice_on_error behavior for all outfile slices EXCEPT the final slice

* fixed cartesian coords in from_jdftxinfile method and added Etot to parsed energy types

* fixed oversight on how 'none_slice_bools' are set on the 'none_slice_on_error is None' condition

* pre-commit auto-fixes

* Changing all "zopen" to just "open" due to an error raised when monty.io tries to raise an "EncondingWarning", changing the dump files dir to be a fixture that creates itself, yields the path, and then removes itself (parts after a "yield" only run once the test using the fixture has finished)

* Storing a list of the orbital labels instead of a dictionary of orbitals available per ion-type, adding a value check for the bandProjections, improving docustring for JDFTXOutputs

* optional "outfile_name" argument for "from_calc_dir" for JDFTXOutputs to allow for initialization on calc_dirs with ambiguous out file identity (ie multiple files with the .out suffix)

* Oversight that causes ionic positions from previous strucure to be passed incorrectly

* Oversight that causes ionic positions from previous strucure to be passed incorrectly

* Reverting old changes to sync with main fork

* Removing unused _input_utils

* Adding fixes to mistakes found by jacob

* Adding fixes to mistakes found by jacob

* The value for a JOutStructures should be the most recent non-None value (some values will not be logged again for parsing if they are not updated at an optimization step)

* The value for a JOutStructures should be the most recent non-None value (some values will not be logged again for parsing if they are not updated at an optimization step)

* The value for a JDFTx output object containing slices should be the most recent non-None value (some values will not be logged again for parsing if they are not updated at an optimization step)

* The value for a JDFTx output object containing slices should be the most recent non-None value (some values will not be logged again for parsing if they are not updated at an optimization step)

* protection since an outfile slice might beinitialized as None

* renaming get_colon_var_t1 to get_colon_val

* Moving functions reading "input" structure from the outfile from joutstructures.py to jdftxoutfileslice.py, making the "init_struc" an initialization argument for a JOutStructures instead of something constructed during initialization, reducing the number of instances where object indexes are referenced and increasing the number of attributes explicitly set as None to avoid later references to unset attributes

* typo

* Error if outfile slice does not even contain the inputs preamble for the structure, removing "initial_structure" from the default behavior "JOutStructures attribute from slices" list

* oversight causing the initial value to be set as the parent value, not the most recent value

* missing indexing fix

* Fixing oversight in input file printing causing multiline tags to miss the indent on the first line of their values (thank you Jacob for catching!), adding t_s  as an attribute to be inherited in the _<x>_atr_from_<y>"loops instead, fixing _get_t_s from returning None when self.t_s has a non-None value, changing known value in outfile tests from 'None' to None, removing test_imports tests for now

* Fixing "count" enumeration in when gathering subtag value strings in TagContainer.write so that repeating subtags may be broken up into seperate lines when requested in the TagContainer linebreak_nth_entry (or multiline_tag)

* phasing out TagContainer.multiline_tag since its redundant to TagContainer.linebreath_nth_entry == 1, fixing oversight for linebreath_nth_entry == 1 case which was causing new lines from getting an indent

* fix dump-name tag formatting

* Adding missing options from the func_x_options list

* Adding missing options from the func_x_options list

* Fix for selective_dynamics for the JOutStructure class - now saves a list[list[int]] (forced into 3xN if only one flag for ion) and saves within the site_properties instead of as a class variable as per pymatgen convention

* Some simply mypy fixes. But there are too many to deal with.

* Add .python-version

* Seems like micromamba doesn't like python version.

* COmment out mypy checks for now.

* Add comment on how to update PT data.

* Properly use dependency groups for uv.

* See if adding a uv sync solvs the problem.

* Add back ci category.

* Add prototypes to extras.

* Updated Potentials Class in FEFF io to consider radius (#4334)

* Changed the Potentials class to consider the same radius that is used in
the Atoms class. This is necessary to avoid a situation where the radius
is small enough to only have a subset of the unique elements in a
structure, but all the elements have potentials defined. This will cause
FEFF to fail when run.

* pre-commit auto-fixes

* added tests and fixed undefined radius in Feff Potential to be consistent with previous behavior

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Shyue Ping Ong <shyuep@users.noreply.github.com>

* Rename workflows.

* Upgrade matgl. Remove dependency on chgnet since this has now been moved
to within matgl, which is easier.

* Add ubuntu arm build for wheels in pymatgen.

* remove data high (#4341)

* fix Mn ionic radii (#4342)

* Fix workflow for Ubuntu.

* FOrce upgrade of DGL and matgl.

* Make the MPResterBasic interface mirror the mp-api interface exactly.

* pre-commit autoupdate (#4353)

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.9.9 → v0.11.4](astral-sh/ruff-pre-commit@v0.9.9...v0.11.4)
- [github.com/RobertCraigie/pyright-python: v1.1.396 → v1.1.398](RobertCraigie/pyright-python@v1.1.396...v1.1.398)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Replace `to_dict` with `as_dict` (#4352)

* deprecate to_dict

* deprecate JDFTX with 6 months grace period

* update compatibility log

* more hidden replacement

* revert to to_dict for dataframe

* deprecate to_xxx in abitimer

* directly rename dev/helper functions

* more as_xxx

* fix typo

* deprecate composition

* use args and kwargs to pass thru, would loss autocomplete

* more to_xxx

* last batch as_xxx

* as_table_str

* update usage in tests

* fix some leftover

* add naming convention note in contributing md

* update compatibility log

* TO BE REVERTED: mark future warning as error

* add dummy docstring

* fix some

* should be everything to fix

* revert everything first

* Revert "update compatibility log"

This reverts commit 87ab51c56b61636c0e59864724cdfe186bd2d79c.

* deprecate to_dict

* deprecate JDFTX with 6 months grace period

* change other to dict in core

* update compatibility log

* better alias

* migrate internal usage

* regenerate docs

* Fix DGL.

* Fix order of install.

* AseAtomsAdaptor.get_structure: Do no constrain constrain-free sites (#4355)

* src/pymatgen/io/ase.py (AseAtomsAdaptor.get_structure): When no
explicit constraint is given for a site in ASE Atoms object, use
"T T T" selective dynamics (no constraint).  The old code is plain
wrong.
* tests/io/test_ase.py (test_back_forth_constraints): New test.

Fixes #4354.
Thanks to @yaoyi92 for reporting!

Co-authored-by: Andrew S. Rosen <asrosen93@gmail.com>

* Update documentation.

* Updated changelog.

* Update docs

* USe uv to publish.

* fix import (#4357)

* Remove target-version and rely on requires python instead.

* `core.Lattice` cast `pbc` to `bool` (possibly `np.bool_`) (#4356)

* cast to bool

* update test

* Clean up optional Ubuntu CI pipeline, skip `BoltzTraP2 ` install in pipeline for now (#4347)

* try to limit bt2 version for now

* combine optional dep for ubuntu and macos

* still doesn't work, comment out bt2 for now

* one liner

* use realpath

* less verbose make

* remove debug output

* disable gcc warning

* fix merge

* revert comment out bt2

* try bt2 build for windows

* bt2 seems to build fine on win runner now

* comment out BoltzTraP2 for now

---------

Co-authored-by: Shyue Ping Ong <shyuep@users.noreply.github.com>

* Add .python-version

* Seems like micromamba doesn't like python version.

* Properly use dependency groups for uv.

* See if adding a uv sync solvs the problem.

* Add back ci category.

* Upgrade matgl. Remove dependency on chgnet since this has now been moved
to within matgl, which is easier.

* Fix workflow for Ubuntu.

* FOrce upgrade of DGL and matgl.

* Make the MPResterBasic interface mirror the mp-api interface exactly.

* Replace `to_dict` with `as_dict` (#4352)

* deprecate to_dict

* deprecate JDFTX with 6 months grace period

* update compatibility log

* more hidden replacement

* revert to to_dict for dataframe

* deprecate to_xxx in abitimer

* directly rename dev/helper functions

* more as_xxx

* fix typo

* deprecate composition

* use args and kwargs to pass thru, would loss autocomplete

* more to_xxx

* last batch as_xxx

* as_table_str

* update usage in tests

* fix some leftover

* add naming convention note in contributing md

* update compatibility log

* TO BE REVERTED: mark future warning as error

* add dummy docstring

* fix some

* should be everything to fix

* revert everything first

* Revert "update compatibility log"

This reverts commit 87ab51c56b61636c0e59864724cdfe186bd2d79c.

* deprecate to_dict

* deprecate JDFTX with 6 months grace period

* change other to dict in core

* update compatibility log

* better alias

* migrate internal usage

* regenerate docs

* Fix DGL.

* Fix order of install.

* Update documentation.

* Update docs

* Clean up optional Ubuntu CI pipeline, skip `BoltzTraP2 ` install in pipeline for now (#4347)

* try to limit bt2 version for now

* combine optional dep for ubuntu and macos

* still doesn't work, comment out bt2 for now

* one liner

* use realpath

* less verbose make

* remove debug output

* disable gcc warning

* fix merge

* revert comment out bt2

* try bt2 build for windows

* bt2 seems to build fine on win runner now

* comment out BoltzTraP2 for now

---------

Co-authored-by: Shyue Ping Ong <shyuep@users.noreply.github.com>

* Add .python-version

* Seems like micromamba doesn't like python version.

* Properly use dependency groups for uv.

* See if adding a uv sync solvs the problem.

* Add back ci category.

* Upgrade matgl. Remove dependency on chgnet since this has now been moved
to within matgl, which is easier.

* Fix workflow for Ubuntu.

* FOrce upgrade of DGL and matgl.

* Make the MPResterBasic interface mirror the mp-api interface exactly.

* Replace `to_dict` with `as_dict` (#4352)

* deprecate to_dict

* deprecate JDFTX with 6 months grace period

* update compatibility log

* more hidden replacement

* revert to to_dict for dataframe

* deprecate to_xxx in abitimer

* directly rename dev/helper functions

* more as_xxx

* fix typo

* deprecate composition

* use args and kwargs to pass thru, would loss autocomplete

* more to_xxx

* last batch as_xxx

* as_table_str

* update usage in tests

* fix some leftover

* add naming convention note in contributing md

* update compatibility log

* TO BE REVERTED: mark future warning as error

* add dummy docstring

* fix some

* should be everything to fix

* revert everything first

* Revert "update compatibility log"

This reverts commit 87ab51c56b61636c0e59864724cdfe186bd2d79c.

* deprecate to_dict

* deprecate JDFTX with 6 months grace period

* change other to dict in core

* update compatibility log

* better alias

* migrate internal usage

* regenerate docs

* Fix DGL.

* Fix order of install.

* Update documentation.

* Update docs

* Remove target-version and rely on requires python instead.

* Clean up optional Ubuntu CI pipeline, skip `BoltzTraP2 ` install in pipeline for now (#4347)

* try to limit bt2 version for now

* combine optional dep for ubuntu and macos

* still doesn't work, comment out bt2 for now

* one liner

* use realpath

* less verbose make

* remove debug output

* disable gcc warning

* fix merge

* revert comment out bt2

* try bt2 build for windows

* bt2 seems to build fine on win runner now

* comment out BoltzTraP2 for now

---------

Co-authored-by: Shyue Ping Ong <shyuep@users.noreply.github.com>

* Beginning repairs from merge. Also changing _jof_atr_from_last_slice from list into a tuple as it looks like that was supposed to be done on this one

* missed fix

* No fail detection yet, but fixing the none_slice_on_error behavior for from_calc_dir

* (UNTESTED) additional lines for dealing with velocities

* Expanding _get_colon_val to return np.nan on "nan" values, expanding JOutStructure to hold data for MD simulations, adding a JDFTXInfile object to JDFTXOutfileSlice to parse dumped input commands, beginning replacement of jminsettings objects with attached JDFTXInfile object, fixing old "null" strings from out files when jdftx briefly dumped an unreadable string, partiall replacing "np.ndarray" with "np.typing.NDArray" to indicate array typing

* Support and testing for Rhombohedral, Hexagonal, and Triclinic lattice options

* Support for all lattice types. TODO - revise the `read` method for TagContainer so lattice TagContainer options don't have to be duplicated with/without the "modification" subtag

* Fix for JDFTXStructure.__str__() method

* incorrect indexing of velocity line

* Changing `ion` to a single-option MultiformatTag

* Adding options for single contraint and multiple hyperplanes

* Three format options for 'ion' tag - no constraints, one constraint, or multiple hyperplanes. For second option, "constraint type" and "d0"-"d2" are required unnamed subtags. For final option, "HyperPlane" constraint is treated as its own named subtag (so no "constraint type" subtag, only a subtag name "HyperPlane" with a list of TagContainers containing "d0"-"d2" and "group" subtags)

* Giving consistent number of decimals for "d0"-"d2"

* Cleaning up commented out code

* partially tested support for constraints in JDFTXStructure

* docustrings and comments

* Moving new JDFTXStructure site properties to regular attributes as all site_properties need to have homogenous shaping. Making typing of new attributes fairly undescriptive for now to pass pre-commit

* Protecting possible inhomogenous values from site properties

* roll back JDFTXStructure attributes to None if all entries are None

* get_colon_val alias for partial merging to materialsproject

* Fixing ordering orbitals in bandprojection parsing, adding alias to get_colon_val for partial merging to materialsproject

* typing updates

* adding tests for updated lattice and ion tag objects to jdftxinfile test module

* Removing commented out out-dated test

* Removing commented out code

* Removing commented out code

* Removing commented out code

* updated test orbital ordering

* Fixes for updated mypy typing criteria

* Moved tests

* Unused test

* Removing commented out test

---------

Co-authored-by: cote3804 <cote3804@colorado.edu>
Co-authored-by: Cooper <101949243+cote3804@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Jacob Clary <35705356+jacobclary@users.noreply.github.com>
Co-authored-by: Shyue Ping Ong <shyuep@gmail.com>
Co-authored-by: Charles Cardot <43706411+CharlesCardot@users.noreply.github.com>
Co-authored-by: Shyue Ping Ong <shyuep@users.noreply.github.com>
Co-authored-by: Haoyu (Daniel) YANG 杨浩宇 <yanghaoyu97@outlook.com>
Co-authored-by: Ihor Radchenko <yantar92@posteo.net>
Co-authored-by: Andrew S. Rosen <asrosen93@gmail.com>
* remove deprecated mypy plugin

/Users/yang/.cache/pre-commit/reposlddsc8t/py_env-python3.13/bin/mypy:8:
DeprecationWarning: `numpy.typing.mypy_plugin` is deprecated, and will
be removed in a future release. Please remove `plugins =
numpy.typing.mypy_plugin` in your mypy config.(deprecated in NumPy 2.3)
  sys.exit(console_entry())

* fix comment handling

* add test

* explicit None when no comment instead of empty str
* Update FHI-aims io to use pyfhiaims

* Update si for file format changes

consistent number of #

* update ref file with blank line in header

* Update for new parsers

* Replace where AimsParseError is located

updating parsers

* Add modified converters interface.

Move that to pyfhiaims

* Update for pyfhiaims parsers

* Updates from pyfhiaims cleanups

* update tests for new interface

restults seemed to have change, so fixing that

* fix things for atomate2

* modify pyproject.toml

Add optional aims reqirement of pyfhiaims

* Add importorskip line for pyfhiaims

Should skip aims test without the optional dependency

* Remove FHI-aims test files

Tests will be done in pyfhiaims as per @shyuep request

* fix build errors

aims not apart of optional as it's not needed in tests

* Add pymatgen-io-aims to the add on's page

* FHI-aims now in add on

remove copied files from the add on
…nal_energy_components` (#4440)

* Filling out `JOutStructure.properties` for feeding to `frame_properties` for `Trajectory` in `JDFTXOutfileSlice.trajectory`

* unneccessary line

* better comments on joutstructure initialization order

* TODOs

* Adding missing kinetic_functional option

* Removing vestigial function

* Vibrations parsing and testing

* removing debug comments

* removing commented out code

* Parsing and testing for vibrational energy components

* Add vibrational data to `JDFTXOutfile` to be read from `JDFTXOutfileSlice`

---------

Co-authored-by: Shyue Ping Ong <shyuep@users.noreply.github.com>
* Fix indexing error

* Add additional unit test for Procar
* prep for deprecation

* add from_files method

* mypy ignore

* ignore assignment

* rename args

* add tests for from_files class method

* add error raised files

* improve error handling for non-standard environments

* add tests for on_error case
@esoteric-ephemera
Copy link
Copy Markdown
Contributor Author

Tagging @mkhorton @DanielYang59 @JaGeo @Andrew-S-Rosen @computron as stakeholders

@shyuep shyuep merged commit 4e41155 into materialsproject:main Feb 24, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.