Skip to content

{chem}[foss/2026.1] AmberTools v26.1 - #26555

Draft
pavelToman wants to merge 5 commits into
easybuilders:developfrom
pavelToman:20260728121950_new_pr_AmberTools261
Draft

{chem}[foss/2026.1] AmberTools v26.1#26555
pavelToman wants to merge 5 commits into
easybuilders:developfrom
pavelToman:20260728121950_new_pr_AmberTools261

Conversation

@pavelToman

Copy link
Copy Markdown
Collaborator

(created using eb --new-pr)

…ore-15.2.0.eb and patches: AmberTools-26_ignore-portability-test-differences.patch, AmberTools-26_fix-cpptraj-gzip-test.patch, AmberTools-26_fix-pytraj-install-PYTHONPATH.patch, AmberTools-26_do-not-clean-QUICK-compiler-flags.patch, AmberTools-26_skip-nonportable-tests.patch, AmberTools-26_limit-pymemembed-test-threads.patch, AmberTools-26_recythonize-pytraj.patch
@github-actions github-actions Bot added the 2026.1 issues & PRs related to 2026.1 common toolchains label Jul 28, 2026
@github-actions

github-actions Bot commented Jul 28, 2026

Copy link
Copy Markdown

Updated software AmberTools-26.1-foss-2026.1.eb

Diff against AmberTools-24.10-foss-2024a.eb

easybuild/easyconfigs/a/AmberTools/AmberTools-24.10-foss-2024a.eb

diff --git a/easybuild/easyconfigs/a/AmberTools/AmberTools-24.10-foss-2024a.eb b/easybuild/easyconfigs/a/AmberTools/AmberTools-26.1-foss-2026.1.eb
index c8883d2bad..d3a89431eb 100644
--- a/easybuild/easyconfigs/a/AmberTools/AmberTools-24.10-foss-2024a.eb
+++ b/easybuild/easyconfigs/a/AmberTools/AmberTools-26.1-foss-2026.1.eb
@@ -1,9 +1,9 @@
 easyblock = 'EB_Amber'
 
 name = 'AmberTools'
-local_ambertools_ver = 24
+local_ambertools_ver = 26
 # Patch levels from http://ambermd.org/AmberPatches.php and http://ambermd.org/ATPatches.php
-patchlevels = (10, 0)  # (AmberTools, Amber)
+patchlevels = (1, 0)  # (AmberTools, Amber)
 version = '%s.%s' % (local_ambertools_ver, patchlevels[0])
 
 homepage = 'https://ambermd.org/'
@@ -11,8 +11,17 @@ description = """AmberTools consists of several independently developed packages
  and with Amber itself. The suite can also be used to carry out complete molecular dynamics simulations,
  with either explicit water or generalized Born solvent models."""
 
-toolchain = {'name': 'foss', 'version': '2024a'}
-toolchainopts = {'usempi': True}
+toolchain = {'name': 'foss', 'version': '2026.1'}
+# AmberTools regression references are sensitive to compiler-generated
+# floating-point differences, so disable CPU-specific tuning and auto-vectorization and use strict FP
+# semantics for reproducible results across supported architectures
+toolchainopts = {
+    'pic': True,
+    'usempi': True,
+    'strict': True,
+    'vectorize': False,
+    'optarch': False,
+}
 
 # download requires registration
 local_download_credentials = '?Name=Easybuild&Institution=Easybuild&City=Internet&State=Other&Country=Belgium'
@@ -30,11 +39,19 @@ patches = [
     'AmberTools-21_fix_potential_use_before_init.patch',
     'AmberTools-21_fix_rism_argument_mismatch.patch',
     'AmberTools-21_fix_xray_fftpack_arg_mismatch.patch',
-    'AmberTools-24_fix_test_missing_dirs.patch',
-    'AmberTools-24_skip-tests.patch',
+    'AmberTools-25_fix_test_missing_dirs.patch',
+    'AmberTools-25_fix-boost.patch',
+    'AmberTools-25_fix-sander-numpy.patch',
+    'AmberTools-26_recythonize-pytraj.patch',
+    'AmberTools-26_skip-nonportable-tests.patch',
+    'AmberTools-26_do-not-clean-QUICK-compiler-flags.patch',
+    'AmberTools-26_fix-pytraj-install-PYTHONPATH.patch',
+    'AmberTools-26_fix-cpptraj-gzip-test.patch',
+    'AmberTools-26_ignore-portability-test-differences.patch',
+    'AmberTools-26_limit-pymemembed-test-threads.patch',
 ]
 checksums = [
-    {'AmberTools24.tar.bz2': '52fb4fb3370a89b7ce738a2dc3e513c2fc1943fde4b4381846d9e75cc48d840f'},
+    {'AmberTools26.tar.bz2': '5d46eef3c2bb7d5bf9e8c0c38add34406ea67e3f0e4097ac9d11d8a544538c9c'},
     {'AmberTools-20_cmake-locate-netcdf.patch': '473e07c53b6f641d96d333974a6af2e03413fecef79f879d3fdecf7fecaab4d0'},
     {'AmberTools-20_fix_missing_MPI_LIBRARY_error.patch':
      '0b89a0624167bc23876bcdefcb1055f591e38e3bd559a71d5749e342bd311acc'},
@@ -49,48 +66,108 @@ checksums = [
      '14255e5739cec39303df570f06820c7532f7395e1b73b1e4104377984e2c9fc1'},
     {'AmberTools-21_fix_xray_fftpack_arg_mismatch.patch':
      '99c954e693659efc2a1d121f91510f56408006f0751d91595f45a34b03364e2f'},
-    {'AmberTools-24_fix_test_missing_dirs.patch': '1c4c44cb012b625933781e9811f1657d5ddfd14cfbf4894bb1f767995eadc3b6'},
-    {'AmberTools-24_skip-tests.patch': '290bfd539991a1f7ddb60ff8e50e56bbc99b881047727653f82b9d6377f4baa2'},
+    {'AmberTools-25_fix_test_missing_dirs.patch': '1c4c44cb012b625933781e9811f1657d5ddfd14cfbf4894bb1f767995eadc3b6'},
+    {'AmberTools-25_fix-boost.patch': 'f4ccf7dedb5aa5b289ad5f69f3c1dc808c3fcc226d7118eaba40b108688e37cc'},
+    {'AmberTools-25_fix-sander-numpy.patch': '82b875153927b8a0977022d608bbf51513ea936384f3059ecd41a37dfb004d5e'},
+    {'AmberTools-26_recythonize-pytraj.patch': '45cc8acbe61a2cc06d759972174ebca046bb174f422e76eb05a93788af41e8a2'},
+    {'AmberTools-26_skip-nonportable-tests.patch': '4d8d78d715ad89c5fc5c92300b1d5399720cf1093d4c481ed2e086645127af83'},
+    {'AmberTools-26_do-not-clean-QUICK-compiler-flags.patch':
+     '42ff0f9ab60e87cdffaddc89038a12ee8e568eb8a0e33ca043c009e5f9bb3588'},
+    {'AmberTools-26_fix-pytraj-install-PYTHONPATH.patch':
+     'f1f1d1682a97505c2ed8560d9f868d67bb44b420135d98832c63142e13ce12df'},
+    {'AmberTools-26_fix-cpptraj-gzip-test.patch': 'd80bff19ad32d7a1c9011299751c33285afc704632e0915f84d7fc86887bfa3d'},
+    {'AmberTools-26_ignore-portability-test-differences.patch':
+     '09dcb3c4b0c2219b7c1038272718cb2c07e832670b8dec2ead6eca15d33a7fa0'},
+    {'AmberTools-26_limit-pymemembed-test-threads.patch':
+     '4a89a7c6d7a36278650282f8e5d7aa6974cf9790b2b944cdfe065fcbfc68bf9c'},
 ]
 
 builddependencies = [
-    ('CMake', '3.29.3'),
-    ('pkgconf', '2.2.0'),
+    ('CMake', '3.31.11'),
+    ('pkgconf', '2.5.1'),
     ('Bison', '3.8.2'),
     ('flex', '2.6.4'),
     ('make', '4.4.1'),
-    ('Cython', '3.0.10'),
+    ('Cython', '3.2.4'),
 ]
-
 dependencies = [
-    ('zlib', '1.3.1'),
+    ('zlib', '2.3.2'),
     ('bzip2', '1.0.8'),
-    ('Python', '3.12.3'),
-    ('SciPy-bundle', '2024.05'),
-    ('Perl', '5.38.2'),
-    ('Perl-bundle-CPAN', '5.38.2'),
-    ('Boost', '1.85.0'),
-    ('libreadline', '8.2'),
-    ('matplotlib', '3.9.2'),
-    ('netCDF', '4.9.2'),
-    ('netCDF-Fortran', '4.6.1'),
-    ('PnetCDF', '1.14.0'),
+    ('Python', '3.14.2'),
+    ('Python-bundle-PyPI', '2026.04'),
+    ('SciPy-bundle', '2026.05'),
+    ('Perl', '5.42.0'),
+    ('Perl-bundle-CPAN', '%(perlver)s'),
+    ('Boost', '1.90.0'),
+    ('matplotlib', '3.10.9'),
+    ('netCDF', '4.10.0'),
+    ('netCDF-Fortran', '4.6.3'),
+    ('PnetCDF', '1.14.1'),
     ('Tkinter', '%(pyver)s'),
-    ('X11', '20240607'),
-    ('mpi4py', '4.0.1'),
+    ('X11', '20260518'),
+    ('mpi4py', '4.1.2'),
     ('FFTW', '3.3.10'),
-    ('netcdf4-python', '1.7.1.post2'),
-    ('PyYAML', '6.0.2'),
-    ('RDKit', '2025.03.3'),
-    ('PLUMED', '2.9.3'),
+    ('netcdf4-python', '1.7.4'),
+    ('PyYAML', '6.0.3'),
+    ('RDKit', '2026.03.4'),
+    ('PLUMED', '2.10.0'),
+    ('Biopython', '1.87'),
+    ('scikit-learn', '1.8.0'),
+    ('pydantic', '2.13.4'),
+    ('numba', '0.65.1'),
+    ('gemmi', '0.7.5'),
+    ('freesasa', '2.2.1'),
+    ('sympy', '1.14.0'),
+    ('networkx', '3.6.1'),
+    ('NLopt', '2.10.1'),
+    ('arpack-ng', '3.9.1'),
 ]
 
-_fe_toolkit_pkgs = ['edgembar', 'ndfes']
+# Avoid requiring the separate Boost.System library in the AmberTools and QUICK CMake configurations
+preconfigopts = "sed -i 's/Boost COMPONENTS thread system/Boost COMPONENTS thread/' "
+preconfigopts += "../cmake/3rdPartyTools.cmake "
+preconfigopts += "../AmberTools/src/quick/cmake/3rdPartyTools.cmake && "
+
+# Replace Amber's hard-coded -O3 with -O2 to match EasyBuild and improve numerical reproducibility
+preconfigopts += "sed -i 's/-O3/-O2/g' "
+preconfigopts += "../cmake/CompilerFlags.cmake && "
+
+# Remove the obsolete NumPy <2 upper bound from the FE-toolkit packages
+_fe_toolkit_path = "%(builddir)s/%(name)s/src/fe-toolkit/"
+_setup_path = "/src/python/setup.py"
+_fe_toolkit_pkgs = ['edgembar', 'fetkutils', 'ndfes']
+prebuildopts = """sed -i "/'numpy<2',/d" """
+for _pkg in _fe_toolkit_pkgs:
+    prebuildopts += f"{_fe_toolkit_path}{_pkg}{_setup_path} "
+prebuildopts += '&& '
+
+# Fix py3.14 compatibility -  ValueError: argument groups cannot be nested
+prebuildopts += (
+    'sed -i '
+    r"'s/group.add_argument_group(/parser.add_argument_group(/g' "
+    '../AmberTools/src/mmpbsa_py/MMPBSA_mods/commandlineparser.py && '
+)
 
 sanity_check_commands = [
-    f"python -c 'import {', '.join(_fe_toolkit_pkgs)}'",
-    "pip check",
-    "python -c 'import parmed'",
+    "sander --version",
+    "sander.MPI --version",
+    "cpptraj -h >/dev/null",
+    "tleap -h >/dev/null",
+    "antechamber -h >/dev/null",
+    "MMPBSA.py -h >/dev/null",
+    "packmol-memgen -h >/dev/null",
+    "parmed -h >/dev/null",
+    "pdb4amber -h >/dev/null",
+    "command -v quick >/dev/null",
+    "command -v quick.MPI >/dev/null",
+    "python -s -c 'import parmed'",
+    "python -s -c 'import pdb4amber'",
+    "python -s -c 'import pymsmt'",
+    "python -s -c 'import pytraj'",
+    "python -s -c 'import sander'",
+    "python -s -c 'import edgembar'",
+    "python -s -c 'import fetkutils'",
+    "python -s -c 'import ndfes'",
 ]
 
 runtest = True
Diff against AmberTools-25.2-foss-2025a.eb

easybuild/easyconfigs/a/AmberTools/AmberTools-25.2-foss-2025a.eb

diff --git a/easybuild/easyconfigs/a/AmberTools/AmberTools-25.2-foss-2025a.eb b/easybuild/easyconfigs/a/AmberTools/AmberTools-26.1-foss-2026.1.eb
index 9e8a8ba102..d3a89431eb 100644
--- a/easybuild/easyconfigs/a/AmberTools/AmberTools-25.2-foss-2025a.eb
+++ b/easybuild/easyconfigs/a/AmberTools/AmberTools-26.1-foss-2026.1.eb
@@ -1,9 +1,9 @@
 easyblock = 'EB_Amber'
 
 name = 'AmberTools'
-local_ambertools_ver = 25
+local_ambertools_ver = 26
 # Patch levels from http://ambermd.org/AmberPatches.php and http://ambermd.org/ATPatches.php
-patchlevels = (2, 0)  # (AmberTools, Amber)
+patchlevels = (1, 0)  # (AmberTools, Amber)
 version = '%s.%s' % (local_ambertools_ver, patchlevels[0])
 
 homepage = 'https://ambermd.org/'
@@ -11,8 +11,17 @@ description = """AmberTools consists of several independently developed packages
  and with Amber itself. The suite can also be used to carry out complete molecular dynamics simulations,
  with either explicit water or generalized Born solvent models."""
 
-toolchain = {'name': 'foss', 'version': '2025a'}
-toolchainopts = {'usempi': True}
+toolchain = {'name': 'foss', 'version': '2026.1'}
+# AmberTools regression references are sensitive to compiler-generated
+# floating-point differences, so disable CPU-specific tuning and auto-vectorization and use strict FP
+# semantics for reproducible results across supported architectures
+toolchainopts = {
+    'pic': True,
+    'usempi': True,
+    'strict': True,
+    'vectorize': False,
+    'optarch': False,
+}
 
 # download requires registration
 local_download_credentials = '?Name=Easybuild&Institution=Easybuild&City=Internet&State=Other&Country=Belgium'
@@ -31,13 +40,18 @@ patches = [
     'AmberTools-21_fix_rism_argument_mismatch.patch',
     'AmberTools-21_fix_xray_fftpack_arg_mismatch.patch',
     'AmberTools-25_fix_test_missing_dirs.patch',
-    'AmberTools-25_parmed-update.patch',
     'AmberTools-25_fix-boost.patch',
-    'AmberTools-25_skip-tests.patch',
     'AmberTools-25_fix-sander-numpy.patch',
+    'AmberTools-26_recythonize-pytraj.patch',
+    'AmberTools-26_skip-nonportable-tests.patch',
+    'AmberTools-26_do-not-clean-QUICK-compiler-flags.patch',
+    'AmberTools-26_fix-pytraj-install-PYTHONPATH.patch',
+    'AmberTools-26_fix-cpptraj-gzip-test.patch',
+    'AmberTools-26_ignore-portability-test-differences.patch',
+    'AmberTools-26_limit-pymemembed-test-threads.patch',
 ]
 checksums = [
-    {'AmberTools25.tar.bz2': 'ac009b2adeb25ccd2191db28905b867df49240e038dc590f423edf0d84f8a13b'},
+    {'AmberTools26.tar.bz2': '5d46eef3c2bb7d5bf9e8c0c38add34406ea67e3f0e4097ac9d11d8a544538c9c'},
     {'AmberTools-20_cmake-locate-netcdf.patch': '473e07c53b6f641d96d333974a6af2e03413fecef79f879d3fdecf7fecaab4d0'},
     {'AmberTools-20_fix_missing_MPI_LIBRARY_error.patch':
      '0b89a0624167bc23876bcdefcb1055f591e38e3bd559a71d5749e342bd311acc'},
@@ -53,60 +67,107 @@ checksums = [
     {'AmberTools-21_fix_xray_fftpack_arg_mismatch.patch':
      '99c954e693659efc2a1d121f91510f56408006f0751d91595f45a34b03364e2f'},
     {'AmberTools-25_fix_test_missing_dirs.patch': '1c4c44cb012b625933781e9811f1657d5ddfd14cfbf4894bb1f767995eadc3b6'},
-    {'AmberTools-25_parmed-update.patch': '2216c7883be026ce48aac7589f75749f2a42ec74f6e3ceba378d762403c50924'},
     {'AmberTools-25_fix-boost.patch': 'f4ccf7dedb5aa5b289ad5f69f3c1dc808c3fcc226d7118eaba40b108688e37cc'},
-    {'AmberTools-25_skip-tests.patch': '3de155ba9eedcbe84eb44962e9a5e66fda9d9dfff9ad50a356750baa286f8e21'},
     {'AmberTools-25_fix-sander-numpy.patch': '82b875153927b8a0977022d608bbf51513ea936384f3059ecd41a37dfb004d5e'},
+    {'AmberTools-26_recythonize-pytraj.patch': '45cc8acbe61a2cc06d759972174ebca046bb174f422e76eb05a93788af41e8a2'},
+    {'AmberTools-26_skip-nonportable-tests.patch': '4d8d78d715ad89c5fc5c92300b1d5399720cf1093d4c481ed2e086645127af83'},
+    {'AmberTools-26_do-not-clean-QUICK-compiler-flags.patch':
+     '42ff0f9ab60e87cdffaddc89038a12ee8e568eb8a0e33ca043c009e5f9bb3588'},
+    {'AmberTools-26_fix-pytraj-install-PYTHONPATH.patch':
+     'f1f1d1682a97505c2ed8560d9f868d67bb44b420135d98832c63142e13ce12df'},
+    {'AmberTools-26_fix-cpptraj-gzip-test.patch': 'd80bff19ad32d7a1c9011299751c33285afc704632e0915f84d7fc86887bfa3d'},
+    {'AmberTools-26_ignore-portability-test-differences.patch':
+     '09dcb3c4b0c2219b7c1038272718cb2c07e832670b8dec2ead6eca15d33a7fa0'},
+    {'AmberTools-26_limit-pymemembed-test-threads.patch':
+     '4a89a7c6d7a36278650282f8e5d7aa6974cf9790b2b944cdfe065fcbfc68bf9c'},
 ]
 
 builddependencies = [
-    ('CMake', '3.31.3'),
-    ('pkgconf', '2.3.0'),
+    ('CMake', '3.31.11'),
+    ('pkgconf', '2.5.1'),
     ('Bison', '3.8.2'),
     ('flex', '2.6.4'),
     ('make', '4.4.1'),
-    ('Cython', '3.1.1'),
+    ('Cython', '3.2.4'),
 ]
-
 dependencies = [
-    ('zlib', '1.3.1'),
+    ('zlib', '2.3.2'),
     ('bzip2', '1.0.8'),
-    ('Python', '3.13.1'),
-    ('SciPy-bundle', '2025.06'),
-    ('Perl', '5.40.0'),
-    ('Perl-bundle-CPAN', '5.40.0'),
-    ('Boost', '1.88.0'),
-    ('libreadline', '8.2'),
-    ('matplotlib', '3.10.3'),
-    ('netCDF', '4.9.3'),
-    ('netCDF-Fortran', '4.6.2'),
-    ('PnetCDF', '1.14.0'),
+    ('Python', '3.14.2'),
+    ('Python-bundle-PyPI', '2026.04'),
+    ('SciPy-bundle', '2026.05'),
+    ('Perl', '5.42.0'),
+    ('Perl-bundle-CPAN', '%(perlver)s'),
+    ('Boost', '1.90.0'),
+    ('matplotlib', '3.10.9'),
+    ('netCDF', '4.10.0'),
+    ('netCDF-Fortran', '4.6.3'),
+    ('PnetCDF', '1.14.1'),
     ('Tkinter', '%(pyver)s'),
-    ('X11', '20250521'),
-    ('mpi4py', '4.1.0'),
+    ('X11', '20260518'),
+    ('mpi4py', '4.1.2'),
     ('FFTW', '3.3.10'),
-    ('netcdf4-python', '1.7.2'),
-    ('PyYAML', '6.0.2'),
-    ('RDKit', '2025.03.4'),
-    ('PLUMED', '2.9.4'),
+    ('netcdf4-python', '1.7.4'),
+    ('PyYAML', '6.0.3'),
+    ('RDKit', '2026.03.4'),
+    ('PLUMED', '2.10.0'),
+    ('Biopython', '1.87'),
+    ('scikit-learn', '1.8.0'),
+    ('pydantic', '2.13.4'),
+    ('numba', '0.65.1'),
+    ('gemmi', '0.7.5'),
+    ('freesasa', '2.2.1'),
+    ('sympy', '1.14.0'),
+    ('networkx', '3.6.1'),
+    ('NLopt', '2.10.1'),
+    ('arpack-ng', '3.9.1'),
 ]
 
+# Avoid requiring the separate Boost.System library in the AmberTools and QUICK CMake configurations
+preconfigopts = "sed -i 's/Boost COMPONENTS thread system/Boost COMPONENTS thread/' "
+preconfigopts += "../cmake/3rdPartyTools.cmake "
+preconfigopts += "../AmberTools/src/quick/cmake/3rdPartyTools.cmake && "
+
+# Replace Amber's hard-coded -O3 with -O2 to match EasyBuild and improve numerical reproducibility
+preconfigopts += "sed -i 's/-O3/-O2/g' "
+preconfigopts += "../cmake/CompilerFlags.cmake && "
+
+# Remove the obsolete NumPy <2 upper bound from the FE-toolkit packages
 _fe_toolkit_path = "%(builddir)s/%(name)s/src/fe-toolkit/"
 _setup_path = "/src/python/setup.py"
 _fe_toolkit_pkgs = ['edgembar', 'fetkutils', 'ndfes']
-# recythonize pytraj files - python3.13 compability
-prebuildopts = "cd %(builddir)s/%(name)s/src/pytraj && find . -name '*.cpp' -delete && python setup.py --cythonize && "
-prebuildopts += "cd %(builddir)s/easybuild_obj && "
-# unpin numpy version restriction in fe-toolkit pkgs
-prebuildopts += """sed -i "/'numpy<2',/d" """
+prebuildopts = """sed -i "/'numpy<2',/d" """
 for _pkg in _fe_toolkit_pkgs:
     prebuildopts += f"{_fe_toolkit_path}{_pkg}{_setup_path} "
 prebuildopts += '&& '
 
+# Fix py3.14 compatibility -  ValueError: argument groups cannot be nested
+prebuildopts += (
+    'sed -i '
+    r"'s/group.add_argument_group(/parser.add_argument_group(/g' "
+    '../AmberTools/src/mmpbsa_py/MMPBSA_mods/commandlineparser.py && '
+)
+
 sanity_check_commands = [
-    f"python -c 'import {', '.join(_fe_toolkit_pkgs)}'",
-    "pip check",
-    "python -c 'import parmed'",
+    "sander --version",
+    "sander.MPI --version",
+    "cpptraj -h >/dev/null",
+    "tleap -h >/dev/null",
+    "antechamber -h >/dev/null",
+    "MMPBSA.py -h >/dev/null",
+    "packmol-memgen -h >/dev/null",
+    "parmed -h >/dev/null",
+    "pdb4amber -h >/dev/null",
+    "command -v quick >/dev/null",
+    "command -v quick.MPI >/dev/null",
+    "python -s -c 'import parmed'",
+    "python -s -c 'import pdb4amber'",
+    "python -s -c 'import pymsmt'",
+    "python -s -c 'import pytraj'",
+    "python -s -c 'import sander'",
+    "python -s -c 'import edgembar'",
+    "python -s -c 'import fetkutils'",
+    "python -s -c 'import ndfes'",
 ]
 
 runtest = True
Diff against AmberTools-23.6-foss-2023a.eb

easybuild/easyconfigs/a/AmberTools/AmberTools-23.6-foss-2023a.eb

diff --git a/easybuild/easyconfigs/a/AmberTools/AmberTools-23.6-foss-2023a.eb b/easybuild/easyconfigs/a/AmberTools/AmberTools-26.1-foss-2026.1.eb
index a5abb13998..d3a89431eb 100644
--- a/easybuild/easyconfigs/a/AmberTools/AmberTools-23.6-foss-2023a.eb
+++ b/easybuild/easyconfigs/a/AmberTools/AmberTools-26.1-foss-2026.1.eb
@@ -1,9 +1,9 @@
 easyblock = 'EB_Amber'
 
 name = 'AmberTools'
-local_ambertools_ver = 23
+local_ambertools_ver = 26
 # Patch levels from http://ambermd.org/AmberPatches.php and http://ambermd.org/ATPatches.php
-patchlevels = (6, 0)  # (AmberTools, Amber)
+patchlevels = (1, 0)  # (AmberTools, Amber)
 version = '%s.%s' % (local_ambertools_ver, patchlevels[0])
 
 homepage = 'https://ambermd.org/'
@@ -11,8 +11,17 @@ description = """AmberTools consists of several independently developed packages
  and with Amber itself. The suite can also be used to carry out complete molecular dynamics simulations,
  with either explicit water or generalized Born solvent models."""
 
-toolchain = {'name': 'foss', 'version': '2023a'}
-toolchainopts = {'usempi': True}
+toolchain = {'name': 'foss', 'version': '2026.1'}
+# AmberTools regression references are sensitive to compiler-generated
+# floating-point differences, so disable CPU-specific tuning and auto-vectorization and use strict FP
+# semantics for reproducible results across supported architectures
+toolchainopts = {
+    'pic': True,
+    'usempi': True,
+    'strict': True,
+    'vectorize': False,
+    'optarch': False,
+}
 
 # download requires registration
 local_download_credentials = '?Name=Easybuild&Institution=Easybuild&City=Internet&State=Other&Country=Belgium'
@@ -27,15 +36,22 @@ patches = [
     'AmberTools-20_fix_xblas_missing_make_dependency.patch',
     'AmberTools-21_CMake-FlexiBLAS.patch',
     'AmberTools-21_fix_incorrect_dvout_call.patch',
-    'AmberTools-21_fix_more_blas_argument_problems.patch',
     'AmberTools-21_fix_potential_use_before_init.patch',
     'AmberTools-21_fix_rism_argument_mismatch.patch',
     'AmberTools-21_fix_xray_fftpack_arg_mismatch.patch',
-    'AmberTools-22_fix_test_missing_cuda_dir.patch',
-    'AmberTools-23_fix-fgetc_arm_infiniteloop.patch',
+    'AmberTools-25_fix_test_missing_dirs.patch',
+    'AmberTools-25_fix-boost.patch',
+    'AmberTools-25_fix-sander-numpy.patch',
+    'AmberTools-26_recythonize-pytraj.patch',
+    'AmberTools-26_skip-nonportable-tests.patch',
+    'AmberTools-26_do-not-clean-QUICK-compiler-flags.patch',
+    'AmberTools-26_fix-pytraj-install-PYTHONPATH.patch',
+    'AmberTools-26_fix-cpptraj-gzip-test.patch',
+    'AmberTools-26_ignore-portability-test-differences.patch',
+    'AmberTools-26_limit-pymemembed-test-threads.patch',
 ]
 checksums = [
-    {'AmberTools23.tar.bz2': 'debb52e6ef2e1b4eaa917a8b4d4934bd2388659c660501a81ea044903bf9ee9d'},
+    {'AmberTools26.tar.bz2': '5d46eef3c2bb7d5bf9e8c0c38add34406ea67e3f0e4097ac9d11d8a544538c9c'},
     {'AmberTools-20_cmake-locate-netcdf.patch': '473e07c53b6f641d96d333974a6af2e03413fecef79f879d3fdecf7fecaab4d0'},
     {'AmberTools-20_fix_missing_MPI_LIBRARY_error.patch':
      '0b89a0624167bc23876bcdefcb1055f591e38e3bd559a71d5749e342bd311acc'},
@@ -44,44 +60,114 @@ checksums = [
     {'AmberTools-21_CMake-FlexiBLAS.patch': '9543812c24c4b7842f64f1f8abaf2c92b5c4c0fadcdbd9811e76b81a778f0d36'},
     {'AmberTools-21_fix_incorrect_dvout_call.patch':
      '1054d4007f5c79126a41582e1e80514267cf406416ed6c471574cd708b16319b'},
-    {'AmberTools-21_fix_more_blas_argument_problems.patch':
-     'c6279b57752239184b942d37f760749494ae0eff95236f3368c76ac0d2726a7c'},
     {'AmberTools-21_fix_potential_use_before_init.patch':
      '377e645b5bd2c91ebb4d0b6fbca0407a94289e5ddc5b1e7ed0cb0b0724ad2139'},
     {'AmberTools-21_fix_rism_argument_mismatch.patch':
      '14255e5739cec39303df570f06820c7532f7395e1b73b1e4104377984e2c9fc1'},
     {'AmberTools-21_fix_xray_fftpack_arg_mismatch.patch':
      '99c954e693659efc2a1d121f91510f56408006f0751d91595f45a34b03364e2f'},
-    {'AmberTools-22_fix_test_missing_cuda_dir.patch':
-     'fb1ab74314d7816169bb9f3f527b78085654aae2825c52cebf50a5760401b737'},
-    {'AmberTools-23_fix-fgetc_arm_infiniteloop.patch':
-     'dde9f8e7914c491f1e1c04171bbbbda371cb12403847fb15092d023fd28fb0f5'},
+    {'AmberTools-25_fix_test_missing_dirs.patch': '1c4c44cb012b625933781e9811f1657d5ddfd14cfbf4894bb1f767995eadc3b6'},
+    {'AmberTools-25_fix-boost.patch': 'f4ccf7dedb5aa5b289ad5f69f3c1dc808c3fcc226d7118eaba40b108688e37cc'},
+    {'AmberTools-25_fix-sander-numpy.patch': '82b875153927b8a0977022d608bbf51513ea936384f3059ecd41a37dfb004d5e'},
+    {'AmberTools-26_recythonize-pytraj.patch': '45cc8acbe61a2cc06d759972174ebca046bb174f422e76eb05a93788af41e8a2'},
+    {'AmberTools-26_skip-nonportable-tests.patch': '4d8d78d715ad89c5fc5c92300b1d5399720cf1093d4c481ed2e086645127af83'},
+    {'AmberTools-26_do-not-clean-QUICK-compiler-flags.patch':
+     '42ff0f9ab60e87cdffaddc89038a12ee8e568eb8a0e33ca043c009e5f9bb3588'},
+    {'AmberTools-26_fix-pytraj-install-PYTHONPATH.patch':
+     'f1f1d1682a97505c2ed8560d9f868d67bb44b420135d98832c63142e13ce12df'},
+    {'AmberTools-26_fix-cpptraj-gzip-test.patch': 'd80bff19ad32d7a1c9011299751c33285afc704632e0915f84d7fc86887bfa3d'},
+    {'AmberTools-26_ignore-portability-test-differences.patch':
+     '09dcb3c4b0c2219b7c1038272718cb2c07e832670b8dec2ead6eca15d33a7fa0'},
+    {'AmberTools-26_limit-pymemembed-test-threads.patch':
+     '4a89a7c6d7a36278650282f8e5d7aa6974cf9790b2b944cdfe065fcbfc68bf9c'},
 ]
 
 builddependencies = [
-    ('CMake', '3.26.3'),
-    ('pkgconf', '1.9.5'),
+    ('CMake', '3.31.11'),
+    ('pkgconf', '2.5.1'),
     ('Bison', '3.8.2'),
     ('flex', '2.6.4'),
     ('make', '4.4.1'),
+    ('Cython', '3.2.4'),
 ]
-
 dependencies = [
-    ('zlib', '1.2.13'),
+    ('zlib', '2.3.2'),
     ('bzip2', '1.0.8'),
-    ('Python', '3.11.3'),
-    ('SciPy-bundle', '2023.07'),
-    ('Perl', '5.36.1'),
-    ('Perl-bundle-CPAN', '5.36.1'),
-    ('Boost', '1.82.0'),
-    ('libreadline', '8.2'),
-    ('matplotlib', '3.7.2'),
-    ('netCDF', '4.9.2'),
-    ('netCDF-Fortran', '4.6.1'),
-    ('PnetCDF', '1.12.3'),
+    ('Python', '3.14.2'),
+    ('Python-bundle-PyPI', '2026.04'),
+    ('SciPy-bundle', '2026.05'),
+    ('Perl', '5.42.0'),
+    ('Perl-bundle-CPAN', '%(perlver)s'),
+    ('Boost', '1.90.0'),
+    ('matplotlib', '3.10.9'),
+    ('netCDF', '4.10.0'),
+    ('netCDF-Fortran', '4.6.3'),
+    ('PnetCDF', '1.14.1'),
     ('Tkinter', '%(pyver)s'),
-    ('X11', '20230603'),
-    ('mpi4py', '3.1.4'),
+    ('X11', '20260518'),
+    ('mpi4py', '4.1.2'),
+    ('FFTW', '3.3.10'),
+    ('netcdf4-python', '1.7.4'),
+    ('PyYAML', '6.0.3'),
+    ('RDKit', '2026.03.4'),
+    ('PLUMED', '2.10.0'),
+    ('Biopython', '1.87'),
+    ('scikit-learn', '1.8.0'),
+    ('pydantic', '2.13.4'),
+    ('numba', '0.65.1'),
+    ('gemmi', '0.7.5'),
+    ('freesasa', '2.2.1'),
+    ('sympy', '1.14.0'),
+    ('networkx', '3.6.1'),
+    ('NLopt', '2.10.1'),
+    ('arpack-ng', '3.9.1'),
+]
+
+# Avoid requiring the separate Boost.System library in the AmberTools and QUICK CMake configurations
+preconfigopts = "sed -i 's/Boost COMPONENTS thread system/Boost COMPONENTS thread/' "
+preconfigopts += "../cmake/3rdPartyTools.cmake "
+preconfigopts += "../AmberTools/src/quick/cmake/3rdPartyTools.cmake && "
+
+# Replace Amber's hard-coded -O3 with -O2 to match EasyBuild and improve numerical reproducibility
+preconfigopts += "sed -i 's/-O3/-O2/g' "
+preconfigopts += "../cmake/CompilerFlags.cmake && "
+
+# Remove the obsolete NumPy <2 upper bound from the FE-toolkit packages
+_fe_toolkit_path = "%(builddir)s/%(name)s/src/fe-toolkit/"
+_setup_path = "/src/python/setup.py"
+_fe_toolkit_pkgs = ['edgembar', 'fetkutils', 'ndfes']
+prebuildopts = """sed -i "/'numpy<2',/d" """
+for _pkg in _fe_toolkit_pkgs:
+    prebuildopts += f"{_fe_toolkit_path}{_pkg}{_setup_path} "
+prebuildopts += '&& '
+
+# Fix py3.14 compatibility -  ValueError: argument groups cannot be nested
+prebuildopts += (
+    'sed -i '
+    r"'s/group.add_argument_group(/parser.add_argument_group(/g' "
+    '../AmberTools/src/mmpbsa_py/MMPBSA_mods/commandlineparser.py && '
+)
+
+sanity_check_commands = [
+    "sander --version",
+    "sander.MPI --version",
+    "cpptraj -h >/dev/null",
+    "tleap -h >/dev/null",
+    "antechamber -h >/dev/null",
+    "MMPBSA.py -h >/dev/null",
+    "packmol-memgen -h >/dev/null",
+    "parmed -h >/dev/null",
+    "pdb4amber -h >/dev/null",
+    "command -v quick >/dev/null",
+    "command -v quick.MPI >/dev/null",
+    "python -s -c 'import parmed'",
+    "python -s -c 'import pdb4amber'",
+    "python -s -c 'import pymsmt'",
+    "python -s -c 'import pytraj'",
+    "python -s -c 'import sander'",
+    "python -s -c 'import edgembar'",
+    "python -s -c 'import fetkutils'",
+    "python -s -c 'import ndfes'",
 ]
 
 runtest = True

@pavelToman

Copy link
Copy Markdown
Collaborator Author

@boegelbot please test @ jsc-zen3

@boegelbot

Copy link
Copy Markdown
Collaborator

@pavelToman: Request for testing this PR well received on jsczen3l1.int.jsc-zen3.fz-juelich.de

PR test command 'if [[ develop != 'develop' ]]; then EB_BRANCH=develop ./easybuild_develop.sh 2> /dev/null 1>&2; EB_PREFIX=/home/boegelbot/easybuild/develop source init_env_easybuild_develop.sh; fi; EB_PR=26555 EB_ARGS= EB_CONTAINER= EB_REPO=easybuild-easyconfigs EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_26555 --ntasks=8 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

  • exit code: 0
  • output:
Submitted batch job 11062

Test results coming soon (I hope)...

Details

- notification for comment with ID 5102898805 processed

Message to humans: this is just bookkeeping information for me,
it is of no use to you (unless you think I have a bug, which I don't).

@pavelToman pavelToman added the AI-assisted AI-assisted contributions label Jul 28, 2026
@boegelbot

Copy link
Copy Markdown
Collaborator

Test report by @boegelbot
FAILED
Build succeeded for 2 out of 4 (total: 26 mins 48 secs) (2 easyconfigs in total)
jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.8, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.25
See https://gist.github.com/boegelbot/1ea041f45dffc401619b9feb54c86cb1 for a full test report.

@pavelToman

Copy link
Copy Markdown
Collaborator Author

Test report by @boegelbot FAILED Build succeeded for 2 out of 4 (total: 26 mins 48 secs) (2 easyconfigs in total) jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.8, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.25 See https://gist.github.com/boegelbot/1ea041f45dffc401619b9feb54c86cb1 for a full test report.

Missing CMake patch - fixed

@pavelToman

Copy link
Copy Markdown
Collaborator Author

@boegelbot please test @ jsc-zen3

@boegelbot

Copy link
Copy Markdown
Collaborator

@pavelToman: Request for testing this PR well received on jsczen3l1.int.jsc-zen3.fz-juelich.de

PR test command 'if [[ develop != 'develop' ]]; then EB_BRANCH=develop ./easybuild_develop.sh 2> /dev/null 1>&2; EB_PREFIX=/home/boegelbot/easybuild/develop source init_env_easybuild_develop.sh; fi; EB_PR=26555 EB_ARGS= EB_CONTAINER= EB_REPO=easybuild-easyconfigs EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_26555 --ntasks=8 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

  • exit code: 0
  • output:
Submitted batch job 11063

Test results coming soon (I hope)...

Details

- notification for comment with ID 5103312637 processed

Message to humans: this is just bookkeeping information for me,
it is of no use to you (unless you think I have a bug, which I don't).

@Thyre

Thyre commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

Why should we add CMake v3.31.8 when v3.31.11 exists already?

@pavelToman pavelToman changed the title {chem,devel}[GCCcore/15.2.0,foss/2026.1] AmberTools v26.1, CMake v3.31.8 {chem}[foss/2026.1] AmberTools v26.1 Jul 28, 2026
@pavelToman

pavelToman commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator Author

There are still some problems to solve:

packmol-memgen 2026.3.25 requires pdb2pqr, which is not installed.
proprep 1.0.0 requires pdb2pqr, which is not installed.
proprep 1.0.0 has requirement biopython<1.86,>=1.83, but you have biopython 1.87.
proprep 1.0.0 has requirement numpy<2.0,>=1.26, but you have numpy 2.4.6.

@pavelToman

Copy link
Copy Markdown
Collaborator Author

Test report by @pavelToman
SUCCESS
Build succeeded for 2 out of 2 (total: 2 hours 4 mins 28 secs) (1 easyconfigs in total)
node4417.skiddo.os - Linux RHEL 9.6, x86_64, AMD EPYC 9755 128-Core Processor, Python 3.9.21
See https://gist.github.com/pavelToman/3677643cd776ec8bf501dc6b3b0922f6 for a full test report.

@boegelbot

Copy link
Copy Markdown
Collaborator

Test report by @boegelbot
SUCCESS
Build succeeded for 2 out of 2 (total: 2 hours 46 mins 0 secs) (2 easyconfigs in total)
jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.8, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.25
See https://gist.github.com/boegelbot/79cc303b04e5064e7334456f5b7ecc22 for a full test report.

@pavelToman
pavelToman marked this pull request as draft July 28, 2026 14:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2026.1 issues & PRs related to 2026.1 common toolchains AI-assisted AI-assisted contributions update

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants