From 3112ea719abc923ca84e5e473c842c67880e5a76 Mon Sep 17 00:00:00 2001 From: pavelToman Date: Fri, 14 Nov 2025 11:30:18 +0100 Subject: [PATCH 1/3] adding easyconfigs: nglview-4.0-foss-2025b.eb, MDTraj-1.11.0-foss-2025b.eb, PyTables-3.10.2-foss-2025b.eb, MDAnalysis-2.10.0-foss-2025b.eb, Biopython-1.86-gfbf-2025b.eb, mrcfile-1.5.4-gfbf-2025b.eb --- .../b/Biopython/Biopython-1.86-gfbf-2025b.eb | 41 +++++++++++ .../MDAnalysis-2.10.0-foss-2025b.eb | 73 +++++++++++++++++++ .../m/MDTraj/MDTraj-1.11.0-foss-2025b.eb | 44 +++++++++++ .../m/mrcfile/mrcfile-1.5.4-gfbf-2025b.eb | 39 ++++++++++ .../n/nglview/nglview-4.0-foss-2025b.eb | 48 ++++++++++++ .../p/PyTables/PyTables-3.10.2-foss-2025b.eb | 72 ++++++++++++++++++ 6 files changed, 317 insertions(+) create mode 100644 easybuild/easyconfigs/b/Biopython/Biopython-1.86-gfbf-2025b.eb create mode 100644 easybuild/easyconfigs/m/MDAnalysis/MDAnalysis-2.10.0-foss-2025b.eb create mode 100644 easybuild/easyconfigs/m/MDTraj/MDTraj-1.11.0-foss-2025b.eb create mode 100644 easybuild/easyconfigs/m/mrcfile/mrcfile-1.5.4-gfbf-2025b.eb create mode 100644 easybuild/easyconfigs/n/nglview/nglview-4.0-foss-2025b.eb create mode 100644 easybuild/easyconfigs/p/PyTables/PyTables-3.10.2-foss-2025b.eb diff --git a/easybuild/easyconfigs/b/Biopython/Biopython-1.86-gfbf-2025b.eb b/easybuild/easyconfigs/b/Biopython/Biopython-1.86-gfbf-2025b.eb new file mode 100644 index 000000000000..34f3125cd6b1 --- /dev/null +++ b/easybuild/easyconfigs/b/Biopython/Biopython-1.86-gfbf-2025b.eb @@ -0,0 +1,41 @@ +# Updated from previous easyconfig +# Author: Robert Mijakovic +# Update: Pavel Tománek (INUITS) + +easyblock = 'PythonPackage' + +name = 'Biopython' +version = '1.86' + +homepage = 'https://www.biopython.org' +description = """Biopython is a set of freely available tools for biological + computation written in Python by an international team of developers. It is + a distributed collaborative effort to develop Python libraries and + applications which address the needs of current and future work in + bioinformatics. """ + +toolchain = {'name': 'gfbf', 'version': '2025b'} + +source_urls = ['https://biopython.org/DIST'] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['93a50b586a4d2cec68ab2f99d03ef583c5761d8fba5535cb8e81da781d0d92ff'] + +dependencies = [ + ('Python', '3.13.5'), + ('SciPy-bundle', '2025.07'), +] + +# Run only tests that don't require internet connection +runtest = 'python setup.py test --offline' + +sanity_check_paths = { + 'files': [], + 'dirs': ['lib/python%(pyshortver)s/site-packages/Bio', + 'lib/python%(pyshortver)s/site-packages/BioSQL'] +} + +sanity_check_commands = ["python -c 'import Bio.motifs'"] + +options = {'modulename': 'Bio'} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/m/MDAnalysis/MDAnalysis-2.10.0-foss-2025b.eb b/easybuild/easyconfigs/m/MDAnalysis/MDAnalysis-2.10.0-foss-2025b.eb new file mode 100644 index 000000000000..0efc02640a3e --- /dev/null +++ b/easybuild/easyconfigs/m/MDAnalysis/MDAnalysis-2.10.0-foss-2025b.eb @@ -0,0 +1,73 @@ +easyblock = 'PythonBundle' + +name = 'MDAnalysis' +version = '2.10.0' + +homepage = 'https://www.mdanalysis.org/' +description = """MDAnalysis is an object-oriented Python library to analyze trajectories from molecular dynamics (MD) +simulations in many popular formats.""" + +toolchain = {'name': 'foss', 'version': '2025b'} + +builddependencies = [ + ('Cython', '3.1.2'), +] +dependencies = [ + ('Python', '3.13.5'), + ('Python-bundle-PyPI', '2025.07'), + ('SciPy-bundle', '2025.07'), + ('matplotlib', '3.10.5'), + ('tqdm', '4.67.1'), + ('mrcfile', '1.5.4'), # needed by GridDataFormats + ('Biopython', '1.86'), # optional + ('networkx', '3.5'), # optional + ('Seaborn', '0.13.2'), # optional + ('scikit-learn', '1.7.1'), # optional + ('hypothesis', '6.136.6'), # tests +] + +exts_list = [ + ('GridDataFormats', '1.0.2', { + 'modulename': 'gridData', + 'checksums': ['b93cf7f36fce33dbc428026f26dba560d5c7ba2387caca495bad920f90094502'], + }), + ('mmtf-python', '1.1.3', { + 'modulename': 'mmtf', + 'checksums': ['12a02fe1b7131f0a2b8ce45b46f1e0cdd28b9818fe4499554c26884987ea0c32'], + }), + ('mda_xdrlib', '0.2.0', { + 'checksums': ['f26f7158a83c32b96d15b530fce2cbc1190c4b7024e41faa4ab3e3db74e272af'], + }), + ('tidynamics', '1.1.2', { + 'checksums': ['103874edd79dc64a0c7b765f51200926822e74df63703acb6c630a8167dbcfa2'], + }), + ('waterdynamics', '1.2.0', { + 'sources': ['%(name)s-%(version)s-py3-none-any.whl'], + 'checksums': ['8a9eb7e7ad44e2abf9e2542661b2d7b371d8ab6474113a301968e4bf78d4432d'], + }), + ('pathsimanalysis', '1.2.0', { + 'sources': ['%(name)s-%(version)s-py3-none-any.whl'], + 'checksums': ['0edce2fd1a55a788ef80b3666f9704455c01f06719f516fec20215fb9e16e291'], + }), + ('mdahole2', '0.5.0', { + 'sources': ['%(name)s-%(version)s-py3-none-any.whl'], + 'checksums': ['6b7a9be247cd99331e8840c9012d0ed7a86874fe110983bbaed00eb39459e7a8'], + }), + ('mdanalysistests', version, { + 'modulename': 'MDAnalysisTests', + 'checksums': ['286b8678e19195093a19b57b26d76b8274415d33ac23fc872355639fcb49beef'], + }), + ('mdanalysis', version, { + 'modulename': 'MDAnalysis', + 'use_pip_extras': 'analysis', + 'checksums': ['5cef1f1eba4b25cbf9dd4045f08eeab293bb9577b970aa96132f14491312d877'], + }), +] + +sanity_check_commands = [ + "export OMP_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1 && " + f"pytest --disable-pytest-warnings --numprocesses %(parallel)s " + "--pyargs MDAnalysisTests -p no:warnings --dist=loadscope" +] + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/m/MDTraj/MDTraj-1.11.0-foss-2025b.eb b/easybuild/easyconfigs/m/MDTraj/MDTraj-1.11.0-foss-2025b.eb new file mode 100644 index 000000000000..ee227fe0a5a2 --- /dev/null +++ b/easybuild/easyconfigs/m/MDTraj/MDTraj-1.11.0-foss-2025b.eb @@ -0,0 +1,44 @@ +easyblock = 'PythonBundle' + +name = 'MDTraj' +version = '1.11.0' + +homepage = 'https://mdtraj.org' +description = "Read, write and analyze MD trajectories with only a few lines of Python code." + +toolchain = {'name': 'foss', 'version': '2025b'} +toolchainopts = {'openmp': True} + +builddependencies = [('Cython', '3.1.2')] + +dependencies = [ + ('zlib', '1.3.1'), + ('Python', '3.13.5'), + ('Python-bundle-PyPI', '2025.07'), + ('SciPy-bundle', '2025.07'), + ('netcdf4-python', '1.7.2'), # optional+tests + ('networkx', '3.5'), # optional+tests + ('PyTables', '3.10.2'), # optional+tests +] + +exts_list = [ + ('pyparsing', '3.2.5', { + 'checksums': ['2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6'], + }), + ('gsd', '4.2.0', { + 'checksums': ['eb197abd735e98817bcdc1ee34e4968231d572da48c097b3ccf316be828cf86a'], + }), + ('pytest_rerunfailures', '16.1', { + 'checksums': ['c38b266db8a808953ebd71ac25c381cb1981a78ff9340a14bcb9f1b9bff1899e'], + }), + ('mdtraj', version, { + 'runtest': "cd tests && pytest -v", + 'source_urls': ['https://github.com/mdtraj/mdtraj/archive/'], + 'sources': [{'download_filename': '%(version)s.tar.gz', 'filename': '%(name)s-%(version)s-github.tar.gz'}], + 'testinstall': True, + 'use_pip_extras': 'optional', + 'checksums': ['fefca787f882d0716a7aeb01b4d8e30caddbd2be0b2893acfa7201c31d13c786'], + }), +] + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/m/mrcfile/mrcfile-1.5.4-gfbf-2025b.eb b/easybuild/easyconfigs/m/mrcfile/mrcfile-1.5.4-gfbf-2025b.eb new file mode 100644 index 000000000000..d64f9fb5570a --- /dev/null +++ b/easybuild/easyconfigs/m/mrcfile/mrcfile-1.5.4-gfbf-2025b.eb @@ -0,0 +1,39 @@ +# Thomas Hoffmann, EMBL Heidelberg, structures-it@embl.de, 2025/03 +easyblock = 'PythonPackage' + +name = 'mrcfile' +version = '1.5.4' + +homepage = 'https://github.com/ccpem/mrcfile' +description = """mrcfile is a Python implementation of the MRC2014 file format, which is used in +structural biology to store image and volume data. + +It allows MRC files to be created and opened easily using a very simple API, +which exposes the file’s header and data as numpy arrays. The code runs in +Python 2 and 3 and is fully unit-tested. + +This library aims to allow users and developers to read and write standard- +compliant MRC files in Python as easily as possible, and with no dependencies on +any compiled libraries except numpy. You can use it interactively to inspect +files, correct headers and so on, or in scripts and larger software packages to +provide basic MRC file I/O functions. """ + +toolchain = {'name': 'gfbf', 'version': '2025b'} + +sources = [SOURCELOWER_TAR_GZ] +checksums = ['8fa9eb2e237d87d99b301c61bf02854dd85a451db25eefcbe142c09b36d8d601'] + +dependencies = [ + ('Python', '3.13.5'), + ('SciPy-bundle', '2025.07'), +] + +testinstall = True +runtest = 'pytest -vvvs tests' + +sanity_check_paths = { + 'files': [], + 'dirs': ['lib/python%(pyshortver)s/site-packages/%(namelower)s'] +} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/n/nglview/nglview-4.0-foss-2025b.eb b/easybuild/easyconfigs/n/nglview/nglview-4.0-foss-2025b.eb new file mode 100644 index 000000000000..4361354eee78 --- /dev/null +++ b/easybuild/easyconfigs/n/nglview/nglview-4.0-foss-2025b.eb @@ -0,0 +1,48 @@ +easyblock = 'PythonBundle' + +name = 'nglview' +version = '4.0' + +homepage = 'https://github.com/arose/nglview' +description = "IPython widget to interactively view molecular structures and trajectories." + +toolchain = {'name': 'foss', 'version': '2025b'} + +builddependencies = [ + ('nodejs', '22.17.1'), +] + +dependencies = [ + ('Python', '3.13.5'), + ('Python-bundle-PyPI', '2025.07'), + ('SciPy-bundle', '2025.07'), + ('JupyterLab', '4.4.9'), + ('JupyterNotebook', '7.4.7'), + ('ASE', '3.26.0'), # optional + ('MDAnalysis', '2.10.0'), # optional + ('MDTraj', '1.11.0'), # optional +] + +local_pytest_cmd = ( + "pytest -v " + "--deselect tests/test_show.py::test_show_schrodinger " + "--deselect tests/test_widget.py::test_existing_js_files " + "--deselect tests/test_movie_maker.py::test_movie_maker " + "tests" +) + +exts_list = [ + (name, version, { + 'use_pip_extras': 'ase,MDAnalysis,mdtraj', + # unpin numpy - pinned due to ParmEd + # https://github.com/ParmEd/ParmEd/issues/1406 + 'preinstallopts': "sed -i 's/numpy<2.3/numpy/' setup.py && ", + 'testinstall': True, + 'runtest': local_pytest_cmd, + 'checksums': ['2c0cff2c5b1e2a0a72e3393087ce44ae0308524c5aa5f95357812d3edbc26e83'], + }), +] + +modextrapaths = {'EB_ENV_JUPYTER_ROOT': ''} + +moduleclass = 'chem' diff --git a/easybuild/easyconfigs/p/PyTables/PyTables-3.10.2-foss-2025b.eb b/easybuild/easyconfigs/p/PyTables/PyTables-3.10.2-foss-2025b.eb new file mode 100644 index 000000000000..eeb365a7fc8f --- /dev/null +++ b/easybuild/easyconfigs/p/PyTables/PyTables-3.10.2-foss-2025b.eb @@ -0,0 +1,72 @@ +easyblock = 'PythonBundle' + +name = 'PyTables' +version = '3.10.2' + +homepage = 'https://www.pytables.org' +description = """PyTables is a package for managing hierarchical datasets and designed to efficiently and easily cope + with extremely large amounts of data. PyTables is built on top of the HDF5 library, using the Python language and the + NumPy package. It features an object-oriented interface that, combined with C extensions for the performance-critical + parts of the code (generated using Cython), makes it a fast, yet extremely easy to use tool for interactively browsing, + processing and searching very large amounts of data. One important feature of PyTables is that it optimizes memory and + disk resources so that data takes much less space (specially if on-flight compression is used) than other solutions + such as relational or object oriented databases.""" + +toolchain = {'name': 'foss', 'version': '2025b'} +toolchainopts = {'usempi': True} + +builddependencies = [ + ('pkgconf', '2.4.3'), + ('CMake', '4.0.3'), + ('Cython', '3.1.2'), + ('scikit-build-core', '0.11.5'), +] + +dependencies = [ + ('Python', '3.13.5'), + ('Python-bundle-PyPI', '2025.07'), + ('SciPy-bundle', '2025.07'), + ('HDF5', '1.14.6'), + ('LZO', '2.10'), + ('Blosc', '1.21.6'), + ('Blosc2', '2.19.0'), + ('py-cpuinfo', '9.0.0'), +] + +exts_list = [ + ('ndindex', '1.10.0', { + 'checksums': ['20e3a2f0a8ed4646abf0f13296aab0b5b9cc8c5bc182b71b5945e76eb6f558bb'], + }), + ('blosc2', '3.6.1', { + 'preinstallopts': "USE_SYSTEM_BLOSC2=ON ", + 'runtest': "pytest -v", + 'testinstall': True, + 'checksums': ['0b6f05311fbee9e9dc23bd7f53a8690af3b60eef640a059f1eb624ca6699cc59'], + }), + ('tables', version, { + 'patches': [ + 'PyTables-3.8.0_fix-libs.patch', + 'PyTables-3.9.2_fix-find-blosc2-dep.patch', + ], + 'runtest': "cd .. && python -m tables.tests.test_all", + 'testinstall': True, + 'checksums': [ + {'tables-3.10.2.tar.gz': '2544812a7186fadba831d6dd34eb49ccd788d6a83f4e4c2b431b835b6796c910'}, + {'PyTables-3.8.0_fix-libs.patch': '7a1e6fa1f9169e52293e2b433a4302fa13c5d31e7709cd4fe0e087199b9e3f8a'}, + {'PyTables-3.9.2_fix-find-blosc2-dep.patch': + 'e2149f43da12d9ba26cca4c838f6e8a4694adab75c0f055b186674a017e41a55'}, + ], + }), +] + +local_bins = ['pt2to3', 'ptdump', 'ptrepack', 'pttree'] +sanity_check_paths = { + 'files': ['bin/%s' % x for x in local_bins], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +options = {'modulename': 'tables'} + +sanity_check_commands = ["%s --help" % x for x in local_bins] + +moduleclass = 'data' From 396f64c6ad9704784248cb0b2f82dbe524fbe3ed Mon Sep 17 00:00:00 2001 From: Pavel Tomanek <99190809+pavelToman@users.noreply.github.com> Date: Fri, 14 Nov 2025 11:33:40 +0100 Subject: [PATCH 2/3] Update MDAnalysis-2.10.0-foss-2025b.eb --- .../easyconfigs/m/MDAnalysis/MDAnalysis-2.10.0-foss-2025b.eb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/easybuild/easyconfigs/m/MDAnalysis/MDAnalysis-2.10.0-foss-2025b.eb b/easybuild/easyconfigs/m/MDAnalysis/MDAnalysis-2.10.0-foss-2025b.eb index 0efc02640a3e..628eb16c2328 100644 --- a/easybuild/easyconfigs/m/MDAnalysis/MDAnalysis-2.10.0-foss-2025b.eb +++ b/easybuild/easyconfigs/m/MDAnalysis/MDAnalysis-2.10.0-foss-2025b.eb @@ -66,7 +66,7 @@ exts_list = [ sanity_check_commands = [ "export OMP_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1 && " - f"pytest --disable-pytest-warnings --numprocesses %(parallel)s " + "pytest --disable-pytest-warnings --numprocesses %(parallel)s " "--pyargs MDAnalysisTests -p no:warnings --dist=loadscope" ] From f0d04c70fddde1b2b9fdaa8e6e11029dd8650e86 Mon Sep 17 00:00:00 2001 From: Pavel Tomanek <99190809+pavelToman@users.noreply.github.com> Date: Fri, 14 Nov 2025 16:06:27 +0100 Subject: [PATCH 3/3] Update MDTraj-1.11.0-foss-2025b.eb - test cmd with -n --- easybuild/easyconfigs/m/MDTraj/MDTraj-1.11.0-foss-2025b.eb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/easybuild/easyconfigs/m/MDTraj/MDTraj-1.11.0-foss-2025b.eb b/easybuild/easyconfigs/m/MDTraj/MDTraj-1.11.0-foss-2025b.eb index ee227fe0a5a2..9fd989c78087 100644 --- a/easybuild/easyconfigs/m/MDTraj/MDTraj-1.11.0-foss-2025b.eb +++ b/easybuild/easyconfigs/m/MDTraj/MDTraj-1.11.0-foss-2025b.eb @@ -32,7 +32,7 @@ exts_list = [ 'checksums': ['c38b266db8a808953ebd71ac25c381cb1981a78ff9340a14bcb9f1b9bff1899e'], }), ('mdtraj', version, { - 'runtest': "cd tests && pytest -v", + 'runtest': "cd tests && pytest -v --numprocesses %(parallel)s", 'source_urls': ['https://github.com/mdtraj/mdtraj/archive/'], 'sources': [{'download_filename': '%(version)s.tar.gz', 'filename': '%(name)s-%(version)s-github.tar.gz'}], 'testinstall': True,