From 5ec00107325ae9a20b72ba4456f6f4882aa30ce1 Mon Sep 17 00:00:00 2001 From: Louis Date: Wed, 6 May 2026 14:18:01 +0200 Subject: [PATCH] Begin adding knowledge database --- _quarto.yml | 3 + knowledge_base/_metadata.yml | 3 + knowledge_base/projets-phylo.qmd | 123 +++++++++++++++++++++++++++++++ 3 files changed, 129 insertions(+) create mode 100644 knowledge_base/_metadata.yml create mode 100644 knowledge_base/projets-phylo.qmd diff --git a/_quarto.yml b/_quarto.yml index d6eda51..887223f 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -2,6 +2,9 @@ project: type: website output-dir: public +toc: true +number-sections: true + website: title: "Suivi de la thèse" navbar: diff --git a/knowledge_base/_metadata.yml b/knowledge_base/_metadata.yml new file mode 100644 index 0000000..77f14da --- /dev/null +++ b/knowledge_base/_metadata.yml @@ -0,0 +1,3 @@ +categories: [] +date: last-modified +date-modified: last-modified \ No newline at end of file diff --git a/knowledge_base/projets-phylo.qmd b/knowledge_base/projets-phylo.qmd new file mode 100644 index 0000000..84e1a13 --- /dev/null +++ b/knowledge_base/projets-phylo.qmd @@ -0,0 +1,123 @@ +--- +title: "Idées autour de l'inclusion de la phylogénie" +categories: [phylogénie, graphes, lbm, sbm] +# bibliography: references.bib +--- +{{< include /_macros.tex >}} + +# Contexte de l'inclusion de la phylogénie dans l'estimation de la structure des interactions + +Dans le 3e axe de ma thèse nous souhaitons inclure de l'information phylogénétique dans l'estimation de la structure des réseaux d'interaction microbiens. + +1. Ces réseaux se présentent sous la forme de matrice des comptages hautement rectangulaire, c'est-à-dire avec un grand nombre de microorganismes et, en comparaison, peu d'échantillons (de sols, d'aliments, de patients...). Cette haute dimensionnalité met en échec les méthodes classiques non concues pour gérer autant de noeuds (SBM). Il s'agit donc d'un **premier enjeu** + +2. Les données de comptages de ces matrices sont compositionnelles : la profondeur de séquençage (le nombre de séquences lues) étant finie, cela implique une dépendance entre les comptages observés. Si une séquence est surexprimée par rapport aux autres, alors que l'abondance réelle des autres n'a pas changée, les comptages observés des autres séquences vont diminuer. Voir [@note-donnees-compo]. + +::: {#note-donnees-compo .callout-note title="Données compositionelles"} +Soit $N$ la profondeur de séquençage, $\forall s \in \{1,\dots,s\}, n_s$ le nombre réel de fois où la séquence $s$ est présente. Les comptages observés $o_s$ pour la séquence $s$ sont $o_s = \dfrac{n_s}{N}$, et on a $\sum_{s} o_s = N$ par construction. +::: + + +# SBM et LBM avec covariables sur les noeuds + +Ce modèle visent à intégrer des covariables de noeuds comme modificateurs des probabilités *a priori* d'appartenance aux groupes. +Pour la phylogénie, en passant par une MDS ou une autre méthode permettant à partir des distances phylogénétique d'obtenir des "positions" ou des covariables, cela permettrait d'injecter l'a priori phylogénétique dans l'estimation de la structure du réseau. + +## Formalisation du modèle + +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*} + +Voici pour les probas pour les individus en colonne de la matrice d'adjacence : +\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*} +avec les $\beta, B$ qui désigne donc les coefficient de la combinaison linéaire et $X$ les covariables des individus (taille $n_2\times p$, $p$ covariables). + +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*} +avec les $\gamma, G$ qui désigne donc les coefficient de la combinaison linéaire et $V$ les covariables des individus (taille $n_1\times d$, $d$ covariables). + +## Preuve de l'identifiabilité +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*} + +## Inférence + +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} +$$ + +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. Et sous la contrainte d'[identifiabilité](#preuve-de-lidentifiabilité) que l'un des $(\beta_r)_{r=1,\dots,R}$ soit nul, 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*} + +## Implémentation + +J'ai implémenté tout ça dans un *fork* de [blockmodels](https://github.com/GrossSBM/blockmodels). Ce fork est disponible [ici](https://github.com/Polarolouis/blockmodels) et **en cours de relecture par JBL**. + +Pour les détails techniques, j'ai ré-écrit la gestion des *memberships* en R pour passer les covariables et coefficients nécessaires aux calculs. J'ai implémenté une descente de gradient en utilisant un algorithme de type BFGS pour l'optimisation des coefficients de la combinaison linéaire. Et enfin j'ai intégré plusieurs choses dans le package R [sbm](https://github.com/GrossSBM/sbm): + +1. [La gestion des covariables de noeuds](https://github.com/GrossSBM/sbm/tree/nodescovariates) +2. Le support des [valeurs manquantes](https://github.com/GrossSBM/sbm/tree/feat/NAsupport) + +## La suite + +Maintenant, Sophie et Pierre gèrent la rédaction de vignettes et de simulations autour de ces fonctionnalités. + +Nous attendons de voir si l'on trouve un jeu de données adaptées pour cette méthode. + +**Limites** : Ce modèle ne permet pas le passage à l'échelle pour les gros réseaux que représentent les matrices de comptage. \ No newline at end of file