From bf571317f437bb5963afded6b62542517fcbab6c Mon Sep 17 00:00:00 2001 From: Louis Date: Fri, 17 Oct 2025 16:47:41 +0200 Subject: [PATCH] Create lbm per taxa level --- lbm-per-taxa.R | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 lbm-per-taxa.R diff --git a/lbm-per-taxa.R b/lbm-per-taxa.R new file mode 100644 index 0000000..09af5c7 --- /dev/null +++ b/lbm-per-taxa.R @@ -0,0 +1,35 @@ +library(microbiome) +library(sbm) + +source("load-europe.R") + +base_otu <- cpd_phyloseq_europe + +taxoEstimateBipartiteSBM <- function(phyloseq_obj, taxonomic_level = "kingdom") { + taxolevel_otu <- microbiome::aggregate_taxa(phyloseq_obj, taxonomic_level) + taxolevel_mat <- phyloseq::otu_table(taxolevel_otu) |> as.matrix() + + taxolevel_lbm <- estimateBipartiteSBM(netMat = taxolevel_mat, model = "poisson", dimLabels = c(row = taxonomic_level, col = "sample")) + + rownames(taxolevel_lbm$probMemberships[[1]]) <- rownames(taxolevel_mat) + rownames(taxolevel_lbm$probMemberships[[2]]) <- colnames(taxolevel_mat) + + return(taxolevel_lbm) +} + +kingdom_lbm <- taxoEstimateBipartiteSBM( + phyloseq_obj = base_otu, + taxonomic_level = "kingdom" +) + +kingdom_lbm$memberships + +phylum_lbm <- taxoEstimateBipartiteSBM( + phyloseq_obj = base_otu, + taxonomic_level = "phylum" +) + +phylum_lbm$memberships + +mydf <- otu_table(aggregate_taxa(cpd_phyloseq_europe, "phylum")) +library(ggplot2)