TODO List
Passer version article flat dans Gitlab du papier et nettoyer au minimum sur une branche clean.
⚠️ IL Y A UNE TYPO SUR LE SIGNE DE L’ENTROPIE POUR LE PAPIER: - \mathcal{H} au lieu de +\mathcal{H}
Faire tourner clustering sur Trojelsgaard
Petites opérations sur les OTUs (regarder la matrice dans les yeux):
- Ranger les OTUs par variances (i.e.
sd(OTU_j)) - Dessiner les graphiques : \mathbb{V}[OTU] = f(\mathbb{E}[OTU]), \frac{\mathbb{V}[OTU]}{\mathbb{E}[OTU]^2} = f(\mathbb{E}[OTU]) et \frac{\mathbb{V}[OTU]}{\mathbb{E}[OTU]} = f(\mathbb{E}[OTU]) (\approx 1) si les données suivent une loi de Poisson.
- 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
- Ranger les OTUs par variances (i.e.
Faire tourner un LBM sur Human Gut et voir si ça plante sinon:
- Faire LBM sur niveau taxonomique grossier, initialiser avec le résultat pour un niveau plus fin et ainsi de suite.
Relire Peixoto (2014)
- Regarder les gens qui citent les travaux de Peixoto
Implémentation
blockmodelsLBM avec covariables sur proportions (voir Équation 1)
- Travailler sur Fungus Tree network
- 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 ?
- Chercher à formuler le problème dual (s’il existe?) de l’optimisation du LBM. Peut-être possible d’aller plus vite alors ?
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é :
Regarder pour les couples date+nom les études et le nombre de réseaux analysables (Possible demander à Élisa)
- ⌛ Chamberlain et al semble intéressant à regarder ! Voir le Rmarkdown
Clusteriser sur la base des noms et voir parmi les réseaux Européens (désagrégés ?)
Si M > 10, alors voir si je retrouve les mêmes résultats que dans les études.
Regarder Largest gap sur réseaux Doré
⌛ Essayer clustering sur
supinfo- CAH et Kmeans tendent vers faire K = 13 clusters sur les supinfos
- Enrichir avec des métriques sur les réseaux (nestedness, connectance autres ?)
- Demander à Elisa pour la signification des métadonnées
- Demander à Elisa une fois vu cohérences de groupe voir pour interprétation écologiques ?
- Algo de clustering sur les groupes trouvés
Inférence et microbes
Modèle avec covariables sur probas d’appartenances aux groupes
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
\mathcal{J}(\mathcal{R},\pmb{\theta})= \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}
Plusieurs possibilités pour la définition de \rho_r^j
Modèle 1 (Tabouy)
Dénominateur pas correct, ne somme pas à 1.
\rho_r^j = \frac{\exp{\beta_r X_j\mathbf{1}_{\{r\neq R\}}}}{1+\sum_{s=1}^{R-1} \beta_s X_j}, \beta_R = 0 et \rho_R^{j} = \frac{1}{1+\sum_{s=1}^{R-1} \beta_s X_j} (pas de compréhension intuitive)
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 \mathbb{1}_{r\neq R} - \log (1+\sum_{s=1}^{R-1} \beta_s X_j))]
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}{1+\sum_{s=1}^{R-1} \exp{\beta_s X_j}} \biggr]\\ & = \sum_{j=1}^{n_2} \biggl[\bigl(\tau_{jt} - \frac{1}{1+\sum_{s=1}^{R-1} \beta_s X_j} \bigr) X_j\biggr] = \sum_{j=1}^{n_2} \biggl[\bigl(\tau_{jt} - \rho_R^j \bigr) X_j\biggr] \end{align*}
❓ Gradient mesure l’écart entre probas a posteriori et la proba a priori du groupe de référence ?
Conclusion: Il manque l’exponentielle cette formulation ne somme pas à 1.
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}))] \tag{1}
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 → problème du chargement en mémoire des données à voir
- Lancer colSBM sur OTU\times OTU
- TabNet pratiquer les exercices
- 🆕 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 Bystrova (s. d.) (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
Inférence de graphes
Causalité
- ❗📖 Bystrova (s. d.)