TP module 20

Analyses statistiques avec Easy16S

Auteur·rice·s
Affiliations

Olivier Rué

Migale

Christelle Hennequet‑Antier

MaIAGE

Cédric Midoux

PROSE & MaIAGE

Date de publication

23 juin 2025

Modifié

23 juin 2026

1 Easy16S

Easy16S est une application web conviviale, permettant d’explorer, de visualiser et d’analyser des données de métabarcoding.

Easy16S est développée par Migale en Shiny et s’appuie largement sur le package {phyloseq} [2].

1.1 Disclaimer

Easy16S facilite l’exploration, la visualisation et l’analyse des données de métabarcoding. Cependant, les utilisateurs doivent veiller à ne pas sur‑interpréter les résultats. Une interprétation correcte des données métagénomiques nécessite une solide compréhension de l’écologie microbienne, de la biostatistique et du domaine d’étude spécifique. Bien que notre outil soit conçu pour être convivial, la complexité de l’analyse des données métagénomiques implique que les résultats peuvent être trompeurs s’ils ne sont pas évalués avec soin.

Nous avons intégré plusieurs paramètres par défaut et des garde‑fous pour guider les utilisateurs et réduire le risque d’utilisation abusive. Toutefois, si vous ne disposez pas de connaissances en métagénomique, il est fortement recommandé de collaborer avec des bioinformaticiens et des biostatisticiens afin de garantir des conclusions solides et fiables issues de vos travaux.

2 Datasets

Ce TP utilise les données du projet MetaPDOcheese [3]. Lors de ce projet, les communautés microbiennes de 44 AOP laitières françaises, divisées en 7 familles technologiques, ont été analysées. Les données brutes sont disponibles sur Recherche Data Gouv : 10.57745/UCJG6S.

Pour le TP, nous travaillerons avec 72 échantillons analysés avec FROGS [4] provenant de :

  • 6 AOP : AOP1 à AOP6 (répartis en 3 Tech_family : Pâte persillée (PPS), Pâte pressée non cuite (PPNC) ou Pâte pressée cuite (PNC))
  • 2 Season : Summer ou Winter
  • 3 réplicats par AOP pour chaque saison

3 Import / Export des données

3.1 Importer les données dans Easy16S

Les données peuvent être importées dans l’application avec le bouton Select your data en haut à gauche de l’interface.

  • Demo : données d’exemple pour les TP et démonstrations

  • Input data : construire un objet phyloseq à partir de fichiers plats issus de FROGS (ou autres)

    • un fichier BIOM (format standard ou format FROGS )
    • un tableau tabulé de métadonnées (variables en colonnes, échantillons en lignes) ; le nom des échantillons (première colonne) doit être strictement identique à celui du fichier BIOM. Le délimiteur et le format des colonnes peuvent être spécifiés. Le délimiteur et le format des colonnes peuvent être spécifiés.
    • un arbre phylogénétique au format Newick
    • un fichier FASTA contenant les séquences représentatives
  • RData / RDS : importer un objet phyloseq déjà construit

  • Importez les données obtenues à l’issue du TP‑FROGS dans Easy16S en utilisant l’option Input data.

On peut définir le type des colonnes du tableau de métadonnées.

  • n : pour un nombre
  • f : pour un facteur (liste de modalités définies)
  • l : pour une valeur logique (TRUE/FALSE)
  • c : pour une chaine de caractères (privilégier les facteurs lorsque c’est possible)
  • D ou t ou T : pour une date, un temps, ou un datetime (date + temps) en ISO8601
  • _ : pour ignorer la colonne

Plus d’info : https://readr.tidyverse.org/articles/readr.html#available-column-specifications

Tips : col_type = "cfffffffffnllnnnnffffffcfffff"

  • Quel est le résultat de l’import ?
library(tidyverse)

## import stdBIOM
library(phyloseq)
# physeq <- phyloseq::import_biom(BIOMfilename = "my/file/path/file.biom")

## import FROGS BIOM
# remotes::install_github("mahendra-mariadassou/phyloseq-extended", ref = "dev")
library(phyloseq.extended)
physeq <- phyloseq.extended::import_frogs(
    biom = "data/taxonomic_affiliation.biom",
    treefilename = "data/tree.nwk",
    refseqfilename = "data/cluster_filters.fasta",
    refseqFunction = Biostrings::readDNAStringSet
)

sample_data(physeq) <- readr::read_delim(
    "data/MPC_complete_metadata.tsv",
    delim = "\t",
    col_types = "cfffffffffnllnnnnffffffcfffff"
) |>
    column_to_rownames("Sample_ID") |>
    sample_data()

phyloseq::show(physeq)
phyloseq-class experiment-level object
otu_table()   OTU Table:         [ 398 taxa and 72 samples ]
sample_data() Sample Data:       [ 72 samples by 28 sample variables ]
tax_table()   Taxonomy Table:    [ 398 taxa by 7 taxonomic ranks ]
phy_tree()    Phylogenetic Tree: [ 398 tips and 397 internal nodes ]
refseq()      DNAStringSet:      [ 398 reference sequences ]
saveRDS(physeq, "data/physeq.RDS")

3.2 Explorer les données

  • Combien d’échantillons sont présents dans l’objet phyloseq ?

72 échantillons

  • Combien de taxons (= ASVs) sont présents dans l’objet phyloseq ?

398 taxons

  • Quelle est la profondeur de séquençage (nombre de reads) la plus faible ?

La profondeur de séquençage la plus faible est de 6 989 reads.

3.3 Transformation et pré‑traitement des données

Avant de lancer les analyses statistiques, il est important de pré‑traiter les données, par exemple sélectionner les échantillons d’intérêt, modifier les comptes (raréfaction, normalisation, transformation, etc.). Cela se fait dans l’onglet Preprocess data. Les transformations s’appliquent de façon itérative à partir des données brutes.

  • Sélectionnez uniquement les échantillons des AOP AOP2 ou AOP3 puis raréfiez le résultat.

  • Combien d’échantillons et de taxons restent‑ils après le pré‑traitement ?

physeq |>
    subset_samples(AOP %in% c("AOP2", "AOP3")) |>
    rarefy_even_depth()
phyloseq-class experiment-level object
otu_table()   OTU Table:         [ 345 taxa and 24 samples ]
sample_data() Sample Data:       [ 24 samples by 28 sample variables ]
tax_table()   Taxonomy Table:    [ 345 taxa by 7 taxonomic ranks ]
phy_tree()    Phylogenetic Tree: [ 345 tips and 344 internal nodes ]
refseq()      DNAStringSet:      [ 345 reference sequences ]

Après le pré‑traitement : 24 échantillons et 347 taxons.

L’historique des transformations appliquées est affiché dans .

  • Revenez aux données brutes avec le toggle.

  • Pour de nombreuses analyses, il est essentiel de travailler avec des données raréfiées afin d’éliminer l’effet de la profondeur de séquençage.

physeq_rare <- physeq |>
    rarefy_even_depth(rngseed = 314) # seed for Easy16S reproducibility

3.4 Export des données

Pour faciliter les analyses ultérieures, il est possible d’exporter les données courantes (brutes ou pré‑traitées selon le toggle) dans différents formats (.biom et .rds) via les boutons .

  • Exportez les données pré‑traitées au format .rds puis réimportez‑les dans une nouvelle session d’Easy16S.

4 Tables & Métadonnées

Toutes les tables sont triables, filtrables et exportables au format .csv.

  • L’onglet OTU/ASV Table présente la matrice d’abondance des ASVs par échantillon.

  • L’onglet Taxonomy Table donne l’affiliation taxonomique de chaque ASV.

    • Quelle est l’affiliation taxonomique de l’ASV ID_278 ?

    ID_278 : Sphingobacterium lactis.

  • L’onglet Agglomerate ASV Table permet de visualiser la matrice d’abondance agrégée à un niveau taxonomique donné (ex. Genus).

  • L’onglet Sample Data Table contient les métadonnées associées à chaque échantillon.

physeq |>
    otu_table() |>
    head() |>
    knitr::kable()
AOP1_PPC_S1 AOP1_PPC_S2 AOP1_PPC_S3 AOP1_PPC_S4 AOP1_PPC_S5 AOP1_PPC_S6 AOP1_PPC_W1 AOP1_PPC_W2 AOP1_PPC_W3 AOP1_PPC_W4 AOP1_PPC_W5 AOP1_PPC_W6 AOP2_PPC_S1 AOP2_PPC_S2 AOP2_PPC_S3 AOP2_PPC_S4 AOP2_PPC_S5 AOP2_PPC_S6 AOP2_PPC_W1 AOP2_PPC_W2 AOP2_PPC_W3 AOP2_PPC_W4 AOP2_PPC_W5 AOP2_PPC_W6 AOP3_PPNC_S1 AOP3_PPNC_S2 AOP3_PPNC_S3 AOP3_PPNC_S4 AOP3_PPNC_S5 AOP3_PPNC_S6 AOP3_PPNC_W1 AOP3_PPNC_W2 AOP3_PPNC_W3 AOP3_PPNC_W4 AOP3_PPNC_W5 AOP3_PPNC_W6 AOP4_PPNC_S1 AOP4_PPNC_S2 AOP4_PPNC_S3 AOP4_PPNC_S4 AOP4_PPNC_S5 AOP4_PPNC_S6 AOP4_PPNC_W1 AOP4_PPNC_W2 AOP4_PPNC_W3 AOP4_PPNC_W4 AOP4_PPNC_W5 AOP4_PPNC_W6 AOP5_PPS_S1 AOP5_PPS_S2 AOP5_PPS_S3 AOP5_PPS_S4 AOP5_PPS_S5 AOP5_PPS_S6 AOP5_PPS_W1 AOP5_PPS_W2 AOP5_PPS_W3 AOP5_PPS_W4 AOP5_PPS_W5 AOP5_PPS_W6 AOP6_PPS_S1 AOP6_PPS_S2 AOP6_PPS_S3 AOP6_PPS_S4 AOP6_PPS_S5 AOP6_PPS_S6 AOP6_PPS_W1 AOP6_PPS_W2 AOP6_PPS_W3 AOP6_PPS_W4 AOP6_PPS_W5 AOP6_PPS_W6
ID_329 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 10 13 21 5 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ID_341 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 8 2 2 8 24 0 0 0 2 2 2
ID_78 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 3 1 65 0 9 16 1 3 5 28 6 22 0 0 0 3 3 10 11 5 1 202 173 264 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ID_29 0 1 1 59 15 37 4 12 0 7 1 9 253 257 225 28 49 49 978 917 716 301 415 417 0 0 0 3 0 0 1 0 0 0 0 0 0 0 0 0 1 7 0 0 0 7 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 2
ID_278 1 0 0 1 0 0 0 0 0 0 0 0 16 8 12 3 1 1 26 31 30 19 28 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ID_67 0 0 0 15 7 8 1 0 0 1 0 1 71 85 58 4 8 8 178 161 112 126 195 65 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
physeq |>
    tax_table() |>
    head() |>
    knitr::kable()
Kingdom Phylum Class Order Family Genus Species
ID_329 Bacteria Bacteroidota Bacteroidia Bacteroidales Dysgonomonadaceae Petrimonas Petrimonas_sulfuriphila
ID_341 NA NA NA NA NA NA NA
ID_78 Bacteria Bacteroidota Sphingobacteriia Sphingobacteriales Sphingobacteriaceae Sphingobacterium Sphingobacterium_shayense
ID_29 Bacteria Bacteroidota Sphingobacteriia Sphingobacteriales Sphingobacteriaceae Sphingobacterium Sphingobacterium_lactis
ID_278 Bacteria Bacteroidota Sphingobacteriia Sphingobacteriales Sphingobacteriaceae Sphingobacterium Sphingobacterium_lactis
ID_67 Bacteria Bacteroidota Sphingobacteriia Sphingobacteriales Sphingobacteriaceae Sphingobacterium Sphingobacterium_lactis
metadata <- physeq |>
    sample_data() |>
    as_tibble(rownames = "Sample")

metadata |>
    head() |>
    knitr::kable()
Sample Tech_family AOP AOP_code Season Season_code Replicate Localization Dairy_species French_Area Ripening_time Wooden_shelf_use Rind_treatment pH Cheese_aerobic_bacteria_counts Cheese_fungi_counts Cheese_lactic_acid_bacteria_counts study_accession sample_accession experiment_accession run_accession tax_id scientific_name fastq_ftp original_Sample_ID PDO original_AOP Production original_Replicate
AOP1_PPC_S1 PPC AOP1 1 Summer S 1 Rind Cow Bourgogne _Franche-Comte 278 TRUE TRUE 7.33 1.0e+08 80500 1e+05 PRJEB64600 SAMEA114330632 ERX11447984 ERR12064819 1154581 food fermentation metagenome ftp.sra.ebi.ac.uk/vol1/fastq/ERR120/019/ERR12064819/ERR12064819_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/ERR120/019/ERR12064819/ERR12064819_2.fastq.gz AOP34_AQ1_a_surf PDO34 AOP34 AQ1 a
AOP1_PPC_S2 PPC AOP1 1 Summer S 2 Rind Cow Bourgogne _Franche-Comte 278 TRUE TRUE 7.57 1.0e+08 80500 1e+05 PRJEB64600 SAMEA114330634 ERX11447985 ERR12064820 1154581 food fermentation metagenome ftp.sra.ebi.ac.uk/vol1/fastq/ERR120/020/ERR12064820/ERR12064820_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/ERR120/020/ERR12064820/ERR12064820_2.fastq.gz AOP34_AQ1_b_surf PDO34 AOP34 AQ1 b
AOP1_PPC_S3 PPC AOP1 1 Summer S 3 Rind Cow Bourgogne _Franche-Comte 278 TRUE TRUE 7.59 1.0e+08 80500 1e+05 PRJEB64600 SAMEA114330636 ERX11447986 ERR12064821 1154581 food fermentation metagenome ftp.sra.ebi.ac.uk/vol1/fastq/ERR120/021/ERR12064821/ERR12064821_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/ERR120/021/ERR12064821/ERR12064821_2.fastq.gz AOP34_AQ1_c_surf PDO34 AOP34 AQ1 c
AOP1_PPC_S4 PPC AOP1 1 Summer S 4 Rind Cow Bourgogne _Franche-Comte 264 TRUE TRUE 7.47 5.1e+09 206000 0e+00 PRJEB64600 SAMEA114330666 ERX11448001 ERR12064836 1154581 food fermentation metagenome ftp.sra.ebi.ac.uk/vol1/fastq/ERR120/036/ERR12064836/ERR12064836_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/ERR120/036/ERR12064836/ERR12064836_2.fastq.gz AOP34_DT1_a_surf PDO34 AOP34 DT1 a
AOP1_PPC_S5 PPC AOP1 1 Summer S 5 Rind Cow Bourgogne _Franche-Comte 264 TRUE TRUE 7.55 5.1e+09 206000 0e+00 PRJEB64600 SAMEA114330668 ERX11448002 ERR12064837 1154581 food fermentation metagenome ftp.sra.ebi.ac.uk/vol1/fastq/ERR120/037/ERR12064837/ERR12064837_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/ERR120/037/ERR12064837/ERR12064837_2.fastq.gz AOP34_DT1_b_surf PDO34 AOP34 DT1 b
AOP1_PPC_S6 PPC AOP1 1 Summer S 6 Rind Cow Bourgogne _Franche-Comte 264 TRUE TRUE 7.39 5.1e+09 206000 0e+00 PRJEB64600 SAMEA114330670 ERX11448003 ERR12064838 1154581 food fermentation metagenome ftp.sra.ebi.ac.uk/vol1/fastq/ERR120/038/ERR12064838/ERR12064838_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/ERR120/038/ERR12064838/ERR12064838_2.fastq.gz AOP34_DT1_c_surf PDO34 AOP34 DT1 c

Metadata permet de visualiser les métadonnées avec le package {esquisse} ; Ceci est utile pour explorer et visualiser les variables des échantillons (mais pas les données de métabarcoding).

5 Barplots

Le barplot d’abondance relative est la visualisation la plus courante. Dans Easy16S, vous pouvez afficher les abondances relatives de chaque échantillon à différents rangs taxonomiques via l’onglet Barplot. Il est possible de choisir un taxon d’intérêt (Selected filter taxa), définir le rang taxonomique utilisé pour la coloration (Taxonomic rank used for coloring), regrouper les échantillons selon une variable (Subplot), et ajuster l’ordre et le label des échantillons (Sample order / Sample label).

  • Visualisez l’ensemble des données au niveau Phylum en regroupant les échantillons par AOP et en les ordonnant selon le pH.
plot_composition(
    physeq = physeq,
    taxaRank1 = NULL,
    taxaRank2 = "Phylum",
    sampleOrder = metadata |> arrange(pH) |> pull(Sample),
    facet_grid = "~AOP",
    scales = "free",
    space = "free"
)
         taxa Kingdom  Phylum rank
ID_159 ID_159 Unknown Unknown    5

  • Visualisez l’abondance relative des Genus appartenant à la famille Sphingobacterium.
plot_composition(
    physeq = physeq,
    taxaRank1 = "Genus",
    taxaSet1 = "Sphingobacterium",
    taxaRank2 = "Species",
    facet_grid = "~AOP",
    scales = "free",
    space = "free"
)

  • Exportez le graphique en .png en cliquant sur . Pour les paramètres, voir en haut à droite.

6 Raréfaction

L’onglet Rarefaction permet de tracer les courbes de raréfaction pour chaque échantillon.

  • Comparez les courbes sur les données brutes et sur les données transformées après raréfaction, en activant Show min sample threshold.
physeq |>
    ggrare(step = 100, se = FALSE, color = "AOP", plot = FALSE) +
    geom_vline(xintercept = min(sample_sums(physeq)), colour = "gray60")
rarefying sample AOP1_PPC_S1
rarefying sample AOP1_PPC_S2
rarefying sample AOP1_PPC_S3
rarefying sample AOP1_PPC_S4
rarefying sample AOP1_PPC_S5
rarefying sample AOP1_PPC_S6
rarefying sample AOP1_PPC_W1
rarefying sample AOP1_PPC_W2
rarefying sample AOP1_PPC_W3
rarefying sample AOP1_PPC_W4
rarefying sample AOP1_PPC_W5
rarefying sample AOP1_PPC_W6
rarefying sample AOP2_PPC_S1
rarefying sample AOP2_PPC_S2
rarefying sample AOP2_PPC_S3
rarefying sample AOP2_PPC_S4
rarefying sample AOP2_PPC_S5
rarefying sample AOP2_PPC_S6
rarefying sample AOP2_PPC_W1
rarefying sample AOP2_PPC_W2
rarefying sample AOP2_PPC_W3
rarefying sample AOP2_PPC_W4
rarefying sample AOP2_PPC_W5
rarefying sample AOP2_PPC_W6
rarefying sample AOP3_PPNC_S1
rarefying sample AOP3_PPNC_S2
rarefying sample AOP3_PPNC_S3
rarefying sample AOP3_PPNC_S4
rarefying sample AOP3_PPNC_S5
rarefying sample AOP3_PPNC_S6
rarefying sample AOP3_PPNC_W1
rarefying sample AOP3_PPNC_W2
rarefying sample AOP3_PPNC_W3
rarefying sample AOP3_PPNC_W4
rarefying sample AOP3_PPNC_W5
rarefying sample AOP3_PPNC_W6
rarefying sample AOP4_PPNC_S1
rarefying sample AOP4_PPNC_S2
rarefying sample AOP4_PPNC_S3
rarefying sample AOP4_PPNC_S4
rarefying sample AOP4_PPNC_S5
rarefying sample AOP4_PPNC_S6
rarefying sample AOP4_PPNC_W1
rarefying sample AOP4_PPNC_W2
rarefying sample AOP4_PPNC_W3
rarefying sample AOP4_PPNC_W4
rarefying sample AOP4_PPNC_W5
rarefying sample AOP4_PPNC_W6
rarefying sample AOP5_PPS_S1
rarefying sample AOP5_PPS_S2
rarefying sample AOP5_PPS_S3
rarefying sample AOP5_PPS_S4
rarefying sample AOP5_PPS_S5
rarefying sample AOP5_PPS_S6
rarefying sample AOP5_PPS_W1
rarefying sample AOP5_PPS_W2
rarefying sample AOP5_PPS_W3
rarefying sample AOP5_PPS_W4
rarefying sample AOP5_PPS_W5
rarefying sample AOP5_PPS_W6
rarefying sample AOP6_PPS_S1
rarefying sample AOP6_PPS_S2
rarefying sample AOP6_PPS_S3
rarefying sample AOP6_PPS_S4
rarefying sample AOP6_PPS_S5
rarefying sample AOP6_PPS_S6
rarefying sample AOP6_PPS_W1
rarefying sample AOP6_PPS_W2
rarefying sample AOP6_PPS_W3
rarefying sample AOP6_PPS_W4
rarefying sample AOP6_PPS_W5
rarefying sample AOP6_PPS_W6

7 Heatmap

Avec l’onglet Heatmap, on peut afficher une carte de chaleur, permettant de visualiser l’abondance de chaque taxon dans chaque échantillon. Ceci permet d’observer les motifs structurants les communautés d’échatillons.

Les ASVs peuvent être regroupés à un rang taxonomique donnée. Les samples peuvent être regroupés, ordonnés et labelés en fonction des variables de métadonnées.

Il s’agit des données de comptage. Il faut s’assurer que les données sont normalisées ou raréfiées.

  • Affichez la structuration des communautés en agrégant au rang Order et en comparant les différents AOP.
physeq_rare |>
    fast_tax_glom(taxrank = "Order") |>
    plot_heatmap(
        method = "NMDS",
        distance = "bray",
        taxa.label = "Order",
        low = "yellow",
        high = "red",
        na.value = "white"
    ) +
    facet_grid(cols = vars(AOP), scales = "free_x", space = "free")

8 α‑diversité

L’α‑diversité mesure la richesse individuellement, au sein de chaque échantillon. Différentes métriques sont disponibles (voir les slides).

8.1 α ‑ Table & Plot

On peut visualiser les métriques de chaque échantillon sous forme de table et de plot (avec boxplot par catégorie par exemple)

  • Identifiez les AOP et les saisons associés à des indices Chao1 faibles et élevés. Procédez de même pour InvSimpson.
physeq_rare |>
    plot_richness(
        x = "AOP",
        color = "Season",
        measures = c("Observed", "Chao1", "Shannon", "InvSimpson")
    ) +
    geom_boxplot() +
    scale_color_brewer(palette = "Paired")

8.2 α ‑ ANOVA

Cette section réalise une analyse de variance (ANOVA) sur une métrique de diversité en fonction d’une ou plusieurs variables de métadonnées, afin d’évaluer l’impact d’une covariable sur la richesse α.

  • Existe‑t‑il une corrélation significative entre la variable AOP et la richesse Chao1 ?
anova_data <- inner_join(
    as_tibble(
        estimate_richness(physeq_rare, measures = "Chao1"),
        rownames = "Sample"
    ),
    metadata,
    by = join_by(Sample)
)

lm(formula = Chao1 ~ AOP, data = anova_data) |> anova()
Analysis of Variance Table

Response: Chao1
          Df Sum Sq Mean Sq F value    Pr(>F)    
AOP        5  55526 11105.3  26.771 1.116e-14 ***
Residuals 66  27378   414.8                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

9 β‑diversité

La β‑diversité mesure la dissimilarité entre les échantillons. On mesure donc la “distance” entre chaque paires d’échantillon. Plusieurs métriques existent s’appuyant sur des paramètres qualitatives ou quantitatives et phylogénétiques ou non. Le choix de la mesure est essentiel et influence fortement les résultats et leur interprétation.

Après avoir défini la distance à utiliser, on peut exploiter les résultats sous diverses forme :

  • Table des paires de distance
  • Heatmap de la matrice des distances
  • Dendogramme de clustering
  • MultiDimensional Scaling
  • Multivariate ANOVA

9.1 β ‑ Table

  • Pour chaque métrique, quels sont les deux échantillons les plus éloignés ?
dist_Bray <- physeq_rare |>
    distance(method = "bray")

dist_Bray |>
    broom::tidy() |>
    filter(distance %in% c(min(distance), max(distance)))
# A tibble: 2 × 3
  item1       item2       distance
  <fct>       <fct>          <dbl>
1 AOP5_PPS_W1 AOP6_PPS_S2   0.983 
2 AOP6_PPS_S4 AOP6_PPS_S6   0.0554
dist_CC <- physeq_rare |>
    distance(method = "cc")

dist_CC |>
    broom::tidy() |>
    filter(distance %in% c(min(distance), max(distance)))
# A tibble: 3 × 3
  item1       item2       distance
  <fct>       <fct>          <dbl>
1 AOP2_PPC_S3 AOP5_PPS_S3    0.930
2 AOP2_PPC_S5 AOP2_PPC_S6    0.243
3 AOP2_PPC_S5 AOP5_PPS_S4    0.930
  • Bray‑Curtis : AOP5_PPS_W1 – AOP6_PPS_S2 = 0.983
  • Jaccard (cc) : AOP2_PPC_S3 – AOP5_PPS_S3 = 0.930

9.2 β ‑ Samples heatmap

  • Visualisez les groupes d’échantillons proches.
dist_Bray |>
    plot_dist_as_heatmap(show.names = TRUE) +
    scale_fill_gradient(
        low = "firebrick",
        high = "antiquewhite",
        limits = c(0, 1)
    )

9.3 β ‑ Samples clustering

  • Tracez le dendrogramme de clustering à partir des distances Bray‑Curtis et Jaccard, en coloriant les échantillons selon la métadonnée AOP.
physeq_rare |>
    plot_clust(dist = dist_Bray, method = "ward.D2", color = "AOP")

9.4 β ‑ MultiDimensional Scaling

De la même manière, il est possible de projeter le nuage de points des communautés sur un plan, en cherchant à préserver les distances entre les échantillons.

  • Projetez la matrice de distance de Jaccard (cc) avec la méthode d’ordination MDS, en coloriant les échantillons selon AOP.
physeq_rare |>
    plot_ordination(
        ordinate(physeq_rare, "MDS", dist_CC),
        color = "AOP"
    ) +
    stat_ellipse(aes(group = AOP))

9.5 β ‑ Multivariate ANOVA

Enfin, il est possible d’effectuer une analyse de variance de cette matrice de distance avec un test de permutation. On évalue ainsi l’impact d’une ou plusieurs covariables sur la structure de la communauté. Le test vegan::adonis2() compare la structure de nos données à 9999 structures générées par permutations aléatoires. La Permutational Multivariate ANOVA prend en charge les plans d’expérience complexes, mais elle ne teste que les effets localisé (telque, Est-ce que les communautés typiques sont similaires dans les groupes A et B ?) et suppose des dispersions égales (c’est-à-dire une variabilité biologique identique dans les deux groupes).

  • L’effet de l’AOP sur la matrice de distance Jaccard (cc) est‑il significatif ?
vegan::adonis2(
    formula = dist_CC ~ AOP,
    data = metadata,
    by = "terms",
    perm = 9999
) # |> broom::tidy()
Permutation test for adonis under reduced model
Terms added sequentially (first to last)
Permutation: free
Number of permutations: 9999

vegan::adonis2(formula = dist_CC ~ AOP, data = metadata, permutations = 9999, by = "terms")
         Df SumOfSqs      R2      F Pr(>F)    
AOP       5  11.0288 0.54946 16.098  1e-04 ***
Residual 66   9.0433 0.45054                  
Total    71  20.0721 1.00000                  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

10 PCA

Bien que l’ordination MDS soit généralement privilégiée pour les données de microbiome, l’ACP peut être utilisée après une transformation appropriée des données.

  • Préférant les MDS, n’insisterons pas davantage sur les ACP dans ce TP.

11 Differential abundance

Après avoir constaté un effet significatif d’une covariable sur la structuration des communautés, on cherche souvant à identifier les ASVs sur‑ ou sous‑représentés selon une variable expérimentale donnée (catégorielle ou numérique). Le package {DESeq2}, développé à l’origine pour les RNA‑Seq, est couramment employé à cet effet.

  • Quels ASVs sont sur‑abondants ou sous‑abondants entre AOP3 et AOP5 ?
physeq_dds <- physeq |>
    phyloseq_to_deseq2(design = ~AOP) |>
    DESeq2::DESeq(sfType = "poscounts")

DESeq2::results(
    physeq_dds,
    contrast = c("AOP", "AOP3", "AOP5"),
    tidy = TRUE
) |>
    rename(ASV = row) |>
    mutate(
        evidence = -log10(padj),
        evolution = case_when(
            padj <= 0.05 & log2FoldChange < 0 ~ "Down",
            padj <= 0.05 & log2FoldChange > 0 ~ "Up",
            TRUE ~ "Not DA"
        )
    ) |>
    filter(evolution %in% c("Up", "Down")) |>
    knitr::kable()
ASV baseMean log2FoldChange lfcSE stat pvalue padj evidence evolution
ID_78 12.6903801 6.892513 1.4270535 4.829891 0.0000014 0.0000071 5.145785 Up
ID_77 14.6731653 8.960053 0.9484649 9.446900 0.0000000 0.0000000 19.079214 Up
ID_89 11.1677687 8.761593 1.2071777 7.257915 0.0000000 0.0000000 11.254796 Up
ID_215 2.2077530 5.980996 2.2736673 2.630550 0.0085247 0.0230952 1.636478 Up
ID_61 23.4578877 7.086443 1.1671805 6.071420 0.0000000 0.0000000 7.977629 Up
ID_32 57.6070517 9.457207 0.8732361 10.830070 0.0000000 0.0000000 25.023543 Up
ID_419 1.2196793 4.271313 1.0887806 3.923025 0.0000874 0.0003631 3.439994 Up
ID_55 31.2511367 9.446982 1.1676035 8.090916 0.0000000 0.0000000 14.043427 Up
ID_548 1.6932051 4.523276 1.6233025 2.786465 0.0053286 0.0154207 1.811895 Up
ID_18 51.6067243 25.275783 2.8753119 8.790623 0.0000000 0.0000000 16.546560 Up
ID_190 8.2822608 29.174116 2.5024916 11.658028 0.0000000 0.0000000 28.943256 Up
ID_303 2.7649582 5.375853 1.9978693 2.690793 0.0071282 0.0200220 1.698493 Up
ID_65 19.1917991 4.445888 0.7707406 5.768333 0.0000000 0.0000001 7.254886 Up
ID_155 4.3965991 6.120163 1.7028727 3.594023 0.0003256 0.0012194 2.913837 Up
ID_23 90.3742260 -3.567141 0.4225664 -8.441610 0.0000000 0.0000000 15.302611 Down
ID_603 0.9350425 3.207563 0.8983127 3.570653 0.0003561 0.0013080 2.883407 Up
ID_492 1.1251605 3.082910 0.8196236 3.761372 0.0001690 0.0006520 3.185727 Up
ID_210 7.2497344 4.484077 0.7154516 6.267479 0.0000000 0.0000000 8.466124 Up
ID_319 4.0644094 4.627240 0.7838558 5.903177 0.0000000 0.0000000 7.573366 Up
ID_539 0.7643461 2.405378 0.9367283 2.567850 0.0102331 0.0271463 1.566290 Up
ID_447 2.0609301 3.326639 0.9973748 3.335395 0.0008518 0.0029851 2.525034 Up
ID_631 1.2749942 2.685661 0.9947683 2.699785 0.0069384 0.0196332 1.707010 Up
ID_232 4.5221765 5.393295 0.8121775 6.640537 0.0000000 0.0000000 9.414390 Up
ID_22 140.9453199 2.240529 0.4690189 4.777054 0.0000018 0.0000092 5.037037 Up
ID_24 104.8424440 2.232843 0.4155759 5.372890 0.0000001 0.0000005 6.334901 Up
ID_103 18.1426184 7.610757 0.9543127 7.975119 0.0000000 0.0000000 13.650398 Up
ID_348 1.0366659 -4.296537 1.5182952 -2.829843 0.0046571 0.0141191 1.850193 Down
ID_473 0.7377771 -3.564486 1.4628047 -2.436748 0.0148200 0.0382517 1.417350 Down
ID_9 719.1745580 2.225124 0.3898513 5.707622 0.0000000 0.0000001 7.107071 Up
ID_275 1.9665042 5.193831 1.4480641 3.586741 0.0003348 0.0012418 2.905940 Up
ID_41 55.1853484 3.839036 0.7548006 5.086159 0.0000004 0.0000021 5.687691 Up
ID_579 1.2137145 3.076663 1.0198582 3.016756 0.0025550 0.0079999 2.096913 Up
ID_15 140.7423414 2.911963 0.7393655 3.938461 0.0000820 0.0003442 3.463134 Up
ID_45 69.1688470 4.860753 0.7877893 6.170118 0.0000000 0.0000000 8.237116 Up
ID_68 12.4609328 -2.995077 1.0653366 -2.811390 0.0049328 0.0144948 1.838787 Down
ID_441 2.1808962 4.286792 0.9904891 4.327955 0.0000151 0.0000693 4.159477 Up
ID_557 2.5037160 3.286989 0.8993559 3.654826 0.0002574 0.0009734 3.011722 Up
ID_25 90.4631586 -11.320902 1.7523977 -6.460236 0.0000000 0.0000000 8.930134 Down
ID_132 4.7294240 5.896398 1.5484888 3.807840 0.0001402 0.0005521 3.258004 Up
ID_148 8.8405295 3.463922 1.0062124 3.442536 0.0005763 0.0020384 2.690721 Up
ID_240 2.0459553 5.151094 1.5607664 3.300362 0.0009656 0.0033383 2.476480 Up
ID_1 2184.7969348 9.422428 0.6227194 15.131098 0.0000000 0.0000000 49.112603 Up
ID_31 89.6607973 8.679863 0.8009873 10.836454 0.0000000 0.0000000 25.023543 Up
ID_442 1.5038916 4.434142 1.0453106 4.241937 0.0000222 0.0000996 4.001789 Up
ID_498 0.8334634 3.512315 1.2426476 2.826477 0.0047063 0.0141560 1.849060 Up
ID_525 1.0942019 4.677815 0.8705087 5.373656 0.0000001 0.0000005 6.334901 Up
ID_882 1.9772970 5.154195 0.8316067 6.197875 0.0000000 0.0000000 8.293776 Up
ID_300 2.1744696 4.603175 1.1084603 4.152765 0.0000328 0.0001410 3.850815 Up
ID_186 5.1677897 5.664925 0.7963631 7.113495 0.0000000 0.0000000 10.811477 Up
ID_194 4.3018322 5.778462 0.8939204 6.464179 0.0000000 0.0000000 8.930134 Up
ID_242 3.6419267 5.355836 1.0439545 5.130334 0.0000003 0.0000017 5.776240 Up
ID_404 1.0056140 3.074529 1.2911379 2.381255 0.0172537 0.0442344 1.354240 Up
ID_251 2.9676423 4.796027 0.8629531 5.557691 0.0000000 0.0000002 6.757172 Up
ID_264 2.4443235 3.864402 0.8380487 4.611190 0.0000040 0.0000199 4.701965 Up
ID_808 0.9504143 3.604723 1.0926445 3.299081 0.0009700 0.0033383 2.476480 Up
ID_149 8.0803220 3.010587 0.9895387 3.042415 0.0023469 0.0074709 2.126627 Up
ID_16 110.3469683 4.484769 0.7090365 6.325160 0.0000000 0.0000000 8.594651 Up
ID_10 313.4425154 1.791149 0.5657665 3.165880 0.0015461 0.0050916 2.293144 Up
ID_291 1.1472844 5.370862 0.9454174 5.680943 0.0000000 0.0000001 7.046856 Up
ID_85 19.3417784 8.635620 0.9568820 9.024748 0.0000000 0.0000000 17.392851 Up
ID_128 10.1958580 4.302998 1.1254272 3.823435 0.0001316 0.0005292 3.276388 Up
ID_106 9.3467180 7.005936 1.3669094 5.125385 0.0000003 0.0000017 5.771356 Up
ID_175 3.3778580 6.435731 1.9935349 3.228301 0.0012453 0.0042473 2.371889 Up
ID_181 2.8090847 6.052689 1.3375396 4.525241 0.0000060 0.0000292 4.535054 Up
ID_200 5.9026148 3.967130 0.7066905 5.613673 0.0000000 0.0000001 6.884533 Up
ID_411 0.9438211 3.698048 0.9523953 3.882892 0.0001032 0.0004240 3.372650 Up
ID_151 5.2137158 5.033988 0.7205765 6.986057 0.0000000 0.0000000 10.428979 Up
ID_320 1.2955822 4.545477 1.0487925 4.334010 0.0000146 0.0000682 4.166158 Up
ID_157 3.0914891 -3.694599 1.2389987 -2.981923 0.0028644 0.0088961 2.050802 Down
ID_213 3.2166664 -2.871925 0.9056099 -3.171260 0.0015178 0.0050417 2.297422 Down
ID_304 1.8795731 -4.216974 1.4938548 -2.822881 0.0047594 0.0142039 1.847592 Down
ID_204 1.6074680 -3.829345 1.4381606 -2.662668 0.0077524 0.0214595 1.668381 Down
ID_34 39.5559826 4.813347 0.8111060 5.934301 0.0000000 0.0000000 7.638165 Up
ID_13 131.0243942 -27.007252 1.3760778 -19.626253 0.0000000 0.0000000 82.452862 Down
ID_323 1.6809403 -3.387379 1.1441982 -2.960482 0.0030716 0.0094624 2.023997 Down
ID_42 37.9991331 -6.138919 0.9485046 -6.472207 0.0000000 0.0000000 8.938193 Down
ID_71 8.7513043 -6.601720 1.7447482 -3.783767 0.0001545 0.0006021 3.220311 Down
ID_6 342.0440666 -9.466834 0.6908719 -13.702733 0.0000000 0.0000000 40.205866 Down
ID_267 1.1951443 -5.035454 1.8033587 -2.792264 0.0052341 0.0152627 1.816369 Down
ID_454 1.6109061 -5.436317 1.2925887 -4.205759 0.0000260 0.0001156 3.937116 Down
ID_576 1.6510703 -4.636746 1.1130989 -4.165619 0.0000311 0.0001348 3.870345 Down
ID_20 99.8950685 8.808087 1.8616266 4.731393 0.0000022 0.0000114 4.944723 Up
ID_36 51.4529272 8.962554 0.9218269 9.722600 0.0000000 0.0000000 20.181088 Up
ID_301 1.2314267 3.584174 1.3616781 2.632175 0.0084840 0.0230952 1.636478 Up
ID_171 3.0672399 31.705322 3.0788384 10.297819 0.0000000 0.0000000 22.639323 Up
ID_33 8.7279139 -28.252082 3.1514901 -8.964674 0.0000000 0.0000000 17.203652 Down
ID_58 20.7926341 4.644813 0.8761388 5.301458 0.0000001 0.0000007 6.170599 Up
ID_227 2.4691770 4.457710 0.9205409 4.842491 0.0000013 0.0000068 5.167307 Up
ID_50 25.7305634 8.011804 0.9314087 8.601813 0.0000000 0.0000000 15.865675 Up
ID_52 45.1160910 8.830273 0.9793709 9.016271 0.0000000 0.0000000 17.384064 Up
ID_470 1.2399876 3.317441 1.0380185 3.195936 0.0013938 0.0046704 2.330648 Up
ID_3 714.0930972 -2.236023 0.7312200 -3.057934 0.0022287 0.0071543 2.145435 Down
ID_233 1.6849035 -5.602833 2.0977203 -2.670915 0.0075645 0.0210922 1.675878 Down
ID_83 11.2169352 -8.340660 1.6664399 -5.005077 0.0000006 0.0000030 5.516091 Down
ID_269 1.3098232 5.774122 2.2226535 2.597851 0.0093809 0.0252360 1.597979 Up
ID_203 2.7364863 4.919527 1.5663426 3.140773 0.0016850 0.0054549 2.263212 Up
ID_76 26.5523578 2.850402 0.6190845 4.604221 0.0000041 0.0000203 4.693018 Up
ID_193 3.4360922 5.796621 0.8319444 6.967559 0.0000000 0.0000000 10.386545 Up
ID_105 13.6717725 6.400070 0.7520221 8.510482 0.0000000 0.0000000 15.541088 Up
ID_280 3.3790303 -3.564860 1.4473975 -2.462944 0.0137801 0.0360548 1.443036 Down
ID_209 3.1956918 5.758283 0.9130222 6.306838 0.0000000 0.0000000 8.554472 Up
ID_257 2.6374791 5.010555 0.8472799 5.913696 0.0000000 0.0000000 7.592490 Up
ID_219 5.3945850 4.416024 0.7064003 6.251447 0.0000000 0.0000000 8.431947 Up
ID_64 20.4822852 9.561611 0.9776972 9.779727 0.0000000 0.0000000 20.393319 Up
ID_299 2.4659945 -4.319910 1.2422874 -3.477384 0.0005063 0.0018077 2.742884 Down
ID_208 3.9190296 3.357481 0.5717760 5.872021 0.0000000 0.0000000 7.508224 Up
ID_396 0.9836798 4.381773 1.0077649 4.348012 0.0000137 0.0000648 4.188507 Up
ID_14 95.2592458 -5.224073 0.9507710 -5.494565 0.0000000 0.0000002 6.610341 Down
ID_104 8.3297231 8.418555 2.1919026 3.840752 0.0001227 0.0004985 3.302369 Up
ID_295 1.4792757 -4.647937 1.6924688 -2.746247 0.0060281 0.0171847 1.764858 Down
ID_211 2.1159614 -1.849330 0.7225450 -2.559467 0.0104833 0.0276180 1.558807 Down
ID_114 6.8930343 7.423291 0.8562094 8.669947 0.0000000 0.0000000 16.104351 Up
ID_38 40.1355828 33.312479 1.7581927 18.947001 0.0000000 0.0000000 77.049203 Up
ID_27 77.0070622 11.690395 1.8923262 6.177790 0.0000000 0.0000000 8.248443 Up
ID_26 112.8999539 33.613497 3.4798862 9.659367 0.0000000 0.0000000 19.942141 Up
ID_98 16.4811973 21.880780 5.0665134 4.318706 0.0000157 0.0000714 4.146463 Up
ID_113 6.7524426 22.385510 3.5171084 6.364748 0.0000000 0.0000000 8.694747 Up
ID_84 8.5194708 -27.959664 2.4398307 -11.459674 0.0000000 0.0000000 27.998178 Down
ID_123 6.4230362 7.542137 1.3572762 5.556818 0.0000000 0.0000002 6.757172 Up
ID_59 28.3148077 9.475310 1.4759443 6.419829 0.0000000 0.0000000 8.839336 Up
ID_119 5.9964411 7.638422 1.5225255 5.016942 0.0000005 0.0000029 5.536623 Up
ID_180 4.5083626 6.763990 1.8286314 3.698936 0.0002165 0.0008271 3.082468 Up
ID_161 3.3583967 6.699447 1.5965713 4.196147 0.0000271 0.0001192 3.923695 Up
ID_100 3.4134593 29.140886 5.0331169 5.789829 0.0000000 0.0000000 7.302399 Up
ID_109 10.5165363 6.704877 1.3842949 4.843532 0.0000013 0.0000068 5.167307 Up
ID_60 22.3858833 8.204861 1.5149085 5.416077 0.0000001 0.0000004 6.425562 Up
ID_56 23.2960376 6.476033 1.5936798 4.063572 0.0000483 0.0002051 3.687986 Up
ID_48 41.6390596 33.583721 1.9623239 17.114260 0.0000000 0.0000000 62.954853 Up
ID_453 0.9134225 4.769706 1.6752319 2.847191 0.0044107 0.0134791 1.870341 Up
ID_434 1.1052447 5.113646 1.4461443 3.536055 0.0004061 0.0014776 2.830440 Up
ID_381 1.2237858 5.363029 1.6651906 3.220670 0.0012789 0.0043234 2.364174 Up
ID_53 24.5417300 8.831911 1.4754885 5.985754 0.0000000 0.0000000 7.765953 Up
ID_82 13.0068288 6.659467 1.1021160 6.042438 0.0000000 0.0000000 7.908754 Up
ID_139 5.0651312 4.356863 1.4337190 3.038854 0.0023748 0.0074973 2.125095 Up
ID_108 18.8133710 9.612030 2.7360567 3.513096 0.0004429 0.0015962 2.796920 Up
ID_88 10.2329819 7.590750 1.6849029 4.505156 0.0000066 0.0000317 4.499354 Up
ID_116 4.4618267 7.581395 3.1049276 2.441730 0.0146171 0.0379845 1.420394 Up
ID_111 9.9868536 30.452070 2.8509045 10.681547 0.0000000 0.0000000 24.365261 Up
ID_72 19.4457885 -9.147161 2.4014689 -3.808986 0.0001395 0.0005521 3.258004 Down
ID_448 1.8876608 3.153944 1.1906923 2.648832 0.0080770 0.0221974 1.653699 Up
ID_228 1.7082687 3.487415 1.3474969 2.588069 0.0096516 0.0257825 1.588675 Up
ID_426 1.6881231 3.456355 1.2285315 2.813403 0.0049020 0.0144948 1.838787 Up
ID_11 389.0706711 5.399787 0.9155943 5.897576 0.0000000 0.0000000 7.567054 Up
ID_169 3.8023351 6.412676 2.0302718 3.158531 0.0015857 0.0051771 2.285911 Up
ID_90 13.2001820 6.098653 0.9449519 6.453929 0.0000000 0.0000000 8.924631 Up
ID_19 202.3344138 -13.364365 2.1311428 -6.270985 0.0000000 0.0000000 8.466124 Down
ID_35 32.5093190 -3.921554 1.4141511 -2.773080 0.0055528 0.0159488 1.797272 Down
ID_229 2.7358179 23.601803 5.0665134 4.658391 0.0000032 0.0000160 4.795382 Up
ID_96 10.0194024 34.853608 1.8990920 18.352775 0.0000000 0.0000000 72.398579 Up

12 Homeworks

12.1 food[5]

Ce jeu de données porte sur les communautés bactériennes présentes dans 8 matrices alimentaires différentes (EnvType), réparties en 4 produits carnés et 4 produits de la mer.

  • Quel est le microbiote caractéristique de chaque matrice ?
  • Comment les différentes matrices s’organisent‑elles ?

12.2 GlobalPatterns[6]

Cette étude explore les communautés bactériennes issues de milieux très variés (SampleType) afin d’analyser les structures écologiques à l’échelle mondiale.

  • Comment la profondeur de séquençage est‑elle distribuée ? Qu’est-il nécéssaire de mettre en place ?
  • Comparez les diversités α entre les environnements (SampleType). Quels environnements sont les plus ou les moins diversifiés ? Cette observation correspond‑elle à votre intuition ?
  • À partir des diversités β, que pouvez‑vous dire des différences entre les environnements ?

Les références

1. Midoux C, Rué O, Chapleur O, Bize A, Loux V, Mariadassou M. Easy16S: a user-friendly Shiny web-service for exploration and visualization of microbiome data. Journal of Open Source Software. 2024;9:6704. doi:10.21105/joss.06704.
2. McMurdie PJ, Holmes S. phyloseq: an R package for reproducible interactive analysis and graphics of microbiome census data. PloS one. 2013;8:e61217.
3. Irlinger F, Mariadassou M, Dugat-Bony E, Rué O, Neuvéglise C, Renault P, et al. A comprehensive, large-scale analysis of « terroir » cheese and milk microbiota reveals profiles strongly shaped by both geographical and human factors. ISME Communications. 2024;4. doi:10.1093/ismeco/ycae095.
4. Bernard M, Rué O, Mariadassou M, Pascal G. FROGS: a powerful tool to analyse the diversity of fungi with special management of internal transcribed spacers. Briefings in Bioinformatics. 2021;22. doi:10.1093/bib/bbab318.
5. Chaillou S, Chaulot-Talmon A, Caekebeke H, Cardinal M, Christieans S, Denis C, et al. Origin and ecological selection of core and food-specific bacterial communities associated with meat and seafood spoilage. The ISME Journal. 2014;9:1105‑18. doi:10.1038/ismej.2014.202.
6. Caporaso JG, Lauber CL, Walters WA, Berg-Lyons D, Lozupone CA, Turnbaugh PJ, et al. Global patterns of 16S rRNA diversity at a depth of millions of sequences per sample. Proceedings of the National Academy of Sciences. 2010;108:4516‑22. doi:10.1073/pnas.1000080107.

Réutilisation

CC BY‑SA

A work by Migale Bioinformatics Facility
Université Paris-Saclay, INRAE, MaIAGE, 78350, Jouy-en-Josas, France
Université Paris-Saclay, INRAE, BioinfOmics, MIGALE bioinformatics facility, 78350, Jouy-en-Josas, France