From a19bfa30c3a8cb42a8402ec7e24d5371c5665318 Mon Sep 17 00:00:00 2001 From: VsevolodX Date: Fri, 16 Jan 2026 14:25:08 -0800 Subject: [PATCH 01/13] update: add wfn property (claude) --- express/parsers/apps/espresso/formats/txt.py | 18 ++++++++++++++++++ express/parsers/apps/espresso/parser.py | 10 ++++++++++ express/parsers/apps/espresso/settings.py | 6 ++++++ .../wavefunction_amplitude.py | 14 ++++++++++++++ express/settings.py | 3 +++ 5 files changed, 51 insertions(+) create mode 100644 express/properties/non_scalar/two_dimensional_plot/wavefunction_amplitude.py diff --git a/express/parsers/apps/espresso/formats/txt.py b/express/parsers/apps/espresso/formats/txt.py index 60186bda..85a96c7a 100644 --- a/express/parsers/apps/espresso/formats/txt.py +++ b/express/parsers/apps/espresso/formats/txt.py @@ -701,6 +701,24 @@ def potential_profile(self, text): data = self._general_output_parser(text, **settings.REGEX["potential_profile"]) return [[e[i] for e in data] for i in range(4)] + def wavefunction_amplitude(self, text): + """ + Extracts wavefunction amplitude along z coordinate. + + Example input: + #z (A) Amplitude + -4.89 0.0012 + -4.78 0.0034 + -4.67 0.0067 + -4.56 0.0123 + -4.44 0.0234 + + Returns: + list[list[float]] + """ + data = self._general_output_parser(text, **settings.REGEX["wavefunction_amplitude"]) + return [[e[i] for e in data] for i in range(2)] + def charge_density_profile(self, text): """ Extracts total charge density along z. diff --git a/express/parsers/apps/espresso/parser.py b/express/parsers/apps/espresso/parser.py index f4e45de8..1a30fc20 100644 --- a/express/parsers/apps/espresso/parser.py +++ b/express/parsers/apps/espresso/parser.py @@ -274,9 +274,19 @@ def reaction_energies(self): def _get_esm_file(self): return find_file(".esm1", self.work_dir) + def _get_wavefunction_file(self): + """ + Get wavefunction data file (e.g., from pp.x postprocessing output). + This looks for a file with wavefunction amplitude data. + """ + return find_file(".wavefunction", self.work_dir) + def potential_profile(self): return self.txt_parser.potential_profile(self._get_file_content(self._get_esm_file())) + def wavefunction_amplitude(self): + return self.txt_parser.wavefunction_amplitude(self._get_file_content(self._get_wavefunction_file())) + def charge_density_profile(self): return self.txt_parser.charge_density_profile(self._get_file_content(self._get_esm_file())) diff --git a/express/parsers/apps/espresso/settings.py b/express/parsers/apps/espresso/settings.py index 098254e3..58da8061 100644 --- a/express/parsers/apps/espresso/settings.py +++ b/express/parsers/apps/espresso/settings.py @@ -121,6 +121,12 @@ "output_type": "float", "match_groups": [1, 2, 3, 4], }, + "wavefunction_amplitude": { + "regex": r"^\s+({0})\s+({0})".format(DOUBLE_REGEX), + "occurrences": 0, + "output_type": "float", + "match_groups": [1, 2], + }, "charge_density_profile": { "regex": r"^\s+({0})\s+({0})\s+{0}\s+{0}\s+{0}".format(DOUBLE_REGEX), "occurrences": 0, diff --git a/express/properties/non_scalar/two_dimensional_plot/wavefunction_amplitude.py b/express/properties/non_scalar/two_dimensional_plot/wavefunction_amplitude.py new file mode 100644 index 00000000..541f2f76 --- /dev/null +++ b/express/properties/non_scalar/two_dimensional_plot/wavefunction_amplitude.py @@ -0,0 +1,14 @@ +from express.properties.non_scalar.two_dimensional_plot import TwoDimensionalPlotProperty + + +class WavefunctionAmplitude(TwoDimensionalPlotProperty): + """ + Wavefunction amplitude. + """ + + def __init__(self, name, parser, *args, **kwargs): + super(WavefunctionAmplitude, self).__init__(name, parser, *args, **kwargs) + wavefunction_amplitude = self.parser.wavefunction_amplitude() + self.xDataArray = wavefunction_amplitude[0] + self.yDataSeries = [wavefunction_amplitude[1]] + diff --git a/express/settings.py b/express/settings.py index 6912ecfa..3dfa46a4 100644 --- a/express/settings.py +++ b/express/settings.py @@ -41,6 +41,9 @@ "potential_profile": { "reference": "express.properties.non_scalar.two_dimensional_plot.potential_profile.PotentialProfile" }, + "wavefunction_amplitude": { + "reference": "express.properties.non_scalar.two_dimensional_plot.wavefunction_amplitude.WavefunctionAmplitude" + }, "charge_density_profile": { "reference": "express.properties.non_scalar.two_dimensional_plot.charge_density_profile.ChargeDensityProfile" }, From 4c4a0febf692d372b73a429c7babb3763afb909d Mon Sep 17 00:00:00 2001 From: VsevolodX Date: Tue, 20 Jan 2026 13:35:28 -0800 Subject: [PATCH 02/13] update: move to settings --- express/parsers/apps/espresso/parser.py | 6 +----- express/parsers/apps/espresso/settings.py | 1 + 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/express/parsers/apps/espresso/parser.py b/express/parsers/apps/espresso/parser.py index 1a30fc20..86ff4980 100644 --- a/express/parsers/apps/espresso/parser.py +++ b/express/parsers/apps/espresso/parser.py @@ -275,11 +275,7 @@ def _get_esm_file(self): return find_file(".esm1", self.work_dir) def _get_wavefunction_file(self): - """ - Get wavefunction data file (e.g., from pp.x postprocessing output). - This looks for a file with wavefunction amplitude data. - """ - return find_file(".wavefunction", self.work_dir) + return find_file(settings.WAVEFUNCTION_FILE, self.work_dir) def potential_profile(self): return self.txt_parser.potential_profile(self._get_file_content(self._get_esm_file())) diff --git a/express/parsers/apps/espresso/settings.py b/express/parsers/apps/espresso/settings.py index 58da8061..dba78514 100644 --- a/express/parsers/apps/espresso/settings.py +++ b/express/parsers/apps/espresso/settings.py @@ -8,6 +8,7 @@ AVERAGE_FILE = "avg.dat" HP_FILE = "__prefix__.Hubbard_parameters.dat" # contains Hubbard U and V parameters HP_NN_FILE = "HUBBARD.dat" # contains Hubbard V parameters for 6 nearest neighbors +WAVEFUNCTION_FILE = "wf_r.dat" COMMON_REGEX = r"{0}\s+[=:<>]\s*([-+]?\d*\.?\d*([Ee][+-]?\d+)?)" DOUBLE_REGEX = GENERAL_REGEX.double_number From c77903d740c3392bd625c387d2f62435b07617fc Mon Sep 17 00:00:00 2001 From: VsevolodX Date: Tue, 20 Jan 2026 19:09:42 -0800 Subject: [PATCH 03/13] update: add test --- .../test_wavefunction_amplitude.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 tests/unit/properties/non_scalar/two_dimensional_plot/test_wavefunction_amplitude.py diff --git a/tests/unit/properties/non_scalar/two_dimensional_plot/test_wavefunction_amplitude.py b/tests/unit/properties/non_scalar/two_dimensional_plot/test_wavefunction_amplitude.py new file mode 100644 index 00000000..f1b68a37 --- /dev/null +++ b/tests/unit/properties/non_scalar/two_dimensional_plot/test_wavefunction_amplitude.py @@ -0,0 +1,41 @@ +from unittest.mock import MagicMock +from tests.unit import UnitTestBase +from express.properties.non_scalar.two_dimensional_plot.wavefunction_amplitude import WavefunctionAmplitude + + +class WavefunctionAmplitudeTest(UnitTestBase): + def setUp(self): + super().setUp() + + def tearDown(self): + super().tearDown() + + def test_wavefunction_amplitude_with_data(self): + x_data = [0.0, 0.0050251256, 0.0100502513, 0.0150753769, 0.0201005025] + y_data = [0.0000322091, 0.0000072134, -0.0000218274, -0.0000540398, -0.0000883573] + + parser = MagicMock() + parser.wavefunction_amplitude.return_value = [x_data, y_data] + + # Create property + property_ = WavefunctionAmplitude("wavefunction_amplitude", parser) + result = property_.serialize_and_validate() + + # Verify structure + self.assertEqual(result['name'], 'wavefunction_amplitude') + self.assertIn('xDataArray', result) + self.assertIn('yDataSeries', result) + self.assertIn('xAxis', result) + self.assertIn('yAxis', result) + + # Verify axis labels and units + self.assertEqual(result['xAxis']['label'], 'coordinate') + self.assertEqual(result['xAxis']['units'], 'angstrom') + self.assertEqual(result['yAxis']['label'], 'amplitude') + self.assertEqual(result['yAxis']['units'], 'a.u.') + + # Verify data + self.assertEqual(result['xDataArray'], x_data) + self.assertEqual(len(result['yDataSeries']), 1) + self.assertEqual(result['yDataSeries'][0], y_data) + From cfd1d08dd937fad47baf99b2534d35405316c60a Mon Sep 17 00:00:00 2001 From: VsevolodX Date: Tue, 20 Jan 2026 19:14:47 -0800 Subject: [PATCH 04/13] update: adjsut test --- .../test_wavefunction_amplitude.py | 45 +++++++------------ 1 file changed, 17 insertions(+), 28 deletions(-) diff --git a/tests/unit/properties/non_scalar/two_dimensional_plot/test_wavefunction_amplitude.py b/tests/unit/properties/non_scalar/two_dimensional_plot/test_wavefunction_amplitude.py index f1b68a37..c1079aa4 100644 --- a/tests/unit/properties/non_scalar/two_dimensional_plot/test_wavefunction_amplitude.py +++ b/tests/unit/properties/non_scalar/two_dimensional_plot/test_wavefunction_amplitude.py @@ -1,8 +1,21 @@ -from unittest.mock import MagicMock from tests.unit import UnitTestBase from express.properties.non_scalar.two_dimensional_plot.wavefunction_amplitude import WavefunctionAmplitude +WAVEFUNCTION_AMPLITUDE_RAW_DATA = [ + [0.0, 0.0050251256, 0.0100502513, 0.0150753769, 0.0201005025], + [0.0000322091, 0.0000072134, -0.0000218274, -0.0000540398, -0.0000883573] +] + +WAVEFUNCTION_AMPLITUDE = { + "name": "wavefunction_amplitude", + "xDataArray": [0.0, 0.0050251256, 0.0100502513, 0.0150753769, 0.0201005025], + "yDataSeries": [[0.0000322091, 0.0000072134, -0.0000218274, -0.0000540398, -0.0000883573]], + "xAxis": {"label": "z coordinate", "units": "angstrom"}, + "yAxis": {"label": "amplitude", "units": "a.u."}, +} + + class WavefunctionAmplitudeTest(UnitTestBase): def setUp(self): super().setUp() @@ -10,32 +23,8 @@ def setUp(self): def tearDown(self): super().tearDown() - def test_wavefunction_amplitude_with_data(self): - x_data = [0.0, 0.0050251256, 0.0100502513, 0.0150753769, 0.0201005025] - y_data = [0.0000322091, 0.0000072134, -0.0000218274, -0.0000540398, -0.0000883573] - - parser = MagicMock() - parser.wavefunction_amplitude.return_value = [x_data, y_data] - - # Create property + def test_wavefunction_amplitude(self): + parser = self.get_mocked_parser("wavefunction_amplitude", WAVEFUNCTION_AMPLITUDE_RAW_DATA) property_ = WavefunctionAmplitude("wavefunction_amplitude", parser) - result = property_.serialize_and_validate() - - # Verify structure - self.assertEqual(result['name'], 'wavefunction_amplitude') - self.assertIn('xDataArray', result) - self.assertIn('yDataSeries', result) - self.assertIn('xAxis', result) - self.assertIn('yAxis', result) - - # Verify axis labels and units - self.assertEqual(result['xAxis']['label'], 'coordinate') - self.assertEqual(result['xAxis']['units'], 'angstrom') - self.assertEqual(result['yAxis']['label'], 'amplitude') - self.assertEqual(result['yAxis']['units'], 'a.u.') - - # Verify data - self.assertEqual(result['xDataArray'], x_data) - self.assertEqual(len(result['yDataSeries']), 1) - self.assertEqual(result['yDataSeries'][0], y_data) + self.assertDeepAlmostEqual(property_.serialize_and_validate(), WAVEFUNCTION_AMPLITUDE) From 72eca52b071aeea202203d39c33ddf6814bdea55 Mon Sep 17 00:00:00 2001 From: VsevolodX Date: Tue, 20 Jan 2026 19:22:27 -0800 Subject: [PATCH 05/13] chore: esse --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 14b86699..2727e863 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,7 +18,7 @@ dependencies = [ "munch==2.5.0", "pymatgen>=2023.8.10", "ase>=3.17.0", - "mat3ra-esse>=2024.1.25.post7", + "mat3ra-esse @ git+https://github.com/Exabyte-io/esse.git@ccdc86e03eb1d07054efca2be0b38f30e5f45b80", "jarvis-tools>=2023.12.12", # To avoid module 'numpy.linalg._umath_linalg' has no attribute '_ilp64' in Colab "numpy>=1.24.4,<2", From ecd409565ec7f5a8e4dff82d5b4527da271077b7 Mon Sep 17 00:00:00 2001 From: VsevolodX Date: Tue, 20 Jan 2026 19:26:38 -0800 Subject: [PATCH 06/13] chore: esse --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 2727e863..3c0053ad 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,7 +18,7 @@ dependencies = [ "munch==2.5.0", "pymatgen>=2023.8.10", "ase>=3.17.0", - "mat3ra-esse @ git+https://github.com/Exabyte-io/esse.git@ccdc86e03eb1d07054efca2be0b38f30e5f45b80", + "mat3ra-esse @ git+https://github.com/Exabyte-io/esse.git@6cff939259da4f358e7295c66b5a37a84d764e98", "jarvis-tools>=2023.12.12", # To avoid module 'numpy.linalg._umath_linalg' has no attribute '_ilp64' in Colab "numpy>=1.24.4,<2", From 57d9e20894df3fe366626c736972673143e59890 Mon Sep 17 00:00:00 2001 From: VsevolodX Date: Tue, 20 Jan 2026 19:29:52 -0800 Subject: [PATCH 07/13] chore: ipdate test --- .../two_dimensional_plot/test_wavefunction_amplitude.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/properties/non_scalar/two_dimensional_plot/test_wavefunction_amplitude.py b/tests/unit/properties/non_scalar/two_dimensional_plot/test_wavefunction_amplitude.py index c1079aa4..63d6bcd1 100644 --- a/tests/unit/properties/non_scalar/two_dimensional_plot/test_wavefunction_amplitude.py +++ b/tests/unit/properties/non_scalar/two_dimensional_plot/test_wavefunction_amplitude.py @@ -11,7 +11,7 @@ "name": "wavefunction_amplitude", "xDataArray": [0.0, 0.0050251256, 0.0100502513, 0.0150753769, 0.0201005025], "yDataSeries": [[0.0000322091, 0.0000072134, -0.0000218274, -0.0000540398, -0.0000883573]], - "xAxis": {"label": "z coordinate", "units": "angstrom"}, + "xAxis": {"label": "coordinate", "units": "angstrom"}, "yAxis": {"label": "amplitude", "units": "a.u."}, } From 8bc3975156f065b5f1cf69786694e73f59568cf9 Mon Sep 17 00:00:00 2001 From: VsevolodX Date: Thu, 22 Jan 2026 09:38:31 -0800 Subject: [PATCH 08/13] update: convert alat to ang --- express/parsers/apps/espresso/parser.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/express/parsers/apps/espresso/parser.py b/express/parsers/apps/espresso/parser.py index 86ff4980..1e57f120 100644 --- a/express/parsers/apps/espresso/parser.py +++ b/express/parsers/apps/espresso/parser.py @@ -281,7 +281,10 @@ def potential_profile(self): return self.txt_parser.potential_profile(self._get_file_content(self._get_esm_file())) def wavefunction_amplitude(self): - return self.txt_parser.wavefunction_amplitude(self._get_file_content(self._get_wavefunction_file())) + data = self.txt_parser.wavefunction_amplitude(self._get_file_content(self._get_wavefunction_file())) + alat = self.txt_parser._get_alat(self.stdout_file) + data[0] = [x * alat * Constant.BOHR for x in data[0]] + return data def charge_density_profile(self): return self.txt_parser.charge_density_profile(self._get_file_content(self._get_esm_file())) From 2b5a245107d319d6947e6d1d5c137d0cea56cb59 Mon Sep 17 00:00:00 2001 From: VsevolodX Date: Thu, 22 Jan 2026 12:53:15 -0800 Subject: [PATCH 09/13] update: test with conversion --- pyproject.toml | 2 +- .../test_wavefunction_amplitude.py | 23 ++++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 3c0053ad..a9408d66 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,7 +18,7 @@ dependencies = [ "munch==2.5.0", "pymatgen>=2023.8.10", "ase>=3.17.0", - "mat3ra-esse @ git+https://github.com/Exabyte-io/esse.git@6cff939259da4f358e7295c66b5a37a84d764e98", + "mat3ra-esse @ git+https://github.com/Exabyte-io/esse.git@770e41995134c73f9745adc2f1086d0024c1c9d8", "jarvis-tools>=2023.12.12", # To avoid module 'numpy.linalg._umath_linalg' has no attribute '_ilp64' in Colab "numpy>=1.24.4,<2", diff --git a/tests/unit/properties/non_scalar/two_dimensional_plot/test_wavefunction_amplitude.py b/tests/unit/properties/non_scalar/two_dimensional_plot/test_wavefunction_amplitude.py index 63d6bcd1..12581b94 100644 --- a/tests/unit/properties/non_scalar/two_dimensional_plot/test_wavefunction_amplitude.py +++ b/tests/unit/properties/non_scalar/two_dimensional_plot/test_wavefunction_amplitude.py @@ -1,18 +1,25 @@ from tests.unit import UnitTestBase +from express.parsers.settings import Constant from express.properties.non_scalar.two_dimensional_plot.wavefunction_amplitude import WavefunctionAmplitude - -WAVEFUNCTION_AMPLITUDE_RAW_DATA = [ +RAW_DATA_ALAT = [ [0.0, 0.0050251256, 0.0100502513, 0.0150753769, 0.0201005025], [0.0000322091, 0.0000072134, -0.0000218274, -0.0000540398, -0.0000883573] ] -WAVEFUNCTION_AMPLITUDE = { +ALAT_BOHR = 10.0 + +CONVERTED_DATA_ANGSTROMS = [ + [x * ALAT_BOHR * Constant.BOHR for x in RAW_DATA_ALAT[0]], + RAW_DATA_ALAT[1] +] + +EXPECTED = { "name": "wavefunction_amplitude", - "xDataArray": [0.0, 0.0050251256, 0.0100502513, 0.0150753769, 0.0201005025], - "yDataSeries": [[0.0000322091, 0.0000072134, -0.0000218274, -0.0000540398, -0.0000883573]], + "xDataArray": CONVERTED_DATA_ANGSTROMS[0], + "yDataSeries": [CONVERTED_DATA_ANGSTROMS[1]], "xAxis": {"label": "coordinate", "units": "angstrom"}, - "yAxis": {"label": "amplitude", "units": "a.u."}, + "yAxis": {"label": "amplitude"}, } @@ -24,7 +31,7 @@ def tearDown(self): super().tearDown() def test_wavefunction_amplitude(self): - parser = self.get_mocked_parser("wavefunction_amplitude", WAVEFUNCTION_AMPLITUDE_RAW_DATA) + parser = self.get_mocked_parser("wavefunction_amplitude", CONVERTED_DATA_ANGSTROMS) property_ = WavefunctionAmplitude("wavefunction_amplitude", parser) - self.assertDeepAlmostEqual(property_.serialize_and_validate(), WAVEFUNCTION_AMPLITUDE) + self.assertDeepAlmostEqual(property_.serialize_and_validate(), EXPECTED) From 7e845fce3d3dfb703220c56338b18925d9756418 Mon Sep 17 00:00:00 2001 From: VsevolodX Date: Thu, 22 Jan 2026 13:45:07 -0800 Subject: [PATCH 10/13] update: convert alat to ang --- express/parsers/apps/espresso/parser.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/express/parsers/apps/espresso/parser.py b/express/parsers/apps/espresso/parser.py index 1e57f120..4a503b3b 100644 --- a/express/parsers/apps/espresso/parser.py +++ b/express/parsers/apps/espresso/parser.py @@ -282,7 +282,8 @@ def potential_profile(self): def wavefunction_amplitude(self): data = self.txt_parser.wavefunction_amplitude(self._get_file_content(self._get_wavefunction_file())) - alat = self.txt_parser._get_alat(self.stdout_file) + lattice = self.xml_parser.final_lattice_vectors() + alat = lattice["vectors"]["alat"] data[0] = [x * alat * Constant.BOHR for x in data[0]] return data From 494f72dcb366de51894b33a70b417285a6abaad6 Mon Sep 17 00:00:00 2001 From: VsevolodX Date: Thu, 22 Jan 2026 14:06:26 -0800 Subject: [PATCH 11/13] update: fix error -- already angstroms --- express/parsers/apps/espresso/parser.py | 2 +- .../two_dimensional_plot/test_wavefunction_amplitude.py | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/express/parsers/apps/espresso/parser.py b/express/parsers/apps/espresso/parser.py index 4a503b3b..5b9d1b3b 100644 --- a/express/parsers/apps/espresso/parser.py +++ b/express/parsers/apps/espresso/parser.py @@ -284,7 +284,7 @@ def wavefunction_amplitude(self): data = self.txt_parser.wavefunction_amplitude(self._get_file_content(self._get_wavefunction_file())) lattice = self.xml_parser.final_lattice_vectors() alat = lattice["vectors"]["alat"] - data[0] = [x * alat * Constant.BOHR for x in data[0]] + data[0] = [x * alat for x in data[0]] return data def charge_density_profile(self): diff --git a/tests/unit/properties/non_scalar/two_dimensional_plot/test_wavefunction_amplitude.py b/tests/unit/properties/non_scalar/two_dimensional_plot/test_wavefunction_amplitude.py index 12581b94..a05b3293 100644 --- a/tests/unit/properties/non_scalar/two_dimensional_plot/test_wavefunction_amplitude.py +++ b/tests/unit/properties/non_scalar/two_dimensional_plot/test_wavefunction_amplitude.py @@ -1,5 +1,4 @@ from tests.unit import UnitTestBase -from express.parsers.settings import Constant from express.properties.non_scalar.two_dimensional_plot.wavefunction_amplitude import WavefunctionAmplitude RAW_DATA_ALAT = [ @@ -7,10 +6,10 @@ [0.0000322091, 0.0000072134, -0.0000218274, -0.0000540398, -0.0000883573] ] -ALAT_BOHR = 10.0 +ALAT_ANGSTROM = 10.0 CONVERTED_DATA_ANGSTROMS = [ - [x * ALAT_BOHR * Constant.BOHR for x in RAW_DATA_ALAT[0]], + [x * ALAT_ANGSTROM for x in RAW_DATA_ALAT[0]], RAW_DATA_ALAT[1] ] From 46b80583fb51a35a3c7a0378d63b8b2f5fb8befb Mon Sep 17 00:00:00 2001 From: VsevolodX Date: Thu, 22 Jan 2026 21:29:38 -0800 Subject: [PATCH 12/13] update: add comment --- express/parsers/apps/espresso/parser.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/express/parsers/apps/espresso/parser.py b/express/parsers/apps/espresso/parser.py index 5b9d1b3b..c8104b04 100644 --- a/express/parsers/apps/espresso/parser.py +++ b/express/parsers/apps/espresso/parser.py @@ -281,8 +281,9 @@ def potential_profile(self): return self.txt_parser.potential_profile(self._get_file_content(self._get_esm_file())) def wavefunction_amplitude(self): + # The data is [[coordinate], [value]]: for coordinates comes in alat units, we convert x data to angstroms data = self.txt_parser.wavefunction_amplitude(self._get_file_content(self._get_wavefunction_file())) - lattice = self.xml_parser.final_lattice_vectors() + lattice = self.final_lattice_vectors() alat = lattice["vectors"]["alat"] data[0] = [x * alat for x in data[0]] return data From 2f3188513716c575a0e91046aee4fc2d9f3cabeb Mon Sep 17 00:00:00 2001 From: VsevolodX Date: Thu, 22 Jan 2026 21:38:42 -0800 Subject: [PATCH 13/13] update: esse --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a9408d66..f1b8061b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,7 +18,7 @@ dependencies = [ "munch==2.5.0", "pymatgen>=2023.8.10", "ase>=3.17.0", - "mat3ra-esse @ git+https://github.com/Exabyte-io/esse.git@770e41995134c73f9745adc2f1086d0024c1c9d8", + "mat3ra-esse>=2026.1.23", "jarvis-tools>=2023.12.12", # To avoid module 'numpy.linalg._umath_linalg' has no attribute '_ilp64' in Colab "numpy>=1.24.4,<2",