Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur. ====== Mise en pratique des méthodes d'analyse de l'expression génique grâce aux données utilisées par le package airway: création des index nécessaires aux outils d'alignement ====== ===== Introduction ===== * Ici, on va avoir notre première application de l'utilisation de SLURM :-) La construction des index demande à la base un ensemble de fichiers contenant les informations décrivant notre génome d'intérêt. Il y a plusieurs sources potentiels de tels fichiers mais un bon point de départ lorsqu'on travaille avec H. sapiens est le site du projet [[https://www.gencodegenes.org|Gencode]]. Gencode est un effort international de construction des annotations provenant de diverses sources publiques en y mettant une couche de curation humaine et pas simplement construit programmatiquement. Comme ce processus d'annotation est en mutation constante, Gencode crée les fichiers sous la forme de versions (//releases//) qui sont publiés sur une base semi-régulière. * Deuxième application de SLURM sur grappe de calcul: construire les index. Nous allons utiliser trois approches d'alignement: via HISAT2, via STAR et via Salmon. Dans tous les cas, créer les index pour chaque outil profite de l'usage d'une grappe de calcul: la création est accélérée par une exécution multi-fils (//multi-threaded//) et dans tous les cas, demande une très grande quantité de mémoire pour s'exécuter. Comme il faut créer les index à chaque nouvelle version de Gencode (ou de tout autre fichier d'annotation), mettre ce processus dans un script facile à éditer facilite le travail. ===== Procédure ===== ==== Téléchargement des fichiers d'annotation ==== * 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> # On assume que l'on se dirige vers /shares/data pour créer # les répertoires nécessaires # Ajuster en fonction de votre environnement, évidemment! % mkdir /shares/data/indexes % mkdir /shares/data/annotations % cd /shares/data/annotations % mkdir gencode # Dernière version en date % mkdir gencode/r49 % cd gencode/r49 # 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 # Fichier avec les annotations complètes en format GFF3 % curl -L -O https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_49/gencode.v49.annotation.gff3.gz # Fichier FASTA des transcrits pour protéines, utilisé par Salmon % curl -L -O https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_49/gencode.v49.pc_transcripts.fa.gz # Fichier FASTA du genome humain, GRCh38 % curl -L -O https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_49/GRCh38.primary_assembly.genome.fa.gz # Decompression des fichiers % for i in `ls | grep gz`; do gunzip $i; done </sxh> * 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é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 === * 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... === Création des index pour STAR === * Plus à venir... === Création des index pour Salmon === * Plus à venir...