Skip to content

AlphaFold2/fr

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.

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.

    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.

    virtualenv --no-download ~/alphafold_env
    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
    
    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. Figez 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
    

    Attention

    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.

  1. Configurez DOWNLOAD_DIR.

    (alphafold_env) [name@server ~] export DOWNLOAD_DIR=/datashare/alphafold
    

Par la suite, la structure des données sera semblable à ceci:

(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

Performance

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.

alphafold-2.3-cpu.sh
#!/bin/bash

#SBATCH --job-name=alphafold_run
#SBATCH --account=def-someprof    # ajustez ce paramètre à votre groupe comptable
#SBATCH --time=08:00:00           # ajustez ce paramètre au temps d'exécution souhaité
#SBATCH --cpus-per-task=8         # un MAXIMUM de 8 cœurs, AlphaFold n'a aucun avantage à en utiliser plus
#SBATCH --mem=20G                 # ajustez ce paramètre en fonction de la mémoire nécessaire

# Chargez les dépendances des modules.
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   # définissez le chemin approprié vers vos données téléchargées
INPUT_DIR=$SCRATCH/alphafold/input     # définissez le chemin approprié vers vos données d'entrée
OUTPUT_DIR=${SCRATCH}/alphafold/output # définissez le chemin approprié vers vos données de sortie

# Créez votre environnement virtuel dans $SLURM_TMPDIR.
virtualenv --no-download ${SLURM_TMPDIR}/env
source ${SLURM_TMPDIR}/env/bin/activate

# Installez AlphaFold et ses dépendances.
pip install --no-index --upgrade pip
pip install --no-index --requirement ~/alphafold-requirements.txt

# Modifiez avec les arguments appropriés et exécutez vos commandes.
# 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
alphafold-2.3-gpu.sh
#!/bin/bash

#SBATCH --job-name=alphafold_run
#SBATCH --account=def-someprof    # ajustez ce paramètre à votre groupe comptable
#SBATCH --time=08:00:00           # ajustez ce paramètre au temps d'exécution souhaité
#SBATCH --cpus-per-task=8         # un MAXIMUM de 8 cœurs, AlphaFold n'a aucun avantage à en utiliser plus
#SBATCH --gres=gpu:1              # une carte graphique (GPU) aide à accélérer la partie inférence seulement
#SBATCH --mem=20G                 # ajustez ce paramètre en fonction de la mémoire nécessaire

# Chargez les dépendances des modules.
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   # définissez le chemin approprié vers vos données téléchargées
INPUT_DIR=$SCRATCH/alphafold/input     # définissez le chemin approprié vers vos données d'entrée
OUTPUT_DIR=${SCRATCH}/alphafold/output # définissez le chemin approprié vers vos données de sortie

# Créez votre environnement virtuel dans $SLURM_TMPDIR.
virtualenv --no-download ${SLURM_TMPDIR}/env
source ${SLURM_TMPDIR}/env/bin/activate

# Installez AlphaFold et ses dépendances.
pip install --no-index --upgrade pip
pip install --no-index --requirement ~/alphafold-requirements.txt

# Modifiez avec les arguments appropriés et exécutez vos commandes.
# 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
alphafold-cpu.sh
#!/bin/bash

#SBATCH --job-name=alphafold_run
#SBATCH --account=def-someprof    # ajustez ce paramètre à votre groupe comptable
#SBATCH --time=08:00:00           # ajustez ce paramètre au temps d'exécution souhaité
#SBATCH --cpus-per-task=8         # un MAXIMUM de 8 cœurs, AlphaFold n'a aucun avantage à en utiliser plus
#SBATCH --mem=20G                 # ajustez ce paramètre en fonction de la mémoire nécessaire

# Chargez les dépendances des modules.
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   # définissez le chemin approprié vers vos données téléchargées
INPUT_DIR=$SCRATCH/alphafold/input     # définissez le chemin approprié vers vos données d'entrée
OUTPUT_DIR=${SCRATCH}/alphafold/output # définissez le chemin approprié vers vos données de sortie

# Créez votre environnement virtuel dans $SLURM_TMPDIR.
virtualenv --no-download ${SLURM_TMPDIR}/env
source ${SLURM_TMPDIR}/env/bin/activate

# Installez AlphaFold et ses dépendances.
pip install --no-index --upgrade pip
pip install --no-index --requirement ~/alphafold-requirements.txt

# Modifiez avec les arguments appropriés et exécutez vos commandes.
# Notez que l'option `--uniclust30_database_path` ci-dessous a été renommée
# `--uniref30_database_path` en version 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
alphafold-gpu.sh
#!/bin/bash

#SBATCH --job-name=alphafold_run
#SBATCH --account=def-someprof    # ajustez ce paramètre à votre groupe comptable
#SBATCH --time=08:00:00           # ajustez ce paramètre au temps d'exécution souhaité
#SBATCH --gres=gpu:1              # une carte graphique (GPU) aide à accélérer la partie inférence seulement
#SBATCH --cpus-per-task=8         # un MAXIMUM de 8 cœurs, AlphaFold n'a aucun avantage à en utiliser plus
#SBATCH --mem=20G                 # ajustez ce paramètre en fonction de la mémoire nécessaire

# Chargez les dépendances des modules.
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   # définissez le chemin approprié vers vos données téléchargées
INPUT_DIR=$SCRATCH/alphafold/input     # définissez le chemin approprié vers vos données d'entrée
OUTPUT_DIR=${SCRATCH}/alphafold/output # définissez le chemin approprié vers vos données de sortie

# Créez votre environnement virtuel dans $SLURM_TMPDIR.
virtualenv --no-download ${SLURM_TMPDIR}/env
source ${SLURM_TMPDIR}/env/bin/activate

# Installez AlphaFold et ses dépendances.
pip install --no-index --upgrade pip
pip install --no-index --requirement ~/alphafold-requirements.txt

# Modifiez avec les arguments appropriés et exécutez vos commandes.
# Notez que l'option `--uniclust30_database_path` ci-dessous a été renommée
# `--uniref30_database_path` en version 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 touche tab 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 exemple download_pdb.sh.