---
title: "Bilan semaine 7 2026 : 09 février - 13 février"
categories: [colBiSBM, inférence, GNN, covariables, identifiabilité]
date: 2026 02 13
date-modified: last-modified
bibliography: references.bib
# from: markdown+latex_macros
---
{{< include /_macros.tex >}}

## TODO List

- 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 $\Var_{\text{intra}} \approx \Var_{\text{inter}}$
    - *Bonus*: faire ça dans qmd et voir si forge permet gitlab pages


- ✅ Avec blockmodels, codé un LBM-Séquentiel. *Des différences contrastées...*
    - TODO Ajouter lien vers notebooks résultats

- Relire @peixotoHierarchicalBlockStructures2014
    - Regarder les gens qui citent les travaux de Peixoto

- ⌛ **En cours** Implémentation `blockmodels` LBM avec covariables sur proportions (voir @eq-modele-covar-prop)

:::{.callout-note title="Idées"}

- Travailler sur Fungus Tree network
- ⌛**Demander à PB et SD**, ils regardent : Comparaison covar prop avec GREMLINS multipartite sur (log(dist_phylo), fungus-tree)
- 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 @abramovStructureKnowsBest

- 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.

### Inférence et microbes

- ✅ En préparation d'un fichier (réu avec JBL à 10h45 le 06/02/2026).
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.

#### Modèle avec covariables sur probas d'appartenances aux groupes

\begin{align*}
\pmb{\beta}_{r}& = \begin{pmatrix}
    \beta_{r,0}\\
    \vdots\\
    \beta_{r,p}
\end{pmatrix}, & X_{j,\bullet} = \begin{pmatrix}
    1 = x_{0,j} & x_{1,j} & \dots & x_{p,j}
\end{pmatrix}\\
X_{j,\bullet} \pmb{\beta}_r& = \beta_{r,0} x_{0,j} + \beta_{r,1} x_{1,j} + \dots + \beta_{r,p} x_{p,j} & \approx \log(\rho_r^j) \\
B & = \begin{pmatrix}
\pmb{\beta}_1 \dots \pmb{\beta}_r \dots \pmb{\beta}_R
\end{pmatrix} & X_{j,\bullet}B \approx \log(\pmb{\rho}^j) \\
X B & \approx \log((\pmb{\rho}^j)_{j=1,\dots,n_2}) = \log(\pmb{\Rho})\\
\end{align*}
Et pour les probas en lignes du LBM
\begin{align*}
\pmb{\gamma}_{q}& = \begin{pmatrix}
    \gamma_{q,0}\\
    \vdots\\
    \gamma_{q,d}
\end{pmatrix}, & V_{i,\bullet} = \begin{pmatrix}
    1 = v_{0,i} & v_{1,i} & \dots & v_{d,i}
\end{pmatrix}\\
V_{i,\bullet} \pmb{\gamma}_q & = \gamma_{q,0} v_{0,i} + \gamma_{q,1} v_{1,i} + \dots + \gamma_{q,d} v_{d,i} & \approx \log(\pi_q^i) \\
\Gamma & = \begin{pmatrix}
\gamma_1 \dots \pmb{\gamma}_q \dots \pmb{\gamma}_Q
\end{pmatrix} & V_{i,\bullet} \Gamma \approx \log(\pmb{\pi}^i) \\
V \Gamma & \approx \log((\pmb{\pi}^i)_{i=1,\dots,n_1}) = \log(\pmb{\Pi})


\end{align*}

#### Note sur l'identifiabilité (à partir JBL et réunion JA, PB, SD)
Soient $B,B^{\prime}$ avec $B_{\bullet,R} = B^{\prime}_{\bullet,R} = \vec{0}_{p+1}$ et $X$ de rang plein tel que $X^{\top}X$ soit inversible.

\begin{align*}
&\sigma(XB) = \sigma(XB^{\prime})\\
&\implies \exists C = \begin{pmatrix}c_1 \\ \vdots \\ c_j \\ \vdots \\ c_{n_2}\end{pmatrix} \in \mathbb{R}^{n_2}, X B = X B^{\prime} + C \pmb{1}_{R}^{\top} \\
&\implies \exists C \in \mathbb{R}^{n_2}, (X B)_{j,r} = (X B^{\prime})_{j,r} + (C \pmb{1}_{R}^{\top})_{j,r} \\
&\implies \exists C \in \mathbb{R}^{n_2}, \forall r\in\{1\dots,R\}, \forall j\in\{1,\dots,n_2\}, \sum_{k=1}^{p+1} x_{j,k} \beta_{k,r} = \sum_{k=1}^{p+1} x_{j,k} \beta^{\prime}_{k,r} + c_j\\
&\implies \exists C \in \mathbb{R}^{n_2}, \forall j\in\{1,\dots,n_2\}, \sum_{k=1}^{p+1} x_{j,k} \beta_{k,R} = \sum_{k=1}^{p+1} x_{j,k} \beta^{\prime}_{k,R} + c_j \\
&\implies \exists C \in \mathbb{R}^{n_2}, \forall j\in\{1,\dots,n_2\}, \sum_{k=1}^{p+1} x_{j,k} \times 0 = \sum_{k=1}^{p+1} x_{j,k} \times 0 + c_j \\
&\implies \exists C \in \mathbb{R}^{n_2}, \forall j\in\{1,\dots,n_2\}, 0 = 0 + c_j \implies c_j = 0 \\
&\implies C = \begin{pmatrix} 0 \\ \vdots \\ 0 \end{pmatrix} \text{and thus}, XB = XB^{\prime} \\
& \implies (X^{\top} X)^{-1}X^{\top} X B = (X^{\top} X)^{-1}X^{\top} X B^{\prime} \implies B=B^{\prime}
\end{align*}

#### Description du modèle hiérarchique

Toujours modèle LBM mais avec probas d'appartenance pour les colonnes variables:

\begin{align*}
Z_i &\sim \mathcal{M}(1; \pi_1, \dots, \pi_Q), \sum_{q=1}^{Q} \pi_q = 1\\
W_j &\sim \mathcal{M}(1; \rho_1^j, \dots, \rho_R^j), \sum_{r=1}^{R} \rho_r^j = 1\\
Y_{i,j}&\mid Z_i = q, W_j = r \sim \mathcal{F}(\alpha_{qr})
\end{align*}

Inférence variationnelle donc $\ell(Y;\pmb{\theta}) \geq \mathcal{J}(\mathcal{R},\pmb{\theta})$ avec

$$
\ELBORTheta = \sum_{i = 1}^{n_1}\sum_{j=1}^{n_2}\sum_{q \in \mathcal{Q}_1} \sum_{r \in \mathcal{Q}_2} \tau_{iq}^{1} \tau_{jr}^{2} \log f(Y_{ij}; \alpha_{qr})
    + \sum_{i=1}^{n_1} \sum_{q \in \mathcal{Q}_1} \tau_{iq}^{1} \log \pi_{\color{black}q} + \sum_{j=1}^{n_2} \sum_{r \in \mathcal{Q}_2} \tau_{jr}^{2} \log \rho_{\color{black}r}       \\
    - \sum_{i=1}^{n_1} \tau_{iq}^{1} \log \tau_{iq}^{1} - \sum_{j=1}^{n_2} \tau_{jr}^{2} \log \tau_{jr}^{2}
$$

##### Modèle Sophie

Avec $\rho_r^j = \frac{\exp{\beta_r X_j}}{\sum_{s=1}^{R} \exp{\beta_s X_j}} = \sigma(\pmb{\beta} \pmb{X})_{r,j}$, où $\sigma$ désigne le softmax. Mais il y a besoin de poser une contrainte sur l'un des $(\beta_r)_{r=1,\dots,R}$, ici $\beta_R = 0$.

La partie pertinente de l'ELBO devient:
$$
  P((\beta_r)_{r=1,\dots,R}, (X_j)_{j=1,\dots,n_2}, (\tau_{jr})_{\substack{j=1,\dots,n_2\\r=1,\dots,R}} ) =  \sum_{j=1}^{n_2} \sum_{r=1}^{R} [\tau_{jr} (\beta_r X_j - \log (\sum_{s=1}^{R} \exp{\beta_s X_j}))]
$${#eq-modele-covar-prop}

Et on obtient la dérivée partielle par rapport à $\beta_t$ comme:
\begin{align*}
\dfrac{\partial P}{\partial \beta_t}&((\beta_r)_{r=1,\dots,R}, (X_j)_{j=1,\dots,n_2}, (\tau_{jr})_{\substack{j=1,\dots,n_2\\r=1,\dots,R}} ) = \sum_{j=1}^{n_2} \biggl[ \tau_{jt} X_j - \frac{X_j \exp{\beta_t X_j}}{\sum_{s=1}^{R} \exp{\beta_s X_j}} \biggr]\\
& = \sum_{j=1}^{n_2} \biggl[\bigl(\tau_{jt} - \sigma(\pmb{\beta} \pmb{X})_{t,j}\bigr) X_j\biggr] = \sum_{j=1}^{n_2} \biggl[\bigl(\tau_{jt} - \rho_t^j \bigr) X_j\biggr] 
\end{align*}

#### 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

#### Réflexion

- easy16s : se renseigner sur 
    - $\alpha$, $\beta$ diversité
    - Heatmap
- Regarder **SPARTA** Rennes
- Ecrire et étudier les modèles pour différents niveaux taxonomiques.
- 🆕 Regarder NetComi
- 🆕 Regarder OneNet car aggrégation plus robuste
- 🆕 Réfléchir sens d'aggréger les données ou de les diviser 

#### Écrire et faire tourner

- Lancer *colBiSBM* sur $OTU\times Sample$ &rarr; problème du chargement en mémoire des données à voir
- Lancer *colSBM* sur $OTU\times OTU$
- TabNet pratiquer les [exercices](https://github.com/cregouby/Tutoriel_torch)
- 🆕 SparCC à différent niveaux
- 🆕 SBM à différent niveaux
- 🆕⌛ Tree-PLN à différents niveaux


#### Causalité

Plus sur le temps long, à regarder

- GT causalité
- Daria Bystrova lire présentation @bystrovaCausalDiscovery (Meek rules, V-structure)

## A discuter

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

## Biblio à faire

- Regarder Transport optimal graphes bipartite.


## Lectures en cours 📚

### 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

### OT
- ⌛ @mazeletUnsupervisedLearningOptimal Intéressant pour le transport optimal entre graphes de tailles différentes | Regarder si regularization entropique ne marche pas bien pour le graphe.
- ⌛ @nennaLecture2Entropic Pour comprendre le problème d'OT régularisé pour l'entropie.
- ⌛ @nennaLecture1Monge

### Inférence de graphes

- ⌛ @aitchisonStatisticalAnalysisCompositional1982a, en cours

- ❗📖 @payneFiniteMixturesMultivariate2023 sur MixMPLN

### Causalité

- ❗📖 @bystrovaCausalDiscovery

### Largest Gaps

- ❗📖 @braultFastConsistentAlgorithm2023
- ❗📖 @channarondClassificationEstimationStochastic2012 le papier qui introduit le *Largest Gaps*