Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
habrok:examples:alphafold [2023/11/02 12:00] fokkehabrok:examples:alphafold [2024/11/22 14:41] (current) admin
Line 1: Line 1:
 ====== AlphaFold ====== ====== AlphaFold ======
 +
 +===== AlphaFold 3 =====
 +
 +AlphaFold 3 is not available as module yet, and due to the complex installation this may still take a while. 
 +
 +Meanwhile, it should be possible to run AlphaFold 3 with an Apptainer container. You can either try to build your own container using the instructions at https://github.com/google-deepmind/alphafold3/blob/main/docs/installation.md (which requires you to first build it with Docker, then convert it to Singularity/Apptainer), or you can use a prebuilt container from Docker Hub, e.g. from https://hub.docker.com/r/bockpl/alphafold/tags. We will use the latter in the following examples.
 +
 +==== Pulling in the container image and AlphaFold 3 code ====
 +
 +<code>
 +cd /scratch/$USER
 +export APPTAINER_CACHEDIR=/scratch/$USER/apptainer_cache
 +apptainer pull docker://bockpl/alphafold:v3.0.0-22.04-1.0
 +</code>
 +
 +This will result in a container image file named ''alphafold_v3.0.0-22.04-1.0.sif''. Now clone the AlphaFold repository in the same directory using:
 +<code>
 +git clone https://github.com/google-deepmind/alphafold3.git
 +</code>
 +
 +==== Running the container ====
 +
 +You should now be able to run the code from the cloned GitHub repository in the container (which provides all the dependencies) by doing something like:
 +<code>
 +apptainer exec ./alphafold_v3.0.0-22.04-1.0.sif python3 alphafold3/run_alphafold.py
 +</code>
 +
 +When running on a GPU node, the GPU can be made available in the container by adding a ''--nv'' flag:
 +<code>
 +apptainer exec --nv ./alphafold_v3.0.0-22.04-1.0.sif python3 alphafold3/run_alphafold.py
 +</code>
 +
 +More examples can be found at https://github.com/google-deepmind/alphafold3/blob/main/docs/installation.md#build-the-singularity-container-from-the-docker-image, and more examples/information about Apptainer at https://wiki.hpc.rug.nl/habrok/examples/apptainer.
 +
 +==== Data files ====
 +
 +The genetic databases files that are required for AlphaFold 3 can be found at ''/scratch/public/AlphaFold/3.0''. Due to license restrictions, the model parameters are not available (yet). You can obtain these yourselves using the instructions provided at https://github.com/google-deepmind/alphafold3?tab=readme-ov-file#obtaining-model-parameters.
 +
 +===== AlphaFold 2 =====
  
 GPU versions of AlphaFold are now available on Peregrine. You can find the available versions using ''module avail AlphaFold'', and you can load the latest version using ''module load AlphaFold/2.3.1-foss-2022a-CUDA-11.7.0'' GPU versions of AlphaFold are now available on Peregrine. You can find the available versions using ''module avail AlphaFold'', and you can load the latest version using ''module load AlphaFold/2.3.1-foss-2022a-CUDA-11.7.0''
  
-===== Running AlphaFold =====+==== Running AlphaFold ====
 The module provides a simple ''alphafold'' symlink that points to the ''run_alphafold.py'' script, which means you can simply run ''alphafold'' with all required options (run ''alphafold %%--%%help'' to get more information). The module provides a simple ''alphafold'' symlink that points to the ''run_alphafold.py'' script, which means you can simply run ''alphafold'' with all required options (run ''alphafold %%--%%help'' to get more information).
  
 Note that the ''run_alphafold.py'' was tweaked a little bit, so that it knows where to find required commands like ''hhblits, hhsearch, jackhmmer, kalign''. This means that you do not have to provide the paths to these executables with options like ''%%--%%hhblits_binary_path''. Note that the ''run_alphafold.py'' was tweaked a little bit, so that it knows where to find required commands like ''hhblits, hhsearch, jackhmmer, kalign''. This means that you do not have to provide the paths to these executables with options like ''%%--%%hhblits_binary_path''.
  
-==== Running on a CPU node ====+=== Running on a CPU node ===
 By default, AlphaFold will try to use a GPU, and it even fails on nodes without a GPU. In order to instruct AlphaFold to run without a GPU, add the following to your job script: By default, AlphaFold will try to use a GPU, and it even fails on nodes without a GPU. In order to instruct AlphaFold to run without a GPU, add the following to your job script:
 <code> <code>
Line 14: Line 53:
 </code> </code>
  
-===== Controlling the number of CPU cores for HHblits and jackhmmer =====+==== Controlling the number of CPU cores for HHblits and jackhmmer ====
 The module allows you to control the number of cores used by the ''hhblits'' (default: 4 cores) and ''jackhmmer'' (default: 8 cores) tools by setting the environment variables ''$ALPHAFOLD_HHBLITS_N_CPU'' and/or ''$ALPHAFOLD_JACKHMMER_N_CPU''. You can override the default number of cores using, for instance, ''export ALPHAFOLD_HHBLITS_N_CPU=8''. Do note that these tools seem to run slower on more than 4/8 cores, but this may depend on your workload. The module allows you to control the number of cores used by the ''hhblits'' (default: 4 cores) and ''jackhmmer'' (default: 8 cores) tools by setting the environment variables ''$ALPHAFOLD_HHBLITS_N_CPU'' and/or ''$ALPHAFOLD_JACKHMMER_N_CPU''. You can override the default number of cores using, for instance, ''export ALPHAFOLD_HHBLITS_N_CPU=8''. Do note that these tools seem to run slower on more than 4/8 cores, but this may depend on your workload.
  
-===== Database files =====+==== Database files ====
  
 The large database files for the different AlphaFold versions are available in version-specific subdirectories at ''/scratch/public/AlphaFold/''. The large database files for the different AlphaFold versions are available in version-specific subdirectories at ''/scratch/public/AlphaFold/''.
Line 38: Line 77:
 </code> </code>
  
-==== Using fast local storage ====+=== Using fast local storage ===
  
 The I/O performance can be increased even further by copying the squashfs image file to fast local node storage first. All nodes have at least 1 TB of fast solid state storage available.  The I/O performance can be increased even further by copying the squashfs image file to fast local node storage first. All nodes have at least 1 TB of fast solid state storage available. 
Line 52: Line 91:
 </code> </code>
  
-===== Example of job script =====+==== Example of job script ====
  
 The following minimal examples can be used to submit an AlphaFold job to a regular (CPU) node or a V100 GPU node. The following minimal examples can be used to submit an AlphaFold job to a regular (CPU) node or a V100 GPU node.