AlphaFold
AlphaFold est un modèle d'apprentissage automatique pour la prédiction du repliement des protéines.
Nous expliquons ici comment utiliser la version AlphaFold v2.0 présentée au CASP14 et dont un compte-rendu a été publié dans Nature.
Le code source et la documentation se trouvent sur cette page GitHub. Toute publication mentionnant des résultats obtenus par l'utilisation du code source ou des paramètres de modèle doit citer cette publication.
Versions disponibles
AlphaFold est disponible sur nos grappes dans les paquets Python préconstruits (wheels). Vous pouvez afficher les versions disponibles avec la commande avail_wheels
.
[name@server ~]$ avail_wheels alphafold --all-versions
name version python arch
--------- --------- -------- -------
alphafold 2.3.1 py3 generic
alphafold 2.3.0 py3 generic
alphafold 2.2.4 py3 generic
alphafold 2.2.3 py3 generic
alphafold 2.2.2 py3 generic
alphafold 2.2.1 py3 generic
alphafold 2.1.1 py3 generic
alphafold 2.0.0 py3 generic
Installer AlphaFold dans un environnement virtuel Python
1. Chargez les dépendances d'AlphaFold.
[name@server ~]$ module load StdEnv/2020 gcc/9.3.0 openmpi/4.0.3 cuda/11.4 cudnn/8.2.0 kalign/2.03 hmmer/3.2.1 openmm-alphafold/7.5.1 hh-suite/3.3.0 python/3.8
Python 3.7 et 3.8 sont supportés depuis juillet 2022.
2. Créez et activez un environnement virtuel Python.
[name@server ~]$ virtualenv --no-download ~/alphafold_env
[name@server ~]$ source ~/alphafold_env/bin/activate
3. Installez une version spécifique d'AlphaFold et ses dépendances Python.
(alphafold_env) [name@server ~] pip install --no-index --upgrade pip
(alphafold_env) [name@server ~] pip install --no-index alphafold==X.Y.Z
où X.Y.Z
représente le numéro de la version, par exemple 2.2.4
.
Pour installer la plus récente version disponible pour nos grappes, n'indiquez pas de version.
4. Validez.
(alphafold_env) [name@server ~] run_alphafold.py --help
5. Gelez l'environnement et les dépendances.
(alphafold_env) [name@server ~] pip freeze > ~/alphafold-requirements.txt
Bases de données
AlphaFold requiert un jeu de bases de données.
Les bases de données sont disponibles dans /cvmfs/bio.data.computecanada.ca/content/databases/Core/alphafold2_dbs/2023_07/
.
Les bases de données AlphaFold sont mises à jour annuellement dans CVMFS. La mise à jour de janvier 2024 est disponible dans le répertoire 2024_01
.
(alphafold_env) [name@server ~] export DOWNLOAD_DIR=/cvmfs/bio.data.computecanada.ca/content/databases/Core/alphafold2_dbs/2023_07/
Vous pouvez aussi télécharger les bases de données localement dans votre répertoire /scratch.
Important : Les bases de données doivent se trouver dans le répertoire $SCRATCH
.
1. Créez le répertoire de données à partir d'un nœud de connexion ou d'un nœud de transfert de données (DTN).
(alphafold_env) [name@server ~] export DOWNLOAD_DIR=$SCRATCH/alphafold/data
(alphafold_env) [name@server ~] mkdir -p $DOWNLOAD_DIR
2. Lorsque vos modules sont chargés et votre environnement virtuel est activé, vous pouvez télécharger les données.
(alphafold_env) [name@server ~] download_all_data.sh $DOWNLOAD_DIR
Ceci ne doit pas se faire à partir d'un nœud de calcul. Sur les grappes qui ont des nœuds de transfert de données (DTN), utilisez ce type de nœud (voir la page Transfert de données); autrement, utilisez un nœud de connexion. Puisque la durée du téléchargement peut prendre une journée complète, nous vous suggérons d'utiliser plutôt un multiplexeur de terminal.
Il est possible que vous obteniez le message d'erreur Client_loop: send disconnect: Broken pipe
; voir Dépannage ci-dessous.
Par la suite, la structure des données sera semblable à ceci%nbsp;:
(alphafold_env) [name@server ~] tree -d $DOWNLOAD_DIR
$DOWNLOAD_DIR/ # ~ 2.6 TB (total)
bfd/ # ~ 1.8 TB
# 6 files
mgnify/ # ~ 120 GB
mgy_clusters.fa
params/ # ~ 5.3 GB
# LICENSE
# 15 models
# 16 files (total)
pdb70/ # ~ 56 GB
# 9 files
pdb_mmcif/ # ~ 246 GB
mmcif_files/
# 202,764 files
obsolete.dat
pdb_seqres/ # ~ 237 MB
pdb_seqres.txt
uniprot/ # ~ 111 GB
uniprot.fasta
uniref30/ # ~ 206 GB
# 7 files
uniref90/ # ~ 73 GB
uniref90.fasta
(alphafold_env) [name@server ~] tree -d $DOWNLOAD_DIR
$DOWNLOAD_DIR/ # Total: ~ 2.2 TB (download: 428 GB)
bfd/ # ~ 1.8 TB (download: 271.6 GB)
# 6 files.
mgnify/ # ~ 64 GB (download: 32.9 GB)
mgy_clusters.fa
params/ # ~ 3.5 GB (download: 3.5 GB)
# 5 CASP14 models,
# 5 pTM models,
# LICENSE,
# = 11 files.
pdb70/ # ~ 56 GB (download: 19.5 GB)
# 9 files.
pdb_mmcif/ # ~ 206 GB (download: 46 GB)
mmcif_files/
# About 180,000 .cif files.
obsolete.dat
uniclust30/ # ~ 87 GB (download: 24.9 GB)
uniclust30_2018_08/
# 13 files.
uniref90/ # ~ 59 GB (download: 29.7 GB)
uniref90.fasta
Exécuter AlphaFold
Vous pouvez demander au plus 8 cœurs lors de l'exécution d'AlphaFold car il est codé en dur (hardcoded) pour ne pas en utiliser plus et ne bénéficie pas d'en utiliser davantage.
Modifiez un des scripts de soumission suivants, selon vos besoins.
#!/bin/bash
#SBATCH --job-name=alphafold_run
#SBATCH --account=def-someprof # adjust this to match the accounting group you are using to submit jobs
#SBATCH --time=08:00:00 # adjust this to match the walltime of your job
#SBATCH --cpus-per-task=8 # a MAXIMUM of 8 core, AlphaFold has no benefit to use more
#SBATCH --mem=20G # adjust this according to the memory you need
# Load modules dependencies.
module load StdEnv/2020 gcc/9.3.0 openmpi/4.0.3 cuda/11.4 cudnn/8.2.0 kalign/2.03 hmmer/3.2.1 openmm-alphafold/7.5.1 hh-suite/3.3.0 python/3.8
DOWNLOAD_DIR=$SCRATCH/alphafold/data # set the appropriate path to your downloaded data
INPUT_DIR=$SCRATCH/alphafold/input # set the appropriate path to your input data
OUTPUT_DIR=${SCRATCH}/alphafold/output # set the appropriate path to your output data
# Generate your virtual environment in $SLURM_TMPDIR.
virtualenv --no-download ${SLURM_TMPDIR}/env
source ${SLURM_TMPDIR}/env/bin/activate
# Install AlphaFold and its dependencies.
pip install --no-index --upgrade pip
pip install --no-index --requirement ~/alphafold-requirements.txt
# Edit with the proper arguments and run your commands.
# run_alphafold.py --help
run_alphafold.py \
--fasta_paths=${INPUT_DIR}/YourSequence.fasta,${INPUT_DIR}/AnotherSequence.fasta \
--output_dir=${OUTPUT_DIR} \
--data_dir=${DOWNLOAD_DIR} \
--db_preset=full_dbs \
--model_preset=multimer \
--bfd_database_path=${DOWNLOAD_DIR}/bfd/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt \
--mgnify_database_path=${DOWNLOAD_DIR}/mgnify/mgy_clusters_2022_05.fa \
--pdb70_database_path=${DOWNLOAD_DIR}/pdb70/pdb70 \
--template_mmcif_dir=${DOWNLOAD_DIR}/pdb_mmcif/mmcif_files \
--obsolete_pdbs_path=${DOWNLOAD_DIR}/pdb_mmcif/obsolete.dat \
--pdb_seqres_database_path=${DOWNLOAD_DIR}/pdb_seqres/pdb_seqres.txt \
--uniprot_database_path=${DOWNLOAD_DIR}/uniprot/uniprot.fasta \
--uniref30_database_path=${DOWNLOAD_DIR}/uniref30/UniRef30_2021_03 \
--uniref90_database_path=${DOWNLOAD_DIR}/uniref90/uniref90.fasta \
--hhblits_binary_path=${EBROOTHHMINSUITE}/bin/hhblits \
--hhsearch_binary_path=${EBROOTHHMINSUITE}/bin/hhsearch \
--jackhmmer_binary_path=${EBROOTHMMER}/bin/jackhmmer \
--kalign_binary_path=${EBROOTKALIGN}/bin/kalign \
--max_template_date=2022-01-01 \
--use_gpu_relax=False
#!/bin/bash
#SBATCH --job-name=alphafold_run
#SBATCH --account=def-someprof # adjust this to match the accounting group you are using to submit jobs
#SBATCH --time=08:00:00 # adjust this to match the walltime of your job
#SBATCH --cpus-per-task=8 # a MAXIMUM of 8 core, AlphaFold has no benefit to use more
#SBATCH --gres=gpu:1 # a GPU helps to accelerate the inference part only
#SBATCH --mem=20G # adjust this according to the memory you need
# Load modules dependencies.
module load StdEnv/2020 gcc/9.3.0 openmpi/4.0.3 cuda/11.4 cudnn/8.2.0 kalign/2.03 hmmer/3.2.1 openmm-alphafold/7.5.1 hh-suite/3.3.0 python/3.8
DOWNLOAD_DIR=$SCRATCH/alphafold/data # set the appropriate path to your downloaded data
INPUT_DIR=$SCRATCH/alphafold/input # set the appropriate path to your input data
OUTPUT_DIR=${SCRATCH}/alphafold/output # set the appropriate path to your output data
# Generate your virtual environment in $SLURM_TMPDIR.
virtualenv --no-download ${SLURM_TMPDIR}/env
source ${SLURM_TMPDIR}/env/bin/activate
# Install AlphaFold and its dependencies.
pip install --no-index --upgrade pip
pip install --no-index --requirement ~/alphafold-requirements.txt
# Edit with the proper arguments and run your commands.
# run_alphafold.py --help
run_alphafold.py \
--fasta_paths=${INPUT_DIR}/YourSequence.fasta,${INPUT_DIR}/AnotherSequence.fasta \
--output_dir=${OUTPUT_DIR} \
--data_dir=${DOWNLOAD_DIR} \
--db_preset=full_dbs \
--model_preset=multimer \
--bfd_database_path=${DOWNLOAD_DIR}/bfd/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt \
--mgnify_database_path=${DOWNLOAD_DIR}/mgnify/mgy_clusters_2022_05.fa \
--pdb70_database_path=${DOWNLOAD_DIR}/pdb70/pdb70 \
--template_mmcif_dir=${DOWNLOAD_DIR}/pdb_mmcif/mmcif_files \
--obsolete_pdbs_path=${DOWNLOAD_DIR}/pdb_mmcif/obsolete.dat \
--pdb_seqres_database_path=${DOWNLOAD_DIR}/pdb_seqres/pdb_seqres.txt \
--uniprot_database_path=${DOWNLOAD_DIR}/uniprot/uniprot.fasta \
--uniref30_database_path=${DOWNLOAD_DIR}/uniref30/UniRef30_2021_03 \
--uniref90_database_path=${DOWNLOAD_DIR}/uniref90/uniref90.fasta \
--hhblits_binary_path=${EBROOTHHMINSUITE}/bin/hhblits \
--hhsearch_binary_path=${EBROOTHHMINSUITE}/bin/hhsearch \
--jackhmmer_binary_path=${EBROOTHMMER}/bin/jackhmmer \
--kalign_binary_path=${EBROOTKALIGN}/bin/kalign \
--max_template_date=2022-01-01 \
--use_gpu_relax=True
#!/bin/bash
#SBATCH --job-name=alphafold_run
#SBATCH --account=def-someprof # adjust this to match the accounting group you are using to submit jobs
#SBATCH --time=08:00:00 # adjust this to match the walltime of your job
#SBATCH --cpus-per-task=8 # a MAXIMUM of 8 core, AlphaFold has no benefit to use more
#SBATCH --mem=20G # adjust this according to the memory you need
# Load modules dependencies.
module load StdEnv/2020 gcc/9.3.0 openmpi/4.0.3 cuda/11.4 cudnn/8.2.0 kalign/2.03 hmmer/3.2.1 openmm-alphafold/7.5.1 hh-suite/3.3.0 python/3.8
DOWNLOAD_DIR=$SCRATCH/alphafold/data # set the appropriate path to your downloaded data
INPUT_DIR=$SCRATCH/alphafold/input # set the appropriate path to your input data
OUTPUT_DIR=${SCRATCH}/alphafold/output # set the appropriate path to your output data
# Generate your virtual environment in $SLURM_TMPDIR.
virtualenv --no-download ${SLURM_TMPDIR}/env
source ${SLURM_TMPDIR}/env/bin/activate
# Install AlphaFold and its dependencies.
pip install --no-index --upgrade pip
pip install --no-index --requirement ~/alphafold-requirements.txt
# Edit with the proper arguments and run your commands.
# Note that the `--uniclust30_database_path` option below was renamed to
# `--uniref30_database_path` in 2.3.
# run_alphafold.py --help
run_alphafold.py \
--fasta_paths=${INPUT_DIR}/YourSequence.fasta,${INPUT_DIR}/AnotherSequence.fasta \
--output_dir=${OUTPUT_DIR} \
--data_dir=${DOWNLOAD_DIR} \
--model_preset=monomer_casp14 \
--bfd_database_path=${DOWNLOAD_DIR}/bfd/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt \
--mgnify_database_path=${DOWNLOAD_DIR}/mgnify/mgy_clusters_2018_12.fa \
--pdb70_database_path=${DOWNLOAD_DIR}/pdb70/pdb70 \
--template_mmcif_dir=${DOWNLOAD_DIR}/pdb_mmcif/mmcif_files \
--obsolete_pdbs_path=${DOWNLOAD_DIR}/pdb_mmcif/obsolete.dat \
--uniclust30_database_path=${DOWNLOAD_DIR}/uniclust30/uniclust30_2018_08/uniclust30_2018_08 \
--uniref90_database_path=${DOWNLOAD_DIR}/uniref90/uniref90.fasta \
--hhblits_binary_path=${EBROOTHHMINSUITE}/bin/hhblits \
--hhsearch_binary_path=${EBROOTHHMINSUITE}/bin/hhsearch \
--jackhmmer_binary_path=${EBROOTHMMER}/bin/jackhmmer \
--kalign_binary_path=${EBROOTKALIGN}/bin/kalign \
--max_template_date=2020-05-14 \
--use_gpu_relax=False
#!/bin/bash
#SBATCH --job-name=alphafold_run
#SBATCH --account=def-someprof # adjust this to match the accounting group you are using to submit jobs
#SBATCH --time=08:00:00 # adjust this to match the walltime of your job
#SBATCH --gres=gpu:1 # a GPU helps to accelerate the inference part only
#SBATCH --cpus-per-task=8 # a MAXIMUM of 8 core, AlphaFold has no benefit to use more
#SBATCH --mem=20G # adjust this according to the memory you need
# Load modules dependencies.
module load StdEnv/2020 gcc/9.3.0 openmpi/4.0.3 cuda/11.4 cudnn/8.2.0 kalign/2.03 hmmer/3.2.1 openmm-alphafold/7.5.1 hh-suite/3.3.0 python/3.8
DOWNLOAD_DIR=$SCRATCH/alphafold/data # set the appropriate path to your downloaded data
INPUT_DIR=$SCRATCH/alphafold/input # set the appropriate path to your input data
OUTPUT_DIR=${SCRATCH}/alphafold/output # set the appropriate path to your output data
# Generate your virtual environment in $SLURM_TMPDIR.
virtualenv --no-download ${SLURM_TMPDIR}/env
source ${SLURM_TMPDIR}/env/bin/activate
# Install AlphaFold and its dependencies.
pip install --no-index --upgrade pip
pip install --no-index --requirement ~/alphafold-requirements.txt
# Edit with the proper arguments and run your commands.
# Note that the `--uniclust30_database_path` option below was renamed to
# `--uniref30_database_path` in 2.3.
# run_alphafold.py --help
run_alphafold.py \
--fasta_paths=${INPUT_DIR}/YourSequence.fasta,${INPUT_DIR}/AnotherSequence.fasta \
--output_dir=${OUTPUT_DIR} \
--data_dir=${DOWNLOAD_DIR} \
--model_preset=monomer_casp14 \
--bfd_database_path=${DOWNLOAD_DIR}/bfd/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt \
--mgnify_database_path=${DOWNLOAD_DIR}/mgnify/mgy_clusters_2018_12.fa \
--pdb70_database_path=${DOWNLOAD_DIR}/pdb70/pdb70 \
--template_mmcif_dir=${DOWNLOAD_DIR}/pdb_mmcif/mmcif_files \
--obsolete_pdbs_path=${DOWNLOAD_DIR}/pdb_mmcif/obsolete.dat \
--uniclust30_database_path=${DOWNLOAD_DIR}/uniclust30/uniclust30_2018_08/uniclust30_2018_08 \
--uniref90_database_path=${DOWNLOAD_DIR}/uniref90/uniref90.fasta \
--hhblits_binary_path=${EBROOTHHMINSUITE}/bin/hhblits \
--hhsearch_binary_path=${EBROOTHHMINSUITE}/bin/hhsearch \
--jackhmmer_binary_path=${EBROOTHMMER}/bin/jackhmmer \
--kalign_binary_path=${EBROOTKALIGN}/bin/kalign \
--max_template_date=2020-05-14 \
--use_gpu_relax=True
Soumettez la tâche à l'ordonnanceur.
(alphafold_env) [name@server ~] sbatch --job-name alphafold-X alphafold-gpu.sh
Dépannage
Message d'erreur Broken pipe
Au téléchargement de la base de données, vous pourriez obtenir le message d'erreur Client_loop: send disconnect: Broken pipe
. Il est difficile de déterminer la cause exacte de ce message. Il pourrait tout simplement s'agir qu'un nombre élevé d'utilisateurs travaillent sur le nœud de connexion en même temps, ce qui vous laisse moins de place pour téléverser des données.
- Une solution est d'utiliser un multiplexeur de terminal. Il n'est pas impossible d'obtenir le message d'erreur, mais les chances sont moindres.
- Une deuxième solution est d'utiliser la base de données qui se trouve sur la grappe.
/cvmfs/bio.data.computecanada.ca/content/databases/Core/alphafold2_dbs/2023_07/
.
- Une autre solution est de télécharger la base de données par sections. Pour avoir accès aux scripts de téléchargement après avoir chargé le module et activé votre environnement virtuel, il faut simplement entrer
download_
dans votre terminal et taper deux fois sur la touchetab
du clavier pour voir tous les scripts disponibles. Vous pouvez télécharger manuellement les sections de la base de données en utilisant le script disponible, par exempledownload_pdb.sh
.