Bilan semaine 9 2026 : 16 mars - 20 mars

colBiSBM
inférence
GNN
Auteur·rice
Affiliation

Louis Lacoste

MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay

Date de publication

16 mars 2026

Modifié

11 mai 2026

1 TODO List

1.1 Mes priorités de la semaine

  • Faire tourner clustering colBiSBM sur les clusters dégagés par Mona et l’accompagner sur la rédaction de son poster
  • Préparer ma présentation (voir le bloc ci-après) pour Rochebrune et donner un titre :
    • “Comparing networks, a challenging task?” (NUL/20)
    • “High and low: comparing networks, a burden for the mind what works and what don’t(?)”
  • Finir implémentation dans sbm de blockmodels avec covariables sur les noeuds
  • Bricoler une pipeline sbm |> nnet::multinom comme performance de référence pour l’introduction de covariables
  • Comprendre pourquoi l’idée géniale de Sophie est remise en question
  • Corriger les copies des 1As
Idées présentation Rochebrune
  • colBiSBM: ce qui marche (et à la fin la galère du clustering)
  • Transition sur les OTUs et motivations de pourquoi c’est galère (#OTU>>#Sample, dépendance par la phylogénie …)
  • Motivation du co-clustering (LBM), trouver des groupes d’échantillons et d’OTUs qui exhibent des comportement différents (pathologies, sols particuliers, échantillon alimentaire avec une flore d’intérêt …)
  • Première idée: LBM séquentiel, faire repartir des \tau^{l} pour initialiser les \tau^{l+1} selon l’arbre phylogénétique
    • Idées: faciliter l’exploration du paysage de l’ELBO en se plaçant dans une région de paramètres qui a du sens phylo et donc en sortir indiquerait un signal dans les données.
    • Problèmes: ne résout pas le problème de la dimensionnalité en les OTUs
    • Comme implém., performances pas incroyable et signal peu clair.
  • Deuxième idée: SBM et LBM avec covariables sur les noeuds. Reconstruire des positions dans un espace phylogénétique à partir des matrices de distances phylogénétique (et donc en accord avec l’arbre). Mais aussi modèle plus large pour prendre en compte diverses situations (trouver des exemples d’autres données?).
    • Idées: possible de former les groupes a priori selon les tendances dans les covariables (reflet de la phylogénie) et mettre à jour selon les données
    • Quasiment implémenté dans {blockmodels} et dans {sbm} (j’aimerai pouvoir dire le jour de ma présentation que c’est dispo sur la version de développement, il va falloir charbonner de mon côté).
    • Théoriquement: on a l’identifiabilité (ou pas vu la pratique?)
    • Problèmes: Ne résoud pas les problèmes de calculs, en pratique on ne retrouve pas les bons coefficients (label-switching?)
  • Troisième idée: Utiliser la structure de l’arbre phylogénétique pour encoder une relation des positions latentes dans un Latent Position Model (LPM).
    • Détail: pour chaque couche l, chaque individu de la couche i et son ancêtre j=Ancestor(i) (CITER LES PAPIERS A L’ORIGINE DE L’IDEE), on écrit \gamma_{l,i} = \gamma_{l-1,j=Ancestor(i)} + \delta_{l,i} = \gamma_{0} + \sum_{k\in Ancestry(i)} \delta_{l,k} (puisque qu’on a un unique ancêtre dans chaque couche l), les noeuds qui partagent un ancêtre commun partage la position latente à ce niveau et lui ajoute un décalage \delta.
    • Remarque: Peut-être possible de gérer les cas de transferts horizontaux en élargissant le concept de lignée ancestrale?
    • Idée: (casquette de biologiste) possible d’avoir dans une même lignée phylogénétique des individus qui se spécialisent voire qui développent une convergence évolutive et acquièrent des traits phénotypiques qui ressemblent à d’autres familles. Dans ce cas, le \delta_{l,i} rapprochent le \gamma_{l,i} d’un \gamma_{l, i^{\prime}} qui a le trait commun.
    • Problème: les calculs seraient ils simplifiés? pas sûr. Et je n’y ai pas encore touché.
  • Utiliser les Hierarchical SBM et LBM de Peixoto dans son package graphtools pour initialiser l’arbre liant les couches avec l’arbre phylogénétique.

1.2 Les autres tâches

  • Petites opérations sur les OTUs (regarder la matrice dans les yeux):
    • Ranger les OTUs par variances (i.e. sd(OTU_j))
      • HMC sur-dispersés (au-dessus bissectrice)
      • Enterotype phyloseq sous-disp
    • Regarder la proportion de 1. taxon rares, 2. zeros.
    • Faire des coupures selon niveaux taxonomiques et regarder si \mathbb{V}_{\text{intra}} \approx \mathbb{V}_{\text{inter}}
    • Bonus: faire ça dans qmd et voir si forge permet gitlab pages
  • Relire Peixoto (2014)
    • Regarder les gens qui citent les travaux de Peixoto
    • Utiliser graphtools en initialisant la recherche Nested avec le partitionnement donné par l’arbre phylogénétique.
Idées
  • Trouver manière de faire un compromis : \ell(Y,Z,W;\theta) - \lambda d(C(W),C_0) avec C(W) le clustering seulement sur la base de la structure LBM et C_0 le clustering de l’arbre. Problème d est une distance entre partition, comment optimiser dessus ?
  • ⌛ Mise à jour partielle des \tau : ce qui pose soucis c’est les gros calculs matriciels (c’est vraiment vrai?). Donc sorte de “stochastic” VEM où on update seulement une partie des \tau à chaque itération. Et échantillonnage stratifié selon l’arbre ?
    • ⌛ Simulations avec n_2 croissant lancée sur Migale
    • Réimplementé VE Bernoulli dans colSBM pour Bipartite et début implémentation Stochastic VE. En fait le problème des calculs matriciels Y\times(\tau^{(1)})^{\top} (n_2^2) donc besoin de sous-échantillonner les noeuds de l’autre dimension à mettre à jour.
  • Clustering unipartite j’ai cassé une fonction de distance à vérifier et réparer

  • Codes pour le papier :

    • Nettoyer les scripts
    • Faire un joli README
    • ❓Faire des notebooks
  • Réussir à reproduire résultat de Abramov et al. (s. d.)

  • Maitriser graphtools de Peixoto pour essayer d’utiliser l’arbre taxonomique sur graphe de cooccurence inférer par SparCC

  • Maitriser SparCC

  • 👶 (délégué à Mona) Clustering sur Doré :

    • Ajouter Chao1 et 2, colonne par colonne (site par site), et faire indice moyen et la variance.

1.3 Inférence et microbes

  • ⌛ (En cours) Possible en modifiant lbm.h et sbm.h d’obtenir un modèle utilisant les covariables de groupes (de blocs ?). Car besoin de changer membership.m_step() pour mettre à jour \pmb\pi et \pmb{\rho} en utilisant les \pmb B^{\top}\pmb X et en renvoyant l’ELBO adaptée.
    • 😄 Avantage s’inscrit directement dans blockmodels et permet d’avoir toutes les lois d’émissions déjà codées et compatibles !

    • 😢 Besoin de réfléchir a une bonne implémentation.

J’ai codé l’optimisation et les transferts mais il faut que je vérifie que tout fonctionne

  • ✅ Appliqué multipartite sur \forall i, OTU_i \times Sample: Le plot des groupes trouvés par le multipartite (2 pour tous les OTUs et 4 pour les échantillons.)

1.3.1 Bibliographie: à lire, à faire

  • Lire article multi-niveaux Saint-Clair
  • 🆕 🔎 Trouver des papiers:
    • LBM Negative Binomial
    • Network inference through sample comparison
  • Idée des groupes sur la base de distance phylogénétique:
    • En train de comprendre les distances que phyloseq permet de calculer sur notre exemple
    • En train de lire sur Principle coordinate analysis : https://openplantpathology.github.io/OPP_Workshop_Multivariate/2-MV_PCO.html
    • Parametric t-SNE pour avoir une unique représentation latente (inconvénient utilise du Deep Learning)
    • Lire Papier UniFrac

1.3.2 Écrire et faire tourner

  • 🆕 SparCC à différent niveaux
  • 🆕⌛ Tree-PLN à différents niveaux

1.3.3 Causalité

Plus sur le temps long, à regarder

  • GT causalité
  • Daria Bystrova lire présentation Bystrova (s. d.) (Meek rules, V-structure)

2 A discuter

  • 🆕 Voir pour des Réseaux / GDR ou aller
  • 🆕 Chercher des cours à suivre

3 Biblio à faire

  • Regarder Transport optimal graphes bipartite.

4 Lectures en cours 📚

4.1 HDR Vincent Brault

  • ⌛ Chap 2 : Creuser l’idée de maximiser l’énergie libre, très intéressant regarder le critère CARI et lire Robert et al 2021. Actuellement p32 du manuscrit
  • Chap 3

4.2 OT

  • Mazelet, Flamary, et Thirion (s. d.) Intéressant pour le transport optimal entre graphes de tailles différentes | Regarder si regularization entropique ne marche pas bien pour le graphe.
  • Nenna (s. d.b) Pour comprendre le problème d’OT régularisé pour l’entropie.
  • Nenna (s. d.a)

4.3 Inférence de graphes

  • Aitchison (1982), en cours

  • ❗📖 Payne et al. (2023) sur MixMPLN

4.4 Causalité

4.5 Largest Gaps

  • ❗📖 Brault et Channarond (2023)
  • ❗📖 Channarond, Daudin, et Robin (2012) le papier qui introduit le Largest Gaps

Les références

Abramov, Kesem, Barry Biton, Geut Galai, Rami Puzis, et Shai Pilosof. s. d. « Structure Knows Best: Predicting Ecological Interactions Across Space Through Pairwise Integration of Latent Network Patterns ».
Aitchison, J. 1982. « The Statistical Analysis of Compositional Data ». Journal of the Royal Statistical Society. Series B (Methodological) 44 (2): 139‑77. https://www.jstor.org/stable/2345821.
Brault, Vincent, et Antoine Channarond. 2023. « Fast and Consistent Algorithm for the Latent Block Model ». 9 mars 2023. https://doi.org/10.48550/arXiv.1610.09005.
Bystrova, Daria. s. d. « Causal Discovery ».
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. « Classification and Estimation in the Stochastic Blockmodel Based on the Empirical Degrees ». Electronic Journal of Statistics 6 (janvier). https://doi.org/10.1214/12-ejs753.
Mazelet, Sonia, Rémi Flamary, et Bertrand Thirion. s. d. « Unsupervised Learning for Optimal Transport Plan Prediction Between Unbalanced Graphs ».
Nenna, Luca. s. d.a. « Lecture 1 Monge and Kantorovich Problems: From Primal to Dual ».
———. s. d.b. « Lecture 2: Entropic Optimal Transport ».
Payne, Andrea, Anjali Silva, Steven J. Rothstein, Paul D. McNicholas, et Sanjeena Subedi. 2023. « Finite Mixtures of Multivariate Poisson-Log Normal Factor Analyzers for Clustering Count Data ». 13 novembre 2023. https://doi.org/10.48550/arXiv.2311.07762.
Peixoto, Tiago P. 2014. « Hierarchical Block Structures and High-Resolution Model Selection in Large Networks ». Physical Review X 4 (1): 011047. https://doi.org/10.1103/PhysRevX.4.011047.