From f2f68edbb1fad2304c1c6eb713ae155a64ffcbc7 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Wed, 27 Nov 2024 14:19:27 +0100 Subject: [PATCH 01/17] Previous fix was wrong. Re-fixed --- src/trexio_tools/converters/convert_to.py | 23 --------------------- src/trexio_tools/group_tools/check_basis.py | 11 +++++----- 2 files changed, 5 insertions(+), 29 deletions(-) diff --git a/src/trexio_tools/converters/convert_to.py b/src/trexio_tools/converters/convert_to.py index 51156a1..6c9b86c 100755 --- a/src/trexio_tools/converters/convert_to.py +++ b/src/trexio_tools/converters/convert_to.py @@ -515,53 +515,30 @@ def run_cart_phe(inp, filename, to_cartesian): # Update MOs if trexio.has_mo_coefficient(inp): X = trexio.read_mo_coefficient(inp) - for i in range(R.shape[1]): - if normalization[i] != 1.: - X[i,:] /= normalization[i] Y = X @ R.T trexio.write_mo_coefficient(out, Y) # Update 1e Integrals if trexio.has_ao_1e_int_overlap(inp): X = trexio.read_ao_1e_int_overlap(inp) - for i in range(R.shape[1]): - X[:,i] /= normalization[i] - for i in range(R.shape[1]): - X[i,:] /= normalization[i] Y = R_norm_inv @ X @ R_norm_inv.T trexio.write_ao_1e_int_overlap(out, Y) if trexio.has_ao_1e_int_kinetic(inp): X = trexio.read_ao_1e_int_kinetic(inp) - for i in range(R.shape[1]): - if normalization[i] != 1.: - X[:,i] /= normalization[i] - X[i,:] /= normalization[i] trexio.write_ao_1e_int_kinetic(out, R_norm_inv @ X @ R_norm_inv.T) if trexio.has_ao_1e_int_potential_n_e(inp): X = trexio.read_ao_1e_int_potential_n_e(inp) - for i in range(R.shape[1]): - if normalization[i] != 1.: - X[:,i] /= normalization[i] - X[i,:] /= normalization[i] trexio.write_ao_1e_int_potential_n_e(out, R_norm_inv @ X @ R_norm_inv.T) if trexio.has_ao_1e_int_ecp(inp): X = trexio.read_ao_1e_int_ecp(inp) - for i in range(R.shape[1]): - if normalization[i] != 1.: - X[:,i] /= normalization[i] - X[i,:] /= normalization[i] trexio.write_ao_1e_int_ecp(out, R_norm_inv @ X @ R_norm_inv.T) if trexio.has_ao_1e_int_core_hamiltonian(inp): X = trexio.read_ao_1e_int_core_hamiltonian(inp) - for i in range(R.shape[1]): - if normalization[i] != 1.: - X[:,i] /= normalization[i] - X[i,:] /= normalization[i] trexio.write_ao_1e_int_core_hamiltonian(out, R_norm_inv @ X @ R_norm_inv.T) # Remove 2e integrals: too expensive to transform diff --git a/src/trexio_tools/group_tools/check_basis.py b/src/trexio_tools/group_tools/check_basis.py index 69eed88..3322b6d 100755 --- a/src/trexio_tools/group_tools/check_basis.py +++ b/src/trexio_tools/group_tools/check_basis.py @@ -14,11 +14,6 @@ def run(trexio_file, n_points): the matrix stored in the file. """ - if not trexio.has_ao_1e_int_overlap(trexio_file): - raise Exception( - "One-electron overlap integrals are missing in the TREXIO file. Required for check-basis." - ) - trexio_filename = trexio_file.filename context = qmckl.context_create() qmckl.trexio_read(context, trexio_filename) @@ -56,7 +51,11 @@ def run(trexio_file, n_points): S = chi.T @ chi * dv print() - S_ex = trexio.read_ao_1e_int_overlap(trexio_file) + if trexio.has_ao_1e_int_overlap(trexio_file): + S_ex = trexio.read_ao_1e_int_overlap(trexio_file) + else: + S_ex = np.zeros((ao_num,ao_num)) + # This produces a lot of output for large molecules, maybe wrap up in ``if debug`` statement ? for i in range(ao_num): From e77a21b935c0cea55ef1c6b34eebbed782441f0b Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Wed, 27 Nov 2024 17:33:04 +0100 Subject: [PATCH 02/17] Add test --- .github/workflows/test.yml | 7 +++++++ data/methane_sphe.hdf5 | Bin 0 -> 165120 bytes 2 files changed, 7 insertions(+) create mode 100644 data/methane_sphe.hdf5 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 02a633a..1ab560a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -58,3 +58,10 @@ jobs: python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 1.0' # benchmark helper converters trexio convert-to -t molden -o trexio_molden.h5 trexio_gamess.h5 + echo "=== Check normalization in spherical file ===" + E=$(trexio check-mos methane_sphe.hdf5 | tail -1 |cut -d ':' -f 2 | xargs) + echo "if ($E > 0.01): exit(1)" | python3 # Exit code is 0 if = delta_ij, and 1 otherwise + echo "=== Check normalization after transformation into cartesian file ===" + trexio convert-to -t cartesian methane_sphe.hdf5 -o methane_cart.hdf5 + E=$(trexio check-mos methane_cart.hdf5 | tail -1 |cut -d ':' -f 2 | xargs) + echo "if ($E > 0.01): exit(1)" | python3 # Exit code is 0 if = delta_ij, and 1 otherwise diff --git a/data/methane_sphe.hdf5 b/data/methane_sphe.hdf5 new file mode 100644 index 0000000000000000000000000000000000000000..c0bbbf40bfb6d6bee3e8c02d87ff31986026a517 GIT binary patch literal 165120 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 II}g+U1E%msWB>pF literal 0 HcmV?d00001 From 573cabfe628c6b8053ee715ea3722d9e9429ae7f Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Wed, 27 Nov 2024 17:43:42 +0100 Subject: [PATCH 03/17] Stupid tabs! --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1ab560a..af8c399 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -58,10 +58,10 @@ jobs: python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 1.0' # benchmark helper converters trexio convert-to -t molden -o trexio_molden.h5 trexio_gamess.h5 - echo "=== Check normalization in spherical file ===" + echo "=== Check normalization in spherical file ===" E=$(trexio check-mos methane_sphe.hdf5 | tail -1 |cut -d ':' -f 2 | xargs) echo "if ($E > 0.01): exit(1)" | python3 # Exit code is 0 if = delta_ij, and 1 otherwise - echo "=== Check normalization after transformation into cartesian file ===" + echo "=== Check normalization after transformation into cartesian file ===" trexio convert-to -t cartesian methane_sphe.hdf5 -o methane_cart.hdf5 E=$(trexio check-mos methane_cart.hdf5 | tail -1 |cut -d ':' -f 2 | xargs) echo "if ($E > 0.01): exit(1)" | python3 # Exit code is 0 if = delta_ij, and 1 otherwise From 4fb35afd0d63da5181f9c30ae042a639b311370c Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Wed, 27 Nov 2024 17:48:14 +0100 Subject: [PATCH 04/17] Fixing CI test --- .github/workflows/test.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index af8c399..06f4524 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -59,9 +59,7 @@ jobs: # benchmark helper converters trexio convert-to -t molden -o trexio_molden.h5 trexio_gamess.h5 echo "=== Check normalization in spherical file ===" - E=$(trexio check-mos methane_sphe.hdf5 | tail -1 |cut -d ':' -f 2 | xargs) - echo "if ($E > 0.01): exit(1)" | python3 # Exit code is 0 if = delta_ij, and 1 otherwise + E=$(trexio check-mos methane_sphe.hdf5 | tail -1 |cut -d ':' -f 2 | xargs) ; echo "if ($E > 0.01): exit(1)" | python3 # Exit code is 0 if = delta_ij, and 1 otherwise echo "=== Check normalization after transformation into cartesian file ===" trexio convert-to -t cartesian methane_sphe.hdf5 -o methane_cart.hdf5 - E=$(trexio check-mos methane_cart.hdf5 | tail -1 |cut -d ':' -f 2 | xargs) - echo "if ($E > 0.01): exit(1)" | python3 # Exit code is 0 if = delta_ij, and 1 otherwise + E=$(trexio check-mos methane_cart.hdf5 | tail -1 |cut -d ':' -f 2 | xargs) ; echo "if ($E > 0.01): exit(1)" | python3 # Exit code is 0 if = delta_ij, and 1 otherwise From 4db4fc238e943bb368225e9462df1e580e358cdb Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Wed, 27 Nov 2024 18:10:27 +0100 Subject: [PATCH 05/17] Fixing CI --- .github/workflows/test.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 06f4524..8d2790f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -59,7 +59,9 @@ jobs: # benchmark helper converters trexio convert-to -t molden -o trexio_molden.h5 trexio_gamess.h5 echo "=== Check normalization in spherical file ===" - E=$(trexio check-mos methane_sphe.hdf5 | tail -1 |cut -d ':' -f 2 | xargs) ; echo "if ($E > 0.01): exit(1)" | python3 # Exit code is 0 if = delta_ij, and 1 otherwise + trexio check-mos methane_sphe.hdf5 | tail -1 |cut -d ':' -f 2 > error-res + python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.01' echo "=== Check normalization after transformation into cartesian file ===" trexio convert-to -t cartesian methane_sphe.hdf5 -o methane_cart.hdf5 - E=$(trexio check-mos methane_cart.hdf5 | tail -1 |cut -d ':' -f 2 | xargs) ; echo "if ($E > 0.01): exit(1)" | python3 # Exit code is 0 if = delta_ij, and 1 otherwise + trexio check-mos methane_cart.hdf5 | tail -1 |cut -d ':' -f 2 > error-res + python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.01' From e12699a1068115c9a0ce0f46415c4e6e8aeaf6d3 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Wed, 27 Nov 2024 18:16:22 +0100 Subject: [PATCH 06/17] Fixing CI --- .github/workflows/test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8d2790f..32f10c1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -59,9 +59,9 @@ jobs: # benchmark helper converters trexio convert-to -t molden -o trexio_molden.h5 trexio_gamess.h5 echo "=== Check normalization in spherical file ===" - trexio check-mos methane_sphe.hdf5 | tail -1 |cut -d ':' -f 2 > error-res + trexio check-mos data/methane_sphe.hdf5 | tail -1 | cut -d ':' -f 2 | tee error-res python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.01' echo "=== Check normalization after transformation into cartesian file ===" - trexio convert-to -t cartesian methane_sphe.hdf5 -o methane_cart.hdf5 - trexio check-mos methane_cart.hdf5 | tail -1 |cut -d ':' -f 2 > error-res + trexio convert-to -t data/cartesian methane_sphe.hdf5 -o methane_cart.hdf5 + trexio check-mos methane_cart.hdf5 | tail -1 | cut -d ':' -f 2 | tee error-res python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.01' From cb0fc8d122763ec09a763d7aa3c6108fbbdb19b5 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Wed, 27 Nov 2024 18:17:13 +0100 Subject: [PATCH 07/17] Fixing CI --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 32f10c1..0d3b327 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -62,6 +62,6 @@ jobs: trexio check-mos data/methane_sphe.hdf5 | tail -1 | cut -d ':' -f 2 | tee error-res python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.01' echo "=== Check normalization after transformation into cartesian file ===" - trexio convert-to -t data/cartesian methane_sphe.hdf5 -o methane_cart.hdf5 + trexio convert-to -t cartesian data/methane_sphe.hdf5 -o methane_cart.hdf5 trexio check-mos methane_cart.hdf5 | tail -1 | cut -d ':' -f 2 | tee error-res python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.01' From 03c0a246bca4a1431138253c420df9e12fb2f1cf Mon Sep 17 00:00:00 2001 From: Evgeny Posenitskiy <45995097+q-posev@users.noreply.github.com> Date: Wed, 27 Nov 2024 20:13:34 +0100 Subject: [PATCH 08/17] Try to fix tests --- .github/workflows/test.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0d3b327..4b0451f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -59,9 +59,11 @@ jobs: # benchmark helper converters trexio convert-to -t molden -o trexio_molden.h5 trexio_gamess.h5 echo "=== Check normalization in spherical file ===" - trexio check-mos data/methane_sphe.hdf5 | tail -1 | cut -d ':' -f 2 | tee error-res + trexio check-mos data/methane_sphe.hdf5 > error-res + grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.01' echo "=== Check normalization after transformation into cartesian file ===" trexio convert-to -t cartesian data/methane_sphe.hdf5 -o methane_cart.hdf5 - trexio check-mos methane_cart.hdf5 | tail -1 | cut -d ':' -f 2 | tee error-res + trexio check-mos methane_cart.hdf5 > error-res + grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.01' From 7239fa6568ad87e010420b26825037d741567d7c Mon Sep 17 00:00:00 2001 From: Evgeny Posenitskiy <45995097+q-posev@users.noreply.github.com> Date: Wed, 27 Nov 2024 20:25:00 +0100 Subject: [PATCH 09/17] Fix names --- .github/workflows/test.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4b0451f..376ee2c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -59,11 +59,13 @@ jobs: # benchmark helper converters trexio convert-to -t molden -o trexio_molden.h5 trexio_gamess.h5 echo "=== Check normalization in spherical file ===" - trexio check-mos data/methane_sphe.hdf5 > error-res + trexio check-mos -n 100 data/methane_sphe.hdf5 > mos-res + cat mos-res grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.01' echo "=== Check normalization after transformation into cartesian file ===" trexio convert-to -t cartesian data/methane_sphe.hdf5 -o methane_cart.hdf5 - trexio check-mos methane_cart.hdf5 > error-res + trexio check-mos -n 100 methane_cart.hdf5 > mos-res + cat mos-res grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.01' From fe745777c40a55aa19770a47a154b1ca01ee2a2b Mon Sep 17 00:00:00 2001 From: Evgeny Posenitskiy <45995097+q-posev@users.noreply.github.com> Date: Wed, 27 Nov 2024 20:33:11 +0100 Subject: [PATCH 10/17] More rigorous check-mos settings --- .github/workflows/test.yml | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 376ee2c..9f46319 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -45,27 +45,25 @@ jobs: trexio convert-to -t cartesian -o trexio_pyscf_h2o.h5 trexio_pyscf_h2o_sph.h5 echo "== Done conversion ==" echo "=== Check TREXIO file converted from GAMESS ===" - trexio check-mos -n 50 trexio_gamess.h5 > mos-res + trexio check-mos -n 100 trexio_gamess.h5 > mos-res grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res - python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 1.0' + python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.01' echo "=== Check TREXIO file converted from PySCF ===" - trexio check-mos -n 50 trexio_pyscf_h2o.h5 > mos-res + trexio check-mos -n 100 trexio_pyscf_h2o.h5 > mos-res grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res - python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 1.0' + python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.01' echo "=== Check TREXIO file converted from ORCA ===" - trexio check-mos -n 50 trexio_orca_h2o.h5 > mos-res + trexio check-mos -n 100 trexio_orca_h2o.h5 > mos-res grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res - python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 1.0' + python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.01' # benchmark helper converters trexio convert-to -t molden -o trexio_molden.h5 trexio_gamess.h5 echo "=== Check normalization in spherical file ===" trexio check-mos -n 100 data/methane_sphe.hdf5 > mos-res - cat mos-res grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.01' echo "=== Check normalization after transformation into cartesian file ===" trexio convert-to -t cartesian data/methane_sphe.hdf5 -o methane_cart.hdf5 trexio check-mos -n 100 methane_cart.hdf5 > mos-res - cat mos-res grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.01' From 814d65cceead77c9428689c3a92bbb37d824bc02 Mon Sep 17 00:00:00 2001 From: Evgeny Posenitskiy <45995097+q-posev@users.noreply.github.com> Date: Wed, 27 Nov 2024 20:43:32 +0100 Subject: [PATCH 11/17] Lower error threshold --- .github/workflows/test.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9f46319..11a41b5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -47,15 +47,18 @@ jobs: echo "=== Check TREXIO file converted from GAMESS ===" trexio check-mos -n 100 trexio_gamess.h5 > mos-res grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res - python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.01' + cat error-res + python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.1' echo "=== Check TREXIO file converted from PySCF ===" trexio check-mos -n 100 trexio_pyscf_h2o.h5 > mos-res grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res - python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.01' + cat error-res + python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.1' echo "=== Check TREXIO file converted from ORCA ===" trexio check-mos -n 100 trexio_orca_h2o.h5 > mos-res grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res - python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.01' + cat error-res + python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.1' # benchmark helper converters trexio convert-to -t molden -o trexio_molden.h5 trexio_gamess.h5 echo "=== Check normalization in spherical file ===" From 91cbad711a4d4189218e0becaa72ed719761f568 Mon Sep 17 00:00:00 2001 From: Evgeny Posenitskiy <45995097+q-posev@users.noreply.github.com> Date: Wed, 27 Nov 2024 20:51:14 +0100 Subject: [PATCH 12/17] Update test.yml --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 11a41b5..7b4fbb1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -45,7 +45,7 @@ jobs: trexio convert-to -t cartesian -o trexio_pyscf_h2o.h5 trexio_pyscf_h2o_sph.h5 echo "== Done conversion ==" echo "=== Check TREXIO file converted from GAMESS ===" - trexio check-mos -n 100 trexio_gamess.h5 > mos-res + trexio check-mos -n 125 trexio_gamess.h5 > mos-res grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res cat error-res python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.1' From abc1e6f6c3ead1044d0ee60e78f3941a6a9d5570 Mon Sep 17 00:00:00 2001 From: Evgeny Posenitskiy <45995097+q-posev@users.noreply.github.com> Date: Wed, 27 Nov 2024 21:03:51 +0100 Subject: [PATCH 13/17] Lower threshold for gamess --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7b4fbb1..44f84e9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -45,10 +45,10 @@ jobs: trexio convert-to -t cartesian -o trexio_pyscf_h2o.h5 trexio_pyscf_h2o_sph.h5 echo "== Done conversion ==" echo "=== Check TREXIO file converted from GAMESS ===" - trexio check-mos -n 125 trexio_gamess.h5 > mos-res + trexio check-mos -n 100 trexio_gamess.h5 > mos-res grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res cat error-res - python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.1' + python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.11' echo "=== Check TREXIO file converted from PySCF ===" trexio check-mos -n 100 trexio_pyscf_h2o.h5 > mos-res grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res From eec1e885ab8aae9cf48ca9ec2422074b9bc0b3d3 Mon Sep 17 00:00:00 2001 From: Evgeny Posenitskiy <45995097+q-posev@users.noreply.github.com> Date: Wed, 27 Nov 2024 21:32:29 +0100 Subject: [PATCH 14/17] Custom error thresholds for each file to prevent regression --- .github/workflows/test.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 44f84e9..9267629 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -36,10 +36,10 @@ jobs: # benchmark the converters from external codes echo "== Starting conversion ==" trexio convert-from -t gaussian -i data/chbrclf.log -b hdf5 trexio_gaussi.h5 - trexio convert-from -t gamess -i data/GAMESS_CAS.log -b hdf5 trexio_gamess.h5 + trexio convert-from -t gamess -i data/GAMESS_CAS.log -b hdf5 trexio_gamess.h5 > gamess-converter.log trexio convert-from -t pyscf -i data/water.chk -b hdf5 trexio_pyscf_h2o_sph.h5 trexio convert-from -t pyscf -i data/diamond_single_k.chk -b hdf5 trexio_pyscf_1k.h5 - trexio convert-from -t pyscf -i data/diamond_k_grid.chk -b hdf5 trexio_pyscf_Nk.h5 + trexio convert-from -t pyscf -i data/diamond_k_grid.chk -b hdf5 trexio_pyscf_Nk.h5 > pyscf-periodic-converter.log trexio convert-from -t orca -i data/h2o.json -b hdf5 trexio_orca_h2o_sph.h5 trexio convert-to -t cartesian -o trexio_orca_h2o.h5 trexio_orca_h2o_sph.h5 trexio convert-to -t cartesian -o trexio_pyscf_h2o.h5 trexio_pyscf_h2o_sph.h5 @@ -53,20 +53,22 @@ jobs: trexio check-mos -n 100 trexio_pyscf_h2o.h5 > mos-res grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res cat error-res - python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.1' + python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.00018' echo "=== Check TREXIO file converted from ORCA ===" trexio check-mos -n 100 trexio_orca_h2o.h5 > mos-res grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res cat error-res - python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.1' + python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.08' # benchmark helper converters trexio convert-to -t molden -o trexio_molden.h5 trexio_gamess.h5 echo "=== Check normalization in spherical file ===" trexio check-mos -n 100 data/methane_sphe.hdf5 > mos-res grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res + cat error-res python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.01' echo "=== Check normalization after transformation into cartesian file ===" trexio convert-to -t cartesian data/methane_sphe.hdf5 -o methane_cart.hdf5 trexio check-mos -n 100 methane_cart.hdf5 > mos-res grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res + cat error-res python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.01' From a9fd0fb51c0b62af3cefe36592ec5bbbf184309d Mon Sep 17 00:00:00 2001 From: Evgeny Posenitskiy <45995097+q-posev@users.noreply.github.com> Date: Wed, 27 Nov 2024 21:39:19 +0100 Subject: [PATCH 15/17] Fix git conflict --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9267629..6940918 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -36,10 +36,10 @@ jobs: # benchmark the converters from external codes echo "== Starting conversion ==" trexio convert-from -t gaussian -i data/chbrclf.log -b hdf5 trexio_gaussi.h5 - trexio convert-from -t gamess -i data/GAMESS_CAS.log -b hdf5 trexio_gamess.h5 > gamess-converter.log + trexio convert-from -t gamess -i data/GAMESS_CAS.log -b hdf5 trexio_gamess.h5 trexio convert-from -t pyscf -i data/water.chk -b hdf5 trexio_pyscf_h2o_sph.h5 trexio convert-from -t pyscf -i data/diamond_single_k.chk -b hdf5 trexio_pyscf_1k.h5 - trexio convert-from -t pyscf -i data/diamond_k_grid.chk -b hdf5 trexio_pyscf_Nk.h5 > pyscf-periodic-converter.log + trexio convert-from -t pyscf -i data/diamond_k_grid.chk -b hdf5 trexio_pyscf_Nk.h5 trexio convert-from -t orca -i data/h2o.json -b hdf5 trexio_orca_h2o_sph.h5 trexio convert-to -t cartesian -o trexio_orca_h2o.h5 trexio_orca_h2o_sph.h5 trexio convert-to -t cartesian -o trexio_pyscf_h2o.h5 trexio_pyscf_h2o_sph.h5 From 8537980f48b535c1f84dedfe1c9e0fae46c25f29 Mon Sep 17 00:00:00 2001 From: Evgeny Posenitskiy <45995097+q-posev@users.noreply.github.com> Date: Wed, 27 Nov 2024 21:56:45 +0100 Subject: [PATCH 16/17] Pin the last error thresholds --- .github/workflows/test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6940918..7429a23 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -45,7 +45,7 @@ jobs: trexio convert-to -t cartesian -o trexio_pyscf_h2o.h5 trexio_pyscf_h2o_sph.h5 echo "== Done conversion ==" echo "=== Check TREXIO file converted from GAMESS ===" - trexio check-mos -n 100 trexio_gamess.h5 > mos-res + trexio check-mos -n 50 trexio_gamess.h5 > mos-res grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res cat error-res python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.11' @@ -65,10 +65,10 @@ jobs: trexio check-mos -n 100 data/methane_sphe.hdf5 > mos-res grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res cat error-res - python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.01' + python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.0017' echo "=== Check normalization after transformation into cartesian file ===" trexio convert-to -t cartesian data/methane_sphe.hdf5 -o methane_cart.hdf5 trexio check-mos -n 100 methane_cart.hdf5 > mos-res grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res cat error-res - python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.01' + python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.0017' From 4d541c787da71637ab78d918cbfb2452fc9e3224 Mon Sep 17 00:00:00 2001 From: Evgeny Posenitskiy <45995097+q-posev@users.noreply.github.com> Date: Thu, 28 Nov 2024 07:18:54 +0100 Subject: [PATCH 17/17] Fix the last test --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7429a23..1fb16b9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -48,7 +48,7 @@ jobs: trexio check-mos -n 50 trexio_gamess.h5 > mos-res grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res cat error-res - python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.11' + python -c 'with open("error-res") as f: error = f.readline().strip(); assert float(error) < 0.12' echo "=== Check TREXIO file converted from PySCF ===" trexio check-mos -n 100 trexio_pyscf_h2o.h5 > mos-res grep "Norm of the error" < mos-res | grep -Eo "([0-9]+\.[0-9]*|\.?[0-9]+)([eE][+-][0-9]+)?" > error-res