diff --git a/easybuild/easyconfigs/c/colossalai/colossalai-0.1.8-foss-2021a-CUDA-11.3.1.eb b/easybuild/easyconfigs/c/colossalai/colossalai-0.1.8-foss-2021a-CUDA-11.3.1.eb new file mode 100644 index 00000000000..5a14fa765f1 --- /dev/null +++ b/easybuild/easyconfigs/c/colossalai/colossalai-0.1.8-foss-2021a-CUDA-11.3.1.eb @@ -0,0 +1,53 @@ +easyblock = 'PythonBundle' + +name = 'colossalai' +version = '0.1.8' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://colossalai.org/' +description = """Colossal-AI: A Unified Deep Learning System for Big Model Era""" + +toolchain = {'name': 'foss', 'version': '2021a'} + +dependencies = [ + ('Python', '3.9.5'), + ('CUDA', '11.3.1', '', True), + ('SciPy-bundle', '2021.05'), + ('PyTorch-Lightning', '1.5.9', versionsuffix), + ('torchvision', '0.11.1', versionsuffix), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('cfgv', '3.3.1', { + 'checksums': ['f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736'], + }), + ('identify', '2.5.1', { + 'checksums': ['3d11b16f3fe19f52039fb7e39c9c884b21cb1b586988114fbe42671f03de3e82'], + }), + ('nodeenv', '1.6.0', { + 'checksums': ['3ef13ff90291ba2a4a7a4ff9a979b63ffdd00a464dbe04acf0ea6471517a4c2b'], + }), + ('pre_commit', '2.19.0', { + 'checksums': ['4233a1e38621c87d9dda9808c6606d7e7ba0e087cd56d3fe03202a01d2919615'], + }), + ('commonmark', '0.9.1', { + 'checksums': ['452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60'], + }), + ('rich', '12.4.4', { + 'checksums': ['4c586de507202505346f3e32d1363eb9ed6932f0c2f63184dea88983ff4971e2'], + }), + ('invoke', '1.7.1', { + 'checksums': ['7b6deaf585eee0a848205d0b8c0014b9bf6f287a8eb798818a642dff1df14b19'], + }), + ('fabric', '2.7.1', { + 'checksums': ['76f8fef59cf2061dbd849bbce4fe49bdd820884385004b0ca59136ac3db129e4'], + }), + (name, version, { + 'checksums': ['3a2cdd4dc2d8b4832fa132a0bd1102f86c38f6865d7f119018404069d35984b2'], + }), +] + +moduleclass = 'ai' diff --git a/easybuild/easyconfigs/e/einops/einops-0.4.1-GCCcore-10.3.0.eb b/easybuild/easyconfigs/e/einops/einops-0.4.1-GCCcore-10.3.0.eb new file mode 100644 index 00000000000..80b81ff50b5 --- /dev/null +++ b/easybuild/easyconfigs/e/einops/einops-0.4.1-GCCcore-10.3.0.eb @@ -0,0 +1,29 @@ +easyblock = 'PythonPackage' + +name = 'einops' +version = '0.4.1' + +homepage = 'https://einops.rocks/' +description = """ +Flexible and powerful tensor operations for readable and reliable code. +Supports numpy, pytorch, tensorflow, jax, and others.""" + +toolchain = {'name': 'GCCcore', 'version': '10.3.0'} + +sources = [SOURCE_TAR_GZ] +checksums = ['65ede824fa54ce99ba969c61152f9948eb8cad08d5f0ca97c95e3804bafcce48'] + +builddependencies = [ + ('binutils', '2.36.1'), +] + +dependencies = [ + ('Python', '3.9.5'), +] + +download_dep_fail = True +use_pip = True + +sanity_pip_check = True + +moduleclass = 'math' diff --git a/easybuild/easyconfigs/o/OpenFold/OpenFold-1.0.0-foss-2021a-CUDA-11.3.1.eb b/easybuild/easyconfigs/o/OpenFold/OpenFold-1.0.0-foss-2021a-CUDA-11.3.1.eb new file mode 100644 index 00000000000..f4797eae8eb --- /dev/null +++ b/easybuild/easyconfigs/o/OpenFold/OpenFold-1.0.0-foss-2021a-CUDA-11.3.1.eb @@ -0,0 +1,94 @@ +easyblock = 'PythonBundle' + +name = 'OpenFold' +version = '1.0.0' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://github.com/aqlaboratory/openfold' +description = "A faithful PyTorch reproduction of DeepMind's AlphaFold 2" + +toolchain = {'name': 'foss', 'version': '2021a'} + +builddependencies = [ + # CMake is required to build ninja Python package (included as extension) + ('CMake', '3.20.1'), +] + +dependencies = [ + ('Python', '3.9.5'), + ('CUDA', '11.3.1', '', True), + ('SciPy-bundle', '2021.05'), + ('PyYAML', '5.4.1'), + ('Biopython', '1.79'), + ('HH-suite', '3.3.0'), + ('HMMER', '3.3.2'), + ('Kalign', '3.3.1'), + ('UCX-CUDA', '1.10.0', versionsuffix), + ('cuDNN', '8.2.1.32', versionsuffix, True), + ('NCCL', '2.10.3', versionsuffix), + ('dm-tree', '0.1.6'), + ('einops', '0.4.1'), + ('colossalai', '0.1.8', versionsuffix), + ('scikit-build', '0.11.1'), + # OpenFold also requires the AlphaFold modification to OpenMM + # https://github.com/aqlaboratory/openfold/blob/v1.0.0/scripts/install_third_party_dependencies.sh#L20-L24 + # https://github.com/aqlaboratory/openfold/blob/v1.0.0/lib/openmm.patch + ('OpenMM', '7.5.1', '-DeepMind-patch'), +] + +use_pip = True + +exts_list = [ + ('PDBFixer', '1.7', { + 'source_urls': ['https://github.com/openmm/pdbfixer/archive/refs/tags/'], + 'sources': [{'download_filename': 'v%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}], + 'checksums': ['a0bef3c52a7bbe69a6aea5333f51f3e7d158339be5829aed19b0344bd66d4eea'], + }), + ('ninja', '1.10.2.3', { + 'checksums': ['e1b86ad50d4e681a7dbdff05fc23bb52cb773edb90bc428efba33fa027738408'], + }), + ('hjson', '3.0.2', { + 'checksums': ['2838fd7200e5839ea4516ece953f3a19892c41089f0d933ba3f68e596aacfcd5'], + }), + ('py-cpuinfo', '8.0.0', { + 'modulename': 'cpuinfo', + 'checksums': ['5f269be0e08e33fd959de96b34cd4aeeeacac014dd8305f70eb28d06de2345c5'], + }), + ('triton', version, { + 'source_tmpl': '%(name)s-%(version)s-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl', + 'checksums': ['37b8d0eb36ed7631a6f9d01bd3183f900ae7dbd9e5e40112468a3568505671dc'], + }), + ('deepspeed', '0.5.9', { + 'checksums': ['7c43d151b51d346a430034e77764097c4af7637217c08503291c48c37ae7d090'], + }), + ('contextlib2', '21.6.0', { + 'checksums': ['ab1e2bfe1d01d968e1b7e8d9023bc51ef3509bba217bb730cee3827e1ee82869'], + }), + ('ml_collections', '0.1.0', { + 'preinstallopts': "touch requirements.txt && touch requirements-test.txt && ", + 'checksums': ['59a17fcd1c140153009788517f304caaddd7a94f06690f9f0ed09987beebcf3c'], + }), + ('dllogger', version, { + 'source_urls': ['https://github.com/NVIDIA/dllogger/archive/refs/tags/'], + 'sources': [{'download_filename': 'v%(version)s.tar.gz', 'filename': '%(name)s-%(version)s.tar.gz'}], + 'checksums': ['43e5e3c3acf891dfe6151f7d869f3ad2424772fe57fd8dcb0a45bad06de93bf7'], + }), + (name, version, { + 'source_urls': ['https://github.com/aqlaboratory/openfold/archive/refs/tags/'], + 'sources': ['v%(version)s.tar.gz'], + 'checksums': ['543cb0d36a6118a60de4b4ec2f4a49ebcc965523e5b31e9ad03425de367384a7'], + }), +] + +sanity_check_paths = { + 'files': ['bin/pdbfixer'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = [ + "pdbfixer --help", +] + +sanity_pip_check = True + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/o/OpenMM/OpenMM-7.5.1-foss-2021a-DeepMind-patch.eb b/easybuild/easyconfigs/o/OpenMM/OpenMM-7.5.1-foss-2021a-DeepMind-patch.eb new file mode 100644 index 00000000000..42a22798b5f --- /dev/null +++ b/easybuild/easyconfigs/o/OpenMM/OpenMM-7.5.1-foss-2021a-DeepMind-patch.eb @@ -0,0 +1,53 @@ +easyblock = 'CMakeMake' + +name = 'OpenMM' +version = '7.5.1' +versionsuffix = '-DeepMind-patch' + +homepage = 'https://openmm.org' +description = "OpenMM is a toolkit for molecular simulation." + +toolchain = {'name': 'foss', 'version': '2021a'} +toolchainopts = {'opt': True} + +source_urls = ['https://github.com/openmm/openmm/archive/'] +sources = ['%(version)s.tar.gz'] +patches = [('OpenMM-%(version)s_DeepMind.patch', 'wrappers/python')] +checksums = [ + 'c88d6946468a2bde2619acb834f57b859b5e114a93093cf562165612e10f4ff7', + '1b109dfff3af5c6aa70690bca14618612953c68840a7e64f679db7ca33c1aff6', +] + +builddependencies = [ + ('CMake', '3.20.1'), + ('Doxygen', '1.9.1'), +] + +dependencies = [ + ('Python', '3.9.5'), + ('SciPy-bundle', '2021.05'), + ('SWIG', '4.0.2'), +] + +runtest = """test -e ARGS="-E \'(Integrator)|(Thermostat)|(Barostat)|(Rpmd)|(Amoeba)|(HippoNonbondedForce)\'" """ + +preinstallopts = ' export OPENMM_INCLUDE_PATH=%(installdir)s/include && ' +preinstallopts += ' export OPENMM_LIB_PATH=%(installdir)s/lib && ' + +# required to install the python API +installopts = ' && cd python && python setup.py build && python setup.py install --prefix=%(installdir)s' + +sanity_check_paths = { + 'files': ['lib/libOpenMM.%s' % SHLIB_EXT, 'lib/python%(pyshortver)s/site-packages/simtk/openmm/openmm.py'], + 'dirs': [] +} + +sanity_check_commands = ["python -m simtk.testInstallation"] + +modextrapaths = { + 'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages', + 'OPENMM_INCLUDE_PATH': 'include', + 'OPENMM_LIB_PATH': 'lib', +} + +moduleclass = 'bio' diff --git a/easybuild/easyconfigs/o/OpenMM/OpenMM-7.5.1_DeepMind.patch b/easybuild/easyconfigs/o/OpenMM/OpenMM-7.5.1_DeepMind.patch new file mode 100644 index 00000000000..878ffd11b03 --- /dev/null +++ b/easybuild/easyconfigs/o/OpenMM/OpenMM-7.5.1_DeepMind.patch @@ -0,0 +1,45 @@ +custom patch for OpenMM to use in conjunction with AlphaFold +see https://github.com/deepmind/alphafold/blob/main/docker/openmm.patch + +Index: simtk/openmm/app/topology.py +=================================================================== +--- simtk.orig/openmm/app/topology.py ++++ simtk/openmm/app/topology.py +@@ -356,19 +356,35 @@ + def isCyx(res): + names = [atom.name for atom in res._atoms] + return 'SG' in names and 'HG' not in names ++ # This function is used to prevent multiple di-sulfide bonds from being ++ # assigned to a given atom. This is a DeepMind modification. ++ def isDisulfideBonded(atom): ++ for b in self._bonds: ++ if (atom in b and b[0].name == 'SG' and ++ b[1].name == 'SG'): ++ return True ++ ++ return False + + cyx = [res for res in self.residues() if res.name == 'CYS' and isCyx(res)] + atomNames = [[atom.name for atom in res._atoms] for res in cyx] + for i in range(len(cyx)): + sg1 = cyx[i]._atoms[atomNames[i].index('SG')] + pos1 = positions[sg1.index] ++ candidate_distance, candidate_atom = 0.3*nanometers, None + for j in range(i): + sg2 = cyx[j]._atoms[atomNames[j].index('SG')] + pos2 = positions[sg2.index] + delta = [x-y for (x,y) in zip(pos1, pos2)] + distance = sqrt(delta[0]*delta[0] + delta[1]*delta[1] + delta[2]*delta[2]) +- if distance < 0.3*nanometers: +- self.addBond(sg1, sg2) ++ if distance < candidate_distance and not isDisulfideBonded(sg2): ++ candidate_distance = distance ++ candidate_atom = sg2 ++ # Assign bond to closest pair. ++ if candidate_atom: ++ self.addBond(sg1, candidate_atom) ++ ++ + + class Chain(object): + """A Chain object represents a chain within a Topology."""