{"id":22367946,"url":"https://github.com/dridk/tp_snakemake","last_synced_at":"2026-01-06T14:06:58.051Z","repository":{"id":54254483,"uuid":"122175808","full_name":"dridk/tp_snakemake","owner":"dridk","description":"tp pour les master de bioinfo","archived":false,"fork":false,"pushed_at":"2021-03-01T11:13:40.000Z","size":158,"stargazers_count":4,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-31T17:52:32.340Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dridk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-02-20T09:06:38.000Z","updated_at":"2021-07-25T16:42:13.000Z","dependencies_parsed_at":"2022-08-13T10:10:24.392Z","dependency_job_id":null,"html_url":"https://github.com/dridk/tp_snakemake","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dridk%2Ftp_snakemake","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dridk%2Ftp_snakemake/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dridk%2Ftp_snakemake/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dridk%2Ftp_snakemake/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dridk","download_url":"https://codeload.github.com/dridk/tp_snakemake/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245689509,"owners_count":20656417,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-04T18:25:18.333Z","updated_at":"2026-01-06T14:06:58.019Z","avatar_url":"https://github.com/dridk.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Objectif \n5 colonies de bactéries E.coli ont été séquencées en NGS.    \nAprès avoir aligné ces 5 fichiers fastq sur un génome de référence, vous devez identifier les mutations spécifiques à chaque colonie ( Les données ont été simulées avec [wgsim](https://github.com/lh3/wgsim) pour permettre un calcul rapide sur une machine standard ).     \nPour cela, vous devez réaliser un pipeline snakemake décrivant l'ensemble des étapes pour passer d'un fichier [fastq](https://fr.wikipedia.org/wiki/FASTQ) à un fichier [vcf](https://en.wikipedia.org/wiki/Variant_Call_Format).    \nLes étapes de votre pipeline sont les suivantes :    \n\n- Indexer le génome de référence avec **bwa** index\n- Aligner le fastq sur le génome de référence avec **bwa** (*.fastq \u003e *.sam)\n- Convertir le SAM en BAM avec **samtools** (*.sam \u003e *.bam)\n- Trier par position les reads alignés avec **samtools** L *.bam \u003e *.sort.bam)\n- Indexer le bam avec **samtools** ( *.bam \u003e *.bai )\n- Appeler les variants avec freebayes (*.bam \u003e *.vcf ) \n- Conserver les variants de bonne qualité ( *.vcf \u003e *.filter.vcf )\n\n# Installation des dépendances\nPour cet exercice, vous avez besoin de : samtools, bwa, bcftools, tabix, snakemake.\n\n## Installation via conda\nDans la situation (très fréquente) ou vous n'êtes pas administrateur, installer vos dépendances par l'intermédiaire de [conda](https://conda.io/miniconda.html).     \nPour installer conda :    \n\n    wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh\n    chmod +x Miniconda3-latest-Linux-x86_64.sh      \n    ./Miniconda3-latest-Linux-x86_64.sh\n\nAjouter les dépôts bioconda pour avoir accès au catalogue des outils de bioinformatique:\n\n    conda config --add channels defaults\n    conda config --add channels conda-forge\n    conda config --add channels bioconda\n\nCrée un environnement appelé \"master_big\":\n\n        conda create -n master_big\n\nActiver/Désactiver l'environnement: \n\n       source activate master_big\n       source deactivate\n\nInstaller les applications dans l'environnement:  \n\n      conda install bwa samtools snakemake bcftools tabix\n\nTélécharger les données du TP: \n\n    git clone git@github.com:dridk/tp_snakemake.git\n\n### Question 1: \n- Combien de bases dans genom/ecoli.fa ? \n- Combien de reads dans sample1.fastq ? \n\n    \u003e Indice : Utiliser cat, grep et wc \n\n# Ligne de commande des étapes \nLes commandes de chaque étape sont décrite ci-dessous.    \nDans un premier temps, essayer manuellement d’exécuter chaque commande à partir du fichier *sample1.fastq*.\n\nIndexer le génome *ecoli.fa*: \n\n    bwa index genom/ecoli.fa \n\n### Question 2:\n- Pourquoi indexer le génome ? \n\nAlignement de *sample1.fastq*: \n\n    bwa mem genom/ecoli.fa sample1.fastq \u003e sample1.sam \n\nTrie du bam par ordre de position et conversion en fichier BAM: \n\n    samtools sort -O BAM sample1.sam \u003e sample1.bam\n\n### Question 3:\n- Afficher le contenu du fichier SAM et du fichier BAM avec **less** \n- Quel est la différence entre un fichier SAM et BAM ?  \n- Afficher la position (colonne 4) et la séquence (colonne 10) des reads alignés. `` samtools view -F4 sample1.bam |cut -f4,10 ``\n\nIndexer le bam:\n\n    samtools index sample1.bam \n\n### Question 4:\nVisualiser votre alignement avec [IGV](http://software.broadinstitute.org/software/igv/) ou samtools:    \n    `` samtools tview sample1.bam ``      \n    `` samtools tview sample1.bam genom/ecoli.fa `` \n\n- A quoi correspond toutes les variations observés  ? \n- Évaluer la profondeur ? \n\n### Question 5:\n\nFaire le variant calling avec freebayes.\n\n    freebayes -f genom/ecoli.fa sample1.bam \u003esample.vcf\n\nCompresser et indexer le fichier \n\n    bgzip sample1.vcf     # Produit un vcf.gz\n    tabix sample1.vcf.gz  # Produit un vcf.gz.tbi\n\n### Question 6:\n- Afficher le fichier *sample1.vcf*.\n- Quel(s) variant(s) avez-vous trouvé pour l'échantillon *sample1* ? \n\n## Création du pipeline avec snakemake \n\nCréer un fichier *Snakefile*. Ce fichier contient des \"*règles*\" ou \"*rule*\" permettant de définir comment passer d'un fichier à un autre. Ces règles sont dans l'ordre que vous voulez. En demandant à **snakemake** de produire, par exemple le fichier *sample2.bam*, il trouvera et exécutera lui même l'ensemble des règles pour produire ce fichier.    \n\nExemple avec la règle de conversion d'un sam en bam:\n\n    rule sam2bam:\n        input:\n            \"{sample}.sam\"\n        output:\n            \"{sample}.bam\"\n        shell:\n            \"samtools view -b {input} \u003e {output}\"\n\nCette règle peut se lire ainsi :    \n\" Pour produire le fichier *{qqch}.bam*, j'ai besoin du fichier *{qqch}.sam*. Si le fichier *{qqch}.sam* est absent trouver la règle pour le produire. Et ainsi de suite. \n\n### Question 7:\n- Créer la règle d'alignement vu plus haut.  \n- Tester votre règle avec la commande suivante (-n: ne rien faire  -p afficher les commandes)    \n    ``snakemake -np sample3.sam``     \n    ``snakemake -np sample4.sam ``\n\n\n### Question 8: \n\nEssayer de créer les autres règles jusqu'au *{sample}.vcf.gz* à l'aide des commandes définies plus haut. Si vous n'y arrivez pas, vous pouvez vous aider, de la [doc officielle](https://snakemake.readthedocs.io/en/stable/) et en dernier recours de la [correction](https://github.com/dridk/tp_snakemake/blob/master/Snakefile.correction).    \nTester alors votre pipeline :     \n\n    snakemake -np sample1.vcf.gz\n    snakemake -np sample2.vcf.gz\n    snakemake -np sample3.vcf.gz\n    snakemake -np sample1.vcf.gz sample2.vcf.gz sample3.vcf.gz \n\nExécuter votre pipeline sur 4 coeurs:\n\n    snakemake -p sample1.vcf.gz sample2.vcf.gz sample3.vcf.gz --cores 4\n\nForcer l'exécution complète de tout le pipeline (-F) : \n\n    snakemake -pF sample1.vcf.gz sample2.vcf.gz sample3.vcf.gz --cores 4\n\n### Question 9:\n- Modifier n'importe quel fichier et ré-exécuter snakemake. Que se passe t-il ? \n\nCréer une dernière règle pour combiner l'ensemble des fichiers vcf.gz dans un seul fichier allsample.vcf.gz.\n\n    rule mergeAll : \n        input:\n            \"sample1.vcf.gz\",\n            \"sample2.vcf.gz\",\n            \"sample3.vcf.gz\",\n            \"sample4.vcf.gz\",\n            \"sample5.vcf.gz\"\n            \n        output:\n            \"allsample.vcf.gz\"\n        shell:\n            \"bcftools merge {input}|bgzip\u003e {output}\"\n\nAfficher le graphe d'exécution. Vous aurez peut-être besoin de graphviz. \n\n    conda install graphviz\n    snakemake allsample.vcf.gz --dag|dot|display \n\n![Graphe du pipeline](https://github.com/dridk/tp_snakemake/blob/master/graph.png)\n\nExécuter l'ensemble du pipeline : \n\n    snakemake -p --cores 4 allsample.vcf.gz\n\n#### Question 10: \nQuelles sont les mutations retrouvées dans les 5 colonies bactériennes ? \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdridk%2Ftp_snakemake","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdridk%2Ftp_snakemake","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdridk%2Ftp_snakemake/lists"}