Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
fr:impilopedia:genex:rnaseq:airway_project:index_creation_main [2026/02/12 15:21] – [Téléchargement des fichiers d'annotation] foisysfr:impilopedia:genex:rnaseq:airway_project:index_creation_main [2026/02/18 16:05] (Version actuelle) – [Création des index : usage de scripts pour SLURM] foisys
Ligne 12: Ligne 12:
   * Pour commencer, il faut aller chercher les fichiers d'annotation sur le site du projet Gencode. En partant de notre espace personnel (''$HOME''), on se dirige là où l'on désire mettre les index pour la suite:   * Pour commencer, il faut aller chercher les fichiers d'annotation sur le site du projet Gencode. En partant de notre espace personnel (''$HOME''), on se dirige là où l'on désire mettre les index pour la suite:
 <sxh bash> <sxh bash>
-# On assume que l'on se dirige vers /shares/data/indexes +# On assume que l'on se dirige vers /shares/data pour créer 
-# Ajuster en fonction de votre environnement +# les répertoires nécessaires 
-cd /shares/data/indexes +# Ajuster en fonction de votre environnement, évidemment! 
-% mkdir gencode_annotations+mkdir /shares/data/indexes 
 +% mkdir /shares/data/annotations 
 +% cd /shares/data/annotations 
 +% mkdir gencode
 # Dernière version en date # Dernière version en date
-% mkdir gencode_annotations/r49 +% mkdir gencode/r49 
-% cd gencode_annotations/r49+% cd gencode/r49
 # Fichier avec les annotations complètes en format GTF # Fichier avec les annotations complètes en format GTF
 % curl -L -O https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_49/gencode.v49.annotation.gtf.gz % curl -L -O https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_49/gencode.v49.annotation.gtf.gz
Ligne 31: Ligne 34:
 </sxh> </sxh>
  
-  * Si une nouvelle version (disons r50) est publiée, simplement créez un répertoire sous ''/shares/data/indexes/gencode_annotations'' et téléchargez les nouvelles versions.+  * Si une nouvelle version (disons r50) est publiée, simplement créez un répertoire sous ''/shares/data/annotations/gencode'' et téléchargez les nouvelles versions.
  
 ==== Création des index : usage de scripts pour SLURM ==== ==== Création des index : usage de scripts pour SLURM ====
 +
 +Créer les index pour les outils d'alignement est un processus exigeant et le premier exemple où l'utilisation d'une grappe de calcul et d'un système de gestion des tâches qui y réside est un atout. Dans le cas de la création des index, on est confronté à quelques problèmes:
 +
 +  * C'est un processus qui prend du temps... Les outils sont capables d'opérations multi-fils pour accélérer la tâche alors plus on a de coeurs de calcul, plus ça se fera rapidement.
 +  * C'est un processus qui construit des structures de données qui habitent en premier en mémoire vive et ça demande beaucoup, beaucoup de mémoire vive.
 +
 +Si on prend pour exemple la grappe de calcul Rorqual, on y trouve des serveurs qui ont tout ce que nous aurons de besoin, il faut simplement leur dire commente faire. En passant, faire cette construction sur une grappe SuperClafoutis n'est pas une option: certaines opérations d'indexation demandent des centaine de Gb de mémoire vive :-( Cependant, une fois les index construits, on peut les télécharger pour utilisation locale car ces fichiers sont indépendants de la plateforme où ils ont été calculés.
 +
 +Comme ce sont des tâches qui demandent du temps (plusieurs minutes à plusieurs heures), c'est le moment idéal pour apprendre à utiliser SLURM. À la base, SLURM est un système où un usager soumet des actions (interactives ou scriptées) via une application (''srun'' ou ''sbatch'') à une queue de traitement qui gèrera la suite des choses. Une fois la tâche assignée à un noeud de calcul, elle s'exécute indépendamment de votre attention (dans le cas de ''sbatch'').
  
 === Création des index pour HISAT2 === === Création des index pour HISAT2 ===
 +
 +  * HISAT2 construit une série de fichiers qui constituera l'index servant à chercher le meilleur alignement pour chaque séquence sur un génome de référence. Il profite des informations sur la position des exons et des sites d'épissage contenus dans un fichier d'annotations en format GTF et, dans le cas de H. sapiens, il peut aussi utiliser un fichier contenant les infos des variations génétiques, soit en format VCF ou bien en provenance de UCSC avec son format particulier. Si ces fichiers sont disponibles (et ils le sont dans les archives publiques), on utilise des scripts écrit en Python pour créer des fichiers intermédiaires qui seront utiliser par l'utilitaire ''hisat2-build'' pour construire les fichiers nécessaires.
 +
 +  * Pour commencer, on passe par les scripts Python pour la création des fichiers intermédaires:
 +<sxh bash>
 +# On crée l'arborescence nécessaire sous /shares/data
 +% cd /shares/data/indexes
 +% mkdir hisat2_indexes
 +% mkdir hisat2_indexes/r49 
 +% mkdir hisat2_indexes/r49/interim_files
 +
 +# Ici, on assume que HISAT2 est sur le $PATH; les scripts devraient se trouver 
 +# au même niveau que l'application.
 +% cd hisat2_indexes/r49/interim_files
 +# Il faut rediriger la sortie vers un fichier sinon ça sort sur STDOUT...
 +% hisat2_extract_extract_exons.py /shares/data/annotations/gencode/r49/gencode.v49.annotation.gtf > ./gencode_r49_ss.txt
 +% hisat2_extract_extract_splice_sites.py /shares/data/annotations/gencode/r49/gencode.v49.annotation.gtf > ./gencode_r49_ss.txt
 +# Etape facultative: extraction des infos pour les variations génétiques
 +# Dernière version disponible
 +% curl -L -O http://hgdownload.soe.ucsc.edu/goldenPath/hg38/database/snp151Common.txt.gz
 +% gunzip snp151Common.txt.gz
 +# Ici, le script est un peu plus exigeant... Ça prend plus de temps que les étapes précédentes.
 +% hisat2_extract_snps_haplotypes_UCSC.py /shares/data/annotations/gencode/r49/GRCh38.primary_assembly.genome.fa ./snp151Common.txt gencode_r49_snp_haplo
 +</sxh>
 +
 +  * Ok, pour la suite, ça nous prend un serveur bien doté en mémoire vive et SLURM pour lancer cette tâche. Il nous faut écrire un script ''bash'' qui sera donner en entrée à l'application ''sbatch'' pour soumettre à l'ordonnanceur de tâches de SLURM. On doit écrire dans l'entête du script des instructions qui seront lues par l'ordonnanceur et qui permettront d'utiliser les bonnes ressources pour l'exécution. Le script qui suit est simplement un exemple capable de rouler sur ''rorqual''; une autre grappe nécessitera fort probablement des instructions différentes.
 +  * À l'aide de ''nano'', écrire le texte suivant:
 +<sxh bash>
 +Plus à venir...
 +</sxh> 
  
   * Plus à venir...   * Plus à venir...