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

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

- ❗📖 Bystrova (s. d.)

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