Compare commits

...
Sign in to create a new pull request.

114 commits

Author SHA1 Message Date
Woodpecker CI
120d21f130 Deploy site [CI SKIP] 2026-05-11 12:05:31 +00:00
Woodpecker CI
2f556f6fe1 Deploy site [CI SKIP] 2026-05-11 11:52:38 +00:00
Woodpecker CI
f12588f4d2 Deploy site [CI SKIP] 2026-05-11 11:47:05 +00:00
Woodpecker CI
5b5d39da2d Deploy site [CI SKIP] 2026-05-07 16:10:12 +00:00
Woodpecker CI
32ccb7055d Deploy site [CI SKIP] 2026-05-07 14:03:28 +00:00
Woodpecker CI
ea4f9bcd03 Deploy site [CI SKIP] 2026-05-06 15:19:53 +00:00
Woodpecker CI
41c7079b92 Deploy site [CI SKIP] 2026-05-06 15:12:21 +00:00
Woodpecker CI
b7c8b6db31 Deploy site [CI SKIP] 2026-05-06 12:19:12 +00:00
Woodpecker CI
e1bef8ea0f Deploy site [CI SKIP] 2026-05-06 08:32:40 +00:00
Woodpecker CI
ba50688bbd Deploy site [CI SKIP] 2026-03-16 09:19:27 +00:00
Woodpecker CI
f1715913e8 Deploy site [CI SKIP] 2026-02-24 16:38:15 +00:00
Woodpecker CI
3b51459895 Deploy site [CI SKIP] 2026-02-24 13:31:19 +00:00
Woodpecker CI
5ba620c54f Deploy site [CI SKIP] 2026-02-17 13:40:58 +00:00
Woodpecker CI
77a3bce877 Deploy site [CI SKIP] 2026-02-17 10:14:55 +00:00
Woodpecker CI
13f64dc4df Deploy site [CI SKIP] 2026-02-10 15:18:02 +00:00
Woodpecker CI
0a63bac6cd Deploy site [CI SKIP] 2026-02-09 09:20:02 +00:00
Woodpecker CI
05aabe5915 Deploy site [CI SKIP] 2026-02-09 08:37:45 +00:00
Woodpecker CI
cdcc0053f0 Deploy site [CI SKIP] 2026-02-06 09:53:20 +00:00
Woodpecker CI
30a7994937 Deploy site [CI SKIP] 2026-01-05 13:06:52 +00:00
Woodpecker CI
2b1e513c24 Deploy site [CI SKIP] 2025-12-23 12:51:44 +00:00
Woodpecker CI
a0d27d274f Deploy site [CI SKIP] 2025-12-15 17:28:12 +00:00
Woodpecker CI
be8b7e6a76 Deploy site [CI SKIP] 2025-12-15 16:49:41 +00:00
Woodpecker CI
90876ae635 Deploy site [CI SKIP] 2025-12-15 13:04:42 +00:00
Woodpecker CI
7240db7a8d Deploy site [CI SKIP] 2025-12-15 12:32:20 +00:00
Woodpecker CI
e700209ae9 Deploy site [CI SKIP] 2025-11-07 14:55:31 +00:00
Woodpecker CI
2c898f3815 Deploy site [CI SKIP] 2025-11-07 13:41:24 +00:00
Woodpecker CI
96cee4873d Deploy site [CI SKIP] 2025-11-07 13:15:14 +00:00
Woodpecker CI
b329863b8e Deploy site [CI SKIP] 2025-11-06 09:52:55 +00:00
Woodpecker CI
e2e602331e Deploy site [CI SKIP] 2025-10-31 15:21:33 +00:00
Woodpecker CI
f2c45b93e8 Deploy site [CI SKIP] 2025-10-31 08:17:46 +00:00
Woodpecker CI
0290fe9868 Deploy site [CI SKIP] 2025-10-22 11:58:48 +00:00
Woodpecker CI
b2d7f84a37 Deploy site [CI SKIP] 2025-10-06 14:10:45 +00:00
Woodpecker CI
d3124fa6b0 Deploy site [CI SKIP] 2025-10-06 12:51:30 +00:00
Woodpecker CI
e588dbc6a6 Deploy site [CI SKIP] 2025-10-06 12:28:59 +00:00
Woodpecker CI
f91f514a95 Deploy site [CI SKIP] 2025-10-06 12:03:26 +00:00
Woodpecker CI
bbffe1866a Deploy site [CI SKIP] 2025-10-06 09:20:44 +00:00
Woodpecker CI
b26d746b21 Deploy site [CI SKIP] 2025-08-26 08:58:42 +00:00
Woodpecker CI
9931a7f299 Deploy site [CI SKIP] 2025-08-17 15:37:49 +00:00
Woodpecker CI
74109f6e63 Deploy site [CI SKIP] 2025-08-14 14:28:17 +00:00
Woodpecker CI
dbf5f0907e Deploy site [CI SKIP] 2025-08-14 11:25:51 +00:00
Woodpecker CI
aebc4827cf Deploy site [CI SKIP] 2025-08-14 09:44:45 +00:00
Woodpecker CI
52aa0ca800 Deploy site [CI SKIP] 2025-08-13 18:11:04 +00:00
Woodpecker CI
9988159cf9 Deploy site [CI SKIP] 2025-08-11 10:32:43 +00:00
Woodpecker CI
1de58727e6 Deploy site [CI SKIP] 2025-07-15 15:37:34 +00:00
Woodpecker CI
99515c3795 Deploy site [CI SKIP] 2025-07-15 12:57:37 +00:00
Woodpecker CI
e2fc054d7c Deploy site [CI SKIP] 2025-07-15 12:34:05 +00:00
Woodpecker CI
f394182f1d Deploy site [CI SKIP] 2025-07-11 12:29:28 +00:00
Woodpecker CI
406386cf8d Deploy site [CI SKIP] 2025-07-11 12:28:13 +00:00
Woodpecker CI
6d0f268c44 Deploy site [CI SKIP] 2025-07-09 10:04:28 +00:00
Woodpecker CI
14efc0c365 Deploy site [CI SKIP] 2025-07-08 09:05:12 +00:00
Woodpecker CI
05165e22eb Deploy site [CI SKIP] 2025-07-08 08:56:40 +00:00
Woodpecker CI
fb8d94f8aa Deploy site [CI SKIP] 2025-07-07 14:37:52 +00:00
Woodpecker CI
829d088cac Deploy site [CI SKIP] 2025-07-07 11:31:20 +00:00
Woodpecker CI
34e0f75ae2 Deploy site [CI SKIP] 2025-07-07 11:30:22 +00:00
Woodpecker CI
ff54224343 Deploy site [CI SKIP] 2025-07-02 15:29:40 +00:00
Woodpecker CI
f57528273e Deploy site [CI SKIP] 2025-07-02 10:04:01 +00:00
Woodpecker CI
92f2894cb2 Deploy site [CI SKIP] 2025-07-02 10:02:39 +00:00
Woodpecker CI
49f9028f8f Deploy site [CI SKIP] 2025-07-02 09:41:41 +00:00
Woodpecker CI
b05fe8ed21 Deploy site [CI SKIP] 2025-07-02 09:39:27 +00:00
Woodpecker CI
3017bae46f Deploy site [CI SKIP] 2025-07-01 12:55:22 +00:00
Woodpecker CI
1ef89d24bc Deploy site [CI SKIP] 2025-07-01 08:09:16 +00:00
Woodpecker CI
14268939eb Deploy site [CI SKIP] 2025-07-01 07:59:53 +00:00
Woodpecker CI
aa5eb9f5c4 Deploy site [CI SKIP] 2025-06-30 14:20:22 +00:00
Woodpecker CI
1352ed702b Deploy site [CI SKIP] 2025-06-30 09:40:15 +00:00
Woodpecker CI
89b69d6fbc Deploy site [CI SKIP] 2025-06-30 09:31:21 +00:00
Woodpecker CI
55c4f140cd Deploy site [CI SKIP] 2025-06-20 10:53:31 +00:00
Woodpecker CI
b3ee78c516 Deploy site [CI SKIP] 2025-06-17 10:01:13 +00:00
Woodpecker CI
acbeac250e Deploy site [CI SKIP] 2025-06-17 08:12:06 +00:00
Woodpecker CI
fe0a5952c0 Deploy site [CI SKIP] 2025-06-17 08:09:54 +00:00
Woodpecker CI
47ba05e76a Deploy site [CI SKIP] 2025-06-16 16:37:05 +00:00
Woodpecker CI
6942120797 Deploy site [CI SKIP] 2025-06-16 16:23:31 +00:00
Woodpecker CI
92a8e43495 Deploy site [CI SKIP] 2025-06-16 16:22:10 +00:00
Woodpecker CI
31e1bad768 Deploy site [CI SKIP] 2025-06-16 12:05:51 +00:00
Woodpecker CI
83aa3832d8 Deploy site [CI SKIP] 2025-06-16 07:15:42 +00:00
Woodpecker CI
b02a099e77 Deploy site [CI SKIP] 2025-06-15 19:09:04 +00:00
Woodpecker CI
a9e70c7998 Deploy site [CI SKIP] 2025-06-15 18:44:44 +00:00
Woodpecker CI
3a73847d28 Deploy site [CI SKIP] 2025-06-11 16:35:11 +00:00
Woodpecker CI
54c236b087 Deploy site [CI SKIP] 2025-06-10 14:05:59 +00:00
Woodpecker CI
402b27422a Deploy site [CI SKIP] 2025-06-10 12:43:40 +00:00
Woodpecker CI
86f52bbafa Deploy site [CI SKIP] 2025-06-10 10:01:55 +00:00
Woodpecker CI
f30a6294ca Deploy site [CI SKIP] 2025-05-28 13:38:40 +00:00
Woodpecker CI
b12db41c26 Deploy site [CI SKIP] 2025-05-28 09:40:02 +00:00
Woodpecker CI
458f968887 Deploy site [CI SKIP] 2025-05-19 16:00:37 +00:00
Woodpecker CI
e309f629fa Deploy site [CI SKIP] 2025-05-19 12:21:03 +00:00
Woodpecker CI
ada794c469 Deploy site [CI SKIP] 2025-05-15 20:13:11 +00:00
Woodpecker CI
f500dd8f72 Deploy site [CI SKIP] 2025-05-13 20:32:38 +00:00
Woodpecker CI
aac8a1c0fa Deploy site [CI SKIP] 2025-05-13 09:14:17 +00:00
Woodpecker CI
ef3698b1a1 Deploy site [CI SKIP] 2025-05-12 08:35:47 +00:00
Woodpecker CI
478e4af316 Deploy site [CI SKIP] 2025-05-09 12:01:25 +00:00
Woodpecker CI
6ddceb36d8 Deploy site [CI SKIP] 2025-05-07 12:10:40 +00:00
Woodpecker CI
e84727e11f Deploy site [CI SKIP] 2025-05-07 11:55:29 +00:00
Woodpecker CI
f53b721b15 Deploy site [CI SKIP] 2025-05-06 15:14:40 +00:00
Woodpecker CI
df60a5345a Deploy site [CI SKIP] 2025-05-06 12:46:40 +00:00
Woodpecker CI
404f5d256f Deploy site [CI SKIP] 2025-05-06 12:17:58 +00:00
Woodpecker CI
d90430b26f Deploy site [CI SKIP] 2025-05-06 11:51:17 +00:00
Woodpecker CI
716d4236e4 Deploy site [CI SKIP] 2025-05-05 15:36:26 +00:00
Woodpecker CI
6f0d8fa8bc Deploy site [CI SKIP] 2025-05-05 15:25:51 +00:00
Woodpecker CI
d47e828a40 Deploy site [CI SKIP] 2025-05-05 15:17:15 +00:00
Woodpecker CI
ffe561fc72 Deploy site [CI SKIP] 2025-05-05 15:13:35 +00:00
Woodpecker CI
940a4871af Deploy site [CI SKIP] 2025-04-28 09:49:16 +00:00
Woodpecker CI
da4f0cc8f2 Deploy site [CI SKIP] 2025-04-28 09:45:57 +00:00
Woodpecker CI
2f46340a47 Deploy site [CI SKIP] 2025-04-25 14:45:25 +00:00
Woodpecker CI
5cd886f907 Deploy site [CI SKIP] 2025-04-25 14:42:12 +00:00
Woodpecker CI
1e1cfc4d72 Deploy site [CI SKIP] 2025-04-25 14:40:22 +00:00
Woodpecker CI
175e3cf9b8 Deploy site [CI SKIP] 2025-04-25 14:31:57 +00:00
Louis
c43c305595 Removing unwanted files from main 2025-04-25 16:29:36 +02:00
Louis
e3bf3dfdb9 Specify clone step
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2025-04-25 16:28:40 +02:00
Louis
331e5fc1dd Rem embedding 2025-04-25 16:28:27 +02:00
Louis
ded6265fe2 Rem embedding 2025-04-25 16:28:17 +02:00
Louis
fb89522ffd Moved branch pages to main 2025-04-25 16:17:27 +02:00
Woodpecker CI
80e9df2168 Deploy site [CI SKIP] 2025-04-25 14:10:18 +00:00
Woodpecker CI
a8043b97a3 Deploy site [CI SKIP] 2025-04-25 13:59:06 +00:00
Woodpecker CI
76d8bc6991 Deploy site [CI SKIP] 2025-04-25 13:52:58 +00:00
Louis
d1f9411c01 Emptying pages branch 2025-04-25 15:51:23 +02:00
92 changed files with 90341 additions and 799 deletions

313
.gitignore vendored
View file

@ -1,313 +0,0 @@
# ---> TeX
## Core latex/pdflatex auxiliary files:
*.aux
*.lof
*.log
*.lot
*.fls
*.out
*.toc
*.fmt
*.fot
*.cb
*.cb2
.*.lb
## Intermediate documents:
*.dvi
*.xdv
*-converted-to.*
# these rules might exclude image files for figures etc.
# *.ps
# *.eps
# *.pdf
## Generated if empty string is given at "Please type another file name for output:"
.pdf
## Bibliography auxiliary files (bibtex/biblatex/biber):
*.bbl
*.bcf
*.blg
*-blx.aux
*-blx.bib
*.run.xml
## Build tool auxiliary files:
*.fdb_latexmk
*.synctex
*.synctex(busy)
*.synctex.gz
*.synctex.gz(busy)
*.pdfsync
*.rubbercache
rubber.cache
## Build tool directories for auxiliary files
# latexrun
latex.out/
## Auxiliary and intermediate files from other packages:
# algorithms
*.alg
*.loa
# achemso
acs-*.bib
# amsthm
*.thm
# beamer
*.nav
*.pre
*.snm
*.vrb
# changes
*.soc
# comment
*.cut
# cprotect
*.cpt
# elsarticle (documentclass of Elsevier journals)
*.spl
# endnotes
*.ent
# fixme
*.lox
# feynmf/feynmp
*.mf
*.mp
*.t[1-9]
*.t[1-9][0-9]
*.tfm
#(r)(e)ledmac/(r)(e)ledpar
*.end
*.?end
*.[1-9]
*.[1-9][0-9]
*.[1-9][0-9][0-9]
*.[1-9]R
*.[1-9][0-9]R
*.[1-9][0-9][0-9]R
*.eledsec[1-9]
*.eledsec[1-9]R
*.eledsec[1-9][0-9]
*.eledsec[1-9][0-9]R
*.eledsec[1-9][0-9][0-9]
*.eledsec[1-9][0-9][0-9]R
# glossaries
*.acn
*.acr
*.glg
*.glo
*.gls
*.glsdefs
*.lzo
*.lzs
*.slg
*.slo
*.sls
# uncomment this for glossaries-extra (will ignore makeindex's style files!)
# *.ist
# gnuplot
*.gnuplot
*.table
# gnuplottex
*-gnuplottex-*
# gregoriotex
*.gaux
*.glog
*.gtex
# htlatex
*.4ct
*.4tc
*.idv
*.lg
*.trc
*.xref
# hypdoc
*.hd
# hyperref
*.brf
# knitr
*-concordance.tex
# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files
# *.tikz
*-tikzDictionary
# listings
*.lol
# luatexja-ruby
*.ltjruby
# makeidx
*.idx
*.ilg
*.ind
# minitoc
*.maf
*.mlf
*.mlt
*.mtc[0-9]*
*.slf[0-9]*
*.slt[0-9]*
*.stc[0-9]*
# minted
_minted*
*.pyg
# morewrites
*.mw
# newpax
*.newpax
# nomencl
*.nlg
*.nlo
*.nls
# pax
*.pax
# pdfpcnotes
*.pdfpc
# sagetex
*.sagetex.sage
*.sagetex.py
*.sagetex.scmd
# scrwfile
*.wrt
# svg
svg-inkscape/
# sympy
*.sout
*.sympy
sympy-plots-for-*.tex/
# pdfcomment
*.upa
*.upb
# pythontex
*.pytxcode
pythontex-files-*/
# tcolorbox
*.listing
# thmtools
*.loe
# TikZ & PGF
*.dpth
*.md5
*.auxlock
# titletoc
*.ptc
# todonotes
*.tdo
# vhistory
*.hst
*.ver
# easy-todo
*.lod
# xcolor
*.xcp
# xmpincl
*.xmpi
# xindy
*.xdy
# xypic precompiled matrices and outlines
*.xyc
*.xyd
# endfloat
*.ttt
*.fff
# Latexian
TSWLatexianTemp*
## Editors:
# WinEdt
*.bak
*.sav
# Texpad
.texpadtmp
# LyX
*.lyx~
# Kile
*.backup
# gummi
.*.swp
# KBibTeX
*~[0-9]*
# TeXnicCenter
*.tps
# auto folder when using emacs and auctex
./auto/*
*.el
# expex forward references with \gathertags
*-tags.tex
# standalone packages
*.sta
# Makeindex log files
*.lpz
# xwatermark package
*.xwm
# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib
# option is specified. Footnotes are the stored in a file with suffix Notes.bib.
# Uncomment the next line to have this generated file ignored.
#*Notes.bib
*.html
/.quarto/
public/

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
.quarto/xref/7687d49a Normal file
View file

@ -0,0 +1 @@
{"entries":[],"headings":["a-faire","jai-fait","a-continuer"]}

8
.quarto/xref/INDEX Normal file
View file

@ -0,0 +1,8 @@
{
"template.qmd": {
"template.html": "7687d49a"
},
"suivi/2025-17/2025-17.qmd": {
"2025-17.html": "c61c1965"
}
}

1
.quarto/xref/c61c1965 Normal file
View file

@ -0,0 +1 @@
{"headings":["a-faire","rédaction-article","simulations-article","applications","autour-de-larticle-et-du-package","jai-fait","a-continuer","correction-méthodo","applications-1","lancer-clustering-auteur-par-auteur-du-sub-doré-5-collections-différentes-dans-lidée.","baldock","gibson","souza","traveset","trojelsgaard"],"entries":[]}

View file

@ -1,38 +0,0 @@
steps:
render-site:
image: ghcr.io/quarto-dev/quarto:1.7.22
commands:
- cd $CI_WORKSPACE
- quarto render
when:
event: [push, pull_request, cron, manual]
branch:
- main
# Push le contenu du dossier public sur le dépôt `pages` de git.polarolouis.fr
# On utilise l'image alpine/git pour avoir git et ssh
deploy-site:
image: alpine/git
commands:
- git config --global user.name "Woodpecker CI"
- git config --global user.email "git@polarolouis.fr"
- git clone -b pages "https://$${ACCESS_TOKEN}@git.polarolouis.fr/polarolouis/these-recap-hebdo.git" $DESTINATION
- rm -rf $DESTINATION/* && echo "Cleaned $DESTINATION" || echo "Failed to clean $DESTINATION"
- cp -ar $CI_WORKSPACE/public/* $DESTINATION/
- cd $DESTINATION
- ls -la
- git add --all
- git commit -m "Deploy site ${CI_BUILD_CREATED} [CI SKIP]" || echo "Nothing to commit"
- git push && echo "Pushed to $DESTINATION" || echo "Failed to push to $DESTINATION"
environment:
ACCESS_TOKEN:
from_secret: access_token
DESTINATION: pages
when:
event:
- push
- pull_request
branch:
- main
depends_on:
- render-site

View file

@ -1,2 +0,0 @@
# these-recap-hebdo

View file

@ -1,25 +0,0 @@
project:
type: website
output-dir: public
website:
title: "Suivi de la thèse"
navbar:
left:
- href: index.qmd
text: "Liste des semaines"
lang: fr
date: last-modified
author:
name: "Louis LACOSTE"
email: "louis.lacoste@agroparistech.fr"
format:
html:
theme: yeti
toc: true
html-math-method: katex
embed-resources: true

1770
index.html Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,8 +0,0 @@
---
title: "Journal suivi de la thèse"
listing:
contents: suivi
type: default
sort: "date desc"
categories: true
---

View file

@ -0,0 +1,619 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Pour application du modèle colBiSBM sur données interaction PP et pratiques agricoles Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
</style>
<script src="../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../site_libs/clipboard/clipboard.min.js"></script>
<script src="../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../site_libs/quarto-search/fuse.min.js"></script>
<script src="../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../">
<script src="../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../site_libs/quarto-html/popper.min.js"></script>
<script src="../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../site_libs/quarto-html/anchor.min.js"></script>
<link href="../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#idée-de-lapplication" id="toc-idée-de-lapplication" class="nav-link active" data-scroll-target="#idée-de-lapplication"><span class="header-section-number">1</span> Idée de lapplication</a></li>
<li><a href="#point-à-éclaircir" id="toc-point-à-éclaircir" class="nav-link" data-scroll-target="#point-à-éclaircir"><span class="header-section-number">2</span> Point à éclaircir</a></li>
<li><a href="#liens" id="toc-liens" class="nav-link" data-scroll-target="#liens"><span class="header-section-number">3</span> Liens</a></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content" id="quarto-document-content">
<header id="title-block-header" class="quarto-title-block default">
<div class="quarto-title">
<h1 class="title">Pour application du modèle colBiSBM sur données interaction PP et pratiques agricoles</h1>
<div class="quarto-categories">
<div class="quarto-category">application</div>
<div class="quarto-category">agricole</div>
<div class="quarto-category">graphe</div>
<div class="quarto-category">collection</div>
<div class="quarto-category">lbm</div>
<div class="quarto-category">sbm</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">11 mai 2026</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header>
<section id="idée-de-lapplication" class="level1" data-number="1">
<h1 data-number="1"><span class="header-section-number">1</span> Idée de lapplication</h1>
<p>En discutant avec Alizée et grâce aux ressources de la <a href="#liens">section “Liens” données par Jean</a> possible dessayer de voir limpact sur la structure des réseaux plantes-pollinisateurs des pratiques agricoles autour des espaces de pollinisation.</p>
</section>
<section id="point-à-éclaircir" class="level1" data-number="2">
<h1 data-number="2"><span class="header-section-number">2</span> Point à éclaircir</h1>
<ol type="1">
<li>Quels réseaux plantes-pollinisateurs choisir, où les trouver ? Besoin de réseaux en France pour la facilité.</li>
<li>Faut-il utiliser les covariables seulement de manière <em>post-hoc</em> pour corréler avec le <em>clustering</em> de réseaux obtenus ?</li>
<li>Comment encoder les covariables ?
<ul>
<li>Est-ce que je les mets sous forme de pourcentage dans un <em>buffer</em> (quel rayon ?) comme Jean ? Alors problèmes inhérents aux données compositionnelles mais facilité dexécution ?</li>
<li>Quelle distance considérer pour limpact des pratiques agricoles, distance variables par pollinisateurs en soit ? Besoin de connaissances expertes.</li>
<li>Besoin dhomogénéiser les échelles ? Ou a minima den choisir une ou plusieurs à considérer pour les covariables ?</li>
<li>Gestion de gros tableaux de données pas simple.</li>
</ul></li>
<li><strong>Le temps ???</strong></li>
</ol>
</section>
<section id="liens" class="level1" data-number="3">
<h1 data-number="3"><span class="header-section-number">3</span> Liens</h1>
<p>CORINE Land Cover et extraction en R Très gros grain : <a href="https://fr.wikipedia.org/wiki/Corine_Land_Cover" class="uri">https://fr.wikipedia.org/wiki/Corine_Land_Cover</a> et le package de Jean pour lextraction des <em>buffers</em> de types dutilisation des sols : <a href="https://github.com/jean-cohen/corine.land.cover.landuse.extraction" class="uri">https://github.com/jean-cohen/corine.land.cover.landuse.extraction</a></p>
<p>Les cartes de données :</p>
<ul>
<li>Carte du Bio et des types de cultures échelle parcelle : <a href="https://www.agencebio.org/cartobio/" class="uri">https://www.agencebio.org/cartobio/</a></li>
<li>Échelle code postal, achat de phytosanitaires : <a href="https://ventes-produits-phytopharmaceutiques.eaufrance.fr/" class="uri">https://ventes-produits-phytopharmaceutiques.eaufrance.fr/</a></li>
<li>Thèse de Milena Cairo, classification des parcelles selon les pratiques en pesticides : <a href="https://theses.hal.science/tel-05038286" class="uri">https://theses.hal.science/tel-05038286</a></li>
<li>Recensement des parcelles et du type de culture : <a href="https://cartes.gouv.fr/rechercher-une-donnee/dataset/IGNF_RPG?redirected_from=geoservices.ign.fr" class="uri">https://cartes.gouv.fr/rechercher-une-donnee/dataset/IGNF_RPG?redirected_from=geoservices.ign.fr</a></li>
</ul>
</section>
</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

Binary file not shown.

View file

@ -0,0 +1,816 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Idées autour de linclusion de la phylogénie Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
</style>
<script src="../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../site_libs/clipboard/clipboard.min.js"></script>
<script src="../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../site_libs/quarto-search/fuse.min.js"></script>
<script src="../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../">
<script src="../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../site_libs/quarto-html/popper.min.js"></script>
<script src="../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../site_libs/quarto-html/anchor.min.js"></script>
<link href="../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#contexte-de-linclusion-de-la-phylogénie-dans-lestimation-de-la-structure-des-interactions" id="toc-contexte-de-linclusion-de-la-phylogénie-dans-lestimation-de-la-structure-des-interactions" class="nav-link active" data-scroll-target="#contexte-de-linclusion-de-la-phylogénie-dans-lestimation-de-la-structure-des-interactions"><span class="header-section-number">1</span> Contexte de linclusion de la phylogénie dans lestimation de la structure des interactions</a>
<ul class="collapse">
<li><a href="#formalisme-commun" id="toc-formalisme-commun" class="nav-link" data-scroll-target="#formalisme-commun"><span class="header-section-number">1.1</span> Formalisme commun</a></li>
</ul></li>
<li><a href="#sbm-ou-lbm-séquentiel" id="toc-sbm-ou-lbm-séquentiel" class="nav-link" data-scroll-target="#sbm-ou-lbm-séquentiel"><span class="header-section-number">2</span> SBM (ou LBM) Séquentiel</a>
<ul class="collapse">
<li><a href="#formalisation-de-lidée" id="toc-formalisation-de-lidée" class="nav-link" data-scroll-target="#formalisation-de-lidée"><span class="header-section-number">2.1</span> Formalisation de lidée</a></li>
<li><a href="#limites-de-lapproche" id="toc-limites-de-lapproche" class="nav-link" data-scroll-target="#limites-de-lapproche"><span class="header-section-number">2.2</span> Limites de lapproche</a></li>
</ul></li>
<li><a href="#sbm-et-lbm-avec-covariables-sur-les-noeuds" id="toc-sbm-et-lbm-avec-covariables-sur-les-noeuds" class="nav-link" data-scroll-target="#sbm-et-lbm-avec-covariables-sur-les-noeuds"><span class="header-section-number">3</span> SBM et LBM avec covariables sur les noeuds</a>
<ul class="collapse">
<li><a href="#formalisation-du-modèle" id="toc-formalisation-du-modèle" class="nav-link" data-scroll-target="#formalisation-du-modèle"><span class="header-section-number">3.1</span> Formalisation du modèle</a></li>
<li><a href="#preuve-de-lidentifiabilité" id="toc-preuve-de-lidentifiabilité" class="nav-link" data-scroll-target="#preuve-de-lidentifiabilité"><span class="header-section-number">3.2</span> Preuve de lidentifiabilité</a></li>
<li><a href="#inférence" id="toc-inférence" class="nav-link" data-scroll-target="#inférence"><span class="header-section-number">3.3</span> Inférence</a></li>
<li><a href="#implémentation" id="toc-implémentation" class="nav-link" data-scroll-target="#implémentation"><span class="header-section-number">3.4</span> Implémentation</a></li>
<li><a href="#la-suite" id="toc-la-suite" class="nav-link" data-scroll-target="#la-suite"><span class="header-section-number">3.5</span> La suite</a></li>
</ul></li>
<li><a href="#lbm-avec-dépendance-latente-entre-les-probabilités-a-priori" id="toc-lbm-avec-dépendance-latente-entre-les-probabilités-a-priori" class="nav-link" data-scroll-target="#lbm-avec-dépendance-latente-entre-les-probabilités-a-priori"><span class="header-section-number">4</span> LBM avec dépendance latente entre les probabilités <em>a priori</em></a>
<ul class="collapse">
<li><a href="#formalisation-du-modèle-1" id="toc-formalisation-du-modèle-1" class="nav-link" data-scroll-target="#formalisation-du-modèle-1"><span class="header-section-number">4.1</span> Formalisation du modèle</a></li>
</ul></li>
<li><a href="#échantillonnage-selon-larbre" id="toc-échantillonnage-selon-larbre" class="nav-link" data-scroll-target="#échantillonnage-selon-larbre"><span class="header-section-number">5</span> Échantillonnage selon larbre</a></li>
<li><a href="#latent-position-model-lpm-avec-phylogénie-des-représentations-latentes-selon-la-phylogénie" id="toc-latent-position-model-lpm-avec-phylogénie-des-représentations-latentes-selon-la-phylogénie" class="nav-link" data-scroll-target="#latent-position-model-lpm-avec-phylogénie-des-représentations-latentes-selon-la-phylogénie"><span class="header-section-number">6</span> <em>Latent Position Model</em> (LPM) avec phylogénie des représentations latentes selon la phylogénie</a>
<ul class="collapse">
<li><a href="#classique" id="toc-classique" class="nav-link" data-scroll-target="#classique"><span class="header-section-number">6.1</span> Classique</a></li>
<li><a href="#deep-lpm" id="toc-deep-lpm" class="nav-link" data-scroll-target="#deep-lpm"><span class="header-section-number">6.2</span> <em>Deep</em> LPM</a></li>
</ul></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content" id="quarto-document-content">
<header id="title-block-header" class="quarto-title-block default">
<div class="quarto-title">
<h1 class="title">Idées autour de linclusion de la phylogénie</h1>
<div class="quarto-categories">
<div class="quarto-category">phylogénie</div>
<div class="quarto-category">graphes</div>
<div class="quarto-category">lbm</div>
<div class="quarto-category">sbm</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">11 mai 2026</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header>
<section id="contexte-de-linclusion-de-la-phylogénie-dans-lestimation-de-la-structure-des-interactions" class="level1" data-number="1">
<h1 data-number="1"><span class="header-section-number">1</span> Contexte de linclusion de la phylogénie dans lestimation de la structure des interactions</h1>
<p>Dans le 3e axe de ma thèse nous souhaitons inclure de linformation phylogénétique dans lestimation de la structure des réseaux dinteraction microbiens.</p>
<ol type="1">
<li><p>Ces réseaux se présentent sous la forme de matrice des comptages hautement rectangulaire, cest-à-dire avec un grand nombre de microorganismes et, en comparaison, peu déchantillons (de sols, daliments, de patients…). Cette haute dimensionnalité met en échec les méthodes classiques non concues pour gérer autant de noeuds (SBM). Il sagit donc dun <strong>premier enjeu</strong></p></li>
<li><p>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 labondance réelle des autres na pas changée, les comptages observés des autres séquences vont diminuer. Voir <a href="#note-donnees-compo">la note sur les données compositionnelles</a>.</p></li>
</ol>
<div id="note-donnees-compo" class="callout callout-style-default callout-note callout-titled" title="Données compositionelles">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Données compositionelles
</div>
</div>
<div class="callout-body-container callout-body">
<p>Soit <span class="math inline">N</span> la profondeur de séquençage, <span class="math inline">\forall s \in \{1,\dots,s\}, n_s</span> le nombre réel de fois où la séquence <span class="math inline">s</span> est présente, <span class="math inline">t = \sum_s n_s</span> la somme des séquences totale. Les comptages observés <span class="math inline">o_s</span> pour la séquence <span class="math inline">s</span> sont <span class="math inline">o_s = \dfrac{n_s}{N}</span>, et on a <span class="math inline">\sum_{s} o_s = \dfrac{1}{N} \sum_{s} n_s</span> par construction.</p>
<p>Et donc à pour un <span class="math inline">S</span> quelconque on a <span class="math inline">o_S = \dfrac{t}{N} - \sum_{s, s\neq S} o_s</span> et donc une contrainte sur les <span class="math inline">o_s</span>.</p>
</div>
</div>
<p>Diverses autres enjeux se posent quand on considère ce type de données. Par exemple, larbre phylogénétique peut ne pas être directement accessible, ou bien être dominé par un certain clade. Il peut aussi exploser en nombre dindividu à chaque niveau (à relier au point 1).</p>
<section id="formalisme-commun" class="level2" data-number="1.1">
<h2 data-number="1.1" class="anchored" data-anchor-id="formalisme-commun"><span class="header-section-number">1.1</span> Formalisme commun</h2>
<p>Dans la suite, nous considèrerons <span class="math inline">\mathcal{T}</span> larbre ayant <span class="math inline">L</span> niveaux, indexés de <span class="math inline">l = 0,\dots,L</span> avec <span class="math inline">0</span> la racine commune et <span class="math inline">L</span> les feuilles de larbre.</p>
<p><span class="math inline">Y</span> la matrice de bi-adjacence encodant le graphe et modélisant les interactions, de taille <span class="math inline">n_1\times n_2</span>.</p>
<p><span class="math inline">V, X</span> les matrices de covariable sur les noeuds en ligne et en colonnes de <span class="math inline">Y</span>. <span class="math inline">V</span> est de taille <span class="math inline">n_1 \times d</span> et <span class="math inline">X</span> est de taille <span class="math inline">n_2 \times p</span></p>
</section>
</section>
<section id="sbm-ou-lbm-séquentiel" class="level1" data-number="2">
<h1 data-number="2"><span class="header-section-number">2</span> SBM (ou LBM) Séquentiel</h1>
<section id="formalisation-de-lidée" class="level2" data-number="2.1">
<h2 data-number="2.1" class="anchored" data-anchor-id="formalisation-de-lidée"><span class="header-section-number">2.1</span> Formalisation de lidée</h2>
<p>Ici on utilise larbre phylogénétique afin dinitialiser lEM variationnel du niveau suivant.</p>
<p>Concrètement, on ajuste un LBM au niveau <span class="math inline">l</span>, sur la matrice de comptage aggrégées à ce niveau <span class="math inline">Y^l</span>, ce qui donne des probabilités variationnelles <span class="math inline">\pmb{\tau}^{1,l},\pmb{\tau}^{2,l}</span> qui sont de tailles respectives <span class="math inline">n_{1,l} \times Q_{l}</span> et <span class="math inline">n_{2,l} \times R_{l}</span>.</p>
<p>Puis pour tout individu <span class="math inline">u\in \text{Child}(i)</span>, on initialise ses probas <span class="math inline">\widetilde{\tau}^{1,l+1}_u = \tau^{1,l}_u + \varepsilon_{u}</span>, avec <span class="math inline">\varepsilon_u \sim \mathcal{N}_{Q_l}(0,\sigma^2)</span> et on renormalise <span class="math inline">\tau^{1,l+1}_{u} = \dfrac{\widetilde{\tau}^{1,l+1}_u}{\sum_q \widetilde{\tau}^{1,l+1}_{u,q}}</span>. On ajoute une perturbation afin de ne pas rester bloqué sur le point fixe précédent et de pouvoir donc obtenir les <span class="math inline">\tau^{1,l+1}</span> à lissue de loptimisation.</p>
</section>
<section id="limites-de-lapproche" class="level2" data-number="2.2">
<h2 data-number="2.2" class="anchored" data-anchor-id="limites-de-lapproche"><span class="header-section-number">2.2</span> Limites de lapproche</h2>
<p>Le passage dinformation selon larbre nous semble intuitivement être une bonne approche et les résultats que nous avons obtenues indique quun peu dinformation semble passer mais il faut aller profondément dans larbre et alors on rencontre le problème du coût computationnel. En effet cette méthode ne diminue pas le coût en calcul puisquelle calcule un LBM à chacun des <span class="math inline">L</span> niveaux, au mieux elle donne un point dinitialisation intelligent mais cela semble difficilement applicable à des données réelles.</p>
</section>
</section>
<section id="sbm-et-lbm-avec-covariables-sur-les-noeuds" class="level1" data-number="3">
<h1 data-number="3"><span class="header-section-number">3</span> SBM et LBM avec covariables sur les noeuds</h1>
<p>Ce modèle visent à intégrer des covariables de noeuds comme modificateurs des probabilités <em>a priori</em> dappartenance aux groupes. Pour la phylogénie, en passant par une MDS ou une autre méthode permettant à partir des distances phylogénétique dobtenir des “positions” ou des covariables, cela permettrait dinjecter la priori phylogénétique dans lestimation de la structure du réseau.</p>
<section id="formalisation-du-modèle" class="level2" data-number="3.1">
<h2 data-number="3.1" class="anchored" data-anchor-id="formalisation-du-modèle"><span class="header-section-number">3.1</span> Formalisation du modèle</h2>
<p>Toujours modèle LBM mais avec probas dappartenance pour les colonnes variables:</p>
<p><span class="math display">\begin{align*}
Z_i &amp;\sim \mathcal{M}(1; \pi_1, \dots, \pi_Q), \sum_{q=1}^{Q} \pi_q = 1\\
W_j &amp;\sim \mathcal{M}(1; \rho_1^j, \dots, \rho_R^j), \sum_{r=1}^{R} \rho_r^j = 1\\
Y_{i,j}&amp;\mid Z_i = q, W_j = r \sim \mathcal{F}(\alpha_{qr})
\end{align*}</span></p>
<p>Voici pour les probas pour les individus en colonne de la matrice dadjacence : <span class="math display">\begin{align*}
\pmb{\beta}_{r}&amp; = \begin{pmatrix}
\beta_{r,0}\\
\vdots\\
\beta_{r,p}
\end{pmatrix}, &amp; X_{j,\bullet} = \begin{pmatrix}
1 = x_{0,j} &amp; x_{1,j} &amp; \dots &amp; x_{p,j}
\end{pmatrix}\\
X_{j,\bullet} \pmb{\beta}_r&amp; = \beta_{r,0} x_{0,j} + \beta_{r,1} x_{1,j} + \dots + \beta_{r,p} x_{p,j} &amp; \approx \log(\rho_r^j) \\
B &amp; = \begin{pmatrix}
\pmb{\beta}_1 \dots \pmb{\beta}_r \dots \pmb{\beta}_R
\end{pmatrix} &amp; X_{j,\bullet}B \approx \log(\pmb{\rho}^j) \\
X B &amp; \approx \log((\pmb{\rho}^j)_{j=1,\dots,n_2}) = \log(\pmb{\Rho})\\
\end{align*}</span> avec les <span class="math inline">\beta, B</span> qui désigne donc les coefficient de la combinaison linéaire et <span class="math inline">X</span> les covariables des individus (taille <span class="math inline">n_2\times p</span>, <span class="math inline">p</span> covariables).</p>
<p>Et pour les probas en lignes du LBM : <span class="math display">\begin{align*}
\pmb{\gamma}_{q}&amp; = \begin{pmatrix}
\gamma_{q,0}\\
\vdots\\
\gamma_{q,d}
\end{pmatrix}, &amp; V_{i,\bullet} = \begin{pmatrix}
1 = v_{0,i} &amp; v_{1,i} &amp; \dots &amp; v_{d,i}
\end{pmatrix}\\
V_{i,\bullet} \pmb{\gamma}_q &amp; = \gamma_{q,0} v_{0,i} + \gamma_{q,1} v_{1,i} + \dots + \gamma_{q,d} v_{d,i} &amp; \approx \log(\pi_q^i) \\
\Gamma &amp; = \begin{pmatrix}
\gamma_1 \dots \pmb{\gamma}_q \dots \pmb{\gamma}_Q
\end{pmatrix} &amp; V_{i,\bullet} \Gamma \approx \log(\pmb{\pi}^i) \\
V \Gamma &amp; \approx \log((\pmb{\pi}^i)_{i=1,\dots,n_1}) = \log(\pmb{\Pi})
\end{align*}</span> avec les <span class="math inline">\gamma, G</span> qui désigne donc les coefficient de la combinaison linéaire et <span class="math inline">V</span> les covariables des individus (taille <span class="math inline">n_1\times d</span>, <span class="math inline">d</span> covariables).</p>
</section>
<section id="preuve-de-lidentifiabilité" class="level2" data-number="3.2">
<h2 data-number="3.2" class="anchored" data-anchor-id="preuve-de-lidentifiabilité"><span class="header-section-number">3.2</span> Preuve de lidentifiabilité</h2>
<p>Soient <span class="math inline">B,B^{\prime}</span> avec <span class="math inline">B_{\bullet,R} = B^{\prime}_{\bullet,R} = \vec{0}_{p+1}</span> et <span class="math inline">X</span> de rang plein tel que <span class="math inline">X^{\top}X</span> soit inversible.</p>
<p><span class="math display">\begin{align*}
&amp;\sigma(XB) = \sigma(XB^{\prime})\\
&amp;\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} \\
&amp;\implies \exists C \in \mathbb{R}^{n_2}, (X B)_{j,r} = (X B^{\prime})_{j,r} + (C \pmb{1}_{R}^{\top})_{j,r} \\
&amp;\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\\
&amp;\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 \\
&amp;\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 \\
&amp;\implies \exists C \in \mathbb{R}^{n_2}, \forall j\in\{1,\dots,n_2\}, 0 = 0 + c_j \implies c_j = 0 \\
&amp;\implies C = \begin{pmatrix} 0 \\ \vdots \\ 0 \end{pmatrix} \text{and thus}, XB = XB^{\prime} \\
&amp; \implies (X^{\top} X)^{-1}X^{\top} X B = (X^{\top} X)^{-1}X^{\top} X B^{\prime} \implies B=B^{\prime}
\end{align*}</span></p>
</section>
<section id="inférence" class="level2" data-number="3.3">
<h2 data-number="3.3" class="anchored" data-anchor-id="inférence"><span class="header-section-number">3.3</span> Inférence</h2>
<p>Inférence variationnelle donc <span class="math inline">\ell(Y;\pmb{\theta}) \geq \mathcal{J}(\mathcal{R},\pmb{\theta})</span> avec</p>
<p><span class="math display">
\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}
</span></p>
<p>Avec <span class="math inline">\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}</span>, où <span class="math inline">\sigma</span> désigne le softmax. Et sous la contrainte d<a href="#preuve-de-lidentifiabilité">identifiabilité</a> que lun des <span class="math inline">(\beta_r)_{r=1,\dots,R}</span> soit nul, ici <span class="math inline">\beta_R = 0</span>.</p>
<p>La partie pertinente de lELBO devient: <span id="eq-modele-covar-prop"><span class="math display">
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}</span></span></p>
<p>Et on obtient la dérivée partielle par rapport à <span class="math inline">\beta_t</span> comme: <span class="math display">\begin{align*}
\dfrac{\partial P}{\partial \beta_t}&amp;((\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]\\
&amp; = \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*}</span></p>
</section>
<section id="implémentation" class="level2" data-number="3.4">
<h2 data-number="3.4" class="anchored" data-anchor-id="implémentation"><span class="header-section-number">3.4</span> Implémentation</h2>
<p>Jai implémenté tout ça dans un <em>fork</em> de <a href="https://github.com/GrossSBM/blockmodels">blockmodels</a>. Ce fork est disponible <a href="https://github.com/Polarolouis/blockmodels">ici</a> et <strong>en cours de relecture par JBL</strong>.</p>
<p>Pour les détails techniques, jai ré-écrit la gestion des <em>memberships</em> en R pour passer les covariables et coefficients nécessaires aux calculs. Jai implémenté une descente de gradient en utilisant un algorithme de type BFGS pour loptimisation des coefficients de la combinaison linéaire. Et enfin jai intégré plusieurs choses dans le package R <a href="https://github.com/GrossSBM/sbm">sbm</a>:</p>
<ol type="1">
<li><a href="https://github.com/GrossSBM/sbm/tree/nodescovariates">La gestion des covariables de noeuds</a></li>
<li>Le support des <a href="https://github.com/GrossSBM/sbm/tree/feat/NAsupport">valeurs manquantes</a></li>
</ol>
</section>
<section id="la-suite" class="level2" data-number="3.5">
<h2 data-number="3.5" class="anchored" data-anchor-id="la-suite"><span class="header-section-number">3.5</span> La suite</h2>
<p>Maintenant, Sophie et Pierre gèrent la rédaction de vignettes et de simulations autour de ces fonctionnalités.</p>
<p>Nous attendons de voir si lon trouve un jeu de données adaptées pour cette méthode.</p>
<p><strong>Limites</strong> : Ce modèle ne permet pas le passage à léchelle pour les gros réseaux que représentent les matrices de comptage.</p>
</section>
</section>
<section id="lbm-avec-dépendance-latente-entre-les-probabilités-a-priori" class="level1" data-number="4">
<h1 data-number="4"><span class="header-section-number">4</span> LBM avec dépendance latente entre les probabilités <em>a priori</em></h1>
<section id="formalisation-du-modèle-1" class="level2" data-number="4.1">
<h2 data-number="4.1" class="anchored" data-anchor-id="formalisation-du-modèle-1"><span class="header-section-number">4.1</span> Formalisation du modèle</h2>
<p>Pierre a proposé que lon pose une structure latente sur les <span class="math inline">\pmb{Z}</span>. Cest à dire <span class="math display">\begin{align*}
&amp; P \sim \mathcal{N}_{n_1, K-1} (O_{n_1, K-1}, \Sigma, \sigma^2 Id_{K-1}), \\
\forall i \in \{1,\dots,n_1\}, &amp; Z_i \mid P_i \overset{ind}{\sim} \mathop{\mathrm{Cat}}_{K} ({\mathop{\mathrm{ilr}}}^{-1}(P_i) = \pi_{1:K}^{(i)}), \\
\forall j \in \{1,\dots,n_2\}, &amp; W_j \overset{iid}{\sim} \mathop{\mathrm{Cat}}_R (\rho_{1:R}),\\
\forall i,j \in \{1,\dots,n_1\}\times\{1,\dots,n_2\}, &amp; Y_{ij} \mid Z_i = k, W_j = r \overset{ind}{\sim} \mathcal{F}(\alpha_{qr}),
\end{align*}</span> avec <span class="math inline">\Sigma</span>, la matrice de variance-covariance déterminée en fonction de lapparentement (phylogénétique) des noeuds.</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><embed src="figs/projets-phylo/dag-simple.pdf" class="img-fluid"></p>
<figcaption>Le DAG simplifié du modèle</figcaption>
</figure>
</div>
</section>
</section>
<section id="échantillonnage-selon-larbre" class="level1" data-number="5">
<h1 data-number="5"><span class="header-section-number">5</span> Échantillonnage selon larbre</h1>
<p>Afin daffronter le coût computationnel que représente lajustement</p>
</section>
<section id="latent-position-model-lpm-avec-phylogénie-des-représentations-latentes-selon-la-phylogénie" class="level1" data-number="6">
<h1 data-number="6"><span class="header-section-number">6</span> <em>Latent Position Model</em> (LPM) avec phylogénie des représentations latentes selon la phylogénie</h1>
<section id="classique" class="level2" data-number="6.1">
<h2 data-number="6.1" class="anchored" data-anchor-id="classique"><span class="header-section-number">6.1</span> Classique</h2>
</section>
<section id="deep-lpm" class="level2" data-number="6.2">
<h2 data-number="6.2" class="anchored" data-anchor-id="deep-lpm"><span class="header-section-number">6.2</span> <em>Deep</em> LPM</h2>
<p>Possibilité dutilisé un encodeur qui soit un réseau de neurones et de bénéficier de tous les décodeurs de la littérature LPM. <strong>Quel est le lien avec le VGAE ?</strong> <strong>Avantage de passage à léchelle??</strong></p>
</section>
</section>
</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

View file

@ -0,0 +1,657 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Variational Graph AutoEncoder with Wasserstein Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
</style>
<script src="../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../site_libs/clipboard/clipboard.min.js"></script>
<script src="../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../site_libs/quarto-search/fuse.min.js"></script>
<script src="../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../">
<script src="../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../site_libs/quarto-html/popper.min.js"></script>
<script src="../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../site_libs/quarto-html/anchor.min.js"></script>
<link href="../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#idée-principale" id="toc-idée-principale" class="nav-link active" data-scroll-target="#idée-principale"><span class="header-section-number">1</span> Idée principale</a></li>
<li><a href="#apprentissage-contrastif" id="toc-apprentissage-contrastif" class="nav-link" data-scroll-target="#apprentissage-contrastif"><span class="header-section-number">2</span> Apprentissage contrastif</a>
<ul class="collapse">
<li><a href="#hypersphère-méga-cool" id="toc-hypersphère-méga-cool" class="nav-link" data-scroll-target="#hypersphère-méga-cool"><span class="header-section-number">2.1</span> Hypersphère méga cool</a></li>
</ul></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content" id="quarto-document-content">
<header id="title-block-header" class="quarto-title-block default">
<div class="quarto-title">
<h1 class="title">Variational Graph AutoEncoder with Wasserstein</h1>
<div class="quarto-categories">
<div class="quarto-category">convolution</div>
<div class="quarto-category">machine learning</div>
<div class="quarto-category">vae</div>
<div class="quarto-category">graphes</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">11 mai 2026</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header>
<p>Suite à la discussion avec Julian jinscris ce que lon sest dit.</p>
<section id="idée-principale" class="level1" data-number="1">
<h1 data-number="1"><span class="header-section-number">1</span> Idée principale</h1>
<p>Les VAE avec convolution de graphes (GCN) permettent dapprendre une représentation latente des noeuds dun graphe basée sur les interactions entre noeuds.</p>
<p><strong>Objectif</strong> : apprendre un même encodeur et donc un espace latent structuré pour clusteriser une collection de réseaux sur la base de la structure. <em>Sous-objectif</em> : pouvoir prendre en compte des covariables (Fused Wasserstein ?).</p>
<p>Principe du VAE:</p>
<p>Soit <span class="math inline">Y</span> une matrice dadjacence (ou de bi-adjacence pour les graphes bipartites), <span class="math inline">X</span> une matrice de covariables.</p>
<p>Soit <span class="math inline">D_1</span> la matrice des degrés en ligne, <span class="math inline">D_2</span> la matrice des degrés en colonne.</p>
<p><span class="math inline">\widetilde{Y} = D_1^{-1/2} Y D_2^{-1/2}</span></p>
<p><strong>à compléter</strong></p>
</section>
<section id="apprentissage-contrastif" class="level1" data-number="2">
<h1 data-number="2"><span class="header-section-number">2</span> Apprentissage contrastif</h1>
<p>Puisque lon voudrait marquer la séparation entre différentes structures de réseaux, on pourrait vouloir faire de l<a href="https://u9534056.medium.com/an-overview-of-contrastive-learning-fa520f5f2c23">apprentissage contrastif pour V(G)AE</a>.</p>
<section id="hypersphère-méga-cool" class="level2" data-number="2.1">
<h2 data-number="2.1" class="anchored" data-anchor-id="hypersphère-méga-cool"><span class="header-section-number">2.1</span> Hypersphère méga cool</h2>
<p>Il faut creuser : forcer les contraintes des <em>embeddings</em> à vivre sur la surface dune hypersphère car, daprès Julian et la littérature, par rapport à un espace euclidien cela permet davoir :</p>
<ul>
<li>position latente bornée : stabilisation de lapprentissage et évite lexplosion dans une ou plusieurs directions.</li>
<li>couverture “uniforme” de la sphère : tendance à faciliter lapprentissage contrastif, avec lidée de bien séparer les graphes aux structures différentes.</li>
</ul>
<p><a href="https://www.envisioning.com/vocab/hyperspherical-representation-learning">Première source</a></p>
<p>Le softmax est remplacée par la loi de von Mises-Fisher. Daprès <a href="https://fr.wikipedia.org/wiki/Loi_de_von_Mises-Fisher#Relation_avec_la_loi_normale">Wikipédia</a> équivalent de la loi normale multivariée à covariance isotrope restreinte à lhypersphère unité.</p>
</section>
</section>
</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

38
listings.json Normal file
View file

@ -0,0 +1,38 @@
[
{
"listing": "/index.html",
"items": [
"/suivi/2026-12/2026-12.html",
"/suivi/2026-9/2026-9.html",
"/suivi/2026-7/2026-7.html",
"/suivi/2026-8/2026-8.html",
"/suivi/2026-6/2026-6.html",
"/suivi/2025-51/2025-51.html",
"/suivi/2025-50/2025-50.html",
"/suivi/2025-45/2025-45.html",
"/suivi/2025-44/2025-44.html",
"/suivi/2025-43/2025-43.html",
"/suivi/2025-38/2025-38.html",
"/suivi/2025-35/2025-35.html",
"/suivi/2025-33/2025-33.html",
"/suivi/2025-29/2025-29.html",
"/suivi/2025-28/2025-28.html",
"/suivi/2025-27/2025-27.html",
"/suivi/2025-25/2025-25.html",
"/suivi/2025-24/2025-24.html",
"/suivi/2025-22/2025-22.html",
"/suivi/2025-21/2025-21.html",
"/suivi/2025-20/2025-20.html",
"/suivi/2025-19/2025-19.html",
"/suivi/2025-18/2025-18.html",
"/suivi/2025-17/2025-17.html",
"/suivi/2025-16/2025-16.html",
"/suivi/2025-15/2025-15.html",
"/suivi/2025-14/2025-14.html",
"/suivi/2025-13/2025-13.html",
"/knowledge_base/colsbm_application_reseaux_et_agri.html",
"/knowledge_base/vae_wasserstein_gromov.html",
"/knowledge_base/projets-phylo.html"
]
}
]

1073
search.json Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2078
site_libs/bootstrap/bootstrap-icons.css vendored Normal file

File diff suppressed because it is too large Load diff

Binary file not shown.

7
site_libs/bootstrap/bootstrap.min.js vendored Normal file

File diff suppressed because one or more lines are too long

7
site_libs/clipboard/clipboard.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,26 @@
body:not(.glightbox-mobile) div.gslide div.gslide-description,
body:not(.glightbox-mobile) div.gslide-description .gslide-title,
body:not(.glightbox-mobile) div.gslide-description .gslide-desc {
color: var(--quarto-body-color);
background-color: var(--quarto-body-bg);
}
body:not(.glightbox-mobile) div.gslide-media {
background-color: var(--quarto-body-bg);
}
.goverlay {
background: rgba(0, 0, 0, 0.7);
}
div.gslide-description .gslide-title {
margin-top: 0.25em;
margin-bottom: 0.25em;
font-weight: 500;
font-family: inherit;
}
div.gslide-description .gslide-desc {
padding-bottom: 0.5em;
font-family: inherit;
}

9
site_libs/quarto-html/anchor.min.js vendored Normal file

File diff suppressed because one or more lines are too long

6
site_libs/quarto-html/popper.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,205 @@
/* quarto syntax highlight colors */
:root {
--quarto-hl-ot-color: #003B4F;
--quarto-hl-at-color: #657422;
--quarto-hl-ss-color: #20794D;
--quarto-hl-an-color: #5E5E5E;
--quarto-hl-fu-color: #4758AB;
--quarto-hl-st-color: #20794D;
--quarto-hl-cf-color: #003B4F;
--quarto-hl-op-color: #5E5E5E;
--quarto-hl-er-color: #AD0000;
--quarto-hl-bn-color: #AD0000;
--quarto-hl-al-color: #AD0000;
--quarto-hl-va-color: #111111;
--quarto-hl-bu-color: inherit;
--quarto-hl-ex-color: inherit;
--quarto-hl-pp-color: #AD0000;
--quarto-hl-in-color: #5E5E5E;
--quarto-hl-vs-color: #20794D;
--quarto-hl-wa-color: #5E5E5E;
--quarto-hl-do-color: #5E5E5E;
--quarto-hl-im-color: #00769E;
--quarto-hl-ch-color: #20794D;
--quarto-hl-dt-color: #AD0000;
--quarto-hl-fl-color: #AD0000;
--quarto-hl-co-color: #5E5E5E;
--quarto-hl-cv-color: #5E5E5E;
--quarto-hl-cn-color: #8f5902;
--quarto-hl-sc-color: #5E5E5E;
--quarto-hl-dv-color: #AD0000;
--quarto-hl-kw-color: #003B4F;
}
/* other quarto variables */
:root {
--quarto-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
pre > code.sourceCode > span {
color: #003B4F;
}
code span {
color: #003B4F;
}
code.sourceCode > span {
color: #003B4F;
}
div.sourceCode,
div.sourceCode pre.sourceCode {
color: #003B4F;
}
code span.ot {
color: #003B4F;
font-style: inherit;
}
code span.at {
color: #657422;
font-style: inherit;
}
code span.ss {
color: #20794D;
font-style: inherit;
}
code span.an {
color: #5E5E5E;
font-style: inherit;
}
code span.fu {
color: #4758AB;
font-style: inherit;
}
code span.st {
color: #20794D;
font-style: inherit;
}
code span.cf {
color: #003B4F;
font-weight: bold;
font-style: inherit;
}
code span.op {
color: #5E5E5E;
font-style: inherit;
}
code span.er {
color: #AD0000;
font-style: inherit;
}
code span.bn {
color: #AD0000;
font-style: inherit;
}
code span.al {
color: #AD0000;
font-style: inherit;
}
code span.va {
color: #111111;
font-style: inherit;
}
code span.bu {
font-style: inherit;
}
code span.ex {
font-style: inherit;
}
code span.pp {
color: #AD0000;
font-style: inherit;
}
code span.in {
color: #5E5E5E;
font-style: inherit;
}
code span.vs {
color: #20794D;
font-style: inherit;
}
code span.wa {
color: #5E5E5E;
font-style: italic;
}
code span.do {
color: #5E5E5E;
font-style: italic;
}
code span.im {
color: #00769E;
font-style: inherit;
}
code span.ch {
color: #20794D;
font-style: inherit;
}
code span.dt {
color: #AD0000;
font-style: inherit;
}
code span.fl {
color: #AD0000;
font-style: inherit;
}
code span.co {
color: #5E5E5E;
font-style: inherit;
}
code span.cv {
color: #5E5E5E;
font-style: italic;
}
code span.cn {
color: #8f5902;
font-style: inherit;
}
code span.sc {
color: #5E5E5E;
font-style: inherit;
}
code span.dv {
color: #AD0000;
font-style: inherit;
}
code span.kw {
color: #003B4F;
font-weight: bold;
font-style: inherit;
}
.prevent-inlining {
content: "</";
}
/*# sourceMappingURL=f3b3742851fc2edd117c78e6756ce3a0.css.map */

View file

@ -0,0 +1,845 @@
import * as tabsets from "./tabsets/tabsets.js";
const sectionChanged = new CustomEvent("quarto-sectionChanged", {
detail: {},
bubbles: true,
cancelable: false,
composed: false,
});
const layoutMarginEls = () => {
// Find any conflicting margin elements and add margins to the
// top to prevent overlap
const marginChildren = window.document.querySelectorAll(
".column-margin.column-container > *, .margin-caption, .aside"
);
let lastBottom = 0;
for (const marginChild of marginChildren) {
if (marginChild.offsetParent !== null) {
// clear the top margin so we recompute it
marginChild.style.marginTop = null;
const top = marginChild.getBoundingClientRect().top + window.scrollY;
if (top < lastBottom) {
const marginChildStyle = window.getComputedStyle(marginChild);
const marginBottom = parseFloat(marginChildStyle["marginBottom"]);
const margin = lastBottom - top + marginBottom;
marginChild.style.marginTop = `${margin}px`;
}
const styles = window.getComputedStyle(marginChild);
const marginTop = parseFloat(styles["marginTop"]);
lastBottom = top + marginChild.getBoundingClientRect().height + marginTop;
}
}
};
window.document.addEventListener("DOMContentLoaded", function (_event) {
// Recompute the position of margin elements anytime the body size changes
if (window.ResizeObserver) {
const resizeObserver = new window.ResizeObserver(
throttle(() => {
layoutMarginEls();
if (
window.document.body.getBoundingClientRect().width < 990 &&
isReaderMode()
) {
quartoToggleReader();
}
}, 50)
);
resizeObserver.observe(window.document.body);
}
const tocEl = window.document.querySelector('nav.toc-active[role="doc-toc"]');
const sidebarEl = window.document.getElementById("quarto-sidebar");
const leftTocEl = window.document.getElementById("quarto-sidebar-toc-left");
const marginSidebarEl = window.document.getElementById(
"quarto-margin-sidebar"
);
// function to determine whether the element has a previous sibling that is active
const prevSiblingIsActiveLink = (el) => {
const sibling = el.previousElementSibling;
if (sibling && sibling.tagName === "A") {
return sibling.classList.contains("active");
} else {
return false;
}
};
// dispatch for htmlwidgets
// they use slideenter event to trigger resize
function fireSlideEnter() {
const event = window.document.createEvent("Event");
event.initEvent("slideenter", true, true);
window.document.dispatchEvent(event);
}
const tabs = window.document.querySelectorAll('a[data-bs-toggle="tab"]');
tabs.forEach((tab) => {
tab.addEventListener("shown.bs.tab", fireSlideEnter);
});
// dispatch for shiny
// they use BS shown and hidden events to trigger rendering
function distpatchShinyEvents(previous, current) {
if (window.jQuery) {
if (previous) {
window.jQuery(previous).trigger("hidden");
}
if (current) {
window.jQuery(current).trigger("shown");
}
}
}
// tabby.js listener: Trigger event for htmlwidget and shiny
document.addEventListener(
"tabby",
function (event) {
fireSlideEnter();
distpatchShinyEvents(event.detail.previousTab, event.detail.tab);
},
false
);
// Track scrolling and mark TOC links as active
// get table of contents and sidebar (bail if we don't have at least one)
const tocLinks = tocEl
? [...tocEl.querySelectorAll("a[data-scroll-target]")]
: [];
const makeActive = (link) => tocLinks[link].classList.add("active");
const removeActive = (link) => tocLinks[link].classList.remove("active");
const removeAllActive = () =>
[...Array(tocLinks.length).keys()].forEach((link) => removeActive(link));
// activate the anchor for a section associated with this TOC entry
tocLinks.forEach((link) => {
link.addEventListener("click", () => {
if (link.href.indexOf("#") !== -1) {
const anchor = link.href.split("#")[1];
const heading = window.document.querySelector(
`[data-anchor-id="${anchor}"]`
);
if (heading) {
// Add the class
heading.classList.add("reveal-anchorjs-link");
// function to show the anchor
const handleMouseout = () => {
heading.classList.remove("reveal-anchorjs-link");
heading.removeEventListener("mouseout", handleMouseout);
};
// add a function to clear the anchor when the user mouses out of it
heading.addEventListener("mouseout", handleMouseout);
}
}
});
});
const sections = tocLinks.map((link) => {
const target = link.getAttribute("data-scroll-target");
if (target.startsWith("#")) {
return window.document.getElementById(decodeURI(`${target.slice(1)}`));
} else {
return window.document.querySelector(decodeURI(`${target}`));
}
});
const sectionMargin = 200;
let currentActive = 0;
// track whether we've initialized state the first time
let init = false;
const updateActiveLink = () => {
// The index from bottom to top (e.g. reversed list)
let sectionIndex = -1;
if (
window.innerHeight + window.pageYOffset >=
window.document.body.offsetHeight
) {
// This is the no-scroll case where last section should be the active one
sectionIndex = 0;
} else {
// This finds the last section visible on screen that should be made active
sectionIndex = [...sections].reverse().findIndex((section) => {
if (section) {
return window.pageYOffset >= section.offsetTop - sectionMargin;
} else {
return false;
}
});
}
if (sectionIndex > -1) {
const current = sections.length - sectionIndex - 1;
if (current !== currentActive) {
removeAllActive();
currentActive = current;
makeActive(current);
if (init) {
window.dispatchEvent(sectionChanged);
}
init = true;
}
}
};
const inHiddenRegion = (top, bottom, hiddenRegions) => {
for (const region of hiddenRegions) {
if (top <= region.bottom && bottom >= region.top) {
return true;
}
}
return false;
};
const categorySelector = "header.quarto-title-block .quarto-category";
const activateCategories = (href) => {
// Find any categories
// Surround them with a link pointing back to:
// #category=Authoring
try {
const categoryEls = window.document.querySelectorAll(categorySelector);
for (const categoryEl of categoryEls) {
const categoryText = categoryEl.textContent;
if (categoryText) {
const link = `${href}#category=${encodeURIComponent(categoryText)}`;
const linkEl = window.document.createElement("a");
linkEl.setAttribute("href", link);
for (const child of categoryEl.childNodes) {
linkEl.append(child);
}
categoryEl.appendChild(linkEl);
}
}
} catch {
// Ignore errors
}
};
function hasTitleCategories() {
return window.document.querySelector(categorySelector) !== null;
}
function offsetRelativeUrl(url) {
const offset = getMeta("quarto:offset");
return offset ? offset + url : url;
}
function offsetAbsoluteUrl(url) {
const offset = getMeta("quarto:offset");
const baseUrl = new URL(offset, window.location);
const projRelativeUrl = url.replace(baseUrl, "");
if (projRelativeUrl.startsWith("/")) {
return projRelativeUrl;
} else {
return "/" + projRelativeUrl;
}
}
// read a meta tag value
function getMeta(metaName) {
const metas = window.document.getElementsByTagName("meta");
for (let i = 0; i < metas.length; i++) {
if (metas[i].getAttribute("name") === metaName) {
return metas[i].getAttribute("content");
}
}
return "";
}
async function findAndActivateCategories() {
// Categories search with listing only use path without query
const currentPagePath = offsetAbsoluteUrl(
window.location.origin + window.location.pathname
);
const response = await fetch(offsetRelativeUrl("listings.json"));
if (response.status == 200) {
return response.json().then(function (listingPaths) {
const listingHrefs = [];
for (const listingPath of listingPaths) {
const pathWithoutLeadingSlash = listingPath.listing.substring(1);
for (const item of listingPath.items) {
const encodedItem = encodeURI(item);
if (
encodedItem === currentPagePath ||
encodedItem === currentPagePath + "index.html"
) {
// Resolve this path against the offset to be sure
// we already are using the correct path to the listing
// (this adjusts the listing urls to be rooted against
// whatever root the page is actually running against)
const relative = offsetRelativeUrl(pathWithoutLeadingSlash);
const baseUrl = window.location;
const resolvedPath = new URL(relative, baseUrl);
listingHrefs.push(resolvedPath.pathname);
break;
}
}
}
// Look up the tree for a nearby linting and use that if we find one
const nearestListing = findNearestParentListing(
offsetAbsoluteUrl(window.location.pathname),
listingHrefs
);
if (nearestListing) {
activateCategories(nearestListing);
} else {
// See if the referrer is a listing page for this item
const referredRelativePath = offsetAbsoluteUrl(document.referrer);
const referrerListing = listingHrefs.find((listingHref) => {
const isListingReferrer =
listingHref === referredRelativePath ||
listingHref === referredRelativePath + "index.html";
return isListingReferrer;
});
if (referrerListing) {
// Try to use the referrer if possible
activateCategories(referrerListing);
} else if (listingHrefs.length > 0) {
// Otherwise, just fall back to the first listing
activateCategories(listingHrefs[0]);
}
}
});
}
}
if (hasTitleCategories()) {
findAndActivateCategories();
}
const findNearestParentListing = (href, listingHrefs) => {
if (!href || !listingHrefs) {
return undefined;
}
// Look up the tree for a nearby linting and use that if we find one
const relativeParts = href.substring(1).split("/");
while (relativeParts.length > 0) {
const path = relativeParts.join("/");
for (const listingHref of listingHrefs) {
if (listingHref.startsWith(path)) {
return listingHref;
}
}
relativeParts.pop();
}
return undefined;
};
const manageSidebarVisiblity = (el, placeholderDescriptor) => {
let isVisible = true;
let elRect;
return (hiddenRegions) => {
if (el === null) {
return;
}
// Find the last element of the TOC
const lastChildEl = el.lastElementChild;
if (lastChildEl) {
// Converts the sidebar to a menu
const convertToMenu = () => {
for (const child of el.children) {
child.style.opacity = 0;
child.style.overflow = "hidden";
child.style.pointerEvents = "none";
}
nexttick(() => {
const toggleContainer = window.document.createElement("div");
toggleContainer.style.width = "100%";
toggleContainer.classList.add("zindex-over-content");
toggleContainer.classList.add("quarto-sidebar-toggle");
toggleContainer.classList.add("headroom-target"); // Marks this to be managed by headeroom
toggleContainer.id = placeholderDescriptor.id;
toggleContainer.style.position = "fixed";
const toggleIcon = window.document.createElement("i");
toggleIcon.classList.add("quarto-sidebar-toggle-icon");
toggleIcon.classList.add("bi");
toggleIcon.classList.add("bi-caret-down-fill");
const toggleTitle = window.document.createElement("div");
const titleEl = window.document.body.querySelector(
placeholderDescriptor.titleSelector
);
if (titleEl) {
toggleTitle.append(
titleEl.textContent || titleEl.innerText,
toggleIcon
);
}
toggleTitle.classList.add("zindex-over-content");
toggleTitle.classList.add("quarto-sidebar-toggle-title");
toggleContainer.append(toggleTitle);
const toggleContents = window.document.createElement("div");
toggleContents.classList = el.classList;
toggleContents.classList.add("zindex-over-content");
toggleContents.classList.add("quarto-sidebar-toggle-contents");
for (const child of el.children) {
if (child.id === "toc-title") {
continue;
}
const clone = child.cloneNode(true);
clone.style.opacity = 1;
clone.style.pointerEvents = null;
clone.style.display = null;
toggleContents.append(clone);
}
toggleContents.style.height = "0px";
const positionToggle = () => {
// position the element (top left of parent, same width as parent)
if (!elRect) {
elRect = el.getBoundingClientRect();
}
toggleContainer.style.left = `${elRect.left}px`;
toggleContainer.style.top = `${elRect.top}px`;
toggleContainer.style.width = `${elRect.width}px`;
};
positionToggle();
toggleContainer.append(toggleContents);
el.parentElement.prepend(toggleContainer);
// Process clicks
let tocShowing = false;
// Allow the caller to control whether this is dismissed
// when it is clicked (e.g. sidebar navigation supports
// opening and closing the nav tree, so don't dismiss on click)
const clickEl = placeholderDescriptor.dismissOnClick
? toggleContainer
: toggleTitle;
const closeToggle = () => {
if (tocShowing) {
toggleContainer.classList.remove("expanded");
toggleContents.style.height = "0px";
tocShowing = false;
}
};
// Get rid of any expanded toggle if the user scrolls
window.document.addEventListener(
"scroll",
throttle(() => {
closeToggle();
}, 50)
);
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
positionToggle();
}, 50)
);
window.addEventListener("quarto-hrChanged", () => {
elRect = undefined;
});
// Process the click
clickEl.onclick = () => {
if (!tocShowing) {
toggleContainer.classList.add("expanded");
toggleContents.style.height = null;
tocShowing = true;
} else {
closeToggle();
}
};
});
};
// Converts a sidebar from a menu back to a sidebar
const convertToSidebar = () => {
for (const child of el.children) {
child.style.opacity = 1;
child.style.overflow = null;
child.style.pointerEvents = null;
}
const placeholderEl = window.document.getElementById(
placeholderDescriptor.id
);
if (placeholderEl) {
placeholderEl.remove();
}
el.classList.remove("rollup");
};
if (isReaderMode()) {
convertToMenu();
isVisible = false;
} else {
// Find the top and bottom o the element that is being managed
const elTop = el.offsetTop;
const elBottom =
elTop + lastChildEl.offsetTop + lastChildEl.offsetHeight;
if (!isVisible) {
// If the element is current not visible reveal if there are
// no conflicts with overlay regions
if (!inHiddenRegion(elTop, elBottom, hiddenRegions)) {
convertToSidebar();
isVisible = true;
}
} else {
// If the element is visible, hide it if it conflicts with overlay regions
// and insert a placeholder toggle (or if we're in reader mode)
if (inHiddenRegion(elTop, elBottom, hiddenRegions)) {
convertToMenu();
isVisible = false;
}
}
}
}
};
};
const tabEls = document.querySelectorAll('a[data-bs-toggle="tab"]');
for (const tabEl of tabEls) {
const id = tabEl.getAttribute("data-bs-target");
if (id) {
const columnEl = document.querySelector(
`${id} .column-margin, .tabset-margin-content`
);
if (columnEl)
tabEl.addEventListener("shown.bs.tab", function (event) {
const el = event.srcElement;
if (el) {
const visibleCls = `${el.id}-margin-content`;
// walk up until we find a parent tabset
let panelTabsetEl = el.parentElement;
while (panelTabsetEl) {
if (panelTabsetEl.classList.contains("panel-tabset")) {
break;
}
panelTabsetEl = panelTabsetEl.parentElement;
}
if (panelTabsetEl) {
const prevSib = panelTabsetEl.previousElementSibling;
if (
prevSib &&
prevSib.classList.contains("tabset-margin-container")
) {
const childNodes = prevSib.querySelectorAll(
".tabset-margin-content"
);
for (const childEl of childNodes) {
if (childEl.classList.contains(visibleCls)) {
childEl.classList.remove("collapse");
} else {
childEl.classList.add("collapse");
}
}
}
}
}
layoutMarginEls();
});
}
}
// Manage the visibility of the toc and the sidebar
const marginScrollVisibility = manageSidebarVisiblity(marginSidebarEl, {
id: "quarto-toc-toggle",
titleSelector: "#toc-title",
dismissOnClick: true,
});
const sidebarScrollVisiblity = manageSidebarVisiblity(sidebarEl, {
id: "quarto-sidebarnav-toggle",
titleSelector: ".title",
dismissOnClick: false,
});
let tocLeftScrollVisibility;
if (leftTocEl) {
tocLeftScrollVisibility = manageSidebarVisiblity(leftTocEl, {
id: "quarto-lefttoc-toggle",
titleSelector: "#toc-title",
dismissOnClick: true,
});
}
// Find the first element that uses formatting in special columns
const conflictingEls = window.document.body.querySelectorAll(
'[class^="column-"], [class*=" column-"], aside, [class*="margin-caption"], [class*=" margin-caption"], [class*="margin-ref"], [class*=" margin-ref"]'
);
// Filter all the possibly conflicting elements into ones
// the do conflict on the left or ride side
const arrConflictingEls = Array.from(conflictingEls);
const leftSideConflictEls = arrConflictingEls.filter((el) => {
if (el.tagName === "ASIDE") {
return false;
}
return Array.from(el.classList).find((className) => {
return (
className !== "column-body" &&
className.startsWith("column-") &&
!className.endsWith("right") &&
!className.endsWith("container") &&
className !== "column-margin"
);
});
});
const rightSideConflictEls = arrConflictingEls.filter((el) => {
if (el.tagName === "ASIDE") {
return true;
}
const hasMarginCaption = Array.from(el.classList).find((className) => {
return className == "margin-caption";
});
if (hasMarginCaption) {
return true;
}
return Array.from(el.classList).find((className) => {
return (
className !== "column-body" &&
!className.endsWith("container") &&
className.startsWith("column-") &&
!className.endsWith("left")
);
});
});
const kOverlapPaddingSize = 10;
function toRegions(els) {
return els.map((el) => {
const boundRect = el.getBoundingClientRect();
const top =
boundRect.top +
document.documentElement.scrollTop -
kOverlapPaddingSize;
return {
top,
bottom: top + el.scrollHeight + 2 * kOverlapPaddingSize,
};
});
}
let hasObserved = false;
const visibleItemObserver = (els) => {
let visibleElements = [...els];
const intersectionObserver = new IntersectionObserver(
(entries, _observer) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
if (visibleElements.indexOf(entry.target) === -1) {
visibleElements.push(entry.target);
}
} else {
visibleElements = visibleElements.filter((visibleEntry) => {
return visibleEntry !== entry;
});
}
});
if (!hasObserved) {
hideOverlappedSidebars();
}
hasObserved = true;
},
{}
);
els.forEach((el) => {
intersectionObserver.observe(el);
});
return {
getVisibleEntries: () => {
return visibleElements;
},
};
};
const rightElementObserver = visibleItemObserver(rightSideConflictEls);
const leftElementObserver = visibleItemObserver(leftSideConflictEls);
const hideOverlappedSidebars = () => {
marginScrollVisibility(toRegions(rightElementObserver.getVisibleEntries()));
sidebarScrollVisiblity(toRegions(leftElementObserver.getVisibleEntries()));
if (tocLeftScrollVisibility) {
tocLeftScrollVisibility(
toRegions(leftElementObserver.getVisibleEntries())
);
}
};
window.quartoToggleReader = () => {
// Applies a slow class (or removes it)
// to update the transition speed
const slowTransition = (slow) => {
const manageTransition = (id, slow) => {
const el = document.getElementById(id);
if (el) {
if (slow) {
el.classList.add("slow");
} else {
el.classList.remove("slow");
}
}
};
manageTransition("TOC", slow);
manageTransition("quarto-sidebar", slow);
};
const readerMode = !isReaderMode();
setReaderModeValue(readerMode);
// If we're entering reader mode, slow the transition
if (readerMode) {
slowTransition(readerMode);
}
highlightReaderToggle(readerMode);
hideOverlappedSidebars();
// If we're exiting reader mode, restore the non-slow transition
if (!readerMode) {
slowTransition(!readerMode);
}
};
const highlightReaderToggle = (readerMode) => {
const els = document.querySelectorAll(".quarto-reader-toggle");
if (els) {
els.forEach((el) => {
if (readerMode) {
el.classList.add("reader");
} else {
el.classList.remove("reader");
}
});
}
};
const setReaderModeValue = (val) => {
if (window.location.protocol !== "file:") {
window.localStorage.setItem("quarto-reader-mode", val);
} else {
localReaderMode = val;
}
};
const isReaderMode = () => {
if (window.location.protocol !== "file:") {
return window.localStorage.getItem("quarto-reader-mode") === "true";
} else {
return localReaderMode;
}
};
let localReaderMode = null;
const tocOpenDepthStr = tocEl?.getAttribute("data-toc-expanded");
const tocOpenDepth = tocOpenDepthStr ? Number(tocOpenDepthStr) : 1;
// Walk the TOC and collapse/expand nodes
// Nodes are expanded if:
// - they are top level
// - they have children that are 'active' links
// - they are directly below an link that is 'active'
const walk = (el, depth) => {
// Tick depth when we enter a UL
if (el.tagName === "UL") {
depth = depth + 1;
}
// It this is active link
let isActiveNode = false;
if (el.tagName === "A" && el.classList.contains("active")) {
isActiveNode = true;
}
// See if there is an active child to this element
let hasActiveChild = false;
for (const child of el.children) {
hasActiveChild = walk(child, depth) || hasActiveChild;
}
// Process the collapse state if this is an UL
if (el.tagName === "UL") {
if (tocOpenDepth === -1 && depth > 1) {
// toc-expand: false
el.classList.add("collapse");
} else if (
depth <= tocOpenDepth ||
hasActiveChild ||
prevSiblingIsActiveLink(el)
) {
el.classList.remove("collapse");
} else {
el.classList.add("collapse");
}
// untick depth when we leave a UL
depth = depth - 1;
}
return hasActiveChild || isActiveNode;
};
// walk the TOC and expand / collapse any items that should be shown
if (tocEl) {
updateActiveLink();
walk(tocEl, 0);
}
// Throttle the scroll event and walk peridiocally
window.document.addEventListener(
"scroll",
throttle(() => {
if (tocEl) {
updateActiveLink();
walk(tocEl, 0);
}
if (!isReaderMode()) {
hideOverlappedSidebars();
}
}, 5)
);
window.addEventListener(
"resize",
throttle(() => {
if (tocEl) {
updateActiveLink();
walk(tocEl, 0);
}
if (!isReaderMode()) {
hideOverlappedSidebars();
}
}, 10)
);
hideOverlappedSidebars();
highlightReaderToggle(isReaderMode());
});
tabsets.init();
function throttle(func, wait) {
let waiting = false;
return function () {
if (!waiting) {
func.apply(this, arguments);
waiting = true;
setTimeout(function () {
waiting = false;
}, wait);
}
};
}
function nexttick(func) {
return setTimeout(func, 0);
}

View file

@ -0,0 +1,95 @@
// grouped tabsets
export function init() {
window.addEventListener("pageshow", (_event) => {
function getTabSettings() {
const data = localStorage.getItem("quarto-persistent-tabsets-data");
if (!data) {
localStorage.setItem("quarto-persistent-tabsets-data", "{}");
return {};
}
if (data) {
return JSON.parse(data);
}
}
function setTabSettings(data) {
localStorage.setItem(
"quarto-persistent-tabsets-data",
JSON.stringify(data)
);
}
function setTabState(groupName, groupValue) {
const data = getTabSettings();
data[groupName] = groupValue;
setTabSettings(data);
}
function toggleTab(tab, active) {
const tabPanelId = tab.getAttribute("aria-controls");
const tabPanel = document.getElementById(tabPanelId);
if (active) {
tab.classList.add("active");
tabPanel.classList.add("active");
} else {
tab.classList.remove("active");
tabPanel.classList.remove("active");
}
}
function toggleAll(selectedGroup, selectorsToSync) {
for (const [thisGroup, tabs] of Object.entries(selectorsToSync)) {
const active = selectedGroup === thisGroup;
for (const tab of tabs) {
toggleTab(tab, active);
}
}
}
function findSelectorsToSyncByLanguage() {
const result = {};
const tabs = Array.from(
document.querySelectorAll(`div[data-group] a[id^='tabset-']`)
);
for (const item of tabs) {
const div = item.parentElement.parentElement.parentElement;
const group = div.getAttribute("data-group");
if (!result[group]) {
result[group] = {};
}
const selectorsToSync = result[group];
const value = item.innerHTML;
if (!selectorsToSync[value]) {
selectorsToSync[value] = [];
}
selectorsToSync[value].push(item);
}
return result;
}
function setupSelectorSync() {
const selectorsToSync = findSelectorsToSyncByLanguage();
Object.entries(selectorsToSync).forEach(([group, tabSetsByValue]) => {
Object.entries(tabSetsByValue).forEach(([value, items]) => {
items.forEach((item) => {
item.addEventListener("click", (_event) => {
setTabState(group, value);
toggleAll(value, selectorsToSync[group]);
});
});
});
});
return selectorsToSync;
}
const selectorsToSync = setupSelectorSync();
for (const [group, selectedName] of Object.entries(getTabSettings())) {
const selectors = selectorsToSync[group];
// it's possible that stale state gives us empty selections, so we explicitly check here.
if (selectors) {
toggleAll(selectedName, selectors);
}
}
});
}

View file

@ -0,0 +1 @@
.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}

File diff suppressed because one or more lines are too long

2
site_libs/quarto-listing/list.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,254 @@
const kProgressiveAttr = "data-src";
let categoriesLoaded = false;
window.quartoListingCategory = (category) => {
// category is URI encoded in EJS template for UTF-8 support
category = decodeURIComponent(atob(category));
if (categoriesLoaded) {
activateCategory(category);
setCategoryHash(category);
}
};
window["quarto-listing-loaded"] = () => {
// Process any existing hash
const hash = getHash();
if (hash) {
// If there is a category, switch to that
if (hash.category) {
// category hash are URI encoded so we need to decode it before processing
// so that we can match it with the category element processed in JS
activateCategory(decodeURIComponent(hash.category));
}
// Paginate a specific listing
const listingIds = Object.keys(window["quarto-listings"]);
for (const listingId of listingIds) {
const page = hash[getListingPageKey(listingId)];
if (page) {
showPage(listingId, page);
}
}
}
const listingIds = Object.keys(window["quarto-listings"]);
for (const listingId of listingIds) {
// The actual list
const list = window["quarto-listings"][listingId];
// Update the handlers for pagination events
refreshPaginationHandlers(listingId);
// Render any visible items that need it
renderVisibleProgressiveImages(list);
// Whenever the list is updated, we also need to
// attach handlers to the new pagination elements
// and refresh any newly visible items.
list.on("updated", function () {
renderVisibleProgressiveImages(list);
setTimeout(() => refreshPaginationHandlers(listingId));
// Show or hide the no matching message
toggleNoMatchingMessage(list);
});
}
};
window.document.addEventListener("DOMContentLoaded", function (_event) {
// Attach click handlers to categories
const categoryEls = window.document.querySelectorAll(
".quarto-listing-category .category"
);
for (const categoryEl of categoryEls) {
// category needs to support non ASCII characters
const category = decodeURIComponent(
atob(categoryEl.getAttribute("data-category"))
);
categoryEl.onclick = () => {
activateCategory(category);
setCategoryHash(category);
};
}
// Attach a click handler to the category title
// (there should be only one, but since it is a class name, handle N)
const categoryTitleEls = window.document.querySelectorAll(
".quarto-listing-category-title"
);
for (const categoryTitleEl of categoryTitleEls) {
categoryTitleEl.onclick = () => {
activateCategory("");
setCategoryHash("");
};
}
categoriesLoaded = true;
});
function toggleNoMatchingMessage(list) {
const selector = `#${list.listContainer.id} .listing-no-matching`;
const noMatchingEl = window.document.querySelector(selector);
if (noMatchingEl) {
if (list.visibleItems.length === 0) {
noMatchingEl.classList.remove("d-none");
} else {
if (!noMatchingEl.classList.contains("d-none")) {
noMatchingEl.classList.add("d-none");
}
}
}
}
function setCategoryHash(category) {
setHash({ category });
}
function setPageHash(listingId, page) {
const currentHash = getHash() || {};
currentHash[getListingPageKey(listingId)] = page;
setHash(currentHash);
}
function getListingPageKey(listingId) {
return `${listingId}-page`;
}
function refreshPaginationHandlers(listingId) {
const listingEl = window.document.getElementById(listingId);
const paginationEls = listingEl.querySelectorAll(
".pagination li.page-item:not(.disabled) .page.page-link"
);
for (const paginationEl of paginationEls) {
paginationEl.onclick = (sender) => {
setPageHash(listingId, sender.target.getAttribute("data-i"));
showPage(listingId, sender.target.getAttribute("data-i"));
return false;
};
}
}
function renderVisibleProgressiveImages(list) {
// Run through the visible items and render any progressive images
for (const item of list.visibleItems) {
const itemEl = item.elm;
if (itemEl) {
const progressiveImgs = itemEl.querySelectorAll(
`img[${kProgressiveAttr}]`
);
for (const progressiveImg of progressiveImgs) {
const srcValue = progressiveImg.getAttribute(kProgressiveAttr);
if (srcValue) {
progressiveImg.setAttribute("src", srcValue);
}
progressiveImg.removeAttribute(kProgressiveAttr);
}
}
}
}
function getHash() {
// Hashes are of the form
// #name:value|name1:value1|name2:value2
const currentUrl = new URL(window.location);
const hashRaw = currentUrl.hash ? currentUrl.hash.slice(1) : undefined;
return parseHash(hashRaw);
}
const kAnd = "&";
const kEquals = "=";
function parseHash(hash) {
if (!hash) {
return undefined;
}
const hasValuesStrs = hash.split(kAnd);
const hashValues = hasValuesStrs
.map((hashValueStr) => {
const vals = hashValueStr.split(kEquals);
if (vals.length === 2) {
return { name: vals[0], value: vals[1] };
} else {
return undefined;
}
})
.filter((value) => {
return value !== undefined;
});
const hashObj = {};
hashValues.forEach((hashValue) => {
hashObj[hashValue.name] = decodeURIComponent(hashValue.value);
});
return hashObj;
}
function makeHash(obj) {
return Object.keys(obj)
.map((key) => {
return `${key}${kEquals}${obj[key]}`;
})
.join(kAnd);
}
function setHash(obj) {
const hash = makeHash(obj);
window.history.pushState(null, null, `#${hash}`);
}
function showPage(listingId, page) {
const list = window["quarto-listings"][listingId];
if (list) {
list.show((page - 1) * list.page + 1, list.page);
}
}
function activateCategory(category) {
// Deactivate existing categories
const activeEls = window.document.querySelectorAll(
".quarto-listing-category .category.active"
);
for (const activeEl of activeEls) {
activeEl.classList.remove("active");
}
// Activate this category
const categoryEl = window.document.querySelector(
`.quarto-listing-category .category[data-category='${btoa(
encodeURIComponent(category)
)}']`
);
if (categoryEl) {
categoryEl.classList.add("active");
}
// Filter the listings to this category
filterListingCategory(category);
}
function filterListingCategory(category) {
const listingIds = Object.keys(window["quarto-listings"]);
for (const listingId of listingIds) {
const list = window["quarto-listings"][listingId];
if (list) {
if (category === "") {
// resets the filter
list.filter();
} else {
// filter to this category
list.filter(function (item) {
const itemValues = item.values();
if (itemValues.categories !== null) {
const categories = decodeURIComponent(
atob(itemValues.categories)
).split(",");
return categories.includes(category);
} else {
return false;
}
});
}
}
}
}

7
site_libs/quarto-nav/headroom.min.js vendored Normal file
View file

@ -0,0 +1,7 @@
/*!
* headroom.js v0.12.0 - Give your page some headroom. Hide your header until you need it
* Copyright (c) 2020 Nick Williams - http://wicky.nillia.ms/headroom.js
* License: MIT
*/
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).Headroom=n()}(this,function(){"use strict";function t(){return"undefined"!=typeof window}function d(t){return function(t){return t&&t.document&&function(t){return 9===t.nodeType}(t.document)}(t)?function(t){var n=t.document,o=n.body,s=n.documentElement;return{scrollHeight:function(){return Math.max(o.scrollHeight,s.scrollHeight,o.offsetHeight,s.offsetHeight,o.clientHeight,s.clientHeight)},height:function(){return t.innerHeight||s.clientHeight||o.clientHeight},scrollY:function(){return void 0!==t.pageYOffset?t.pageYOffset:(s||o.parentNode||o).scrollTop}}}(t):function(t){return{scrollHeight:function(){return Math.max(t.scrollHeight,t.offsetHeight,t.clientHeight)},height:function(){return Math.max(t.offsetHeight,t.clientHeight)},scrollY:function(){return t.scrollTop}}}(t)}function n(t,s,e){var n,o=function(){var n=!1;try{var t={get passive(){n=!0}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){n=!1}return n}(),i=!1,r=d(t),l=r.scrollY(),a={};function c(){var t=Math.round(r.scrollY()),n=r.height(),o=r.scrollHeight();a.scrollY=t,a.lastScrollY=l,a.direction=l<t?"down":"up",a.distance=Math.abs(t-l),a.isOutOfBounds=t<0||o<t+n,a.top=t<=s.offset[a.direction],a.bottom=o<=t+n,a.toleranceExceeded=a.distance>s.tolerance[a.direction],e(a),l=t,i=!1}function h(){i||(i=!0,n=requestAnimationFrame(c))}var u=!!o&&{passive:!0,capture:!1};return t.addEventListener("scroll",h,u),c(),{destroy:function(){cancelAnimationFrame(n),t.removeEventListener("scroll",h,u)}}}function o(t){return t===Object(t)?t:{down:t,up:t}}function s(t,n){n=n||{},Object.assign(this,s.options,n),this.classes=Object.assign({},s.options.classes,n.classes),this.elem=t,this.tolerance=o(this.tolerance),this.offset=o(this.offset),this.initialised=!1,this.frozen=!1}return s.prototype={constructor:s,init:function(){return s.cutsTheMustard&&!this.initialised&&(this.addClass("initial"),this.initialised=!0,setTimeout(function(t){t.scrollTracker=n(t.scroller,{offset:t.offset,tolerance:t.tolerance},t.update.bind(t))},100,this)),this},destroy:function(){this.initialised=!1,Object.keys(this.classes).forEach(this.removeClass,this),this.scrollTracker.destroy()},unpin:function(){!this.hasClass("pinned")&&this.hasClass("unpinned")||(this.addClass("unpinned"),this.removeClass("pinned"),this.onUnpin&&this.onUnpin.call(this))},pin:function(){this.hasClass("unpinned")&&(this.addClass("pinned"),this.removeClass("unpinned"),this.onPin&&this.onPin.call(this))},freeze:function(){this.frozen=!0,this.addClass("frozen")},unfreeze:function(){this.frozen=!1,this.removeClass("frozen")},top:function(){this.hasClass("top")||(this.addClass("top"),this.removeClass("notTop"),this.onTop&&this.onTop.call(this))},notTop:function(){this.hasClass("notTop")||(this.addClass("notTop"),this.removeClass("top"),this.onNotTop&&this.onNotTop.call(this))},bottom:function(){this.hasClass("bottom")||(this.addClass("bottom"),this.removeClass("notBottom"),this.onBottom&&this.onBottom.call(this))},notBottom:function(){this.hasClass("notBottom")||(this.addClass("notBottom"),this.removeClass("bottom"),this.onNotBottom&&this.onNotBottom.call(this))},shouldUnpin:function(t){return"down"===t.direction&&!t.top&&t.toleranceExceeded},shouldPin:function(t){return"up"===t.direction&&t.toleranceExceeded||t.top},addClass:function(t){this.elem.classList.add.apply(this.elem.classList,this.classes[t].split(" "))},removeClass:function(t){this.elem.classList.remove.apply(this.elem.classList,this.classes[t].split(" "))},hasClass:function(t){return this.classes[t].split(" ").every(function(t){return this.classList.contains(t)},this.elem)},update:function(t){t.isOutOfBounds||!0!==this.frozen&&(t.top?this.top():this.notTop(),t.bottom?this.bottom():this.notBottom(),this.shouldUnpin(t)?this.unpin():this.shouldPin(t)&&this.pin())}},s.options={tolerance:{up:0,down:0},offset:0,scroller:t()?window:null,classes:{frozen:"headroom--frozen",pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",bottom:"headroom--bottom",notBottom:"headroom--not-bottom",initial:"headroom"}},s.cutsTheMustard=!!(t()&&function(){}.bind&&"classList"in document.documentElement&&Object.assign&&Object.keys&&requestAnimationFrame),s});

View file

@ -0,0 +1,325 @@
const headroomChanged = new CustomEvent("quarto-hrChanged", {
detail: {},
bubbles: true,
cancelable: false,
composed: false,
});
const announceDismiss = () => {
const annEl = window.document.getElementById("quarto-announcement");
if (annEl) {
annEl.remove();
const annId = annEl.getAttribute("data-announcement-id");
window.localStorage.setItem(`quarto-announce-${annId}`, "true");
}
};
const announceRegister = () => {
const annEl = window.document.getElementById("quarto-announcement");
if (annEl) {
const annId = annEl.getAttribute("data-announcement-id");
const isDismissed =
window.localStorage.getItem(`quarto-announce-${annId}`) || false;
if (isDismissed) {
announceDismiss();
return;
} else {
annEl.classList.remove("hidden");
}
const actionEl = annEl.querySelector(".quarto-announcement-action");
if (actionEl) {
actionEl.addEventListener("click", function (e) {
e.preventDefault();
// Hide the bar immediately
announceDismiss();
});
}
}
};
window.document.addEventListener("DOMContentLoaded", function () {
let init = false;
announceRegister();
// Manage the back to top button, if one is present.
let lastScrollTop = window.pageYOffset || document.documentElement.scrollTop;
const scrollDownBuffer = 5;
const scrollUpBuffer = 35;
const btn = document.getElementById("quarto-back-to-top");
const hideBackToTop = () => {
btn.style.display = "none";
};
const showBackToTop = () => {
btn.style.display = "inline-block";
};
if (btn) {
window.document.addEventListener(
"scroll",
function () {
const currentScrollTop =
window.pageYOffset || document.documentElement.scrollTop;
// Shows and hides the button 'intelligently' as the user scrolls
if (currentScrollTop - scrollDownBuffer > lastScrollTop) {
hideBackToTop();
lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop;
} else if (currentScrollTop < lastScrollTop - scrollUpBuffer) {
showBackToTop();
lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop;
}
// Show the button at the bottom, hides it at the top
if (currentScrollTop <= 0) {
hideBackToTop();
} else if (
window.innerHeight + currentScrollTop >=
document.body.offsetHeight
) {
showBackToTop();
}
},
false
);
}
function throttle(func, wait) {
var timeout;
return function () {
const context = this;
const args = arguments;
const later = function () {
clearTimeout(timeout);
timeout = null;
func.apply(context, args);
};
if (!timeout) {
timeout = setTimeout(later, wait);
}
};
}
function headerOffset() {
// Set an offset if there is are fixed top navbar
const headerEl = window.document.querySelector("header.fixed-top");
if (headerEl) {
return headerEl.clientHeight;
} else {
return 0;
}
}
function footerOffset() {
const footerEl = window.document.querySelector("footer.footer");
if (footerEl) {
return footerEl.clientHeight;
} else {
return 0;
}
}
function dashboardOffset() {
const dashboardNavEl = window.document.getElementById(
"quarto-dashboard-header"
);
if (dashboardNavEl !== null) {
return dashboardNavEl.clientHeight;
} else {
return 0;
}
}
function updateDocumentOffsetWithoutAnimation() {
updateDocumentOffset(false);
}
function updateDocumentOffset(animated) {
// set body offset
const topOffset = headerOffset();
const bodyOffset = topOffset + footerOffset() + dashboardOffset();
const bodyEl = window.document.body;
bodyEl.setAttribute("data-bs-offset", topOffset);
bodyEl.style.paddingTop = topOffset + "px";
// deal with sidebar offsets
const sidebars = window.document.querySelectorAll(
".sidebar, .headroom-target"
);
sidebars.forEach((sidebar) => {
if (!animated) {
sidebar.classList.add("notransition");
// Remove the no transition class after the animation has time to complete
setTimeout(function () {
sidebar.classList.remove("notransition");
}, 201);
}
if (window.Headroom && sidebar.classList.contains("sidebar-unpinned")) {
sidebar.style.top = "0";
sidebar.style.maxHeight = "100vh";
} else {
sidebar.style.top = topOffset + "px";
sidebar.style.maxHeight = "calc(100vh - " + topOffset + "px)";
}
});
// allow space for footer
const mainContainer = window.document.querySelector(".quarto-container");
if (mainContainer) {
mainContainer.style.minHeight = "calc(100vh - " + bodyOffset + "px)";
}
// link offset
let linkStyle = window.document.querySelector("#quarto-target-style");
if (!linkStyle) {
linkStyle = window.document.createElement("style");
linkStyle.setAttribute("id", "quarto-target-style");
window.document.head.appendChild(linkStyle);
}
while (linkStyle.firstChild) {
linkStyle.removeChild(linkStyle.firstChild);
}
if (topOffset > 0) {
linkStyle.appendChild(
window.document.createTextNode(`
section:target::before {
content: "";
display: block;
height: ${topOffset}px;
margin: -${topOffset}px 0 0;
}`)
);
}
if (init) {
window.dispatchEvent(headroomChanged);
}
init = true;
}
// initialize headroom
var header = window.document.querySelector("#quarto-header");
if (header && window.Headroom) {
const headroom = new window.Headroom(header, {
tolerance: 5,
onPin: function () {
const sidebars = window.document.querySelectorAll(
".sidebar, .headroom-target"
);
sidebars.forEach((sidebar) => {
sidebar.classList.remove("sidebar-unpinned");
});
updateDocumentOffset();
},
onUnpin: function () {
const sidebars = window.document.querySelectorAll(
".sidebar, .headroom-target"
);
sidebars.forEach((sidebar) => {
sidebar.classList.add("sidebar-unpinned");
});
updateDocumentOffset();
},
});
headroom.init();
let frozen = false;
window.quartoToggleHeadroom = function () {
if (frozen) {
headroom.unfreeze();
frozen = false;
} else {
headroom.freeze();
frozen = true;
}
};
}
window.addEventListener(
"hashchange",
function (e) {
if (
getComputedStyle(document.documentElement).scrollBehavior !== "smooth"
) {
window.scrollTo(0, window.pageYOffset - headerOffset());
}
},
false
);
// Observe size changed for the header
const headerEl = window.document.querySelector("header.fixed-top");
if (headerEl && window.ResizeObserver) {
const observer = new window.ResizeObserver(() => {
setTimeout(updateDocumentOffsetWithoutAnimation, 0);
});
observer.observe(headerEl, {
attributes: true,
childList: true,
characterData: true,
});
} else {
window.addEventListener(
"resize",
throttle(updateDocumentOffsetWithoutAnimation, 50)
);
}
setTimeout(updateDocumentOffsetWithoutAnimation, 250);
// fixup index.html links if we aren't on the filesystem
if (window.location.protocol !== "file:") {
const links = window.document.querySelectorAll("a");
for (let i = 0; i < links.length; i++) {
if (links[i].href) {
links[i].dataset.originalHref = links[i].href;
links[i].href = links[i].href.replace(/\/index\.html/, "/");
}
}
// Fixup any sharing links that require urls
// Append url to any sharing urls
const sharingLinks = window.document.querySelectorAll(
"a.sidebar-tools-main-item, a.quarto-navigation-tool, a.quarto-navbar-tools, a.quarto-navbar-tools-item"
);
for (let i = 0; i < sharingLinks.length; i++) {
const sharingLink = sharingLinks[i];
const href = sharingLink.getAttribute("href");
if (href) {
sharingLink.setAttribute(
"href",
href.replace("|url|", window.location.href)
);
}
}
// Scroll the active navigation item into view, if necessary
const navSidebar = window.document.querySelector("nav#quarto-sidebar");
if (navSidebar) {
// Find the active item
const activeItem = navSidebar.querySelector("li.sidebar-item a.active");
if (activeItem) {
// Wait for the scroll height and height to resolve by observing size changes on the
// nav element that is scrollable
const resizeObserver = new ResizeObserver((_entries) => {
// The bottom of the element
const elBottom = activeItem.offsetTop;
const viewBottom = navSidebar.scrollTop + navSidebar.clientHeight;
// The element height and scroll height are the same, then we are still loading
if (viewBottom !== navSidebar.scrollHeight) {
// Determine if the item isn't visible and scroll to it
if (elBottom >= viewBottom) {
navSidebar.scrollTop = elBottom;
}
// stop observing now since we've completed the scroll
resizeObserver.unobserve(navSidebar);
}
});
resizeObserver.observe(navSidebar);
}
}
}
});

File diff suppressed because one or more lines are too long

9
site_libs/quarto-search/fuse.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

755
suivi/2025-13/2025-13.html Normal file
View file

@ -0,0 +1,755 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 13 2025 : 17-21 mars Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script src="../../site_libs/quarto-contrib/glightbox/glightbox.min.js"></script>
<link href="../../site_libs/quarto-contrib/glightbox/glightbox.min.css" rel="stylesheet">
<link href="../../site_libs/quarto-contrib/glightbox/lightbox.css" rel="stylesheet">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 13 2025 : 17-21 mars</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">17 mars 2025</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar zindex-bottom">
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<p>Cette semaine jai :</p>
<ul>
<li>Fini dintégrer à colSBM tous les changements (clustering dérecursifier pour uni et bipartites&amp; cli …) et contacter Saint-Clair pour passer colSBM sous GrossSBM.</li>
<li>Relancer et obtenus les résultats pour le clustering sur les réseaux Baldock</li>
</ul>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="figs/baldock_meso_iid.png" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="Baldock iid"><img src="figs/baldock_meso_iid.png" class="img-fluid figure-img" alt="Baldock iid"></a></p>
<figcaption>Baldock iid</figcaption>
</figure>
</div>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="figs/baldock_meso_pi.png" class="lightbox" data-gallery="quarto-lightbox-gallery-2" title="Baldock pi"><img src="figs/baldock_meso_pi.png" class="img-fluid figure-img" alt="Baldock pi"></a></p>
<figcaption>Baldock pi</figcaption>
</figure>
</div>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="figs/baldock_meso_rho.png" class="lightbox" data-gallery="quarto-lightbox-gallery-3" title="Baldock rho"><img src="figs/baldock_meso_rho.png" class="img-fluid figure-img" alt="Baldock rho"></a></p>
<figcaption>Baldock rho</figcaption>
</figure>
</div>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="figs/baldock_meso_pirho.png" class="lightbox" data-gallery="quarto-lightbox-gallery-4" title="Baldock pirho"><img src="figs/baldock_meso_pirho.png" class="img-fluid figure-img" alt="Baldock pirho"></a></p>
<figcaption>Baldock pirho</figcaption>
</figure>
</div>
<ul>
<li><p>Relancer et obtenus les résultats pour les simus ajoutant du bruits sur les structures et liens</p>
<ul>
<li>Pour <em>noisy <span class="math inline">\alpha</span></em>:</li>
</ul>
<p>Plan de simulation 2 collections (<span class="math inline">d\in (1,2)</span>) avec <span class="math inline">M = 30</span> soit 15 réseaux par type. <span class="math inline">n_r = n_c = 120</span> et <span class="math display">\pi_1 = \begin{pmatrix} 0.5, 0.3, 0.2\end{pmatrix},~
\rho_1 = \begin{pmatrix}0.4, 0.3, 0.2, 0.1\end{pmatrix},~
\alpha_1 = \begin{pmatrix}
0.85&amp; 0.4&amp; 0.2&amp; 0.15\\
0.6&amp; 0.2&amp; 0.15&amp; 0.15\\
0.2&amp; 0.15&amp; 0.15&amp; 0.7
\end{pmatrix}</span></p>
<p><span class="math display"> \pi_2 = (0.5, 0.3, 0.2),~
\rho_2 = (0.45, 0.3, 0.25),~
\alpha_2 = \begin{pmatrix}
0.65&amp; 0.15&amp; 0.15\\
0.15&amp; 0.8&amp; 0.15\\
0.15&amp; 0.15&amp; 0.4
\end{pmatrix}</span></p>
<p><span class="math inline">\epsilon \in (0, 0.01, \dots 0.05)</span> qui est lécart-type dune <span class="math inline">\mathcal{N}_{Q_1^d \times Q_2^d}(0,\epsilon^2) = vec(N^m), \forall m \in (1,\dots, M)</span>. Et <span class="math inline">\forall m, X^m \sim LBM_{n_r,n_c}(Q_1^d, Q_2^d, \alpha_d + N^m, \pi_d, \rho_d)</span></p>
<p>Résultats : <img src="figs/noisy_alpha.png" class="img-fluid" alt="alt"></p>
<ul>
<li>Pour <em>noisy links</em>:</li>
</ul>
<p>Plan de simu <span class="math inline">M = 30</span>, <span class="math inline">n_r = n_c = 120</span>. <span class="math display">\pi_1 = \begin{pmatrix} 0.5, 0.3, 0.2\end{pmatrix},~
\rho_1 = \begin{pmatrix}0.4, 0.3, 0.2, 0.1\end{pmatrix},~
\alpha_1 = \begin{pmatrix}
0.85&amp; 0.4&amp; 0.2&amp; 0.05\\
0.6&amp; 0.2&amp; 0.05&amp; 0.05\\
0.2&amp; 0.05&amp; 0.05&amp; 0.7
\end{pmatrix}</span></p>
<p><span class="math display"> \pi_2 = (0.5, 0.3, 0.2),~
\rho_2 = (0.45, 0.3, 0.25),~
\alpha_2 = \begin{pmatrix}
0.65&amp; 0.05&amp; 0.05\\
0.05&amp; 0.8&amp; 0.05\\
0.05&amp; 0.05&amp; 0.4
\end{pmatrix}</span></p>
<p><span class="math inline">\epsilon \in (0, 0.05, \dots 0.5)</span>, indices de la matrice = sample.int(<span class="math inline">n_r \times n_c</span>, size = <span class="math inline">n_r \times n_c \times \epsilon</span>). Les indices tirés inverse la valeur du lien (1 -&gt; 0, 0 -&gt; 1)</p></li>
</ul>
<div id="fig-results-linsk" class="quarto-layout-panel">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-results-linsk-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="figs/clear_links.png" class="lightbox" data-gallery="quarto-lightbox-gallery-5" title="Clear links"><img src="figs/clear_links.png" class="img-fluid figure-img"></a></p>
<figcaption>Clear links</figcaption>
</figure>
</div>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="figs/noisy_links.png" class="lightbox" data-gallery="quarto-lightbox-gallery-6" title="Noisy links"><img src="figs/noisy_links.png" class="img-fluid figure-img"></a></p>
<figcaption>Noisy links</figcaption>
</figure>
</div>
</div>
</div>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig quarto-uncaptioned" id="fig-results-linsk-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1
</figcaption>
</figure>
</div>
<ul>
<li><p>Relancer simulations robustesse aux NAs</p></li>
<li><p>Changer les plots résultats NAs pour faire sous-plots comparant sep vs model.</p></li>
</ul>
</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
<script>var lightboxQuarto = GLightbox({"closeEffect":"zoom","descPosition":"bottom","loop":false,"openEffect":"zoom","selector":".lightbox"});
(function() {
let previousOnload = window.onload;
window.onload = () => {
if (previousOnload) {
previousOnload();
}
lightboxQuarto.on('slide_before_load', (data) => {
const { slideIndex, slideNode, slideConfig, player, trigger } = data;
const href = trigger.getAttribute('href');
if (href !== null) {
const imgEl = window.document.querySelector(`a[href="${href}"] img`);
if (imgEl !== null) {
const srcAttr = imgEl.getAttribute("src");
if (srcAttr && srcAttr.startsWith("data:")) {
slideConfig.href = srcAttr;
}
}
}
});
lightboxQuarto.on('slide_after_load', (data) => {
const { slideIndex, slideNode, slideConfig, player, trigger } = data;
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(slideNode);
}
});
};
})();
</script>
</body></html>

View file

@ -1,80 +0,0 @@
---
title: "Bilan semaine 13 2025 : 17-21 mars"
date: 17 03 2025
categories:
- colBiSBM
---
Cette semaine j'ai :
- Fini d'intégrer à colSBM tous les changements (clustering dérecursifier pour
uni et bipartites& cli ...) et contacter Saint-Clair pour passer colSBM sous GrossSBM.
- Relancer et obtenus les résultats pour le clustering sur les réseaux Baldock
![Baldock iid](figs/baldock_meso_iid.png)
![Baldock pi](figs/baldock_meso_pi.png)
![Baldock rho](figs/baldock_meso_rho.png)
![Baldock pirho](figs/baldock_meso_pirho.png)
- Relancer et obtenus les résultats pour les simus ajoutant du bruits sur les structures et liens
- Pour *noisy $\alpha$*:
Plan de simulation 2 collections ($d\in (1,2)$) avec $M = 30$ soit 15 réseaux par type. $n_r = n_c = 120$ et
$$\pi_1 = \begin{pmatrix} 0.5, 0.3, 0.2\end{pmatrix},~
\rho_1 = \begin{pmatrix}0.4, 0.3, 0.2, 0.1\end{pmatrix},~
\alpha_1 = \begin{pmatrix}
0.85& 0.4& 0.2& 0.15\\
0.6& 0.2& 0.15& 0.15\\
0.2& 0.15& 0.15& 0.7
\end{pmatrix}$$
$$ \pi_2 = (0.5, 0.3, 0.2),~
\rho_2 = (0.45, 0.3, 0.25),~
\alpha_2 = \begin{pmatrix}
0.65& 0.15& 0.15\\
0.15& 0.8& 0.15\\
0.15& 0.15& 0.4
\end{pmatrix}$$
$\epsilon \in (0, 0.01, \dots 0.05)$ qui est l'écart-type d'une $\mathcal{N}_{Q_1^d \times Q_2^d}(0,\epsilon^2) = vec(N^m), \forall m \in (1,\dots, M)$.
Et $\forall m, X^m \sim LBM_{n_r,n_c}(Q_1^d, Q_2^d, \alpha_d + N^m, \pi_d, \rho_d)$
Résultats :
![alt](figs/noisy_alpha.png)
- Pour *noisy links*:
Plan de simu $M = 30$, $n_r = n_c = 120$.
$$\pi_1 = \begin{pmatrix} 0.5, 0.3, 0.2\end{pmatrix},~
\rho_1 = \begin{pmatrix}0.4, 0.3, 0.2, 0.1\end{pmatrix},~
\alpha_1 = \begin{pmatrix}
0.85& 0.4& 0.2& 0.05\\
0.6& 0.2& 0.05& 0.05\\
0.2& 0.05& 0.05& 0.7
\end{pmatrix}$$
$$ \pi_2 = (0.5, 0.3, 0.2),~
\rho_2 = (0.45, 0.3, 0.25),~
\alpha_2 = \begin{pmatrix}
0.65& 0.05& 0.05\\
0.05& 0.8& 0.05\\
0.05& 0.05& 0.4
\end{pmatrix}$$
$\epsilon \in (0, 0.05, \dots 0.5)$, indices de la matrice = sample.int($n_r \times n_c$, size = $n_r \times n_c \times \epsilon$). Les indices tirés inverse la valeur du lien (1 -> 0, 0 -> 1)
::: {#fig-results-linsk layout-ncol=2}
![Clear links](figs/clear_links.png)
![Noisy links](figs/noisy_links.png)
:::
- Relancer simulations robustesse aux NAs
- Changer les plots résultats NAs pour faire sous-plots comparant sep vs model.

677
suivi/2025-14/2025-14.html Normal file
View file

@ -0,0 +1,677 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 14 2025 : 24-28 mars Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 14 2025 : 24-28 mars</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">28 mars 2025</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#a-faire" id="toc-a-faire" class="nav-link active" data-scroll-target="#a-faire"><span class="header-section-number">1</span> A faire</a></li>
<li><a href="#jai-fait" id="toc-jai-fait" class="nav-link" data-scroll-target="#jai-fait"><span class="header-section-number">2</span> Jai fait</a></li>
<li><a href="#a-continuer" id="toc-a-continuer" class="nav-link" data-scroll-target="#a-continuer"><span class="header-section-number">3</span> A continuer</a></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="a-faire" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="a-faire"><span class="header-section-number">1</span> A faire</h2>
<ul>
<li><p>Relire intro St Clair</p></li>
<li><p>Sinspirer structure pour mon intro</p></li>
<li><p>Trouver biblio intro</p></li>
<li><p>Rédiger lintro</p></li>
<li><p>Agrandir la collection dapplication, pas seulement Baldock mais aussi Trojelsgaard par ex</p></li>
<li><p>Lire les papiers de Baldock Traveset Souza Cordeniz Trojelsgaard et Gibson</p></li>
<li><p>Présenter le réseau Afrique du Sud dès lintro des réseaux anglais de Baldock</p></li>
<li><p>Corriger structure de simus :</p>
<ul>
<li>Pour noisy <span class="math inline">\alpha</span> :
<ul>
<li>Logit pour envoyer la gaussienne vers (0,1)</li>
<li>Beta contrainte dans (0,1)</li>
</ul></li>
<li>Pour noisy links : Générer <code>nb_clustering</code> collections de taille M puis prélever <span class="math inline">\epsilon_{max}n_r n_c</span> liens à inverser puis pour les <span class="math inline">\epsilon &lt; \epsilon_{max}</span> prélever dans la liste des indices afin davoir des perturbations emboitées.</li>
</ul></li>
<li><p>Rédiger et modifier les cadres de simulations dans le papier pour quils soient raccord avec les données obtenues.</p></li>
<li><p>Lancer clustering iid ascendant sur données sub-Doré.</p></li>
<li><p>Vérifier si les Baldock anglais ont des espèces en communs “Do they involve common species?”.</p></li>
</ul>
</section>
<section id="jai-fait" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="jai-fait"><span class="header-section-number">2</span> Jai fait</h2>
<ul>
<li>Corriger structure de simus :
<ul>
<li>Pour NA robustness</li>
</ul></li>
<li>Définir dans la section 3 :</li>
</ul>
<blockquote class="blockquote">
<p>Remark that for iid-colBiSBM, <span class="math inline">\pi_q, \rho_r &gt; 0</span>, and thus the blocks exist and are represented in all networks. For the other models, some blocks may not exist in some networks and this is why <span class="math inline">\pi_q^m, \rho_r^m \geq 0</span>. Using <span class="math inline">S^{(1)}</span> and <span class="math inline">S^{(2)}</span> we can define the restricted parameters for each network and we denote them as <span class="math inline">\widetilde{\bm{\pi}}^m</span>, <span class="math inline">\widetilde{\bm{\rho}}^m</span> and <span class="math inline">\widetilde{\bm{\alpha}}^m</span>. The restrictions thus indicate the blocks that are represented in the network <span class="math inline">m</span>.</p>
</blockquote>
<ul>
<li><p>Écrire la partie preuve pour identif <span class="math inline">\pi</span>-colBiSBM et <span class="math inline">\rho</span>-colBiSBM. Identif : <span class="math inline">\pi</span> et <span class="math inline">\rho</span> en attente retours Pierre et Sophie</p></li>
<li><p>Saint-Clair va passer colSBM sous GrossSBM</p></li>
<li><p>Agrandir la collection dapplication, pas seulement Baldock mais aussi Trojelsgaard par ex : <em>Collection agrandie avec Baldock Traveset Souza Cordeniz Trojelsgaard et Gibson, en attente MIGALE</em>. Clustering instable</p></li>
</ul>
</section>
<section id="a-continuer" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="a-continuer"><span class="header-section-number">3</span> A continuer</h2>
<ul>
<li><p>Résultats simus NA <strong>Erreur pour certaines conditions</strong> : Pour NA robustness générer <code>nb_rep</code> collections de taille <span class="math inline">M=2</span> et prélever <span class="math inline">\epsilon_{max}n_r n_c</span> liens à retirer puis pour les <span class="math inline">\epsilon &lt; \epsilon_{max}</span> prélever dans la liste des indices afin davoir des perturbations emboitées. Il faut que jajoute un mécanisme pour reprendre des conditions qui ont plantés et que je skip dans le future_lapply les conditions déjà traitées (pour avoir la même seed quand je vais exécuter le code). Implémenté les missing steps <em>en attente des résultats MIGALE</em>.</p></li>
<li><p>Pour sub doré <em>en attente MIGALE</em> augmenter le nbre de répèt de la procédure.</p></li>
</ul>
</section>
</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

View file

@ -1,67 +0,0 @@
---
title: "Bilan semaine 14 2025 : 24-28 mars"
categories:
- colBiSBM
date: 28 03 2025
---
## A faire
- Relire intro St Clair
- S'inspirer structure pour mon intro
- Trouver biblio intro
- Rédiger l'intro
- Agrandir la collection d'application, pas seulement Baldock mais aussi Trojelsgaard par ex
- Lire les papiers de Baldock Traveset Souza Cordeniz Trojelsgaard et Gibson
- Présenter le réseau Afrique du Sud dès l'intro des réseaux anglais de Baldock
- Corriger structure de simus :
- Pour noisy $\alpha$ :
- Logit pour envoyer la gaussienne vers (0,1)
- Beta contrainte dans (0,1)
- Pour noisy links : Générer `nb_clustering` collections de taille M puis prélever $\epsilon_{max}n_r n_c$ liens à inverser puis pour les $\epsilon < \epsilon_{max}$ prélever dans la liste des indices afin d'avoir des perturbations emboitées.
- Rédiger et modifier les cadres de simulations dans le papier pour qu'ils soient
raccord avec les données obtenues.
- Lancer clustering iid ascendant sur données sub-Doré.
- Vérifier si les Baldock anglais ont des espèces en communs "Do they involve common species?".
## J'ai fait
- Corriger structure de simus :
- Pour NA robustness
- Définir dans la section 3 :
> Remark that for iid-colBiSBM, $\pi_q, \rho_r > 0$, and thus the blocks exist
and are represented in all networks. For the other models, some blocks may not
exist in some networks and this is why $\pi_q^m, \rho_r^m \geq 0$. Using
$S^{(1)}$ and $S^{(2)}$ we can define the restricted parameters for each
network and we denote them as $\widetilde{\bm{\pi}}^m$,
$\widetilde{\bm{\rho}}^m$ and $\widetilde{\bm{\alpha}}^m$. The restrictions
thus indicate the blocks that are represented in the network $m$.
- Écrire la partie preuve pour identif $\pi$-colBiSBM et $\rho$-colBiSBM.
Identif : $\pi$ et $\rho$ en attente retours Pierre et Sophie
- Saint-Clair va passer colSBM sous GrossSBM
- Agrandir la collection d'application, pas seulement Baldock mais aussi Trojelsgaard par ex : *Collection agrandie avec Baldock Traveset Souza Cordeniz Trojelsgaard et Gibson, en attente MIGALE*. Clustering instable
## A continuer
- Résultats simus NA **Erreur pour certaines conditions** : Pour NA robustness générer `nb_rep` collections de taille $M=2$ et prélever
$\epsilon_{max}n_r n_c$ liens à retirer puis pour les $\epsilon < \epsilon_{max}$ prélever dans la liste des indices afin d'avoir des perturbations emboitées.
Il faut que j'ajoute un mécanisme pour reprendre des conditions qui ont plantés et que je skip dans le future_lapply les conditions déjà traitées (pour avoir la même seed quand je vais exécuter le code).
Implémenté les missing steps *en attente des résultats MIGALE*.
- Pour sub doré *en attente MIGALE* augmenter le nbre de répèt de la procédure.

674
suivi/2025-15/2025-15.html Normal file
View file

@ -0,0 +1,674 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 15 2025 : 31 mars-4 avril Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 15 2025 : 31 mars-4 avril</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">4 avril 2025</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#a-faire" id="toc-a-faire" class="nav-link active" data-scroll-target="#a-faire"><span class="header-section-number">1</span> A faire</a></li>
<li><a href="#jai-fait" id="toc-jai-fait" class="nav-link" data-scroll-target="#jai-fait"><span class="header-section-number">2</span> Jai fait</a></li>
<li><a href="#a-continuer" id="toc-a-continuer" class="nav-link" data-scroll-target="#a-continuer"><span class="header-section-number">3</span> A continuer</a></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="a-faire" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="a-faire"><span class="header-section-number">1</span> A faire</h2>
<ul>
<li><p>Relire intro St Clair</p></li>
<li><p>Sinspirer structure pour mon intro</p></li>
<li><p>Trouver biblio intro</p></li>
<li><p>Rédiger lintro</p></li>
<li><p>Lire les papiers de Baldock Traveset Souza Cordeniz Trojelsgaard et Gibson</p></li>
<li><p>Corriger structure de simus :</p>
<ul>
<li>Pour noisy <span class="math inline">\alpha</span> :
<ul>
<li>Logit pour envoyer la gaussienne vers (0,1)</li>
<li>Beta contrainte dans (0,1)</li>
</ul></li>
<li>Pour noisy links : Générer <code>nb_clustering</code> collections de taille M puis prélever <span class="math inline">\epsilon_{max}n_r n_c</span> liens à inverser puis pour les <span class="math inline">\epsilon &lt; \epsilon_{max}</span> prélever dans la liste des indices afin davoir des perturbations emboitées.</li>
</ul></li>
<li><p>Extraire les nombres de liens communs et déplacer le tableau en annexes en faisant juste un paragraphe dans le corps de texte.</p></li>
</ul>
<p><strong>Pour VENDREDI</strong></p>
<ul>
<li><p>Rédiger et modifier les cadres de simulations dans le papier pour quils soient raccord avec les données obtenues.</p></li>
<li><p>Étoffer la partie simulations studies en mettant plusieurs points pour présenter les simus et les résultats succintement.</p></li>
</ul>
<blockquote class="blockquote">
<p>je pense quil faudrait étoffer en mettrant plusieurs points répartis en paragraphe. genre vérif selection de modèle verif clustering réseau, verif transfer leraning et de dire les résultats en qq mots</p>
</blockquote>
<ul>
<li>Idée Sophie: Regarder clustering de données plantes-pollinisateur selon gradient durbanisation</li>
</ul>
</section>
<section id="jai-fait" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="jai-fait"><span class="header-section-number">2</span> Jai fait</h2>
<ul>
<li><p>Clustering sub-doré pas de stabilité à la répétition malheureusement <img src="figs/alluvial-clusterings.png" class="img-fluid"></p></li>
<li><p>Vérifier si les Baldock anglais ont des espèces en communs “Do they involve common species?”. Oui environ 70/250 soit plus de 20%.</p></li>
<li><p>Présenter le réseau Afrique du Sud dès lintro des réseaux anglais de Baldock</p></li>
</ul>
</section>
<section id="a-continuer" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="a-continuer"><span class="header-section-number">3</span> A continuer</h2>
<ul>
<li><p>Résultats simus NA <strong>Erreur pour certaines conditions</strong> : Pour NA robustness générer <code>nb_rep</code> collections de taille <span class="math inline">M=2</span> et prélever <span class="math inline">\epsilon_{max}n_r n_c</span> liens à retirer puis pour les <span class="math inline">\epsilon &lt; \epsilon_{max}</span> prélever dans la liste des indices afin davoir des perturbations emboitées. Il faut que jajoute un mécanisme pour reprendre des conditions qui ont plantés et que je skip dans le future_lapply les conditions déjà traitées (pour avoir la même seed quand je vais exécuter le code). Implémenté les missing steps <em>en attente des résultats MIGALE</em>.</p></li>
<li><p>Jai lancé le clustering iid ascendant sur données sub-Doré. <em>en attente des résultats MIGALE</em></p></li>
</ul>
</section>
</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

View file

@ -1,55 +0,0 @@
---
title: "Bilan semaine 15 2025 : 31 mars-4 avril"
categories:
- colBiSBM
date: 04 04 2025
---
## A faire
- Relire intro St Clair
- S'inspirer structure pour mon intro
- Trouver biblio intro
- Rédiger l'intro
- Lire les papiers de Baldock Traveset Souza Cordeniz Trojelsgaard et Gibson
- Corriger structure de simus :
- Pour noisy $\alpha$ :
- Logit pour envoyer la gaussienne vers (0,1)
- Beta contrainte dans (0,1)
- Pour noisy links : Générer `nb_clustering` collections de taille M puis prélever $\epsilon_{max}n_r n_c$ liens à inverser puis pour les $\epsilon < \epsilon_{max}$ prélever dans la liste des indices afin d'avoir des perturbations emboitées.
- Extraire les nombres de liens communs et déplacer le tableau en annexes en faisant juste un paragraphe dans le corps de texte.
**Pour VENDREDI**
- Rédiger et modifier les cadres de simulations dans le papier pour qu'ils soient
raccord avec les données obtenues.
- Étoffer la partie simulations studies en mettant plusieurs points pour présenter les simus et les résultats succintement.
> je pense qu'il faudrait étoffer en mettrant plusieurs points répartis en paragraphe. genre vérif selection de modèle verif clustering réseau, verif transfer leraning et de dire les résultats en qq mots
- Idée Sophie: Regarder clustering de données plantes-pollinisateur selon gradient d'urbanisation
## J'ai fait
- Clustering sub-doré pas de stabilité à la répétition malheureusement
![](figs/alluvial-clusterings.png)
- Vérifier si les Baldock anglais ont des espèces en communs "Do they involve common species?". Oui environ 70/250 soit plus de 20%.
- Présenter le réseau Afrique du Sud dès l'intro des réseaux anglais de Baldock
## A continuer
- Résultats simus NA **Erreur pour certaines conditions** : Pour NA robustness générer `nb_rep` collections de taille $M=2$ et prélever
$\epsilon_{max}n_r n_c$ liens à retirer puis pour les $\epsilon < \epsilon_{max}$ prélever dans la liste des indices afin d'avoir des perturbations emboitées.
Il faut que j'ajoute un mécanisme pour reprendre des conditions qui ont plantés et que je skip dans le future_lapply les conditions déjà traitées (pour avoir la même seed quand je vais exécuter le code).
Implémenté les missing steps *en attente des résultats MIGALE*.
- J'ai lancé le clustering iid ascendant sur données sub-Doré. *en attente des résultats MIGALE*

672
suivi/2025-16/2025-16.html Normal file
View file

@ -0,0 +1,672 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 16 2025 Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 16 2025</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">18 avril 2025</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#a-faire" id="toc-a-faire" class="nav-link active" data-scroll-target="#a-faire"><span class="header-section-number">1</span> A faire</a></li>
<li><a href="#jai-fait" id="toc-jai-fait" class="nav-link" data-scroll-target="#jai-fait"><span class="header-section-number">2</span> Jai fait</a></li>
<li><a href="#a-continuer" id="toc-a-continuer" class="nav-link" data-scroll-target="#a-continuer"><span class="header-section-number">3</span> A continuer</a></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="a-faire" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="a-faire"><span class="header-section-number">1</span> A faire</h2>
<ul>
<li><p>Relire intro St Clair</p></li>
<li><p>Sinspirer structure pour mon intro</p></li>
<li><p>Trouver biblio intro</p></li>
<li><p>Rédiger lintro</p></li>
<li><p>Lire les papiers de Baldock Traveset Souza Cordeniz Trojelsgaard et Gibson</p></li>
<li><p>Corriger structure de simus :</p>
<ul>
<li>Pour noisy <span class="math inline">\alpha</span> :
<ul>
<li>Logit pour envoyer la gaussienne vers (0,1)</li>
<li>Beta contrainte dans (0,1)</li>
</ul></li>
<li>Pour noisy links : Générer <code>nb_clustering</code> collections de taille M puis prélever <span class="math inline">\epsilon_{max}n_r n_c</span> liens à inverser puis pour les <span class="math inline">\epsilon &lt; \epsilon_{max}</span> prélever dans la liste des indices afin davoir des perturbations emboitées.</li>
</ul></li>
<li><p>Idée Sophie: Regarder clustering de données plantes-pollinisateur selon gradient durbanisation</p></li>
<li><p>Idée Pierre : Regarder la contribution au BICL de la collection des réseaux et comparer au sep BICL pour essayer de repérer les outliers.</p></li>
</ul>
</section>
<section id="jai-fait" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="jai-fait"><span class="header-section-number">2</span> Jai fait</h2>
<ul>
<li><p>Jai lancé le clustering iid ascendant sur données sub-Doré. Résultats stables mais 27 collections formées donc pas de mise en commun des structures…</p></li>
<li><p>Rédiger et modifier les cadres de simulations dans le papier pour quils soient raccord avec les données obtenues.</p></li>
<li><p>Étoffer la partie simulations studies en mettant plusieurs points pour présenter les simus et les résultats succintement.</p></li>
</ul>
<blockquote class="blockquote">
<p>je pense quil faudrait étoffer en mettrant plusieurs points répartis en paragraphe. genre vérif selection de modèle verif clustering réseau, verif transfer leraning et de dire les résultats en qq mots</p>
</blockquote>
<ul>
<li>Comment faire pour linscription JdS (paiement, coldem …) : voir avec Christelle</li>
<li>CSI : St Clair, Sonia ou Elisa et Pierre Gérard</li>
</ul>
</section>
<section id="a-continuer" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="a-continuer"><span class="header-section-number">3</span> A continuer</h2>
<ul>
<li><p>Résultats simus NA <strong>Erreur pour certaines conditions</strong> : Pour NA robustness générer <code>nb_rep</code> collections de taille <span class="math inline">M=2</span> et prélever <span class="math inline">\epsilon_{max}n_r n_c</span> liens à retirer puis pour les <span class="math inline">\epsilon &lt; \epsilon_{max}</span> prélever dans la liste des indices afin davoir des perturbations emboitées. Il faut que jajoute un mécanisme pour reprendre des conditions qui ont plantés et que je skip dans le future_lapply les conditions déjà traitées (pour avoir la même seed quand je vais exécuter le code). Implémenté les missing steps <em>en attente des résultats MIGALE</em>.</p></li>
<li><p>Lire Biological Networks - François Képès</p></li>
<li><p>Jai esquissé des bouts dintro</p></li>
</ul>
</section>
</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

View file

@ -1,54 +0,0 @@
---
title: "Bilan semaine 16 2025"
categories:
- colBiSBM
date: 18 04 2025
---
## A faire
- Relire intro St Clair
- S'inspirer structure pour mon intro
- Trouver biblio intro
- Rédiger l'intro
- Lire les papiers de Baldock Traveset Souza Cordeniz Trojelsgaard et Gibson
- Corriger structure de simus :
- Pour noisy $\alpha$ :
- Logit pour envoyer la gaussienne vers (0,1)
- Beta contrainte dans (0,1)
- Pour noisy links : Générer `nb_clustering` collections de taille M puis prélever $\epsilon_{max}n_r n_c$ liens à inverser puis pour les $\epsilon < \epsilon_{max}$ prélever dans la liste des indices afin d'avoir des perturbations emboitées.
- Idée Sophie: Regarder clustering de données plantes-pollinisateur selon gradient d'urbanisation
- Idée Pierre : Regarder la contribution au BICL de la collection des réseaux
et comparer au sep BICL pour essayer de repérer les outliers.
## J'ai fait
- J'ai lancé le clustering iid ascendant sur données sub-Doré.
Résultats stables mais 27 collections formées donc pas de mise en commun des structures...
- Rédiger et modifier les cadres de simulations dans le papier pour qu'ils soient
raccord avec les données obtenues.
- Étoffer la partie simulations studies en mettant plusieurs points pour présenter les simus et les résultats succintement.
> je pense qu'il faudrait étoffer en mettrant plusieurs points répartis en paragraphe. genre vérif selection de modèle verif clustering réseau, verif transfer leraning et de dire les résultats en qq mots
- Comment faire pour l'inscription JdS (paiement, coldem ...) : voir avec Christelle
- CSI : St Clair, Sonia ou Elisa et Pierre Gérard
## A continuer
- Résultats simus NA **Erreur pour certaines conditions** : Pour NA robustness générer `nb_rep` collections de taille $M=2$ et prélever
$\epsilon_{max}n_r n_c$ liens à retirer puis pour les $\epsilon < \epsilon_{max}$ prélever dans la liste des indices afin d'avoir des perturbations emboitées.
Il faut que j'ajoute un mécanisme pour reprendre des conditions qui ont plantés et que je skip dans le future_lapply les conditions déjà traitées (pour avoir la même seed quand je vais exécuter le code).
Implémenté les missing steps *en attente des résultats MIGALE*.
- Lire Biological Networks - François Képès
- J'ai esquissé des bouts d'intro

Binary file not shown.

Before

Width:  |  Height:  |  Size: 281 KiB

808
suivi/2025-17/2025-17.html Normal file
View file

@ -0,0 +1,808 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 17 2025 : 24 avril - 25 avril Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script src="../../site_libs/quarto-contrib/glightbox/glightbox.min.js"></script>
<link href="../../site_libs/quarto-contrib/glightbox/glightbox.min.css" rel="stylesheet">
<link href="../../site_libs/quarto-contrib/glightbox/lightbox.css" rel="stylesheet">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 17 2025 : 24 avril - 25 avril</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">25 avril 2025</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#a-faire" id="toc-a-faire" class="nav-link active" data-scroll-target="#a-faire"><span class="header-section-number">1</span> A faire</a>
<ul class="collapse">
<li><a href="#rédaction-article" id="toc-rédaction-article" class="nav-link" data-scroll-target="#rédaction-article"><span class="header-section-number">1.1</span> Rédaction article</a></li>
<li><a href="#simulations-article" id="toc-simulations-article" class="nav-link" data-scroll-target="#simulations-article"><span class="header-section-number">1.2</span> Simulations article</a></li>
<li><a href="#applications" id="toc-applications" class="nav-link" data-scroll-target="#applications"><span class="header-section-number">1.3</span> Applications</a></li>
<li><a href="#autour-de-larticle-et-du-package" id="toc-autour-de-larticle-et-du-package" class="nav-link" data-scroll-target="#autour-de-larticle-et-du-package"><span class="header-section-number">1.4</span> Autour de larticle et du package</a></li>
</ul></li>
<li><a href="#jai-fait" id="toc-jai-fait" class="nav-link" data-scroll-target="#jai-fait"><span class="header-section-number">2</span> Jai fait</a></li>
<li><a href="#a-continuer" id="toc-a-continuer" class="nav-link" data-scroll-target="#a-continuer"><span class="header-section-number">3</span> A continuer</a>
<ul class="collapse">
<li><a href="#correction-méthodo" id="toc-correction-méthodo" class="nav-link" data-scroll-target="#correction-méthodo"><span class="header-section-number">3.1</span> Correction méthodo</a></li>
<li><a href="#applications-1" id="toc-applications-1" class="nav-link" data-scroll-target="#applications-1"><span class="header-section-number">3.2</span> Applications</a></li>
<li><a href="#lancer-clustering-auteur-par-auteur-du-sub-doré-5-collections-différentes-dans-lidée." id="toc-lancer-clustering-auteur-par-auteur-du-sub-doré-5-collections-différentes-dans-lidée." class="nav-link" data-scroll-target="#lancer-clustering-auteur-par-auteur-du-sub-doré-5-collections-différentes-dans-lidée."><span class="header-section-number">3.3</span> Lancer clustering auteur par auteur du sub-Doré : 5 collections différentes dans lidée.</a></li>
</ul></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="a-faire" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="a-faire"><span class="header-section-number">1</span> A faire</h2>
<section id="rédaction-article" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="rédaction-article"><span class="header-section-number">1.1</span> Rédaction article</h3>
<ul>
<li><p>Relire intro St Clair</p></li>
<li><p>Sinspirer structure pour mon intro</p></li>
<li><p>Trouver biblio intro</p></li>
<li><p>Rédiger lintro</p></li>
<li><p>Regarder les applications pour les collections de réseaux recommender system</p></li>
<li><p>Lire les papiers de Baldock Traveset Souza Cordeniz Trojelsgaard et Gibson</p></li>
<li><p>Dire résultats nettement meilleurs et variabilités inférieures.</p></li>
</ul>
</section>
<section id="simulations-article" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="simulations-article"><span class="header-section-number">1.2</span> Simulations article</h3>
<ul>
<li><p>Relancer simus clustering avec VEM steps = 10 000 et plus nombreux init pour spectral</p></li>
<li><p>Ajouter simu clustering métriques nb sous-collections obtenues. Vérifier les résultats obtenus si ARI = 0. Et augmenter la taille <span class="math inline">M = 30</span> avec <span class="math inline">M_1 = M_2 = M_3 = 10</span>.</p></li>
<li><p>Comparer sur clustering unipartite avec versions symétriser des par blocs des matrices dadjacences.</p></li>
<li><p>Corriger structure de simus :</p>
<ul>
<li>Pour noisy <span class="math inline">\alpha</span> :
<ul>
<li>Logit pour envoyer la gaussienne vers (0,1)</li>
<li>Beta contrainte dans (0,1)</li>
</ul></li>
<li>Pour noisy links : Générer <code>nb_clustering</code> collections de taille M puis prélever <span class="math inline">\epsilon_{max}n_r n_c</span> liens à inverser puis pour les <span class="math inline">\epsilon &lt; \epsilon_{max}</span> prélever dans la liste des indices afin davoir des perturbations emboitées.</li>
</ul></li>
</ul>
</section>
<section id="applications" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="applications"><span class="header-section-number">1.3</span> Applications</h3>
<ul>
<li>Kmeans sur la densité des réseaux subdoré pour pré-partitionner et <em>clusteriser</em>.</li>
</ul>
</section>
<section id="autour-de-larticle-et-du-package" class="level3" data-number="1.4">
<h3 data-number="1.4" class="anchored" data-anchor-id="autour-de-larticle-et-du-package"><span class="header-section-number">1.4</span> Autour de larticle et du package</h3>
<ul>
<li>Créer des vignettes illustrant par exemple des cas de simulations. <strong>Possible de mettre lexemple dapplication de Sophie sur les réseaux avec gradient durbanisation</strong>.</li>
</ul>
</section>
</section>
<section id="jai-fait" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="jai-fait"><span class="header-section-number">2</span> Jai fait</h2>
<ul>
<li><p>Créer un README descriptif du dépôt des codes pour larticle.</p></li>
<li><p>Remonter figure sélection de modèle dans le corps de larticle</p></li>
<li><p>Enrichir légende de la figure 7 et 8</p></li>
<li><p>Supprimer p_NA des autres cadrans des proportions de NA</p></li>
<li><p>Basculer le code du clustering pour utiliser hclust et mis largument method de hclust avec single par défaut</p></li>
<li><p>Ajouter pipeline qui knit README.Rmd à chaque merge dans main colSBM</p></li>
</ul>
</section>
<section id="a-continuer" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="a-continuer"><span class="header-section-number">3</span> A continuer</h2>
<ul>
<li><p>Résultats simus NA <strong>Erreur pour certaines conditions</strong> : Pour NA robustness générer <code>nb_rep</code> collections de taille <span class="math inline">M=2</span> et prélever <span class="math inline">\epsilon_{max}n_r n_c</span> liens à retirer puis pour les <span class="math inline">\epsilon &lt; \epsilon_{max}</span> prélever dans la liste des indices afin davoir des perturbations emboitées. Il faut que jajoute un mécanisme pour reprendre des conditions qui ont plantés et que je skip dans le future_lapply les conditions déjà traitées (pour avoir la même seed quand je vais exécuter le code). Implémenté les missing steps <em>en attente des résultats MIGALE</em>.</p></li>
<li><p>Lire Biological Networks - François Képès</p></li>
<li><p>Jai esquissé des bouts dintro</p></li>
<li><p>Relancer simus dinférence avec n = 240 pour voir si la qualité augmenter (se rassurer). En fait on est déjà à 240, jai relancé avec M = 4 au lieu de M = 2. En attente résultats MIGALE</p></li>
</ul>
<section id="correction-méthodo" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="correction-méthodo"><span class="header-section-number">3.1</span> Correction méthodo</h3>
<ul>
<li><p>Idée Pierre : Regarder la contribution au BICL de la collection des réseaux et comparer au sep BICL pour essayer de repérer les outliers. En regardant la vbound (pas la pénalité) de chaque réseau dans le joint vs sa vbound dans le sep -&gt; Résultats : pas de différences majeures entre les réseaux avec le rapport vbound_joint/vbound_sep, les outliers ne sont pas marqués.</p></li>
<li><p>Regarder si plutôt que k médioid possible meilleurs résultats avec dautres distances hclust avec min, max etc… -&gt; Lalgo PAM donne des clusters équilibrés sans séparer les outliers Je regarde avec plutôt des hclust avec métrique single pour séparer les outliers.</p></li>
<li><p>Voir si in fine possible de repérer des outliers à partir de ces nouvelles métriques</p></li>
<li><p>Regarder la répartition de densité dans les réseaux sub-doré -&gt; déséquilibrée</p></li>
</ul>
<p><a href="figs/density-subdore.png" class="lightbox" data-gallery="quarto-lightbox-gallery-1"><img src="figs/density-subdore.png" class="img-fluid"></a></p>
<pre><code>En faisant des clusterings par densité on constate qu'avec un modèle iid pour des réseaux dont la densité est entre :
- 0 et 0.05 : Baldock et Souza tout le monde se retrouvait ensemble avec *Partitioning around medoids*</code></pre>
</section>
<section id="applications-1" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="applications-1"><span class="header-section-number">3.2</span> Applications</h3>
<ul>
<li>Idée Sophie: Regarder clustering de données plantes-pollinisateur selon gradient durbanisation</li>
</ul>
<blockquote class="blockquote">
<p>Sophie a fait une appli qui marche bien et va dans le sens de lanalyse faite (à savoir pas deffet du gradien durbanisation). À continuer pour lintégrer dans larticle !</p>
</blockquote>
</section>
<section id="lancer-clustering-auteur-par-auteur-du-sub-doré-5-collections-différentes-dans-lidée." class="level3" data-number="3.3">
<h3 data-number="3.3" class="anchored" data-anchor-id="lancer-clustering-auteur-par-auteur-du-sub-doré-5-collections-différentes-dans-lidée."><span class="header-section-number">3.3</span> Lancer clustering auteur par auteur du sub-Doré : 5 collections différentes dans lidée.</h3>
<p>Une fois fait, Sophie ne trouve pas que ce soit le plus pertinent pour illustrer le clustering. Plus intéressant de garder le clustering de données simulées (<span class="math inline">M = 30</span>) et se servir des exemples dessous et des parcours exhaustif des possibilités de partitionnement comme comparatif.</p>
<section id="baldock" class="level4" data-number="3.3.1">
<h4 data-number="3.3.1" class="anchored" data-anchor-id="baldock"><span class="header-section-number">3.3.1</span> Baldock</h4>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="figs/subdore-per-author/subdore_baldock_alluvial_clusterings.png" class="lightbox" data-gallery="quarto-lightbox-gallery-2" title="Alluvial Baldock"><img src="figs/subdore-per-author/subdore_baldock_alluvial_clusterings.png" class="img-fluid figure-img" alt="Alluvial Baldock"></a></p>
<figcaption>Alluvial Baldock</figcaption>
</figure>
</div>
</section>
<section id="gibson" class="level4" data-number="3.3.2">
<h4 data-number="3.3.2" class="anchored" data-anchor-id="gibson"><span class="header-section-number">3.3.2</span> Gibson</h4>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="figs/subdore-per-author/subdore_gibson_alluvial_clusterings.png" class="lightbox" data-gallery="quarto-lightbox-gallery-3" title="Alluvial Gibson"><img src="figs/subdore-per-author/subdore_gibson_alluvial_clusterings.png" class="img-fluid figure-img" alt="Alluvial Gibson"></a></p>
<figcaption>Alluvial Gibson</figcaption>
</figure>
</div>
</section>
<section id="souza" class="level4" data-number="3.3.3">
<h4 data-number="3.3.3" class="anchored" data-anchor-id="souza"><span class="header-section-number">3.3.3</span> Souza</h4>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="figs/subdore-per-author/subdore_souza_alluvial_clusterings.png" class="lightbox" data-gallery="quarto-lightbox-gallery-4" title="Alluvial Souza"><img src="figs/subdore-per-author/subdore_souza_alluvial_clusterings.png" class="img-fluid figure-img" alt="Alluvial Souza"></a></p>
<figcaption>Alluvial Souza</figcaption>
</figure>
</div>
</section>
<section id="traveset" class="level4" data-number="3.3.4">
<h4 data-number="3.3.4" class="anchored" data-anchor-id="traveset"><span class="header-section-number">3.3.4</span> Traveset</h4>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="figs/subdore-per-author/subdore_traveset_alluvial_clusterings.png" class="lightbox" data-gallery="quarto-lightbox-gallery-5" title="Alluvial Traveset"><img src="figs/subdore-per-author/subdore_traveset_alluvial_clusterings.png" class="img-fluid figure-img" alt="Alluvial Traveset"></a></p>
<figcaption>Alluvial Traveset</figcaption>
</figure>
</div>
</section>
<section id="trojelsgaard" class="level4" data-number="3.3.5">
<h4 data-number="3.3.5" class="anchored" data-anchor-id="trojelsgaard"><span class="header-section-number">3.3.5</span> Trojelsgaard</h4>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="figs/subdore-per-author/subdore_trojelsgaard_alluvial_clusterings.png" class="lightbox" data-gallery="quarto-lightbox-gallery-6" title="Alluvial Trojelgaard"><img src="figs/subdore-per-author/subdore_trojelsgaard_alluvial_clusterings.png" class="img-fluid figure-img" alt="Alluvial Trojelgaard"></a></p>
<figcaption>Alluvial Trojelgaard</figcaption>
</figure>
</div>
</section>
</section>
</section>
</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
<script>var lightboxQuarto = GLightbox({"closeEffect":"zoom","descPosition":"bottom","loop":false,"openEffect":"zoom","selector":".lightbox"});
(function() {
let previousOnload = window.onload;
window.onload = () => {
if (previousOnload) {
previousOnload();
}
lightboxQuarto.on('slide_before_load', (data) => {
const { slideIndex, slideNode, slideConfig, player, trigger } = data;
const href = trigger.getAttribute('href');
if (href !== null) {
const imgEl = window.document.querySelector(`a[href="${href}"] img`);
if (imgEl !== null) {
const srcAttr = imgEl.getAttribute("src");
if (srcAttr && srcAttr.startsWith("data:")) {
slideConfig.href = srcAttr;
}
}
}
});
lightboxQuarto.on('slide_after_load', (data) => {
const { slideIndex, slideNode, slideConfig, player, trigger } = data;
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(slideNode);
}
});
};
})();
</script>
</body></html>

View file

@ -1,126 +0,0 @@
---
title: "Bilan semaine 17 2025 : 24 avril - 25 avril"
categories:
- colBiSBM
format:
html:
embed-resources: true
---
## A faire
### Rédaction article
- Relire intro St Clair
- S'inspirer structure pour mon intro
- Trouver biblio intro
- Rédiger l'intro
- Regarder les applications pour les collections de réseaux recommender system
- Lire les papiers de Baldock Traveset Souza Cordeniz Trojelsgaard et Gibson
- Dire résultats nettement meilleurs et variabilités inférieures.
### Simulations article
- Relancer simus clustering avec VEM steps = 10 000 et plus nombreux init pour spectral
- Ajouter simu clustering métriques nb sous-collections obtenues.
Vérifier les résultats obtenus si ARI = 0. Et augmenter la taille $M = 30$ avec $M_1 = M_2 = M_3 = 10$.
- Comparer sur clustering unipartite avec versions symétriser des par blocs des matrices d'adjacences.
- Corriger structure de simus :
- Pour noisy $\alpha$ :
- Logit pour envoyer la gaussienne vers (0,1)
- Beta contrainte dans (0,1)
- Pour noisy links : Générer `nb_clustering` collections de taille M puis prélever $\epsilon_{max}n_r n_c$ liens à inverser puis pour les $\epsilon < \epsilon_{max}$ prélever dans la liste des indices afin d'avoir des perturbations emboitées.
### Applications
- Kmeans sur la densité des réseaux subdoré pour pré-partitionner et *clusteriser*.
### Autour de l'article et du package
- Créer des vignettes illustrant par exemple des cas de simulations. **Possible de mettre l'exemple d'application de Sophie sur les réseaux avec gradient d'urbanisation**.
## J'ai fait
- Créer un README descriptif du dépôt des codes pour l'article.
- Remonter figure sélection de modèle dans le corps de l'article
- Enrichir légende de la figure 7 et 8
- Supprimer p_NA des autres cadrans des proportions de NA
- Basculer le code du clustering pour utiliser hclust et mis l'argument method de hclust avec single par défaut
- Ajouter pipeline qui knit README.Rmd à chaque merge dans main colSBM
## A continuer
- Résultats simus NA **Erreur pour certaines conditions** : Pour NA robustness générer `nb_rep` collections de taille $M=2$ et prélever
$\epsilon_{max}n_r n_c$ liens à retirer puis pour les $\epsilon < \epsilon_{max}$ prélever dans la liste des indices afin d'avoir des perturbations emboitées.
Il faut que j'ajoute un mécanisme pour reprendre des conditions qui ont plantés et que je skip dans le future_lapply les conditions déjà traitées (pour avoir la même seed quand je vais exécuter le code).
Implémenté les missing steps *en attente des résultats MIGALE*.
- Lire Biological Networks - François Képès
- J'ai esquissé des bouts d'intro
- Relancer simus d'inférence avec n = 240 pour voir si la qualité augmenter (se rassurer). En fait on est déjà à 240, j'ai relancé avec M = 4 au lieu de M = 2.
En attente résultats MIGALE
### Correction méthodo
- Idée Pierre : Regarder la contribution au BICL de la collection des réseaux
et comparer au sep BICL pour essayer de repérer les outliers. En regardant la vbound (pas la pénalité) de chaque réseau dans le joint vs sa vbound dans le sep
-> Résultats : pas de différences majeures entre les réseaux avec le rapport vbound_joint/vbound_sep, les outliers ne sont pas marqués.
- Regarder si plutôt que k médioid possible meilleurs résultats avec d'autres distances hclust avec min, max etc...
-> L'algo PAM donne des clusters équilibrés sans séparer les outliers
Je regarde avec plutôt des hclust avec métrique single pour séparer les outliers.
- Voir si in fine possible de repérer des outliers à partir de ces nouvelles métriques
- Regarder la répartition de densité dans les réseaux sub-doré -> déséquilibrée
![](figs/density-subdore.png)
En faisant des clusterings par densité on constate qu'avec un modèle iid pour des réseaux dont la densité est entre :
- 0 et 0.05 : Baldock et Souza tout le monde se retrouvait ensemble avec *Partitioning around medoids*
### Applications
- Idée Sophie: Regarder clustering de données plantes-pollinisateur selon gradient d'urbanisation
> Sophie a fait une appli qui marche bien et va dans le sens de l'analyse faite
(à savoir pas d'effet du gradien d'urbanisation). À continuer pour l'intégrer dans l'article !
### Lancer clustering auteur par auteur du sub-Doré : 5 collections différentes dans l'idée.
Une fois fait, Sophie ne trouve pas que ce soit le plus pertinent pour illustrer le clustering.
Plus intéressant de garder le clustering de données simulées ($M = 30$) et se
servir des exemples dessous et des parcours exhaustif des possibilités de partitionnement comme comparatif.
#### Baldock
![Alluvial Baldock](figs/subdore-per-author/subdore_baldock_alluvial_clusterings.png)
#### Gibson
![Alluvial Gibson](figs/subdore-per-author/subdore_gibson_alluvial_clusterings.png)
#### Souza
![Alluvial Souza](figs/subdore-per-author/subdore_souza_alluvial_clusterings.png)
#### Traveset
![Alluvial Traveset](figs/subdore-per-author/subdore_traveset_alluvial_clusterings.png)
#### Trojelsgaard
![Alluvial Trojelgaard](figs/subdore-per-author/subdore_trojelsgaard_alluvial_clusterings.png)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

777
suivi/2025-18/2025-18.html Normal file
View file

@ -0,0 +1,777 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 18 2025 : 28 avril - 2 mai Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script src="../../site_libs/quarto-contrib/glightbox/glightbox.min.js"></script>
<link href="../../site_libs/quarto-contrib/glightbox/glightbox.min.css" rel="stylesheet">
<link href="../../site_libs/quarto-contrib/glightbox/lightbox.css" rel="stylesheet">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 18 2025 : 28 avril - 2 mai</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
<div class="quarto-category">inférence</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">2 mai 2025</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#a-faire" id="toc-a-faire" class="nav-link active" data-scroll-target="#a-faire"><span class="header-section-number">1</span> A faire</a>
<ul class="collapse">
<li><a href="#stratégie-suite-inférence" id="toc-stratégie-suite-inférence" class="nav-link" data-scroll-target="#stratégie-suite-inférence"><span class="header-section-number">1.1</span> Stratégie suite : Inférence</a></li>
<li><a href="#rédaction-article" id="toc-rédaction-article" class="nav-link" data-scroll-target="#rédaction-article"><span class="header-section-number">1.2</span> Rédaction article</a></li>
<li><a href="#simulations-article" id="toc-simulations-article" class="nav-link" data-scroll-target="#simulations-article"><span class="header-section-number">1.3</span> Simulations article</a></li>
<li><a href="#applications" id="toc-applications" class="nav-link" data-scroll-target="#applications"><span class="header-section-number">1.4</span> Applications</a></li>
<li><a href="#autour-de-larticle-et-du-package" id="toc-autour-de-larticle-et-du-package" class="nav-link" data-scroll-target="#autour-de-larticle-et-du-package"><span class="header-section-number">1.5</span> Autour de larticle et du package</a></li>
</ul></li>
<li><a href="#jai-fait" id="toc-jai-fait" class="nav-link" data-scroll-target="#jai-fait"><span class="header-section-number">2</span> Jai fait</a>
<ul class="collapse">
<li><a href="#jds" id="toc-jds" class="nav-link" data-scroll-target="#jds"><span class="header-section-number">2.1</span> JdS</a></li>
<li><a href="#clustering-exhaustif-baldock" id="toc-clustering-exhaustif-baldock" class="nav-link" data-scroll-target="#clustering-exhaustif-baldock"><span class="header-section-number">2.2</span> Clustering exhaustif Baldock</a></li>
</ul></li>
<li><a href="#a-continuer" id="toc-a-continuer" class="nav-link" data-scroll-target="#a-continuer"><span class="header-section-number">3</span> A continuer</a>
<ul class="collapse">
<li><a href="#applications-1" id="toc-applications-1" class="nav-link" data-scroll-target="#applications-1"><span class="header-section-number">3.1</span> Applications</a></li>
<li><a href="#simulations-article-1" id="toc-simulations-article-1" class="nav-link" data-scroll-target="#simulations-article-1"><span class="header-section-number">3.2</span> Simulations article</a></li>
</ul></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="a-faire" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="a-faire"><span class="header-section-number">1</span> A faire</h2>
<section id="stratégie-suite-inférence" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="stratégie-suite-inférence"><span class="header-section-number">1.1</span> Stratégie suite : Inférence</h3>
<ul>
<li><p>Lire biblio fournie Julie, Inférence de réseaux : co-occurence</p></li>
<li><p>Papier pour comprendre données</p></li>
<li><p>pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU …)</p></li>
</ul>
<blockquote class="blockquote">
<p>Combine networks at different taxonomic levels</p>
</blockquote>
<ul>
<li>Inférence + GREMLINS</li>
</ul>
</section>
<section id="rédaction-article" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="rédaction-article"><span class="header-section-number">1.2</span> Rédaction article</h3>
<ul>
<li><p>Relire intro St Clair</p></li>
<li><p>Sinspirer structure pour mon intro</p></li>
<li><p>Trouver biblio intro</p></li>
<li><p>Rédiger lintro</p></li>
<li><p>Regarder les applications pour les collections de réseaux recommender system</p></li>
<li><p>Lire les papiers de Baldock Traveset Souza Cordeniz Trojelsgaard et Gibson</p></li>
<li><p>Dire résultats nettement meilleurs et variabilités inférieures.</p></li>
<li><p>Intégrer les retours de Sophie</p></li>
</ul>
</section>
<section id="simulations-article" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="simulations-article"><span class="header-section-number">1.3</span> Simulations article</h3>
<ul>
<li><p>Comparer sur clustering unipartite avec versions symétriser des par blocs des matrices dadjacences.</p></li>
<li><p>Corriger structure de simus :</p>
<ul>
<li>Pour noisy <span class="math inline">\alpha</span> :
<ul>
<li>Logit pour envoyer la gaussienne vers (0,1)</li>
<li>Beta contrainte dans (0,1)</li>
</ul></li>
<li>Pour noisy links : Générer <code>nb_clustering</code> collections de taille M puis prélever <span class="math inline">\epsilon_{max}n_r n_c</span> liens à inverser puis pour les <span class="math inline">\epsilon &lt; \epsilon_{max}</span> prélever dans la liste des indices afin davoir des perturbations emboitées.</li>
</ul></li>
</ul>
</section>
<section id="applications" class="level3" data-number="1.4">
<h3 data-number="1.4" class="anchored" data-anchor-id="applications"><span class="header-section-number">1.4</span> Applications</h3>
<ul>
<li>Kmeans sur la densité des réseaux subdoré pour pré-partitionner et <em>clusteriser</em>. Car densités déséquilibrées.</li>
</ul>
<p><a href="figs/density-subdore.png" class="lightbox" data-gallery="quarto-lightbox-gallery-1"><img src="figs/density-subdore.png" class="img-fluid"></a></p>
</section>
<section id="autour-de-larticle-et-du-package" class="level3" data-number="1.5">
<h3 data-number="1.5" class="anchored" data-anchor-id="autour-de-larticle-et-du-package"><span class="header-section-number">1.5</span> Autour de larticle et du package</h3>
<ul>
<li>Créer des vignettes illustrant par exemple des cas de simulations. <strong>Possible de mettre lexemple dapplication de Sophie sur les réseaux avec gradient durbanisation</strong>.</li>
</ul>
</section>
</section>
<section id="jai-fait" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="jai-fait"><span class="header-section-number">2</span> Jai fait</h2>
<section id="jds" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="jds"><span class="header-section-number">2.1</span> JdS</h3>
<ul>
<li>colDEM CSE</li>
</ul>
</section>
<section id="clustering-exhaustif-baldock" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="clustering-exhaustif-baldock"><span class="header-section-number">2.2</span> Clustering exhaustif Baldock</h3>
<ul>
<li><p>Le clustering de toutes les 52 partitions sest fait en 5h30 ! (Mémoïsation)</p></li>
<li><p>Pour iid la meilleure partition avec <span class="math inline">BICL=-9466.911</span> contre <span class="math inline">BICL_{algo} = -9466.873 \pm 0.02205</span> trouvé avec lalgo <img src="figs/partition-iid.svg" class="img-fluid" alt="best_iid"></p></li>
<li><p>Pour <span class="math inline">\pi\rho</span> la meilleure partition avec <span class="math inline">BICL = -9497.92</span> contre <span class="math inline">BICL_{algo} =-9497.92 \pm 0.00009</span> <img src="figs/partition-pirho.svg" class="img-fluid" alt="best_pirho"></p></li>
</ul>
</section>
</section>
<section id="a-continuer" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="a-continuer"><span class="header-section-number">3</span> A continuer</h2>
<ul>
<li><p>Résultats simus NA <strong>Erreur pour certaines conditions</strong> : Pour NA robustness générer <code>nb_rep</code> collections de taille <span class="math inline">M=2</span> et prélever <span class="math inline">\epsilon_{max}n_r n_c</span> liens à retirer puis pour les <span class="math inline">\epsilon &lt; \epsilon_{max}</span> prélever dans la liste des indices afin davoir des perturbations emboitées. Il faut que jajoute un mécanisme pour reprendre des conditions qui ont plantés et que je skip dans le future_lapply les conditions déjà traitées (pour avoir la même seed quand je vais exécuter le code). Implémenté les missing steps <em>en attente des résultats MIGALE</em>.</p></li>
<li><p>Lire Biological Networks - François Képès</p></li>
<li><p>Relancer simus dinférence avec n = 240 pour voir si la qualité augmenter (se rassurer). En fait on est déjà à 240, jai relancé avec M = 4 au lieu de M = 2. En attente résultats MIGALE</p></li>
</ul>
<section id="applications-1" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="applications-1"><span class="header-section-number">3.1</span> Applications</h3>
<ul>
<li>Idée Sophie: Regarder clustering de données plantes-pollinisateur selon gradient durbanisation</li>
</ul>
<blockquote class="blockquote">
<p>Sophie a fait une appli qui marche bien et va dans le sens de lanalyse faite (à savoir pas deffet du gradien durbanisation). À continuer pour lintégrer dans larticle !</p>
</blockquote>
</section>
<section id="simulations-article-1" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="simulations-article-1"><span class="header-section-number">3.2</span> Simulations article</h3>
<ul>
<li>Relancer simulations de clustering avec <span class="math inline">M = 30</span><span class="math inline">M_i = 10, \forall i</span>. En attente retour MIGALE Relancer simus clustering avec VEM steps = 10 000 et plus nombreux init pour spectral. Ajouter simu clustering métriques nb sous-collections obtenues. Vérifier les résultats obtenus si ARI = 0. Et augmenter la taille <span class="math inline">M = 30</span> avec <span class="math inline">M_1 = M_2 = M_3 = 10</span>.</li>
</ul>
</section>
</section>
</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
<script>var lightboxQuarto = GLightbox({"closeEffect":"zoom","descPosition":"bottom","loop":false,"openEffect":"zoom","selector":".lightbox"});
(function() {
let previousOnload = window.onload;
window.onload = () => {
if (previousOnload) {
previousOnload();
}
lightboxQuarto.on('slide_before_load', (data) => {
const { slideIndex, slideNode, slideConfig, player, trigger } = data;
const href = trigger.getAttribute('href');
if (href !== null) {
const imgEl = window.document.querySelector(`a[href="${href}"] img`);
if (imgEl !== null) {
const srcAttr = imgEl.getAttribute("src");
if (srcAttr && srcAttr.startsWith("data:")) {
slideConfig.href = srcAttr;
}
}
}
});
lightboxQuarto.on('slide_after_load', (data) => {
const { slideIndex, slideNode, slideConfig, player, trigger } = data;
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(slideNode);
}
});
};
})();
</script>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

View file

@ -0,0 +1,403 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="httpgd" width="1367.00" height="979.00" viewBox="0 0 1093.60 783.20">
<defs>
<style type='text/css'><![CDATA[
.httpgd line, .httpgd polyline, .httpgd polygon, .httpgd path, .httpgd rect, .httpgd circle {
fill: none;
stroke: #000000;
stroke-linecap: round;
stroke-linejoin: round;
stroke-miterlimit: 10.00;
}
]]></style>
<clipPath id="c0"><rect x="0.00" y="0.00" width="1093.60" height="783.20"/></clipPath>
<clipPath id="c1"><rect x="46.58" y="29.02" width="941.56" height="618.33"/></clipPath>
<clipPath id="c2"><rect x="0.00" y="0.00" width="1093.60" height="783.20"/></clipPath>
<clipPath id="c3"><rect x="46.58" y="29.02" width="941.56" height="222.24"/></clipPath>
<clipPath id="c4"><rect x="0.00" y="0.00" width="1093.60" height="783.20"/></clipPath>
<clipPath id="c5"><rect x="46.58" y="29.02" width="941.56" height="222.24"/></clipPath>
<clipPath id="c6"><rect x="0.00" y="0.00" width="1093.60" height="783.20"/></clipPath>
<clipPath id="c7"><rect x="46.58" y="29.02" width="941.56" height="222.24"/></clipPath>
<clipPath id="c8"><rect x="0.00" y="0.00" width="1093.60" height="783.20"/></clipPath>
<clipPath id="c9"><rect x="46.58" y="29.02" width="941.56" height="222.24"/></clipPath>
<clipPath id="c10"><rect x="0.00" y="0.00" width="1093.60" height="783.20"/></clipPath>
<clipPath id="c11"><rect x="307.96" y="134.16" width="780.16" height="285.47"/></clipPath>
<clipPath id="c12"><rect x="0.00" y="0.00" width="1093.60" height="783.20"/></clipPath>
<clipPath id="c13"><rect x="307.96" y="23.54" width="780.16" height="110.62"/></clipPath>
<clipPath id="c14"><rect x="0.00" y="0.00" width="1093.60" height="783.20"/></clipPath>
<clipPath id="c15"><rect x="5.48" y="134.16" width="302.48" height="285.47"/></clipPath>
<clipPath id="c16"><rect x="0.00" y="0.00" width="1093.60" height="783.20"/></clipPath>
<clipPath id="c17"><rect x="677.42" y="141.63" width="109.63" height="109.63"/></clipPath>
<clipPath id="c18"><rect x="0.00" y="0.00" width="1093.60" height="783.20"/></clipPath>
<clipPath id="c19"><rect x="659.15" y="29.02" width="146.17" height="73.09"/></clipPath>
<clipPath id="c20"><rect x="0.00" y="0.00" width="1093.60" height="783.20"/></clipPath>
<clipPath id="c21"><rect x="64.90" y="141.63" width="219.26" height="109.63"/></clipPath>
<clipPath id="c22"><rect x="0.00" y="0.00" width="1093.60" height="783.20"/></clipPath>
<clipPath id="c23"><rect x="46.58" y="425.11" width="941.56" height="222.24"/></clipPath>
<clipPath id="c24"><rect x="0.00" y="0.00" width="1093.60" height="783.20"/></clipPath>
<clipPath id="c25"><rect x="46.58" y="425.11" width="941.56" height="222.24"/></clipPath>
<clipPath id="c26"><rect x="0.00" y="0.00" width="1093.60" height="783.20"/></clipPath>
<clipPath id="c27"><rect x="46.58" y="425.11" width="941.56" height="222.24"/></clipPath>
<clipPath id="c28"><rect x="0.00" y="0.00" width="1093.60" height="783.20"/></clipPath>
<clipPath id="c29"><rect x="46.58" y="425.11" width="941.56" height="222.24"/></clipPath>
<clipPath id="c30"><rect x="0.00" y="0.00" width="1093.60" height="783.20"/></clipPath>
<clipPath id="c31"><rect x="320.63" y="530.25" width="767.49" height="247.47"/></clipPath>
<clipPath id="c32"><rect x="0.00" y="0.00" width="1093.60" height="783.20"/></clipPath>
<clipPath id="c33"><rect x="320.63" y="419.63" width="767.49" height="110.62"/></clipPath>
<clipPath id="c34"><rect x="0.00" y="0.00" width="1093.60" height="783.20"/></clipPath>
<clipPath id="c35"><rect x="5.48" y="530.25" width="315.15" height="247.47"/></clipPath>
<clipPath id="c36"><rect x="0.00" y="0.00" width="1093.60" height="783.20"/></clipPath>
<clipPath id="c37"><rect x="628.21" y="537.72" width="182.72" height="109.63"/></clipPath>
<clipPath id="c38"><rect x="0.00" y="0.00" width="1093.60" height="783.20"/></clipPath>
<clipPath id="c39"><rect x="536.85" y="425.11" width="365.44" height="73.09"/></clipPath>
<clipPath id="c40"><rect x="0.00" y="0.00" width="1093.60" height="783.20"/></clipPath>
<clipPath id="c41"><rect x="46.58" y="547.78" width="268.57" height="89.52"/></clipPath>
<clipPath id="c42"><rect x="0.00" y="0.00" width="1093.60" height="783.20"/></clipPath>
</defs>
<rect width="100%" height="100%" style="stroke: none;fill: #FFFFFF;"/>
<g clip-path="url(#c0)">
<rect x="0.00" y="0.00" width="1093.60" height="783.20" style="stroke-width: 1.07;stroke: #FFFFFF;fill: #FFFFFF;"/>
</g><g clip-path="url(#c11)">
<rect x="307.96" y="134.16" width="780.16" height="285.47" style="stroke-width: 2.13;stroke: #FFFFFF;fill: #FFFFFF;"/>
</g><g clip-path="url(#c13)">
<rect x="307.96" y="23.54" width="780.16" height="110.62" style="stroke-width: 1.07;stroke: #FFFFFF;fill: #FFFFFF;"/>
</g><g clip-path="url(#c15)">
<rect x="5.48" y="134.16" width="302.48" height="285.47" style="stroke-width: 1.07;stroke: #FFFFFF;fill: #FFFFFF;"/>
</g><g clip-path="url(#c17)">
<rect x="677.42" y="141.63" width="109.63" height="109.63" style="stroke-width: 2.13;stroke: none;fill: #FFFFFF;"/>
<polyline points="677.42,141.63 787.05,141.63" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="677.42,196.45 787.05,196.45" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="677.42,251.26 787.05,251.26" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="677.42,251.26 677.42,141.63" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="732.24,251.26 732.24,141.63" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="787.05,251.26 787.05,141.63" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="677.42,169.04 787.05,169.04" style="stroke-width: 2.13;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="677.42,223.86 787.05,223.86" style="stroke-width: 2.13;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="704.83,251.26 704.83,141.63" style="stroke-width: 2.13;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="759.65,251.26 759.65,141.63" style="stroke-width: 2.13;stroke: #EBEBEB;stroke-linecap: butt;"/>
<rect x="677.42" y="141.63" width="54.82" height="54.82" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FF9E81;"/>
<rect x="732.24" y="141.63" width="54.82" height="54.82" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFCBB9;"/>
<rect x="677.42" y="196.45" width="54.82" height="54.82" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFCEBD;"/>
<rect x="732.24" y="196.45" width="54.82" height="54.82" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFFAF9;"/>
<line x1="677.42" y1="196.45" x2="787.05" y2="196.45" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<line x1="677.42" y1="251.26" x2="787.05" y2="251.26" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<line x1="732.24" y1="251.26" x2="732.24" y2="141.63" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<line x1="787.05" y1="251.26" x2="787.05" y2="141.63" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<g><text x="704.83" y="172.98" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="15.57px" lengthAdjust="spacingAndGlyphs">0.5</text></g>
<g><text x="759.65" y="172.98" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.27</text></g>
<g><text x="704.83" y="227.80" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.26</text></g>
<g><text x="759.65" y="227.80" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.02</text></g>
<rect x="677.42" y="141.63" width="109.63" height="109.63" style="stroke-width: 2.13;stroke: #333333;"/>
</g><g clip-path="url(#c18)">
<g><text x="670.70" y="173.33" text-anchor="end" style="font-family: Arimo;font-size: 12.00px;fill: #4D4D4D;" textLength="6.86px" lengthAdjust="spacingAndGlyphs">1</text></g>
<g><text x="670.70" y="228.14" text-anchor="end" style="font-family: Arimo;font-size: 12.00px;fill: #4D4D4D;" textLength="6.86px" lengthAdjust="spacingAndGlyphs">2</text></g>
<polyline points="673.69,169.04 677.42,169.04" style="stroke-width: 2.13;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="673.69,223.86 677.42,223.86" style="stroke-width: 2.13;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="704.83,255.00 704.83,251.26" style="stroke-width: 2.13;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="759.65,255.00 759.65,251.26" style="stroke-width: 2.13;stroke: #333333;stroke-linecap: butt;"/>
<g><text x="704.83" y="266.56" text-anchor="middle" style="font-family: Arimo;font-size: 12.00px;fill: #4D4D4D;" textLength="6.86px" lengthAdjust="spacingAndGlyphs">1</text></g>
<g><text x="759.65" y="266.56" text-anchor="middle" style="font-family: Arimo;font-size: 12.00px;fill: #4D4D4D;" textLength="6.86px" lengthAdjust="spacingAndGlyphs">2</text></g>
</g><g clip-path="url(#c19)">
<rect x="659.15" y="29.02" width="146.17" height="73.09" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="665.79" y="38.16" width="6.04" height="54.82" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FC8D62;"/>
<rect x="671.84" y="38.16" width="126.85" height="54.82" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #66C2A5;"/>
<g><text x="735.26" y="69.51" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.95</text></g>
</g><g clip-path="url(#c20)">
<polyline points="659.15,102.11 659.15,29.02" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<g><text x="654.22" y="68.71" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="137.92px" lengthAdjust="spacingAndGlyphs">Baldock2011_TB+Baldock2011_JN</text></g>
<polyline points="656.41,65.57 659.15,65.57" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="659.15,102.11 805.32,102.11" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<polyline points="798.68,104.85 798.68,102.11" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="765.46,104.85 765.46,102.11" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="732.24,104.85 732.24,102.11" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="699.02,104.85 699.02,102.11" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="665.79,104.85 665.79,102.11" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<g><text x="798.68" y="113.33" text-anchor="middle" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.00</text></g>
<g><text x="765.46" y="113.33" text-anchor="middle" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.25</text></g>
<g><text x="732.24" y="113.33" text-anchor="middle" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.50</text></g>
<g><text x="699.02" y="113.33" text-anchor="middle" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.75</text></g>
<g><text x="665.79" y="113.33" text-anchor="middle" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">1.00</text></g>
<g><text x="732.24" y="126.04" text-anchor="middle" style="font-family: Arimo;font-size: 11.00px;" textLength="104.64px" lengthAdjust="spacingAndGlyphs">Column proportions</text></g>
</g><g clip-path="url(#c21)">
<rect x="64.90" y="141.63" width="219.26" height="109.63" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="64.90" y="141.63" width="219.26" height="2.45" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #1F78B4;"/>
<rect x="64.90" y="144.08" width="219.26" height="107.18" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6CEE3;"/>
<g><text x="174.53" y="201.61" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.98</text></g>
</g><g clip-path="url(#c22)">
<polyline points="64.90,251.26 64.90,141.63" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<g><text x="59.97" y="254.41" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.00</text></g>
<g><text x="59.97" y="227.00" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.25</text></g>
<g><text x="59.97" y="199.59" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.50</text></g>
<g><text x="59.97" y="172.18" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.75</text></g>
<g><text x="59.97" y="144.78" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">1.00</text></g>
<polyline points="62.16,251.26 64.90,251.26" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="62.16,223.86 64.90,223.86" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="62.16,196.45 64.90,196.45" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="62.16,169.04 64.90,169.04" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="62.16,141.63 64.90,141.63" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<g><text transform="translate(37.14,196.45) rotate(-90.00)" text-anchor="middle" style="font-family: Arimo;font-size: 11.00px;" textLength="86.46px" lengthAdjust="spacingAndGlyphs">Row proportions</text></g>
<polyline points="64.90,251.26 284.16,251.26" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<polyline points="174.53,254.00 174.53,251.26" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<g><text transform="translate(177.68,256.20) rotate(-90.00)" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="137.92px" lengthAdjust="spacingAndGlyphs">Baldock2011_TB+Baldock2011_JN</text></g>
<rect x="999.10" y="6.12" width="63.50" height="123.13" style="stroke-width: 2.13;stroke: none;fill: #FFFFFF;"/>
<g><text x="1006.57" y="26.11" style="font-family: Arimo;font-size: 15.00px;" textLength="39.20px" lengthAdjust="spacingAndGlyphs">alpha</text></g>
<g><image x="1006.57" y="35.38" width="17.28" height="86.40" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAEsCAYAAAACUNnVAAAAeUlEQVQ4jcWPSw6AMAhEH2O9/5F1Y2pSARtL4oYA82HggEPsxlWaEM0QmyEkp+uj3WMvFnUTo7vjSRkVOQUEEZDLzBytJ3u/EbrMAHXkYYfzUbxLXyVV1LhMp59UjGhotRrthxhFpim69GVN8OjGR5c4ZKFLYeaEdwL6pgZTBMOKRwAAAABJRU5ErkJggg=="/></g>
<polyline points="1020.40,121.64 1023.85,121.64" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1020.40,100.11 1023.85,100.11" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1020.40,78.58 1023.85,78.58" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1020.40,57.05 1023.85,57.05" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1020.40,35.53 1023.85,35.53" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1010.03,121.64 1006.57,121.64" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1010.03,100.11 1006.57,100.11" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1010.03,78.58 1006.57,78.58" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1010.03,57.05 1006.57,57.05" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1010.03,35.53 1006.57,35.53" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<g><text x="1031.32" y="125.92" style="font-family: Arimo;font-size: 12.00px;" textLength="23.80px" lengthAdjust="spacingAndGlyphs">0.00</text></g>
<g><text x="1031.32" y="104.39" style="font-family: Arimo;font-size: 12.00px;" textLength="23.80px" lengthAdjust="spacingAndGlyphs">0.25</text></g>
<g><text x="1031.32" y="82.87" style="font-family: Arimo;font-size: 12.00px;" textLength="23.80px" lengthAdjust="spacingAndGlyphs">0.50</text></g>
<g><text x="1031.32" y="61.34" style="font-family: Arimo;font-size: 12.00px;" textLength="23.80px" lengthAdjust="spacingAndGlyphs">0.75</text></g>
<g><text x="1031.32" y="39.81" style="font-family: Arimo;font-size: 12.00px;" textLength="23.80px" lengthAdjust="spacingAndGlyphs">1.00</text></g>
<rect x="999.10" y="140.21" width="81.55" height="61.50" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<g><text x="1004.58" y="154.87" style="font-family: Arimo;font-size: 11.00px;" textLength="70.59px" lengthAdjust="spacingAndGlyphs">Column block</text></g>
<rect x="1004.58" y="161.67" width="17.28" height="17.28" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="1005.29" y="162.38" width="15.86" height="15.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FC8D62;"/>
<rect x="1004.58" y="178.95" width="17.28" height="17.28" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="1005.29" y="179.66" width="15.86" height="15.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #66C2A5;"/>
<g><text x="1027.34" y="173.45" style="font-family: Arimo;font-size: 8.80px;" textLength="5.03px" lengthAdjust="spacingAndGlyphs">1</text></g>
<g><text x="1027.34" y="190.73" style="font-family: Arimo;font-size: 8.80px;" textLength="5.03px" lengthAdjust="spacingAndGlyphs">2</text></g>
<rect x="999.10" y="212.67" width="63.37" height="61.50" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<g><text x="1004.58" y="227.32" style="font-family: Arimo;font-size: 11.00px;" textLength="52.41px" lengthAdjust="spacingAndGlyphs">Row block</text></g>
<rect x="1004.58" y="234.12" width="17.28" height="17.28" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="1005.29" y="234.83" width="15.86" height="15.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #1F78B4;"/>
<rect x="1004.58" y="251.40" width="17.28" height="17.28" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="1005.29" y="252.11" width="15.86" height="15.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6CEE3;"/>
<g><text x="1027.34" y="245.91" style="font-family: Arimo;font-size: 8.80px;" textLength="5.03px" lengthAdjust="spacingAndGlyphs">1</text></g>
<g><text x="1027.34" y="263.19" style="font-family: Arimo;font-size: 8.80px;" textLength="5.03px" lengthAdjust="spacingAndGlyphs">2</text></g>
</g><g clip-path="url(#c31)">
<rect x="320.63" y="530.25" width="767.49" height="247.47" style="stroke-width: 2.13;stroke: #FFFFFF;fill: #FFFFFF;"/>
</g><g clip-path="url(#c33)">
<rect x="320.63" y="419.63" width="767.49" height="110.62" style="stroke-width: 1.07;stroke: #FFFFFF;fill: #FFFFFF;"/>
</g><g clip-path="url(#c35)">
<rect x="5.48" y="530.25" width="315.15" height="247.47" style="stroke-width: 1.07;stroke: #FFFFFF;fill: #FFFFFF;"/>
</g><g clip-path="url(#c37)">
<rect x="628.21" y="537.72" width="182.72" height="109.63" style="stroke-width: 2.13;stroke: none;fill: #FFFFFF;"/>
<polyline points="628.21,537.72 810.93,537.72" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="628.21,574.27 810.93,574.27" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="628.21,610.81 810.93,610.81" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="628.21,647.35 810.93,647.35" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="628.21,647.35 628.21,537.72" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="664.76,647.35 664.76,537.72" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="701.30,647.35 701.30,537.72" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="737.84,647.35 737.84,537.72" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="774.39,647.35 774.39,537.72" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="810.93,647.35 810.93,537.72" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="628.21,555.99 810.93,555.99" style="stroke-width: 2.13;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="628.21,592.54 810.93,592.54" style="stroke-width: 2.13;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="628.21,629.08 810.93,629.08" style="stroke-width: 2.13;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="646.48,647.35 646.48,537.72" style="stroke-width: 2.13;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="683.03,647.35 683.03,537.72" style="stroke-width: 2.13;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="719.57,647.35 719.57,537.72" style="stroke-width: 2.13;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="756.11,647.35 756.11,537.72" style="stroke-width: 2.13;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="792.66,647.35 792.66,537.72" style="stroke-width: 2.13;stroke: #EBEBEB;stroke-linecap: butt;"/>
<rect x="628.21" y="537.72" width="36.54" height="36.54" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFBCA7;"/>
<rect x="664.76" y="537.72" width="36.54" height="36.54" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFB29A;"/>
<rect x="701.30" y="537.72" width="36.54" height="36.54" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFBBA5;"/>
<rect x="737.84" y="537.72" width="36.54" height="36.54" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFF6F2;"/>
<rect x="774.39" y="537.72" width="36.54" height="36.54" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFD3C4;"/>
<rect x="628.21" y="574.27" width="36.54" height="36.54" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FF9B7E;"/>
<rect x="664.76" y="574.27" width="36.54" height="36.54" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFC9B6;"/>
<rect x="701.30" y="574.27" width="36.54" height="36.54" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFDFD3;"/>
<rect x="737.84" y="574.27" width="36.54" height="36.54" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFF8F5;"/>
<rect x="774.39" y="574.27" width="36.54" height="36.54" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFFAF8;"/>
<rect x="628.21" y="610.81" width="36.54" height="36.54" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFDBCF;"/>
<rect x="664.76" y="610.81" width="36.54" height="36.54" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFF2ED;"/>
<rect x="701.30" y="610.81" width="36.54" height="36.54" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFFCFB;"/>
<rect x="737.84" y="610.81" width="36.54" height="36.54" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFFEFD;"/>
<rect x="774.39" y="610.81" width="36.54" height="36.54" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFFFFE;"/>
<line x1="628.21" y1="574.27" x2="810.93" y2="574.27" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<line x1="628.21" y1="610.81" x2="810.93" y2="610.81" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<line x1="628.21" y1="647.35" x2="810.93" y2="647.35" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<line x1="664.76" y1="647.35" x2="664.76" y2="537.72" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<line x1="701.30" y1="647.35" x2="701.30" y2="537.72" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<line x1="737.84" y1="647.35" x2="737.84" y2="537.72" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<line x1="774.39" y1="647.35" x2="774.39" y2="537.72" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<line x1="810.93" y1="647.35" x2="810.93" y2="537.72" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<g><text x="646.48" y="559.93" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.35</text></g>
<g><text x="683.03" y="559.93" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="15.57px" lengthAdjust="spacingAndGlyphs">0.4</text></g>
<g><text x="719.57" y="559.93" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.35</text></g>
<g><text x="756.11" y="559.93" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.05</text></g>
<g><text x="792.66" y="559.93" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.23</text></g>
<g><text x="646.48" y="596.48" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.51</text></g>
<g><text x="683.03" y="596.48" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.28</text></g>
<g><text x="719.57" y="596.48" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.17</text></g>
<g><text x="756.11" y="596.48" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.04</text></g>
<g><text x="792.66" y="596.48" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.03</text></g>
<g><text x="646.48" y="633.02" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.19</text></g>
<g><text x="683.03" y="633.02" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.07</text></g>
<g><text x="719.57" y="633.02" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.02</text></g>
<g><text x="756.11" y="633.02" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.01</text></g>
<g><text x="792.66" y="633.02" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="6.31px" lengthAdjust="spacingAndGlyphs">0</text></g>
<rect x="628.21" y="537.72" width="182.72" height="109.63" style="stroke-width: 2.13;stroke: #333333;"/>
</g><g clip-path="url(#c38)">
<g><text x="621.49" y="560.28" text-anchor="end" style="font-family: Arimo;font-size: 12.00px;fill: #4D4D4D;" textLength="6.86px" lengthAdjust="spacingAndGlyphs">1</text></g>
<g><text x="621.49" y="596.82" text-anchor="end" style="font-family: Arimo;font-size: 12.00px;fill: #4D4D4D;" textLength="6.86px" lengthAdjust="spacingAndGlyphs">2</text></g>
<g><text x="621.49" y="633.37" text-anchor="end" style="font-family: Arimo;font-size: 12.00px;fill: #4D4D4D;" textLength="6.86px" lengthAdjust="spacingAndGlyphs">3</text></g>
<polyline points="624.48,555.99 628.21,555.99" style="stroke-width: 2.13;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="624.48,592.54 628.21,592.54" style="stroke-width: 2.13;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="624.48,629.08 628.21,629.08" style="stroke-width: 2.13;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="646.48,651.09 646.48,647.35" style="stroke-width: 2.13;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="683.03,651.09 683.03,647.35" style="stroke-width: 2.13;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="719.57,651.09 719.57,647.35" style="stroke-width: 2.13;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="756.11,651.09 756.11,647.35" style="stroke-width: 2.13;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="792.66,651.09 792.66,647.35" style="stroke-width: 2.13;stroke: #333333;stroke-linecap: butt;"/>
<g><text x="646.48" y="662.65" text-anchor="middle" style="font-family: Arimo;font-size: 12.00px;fill: #4D4D4D;" textLength="6.86px" lengthAdjust="spacingAndGlyphs">1</text></g>
<g><text x="683.03" y="662.65" text-anchor="middle" style="font-family: Arimo;font-size: 12.00px;fill: #4D4D4D;" textLength="6.86px" lengthAdjust="spacingAndGlyphs">2</text></g>
<g><text x="719.57" y="662.65" text-anchor="middle" style="font-family: Arimo;font-size: 12.00px;fill: #4D4D4D;" textLength="6.86px" lengthAdjust="spacingAndGlyphs">3</text></g>
<g><text x="756.11" y="662.65" text-anchor="middle" style="font-family: Arimo;font-size: 12.00px;fill: #4D4D4D;" textLength="6.86px" lengthAdjust="spacingAndGlyphs">4</text></g>
<g><text x="792.66" y="662.65" text-anchor="middle" style="font-family: Arimo;font-size: 12.00px;fill: #4D4D4D;" textLength="6.86px" lengthAdjust="spacingAndGlyphs">5</text></g>
</g><g clip-path="url(#c39)">
<rect x="536.85" y="425.11" width="365.44" height="73.09" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="553.46" y="427.72" width="1.74" height="15.66" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6D854;"/>
<rect x="553.46" y="445.12" width="6.59" height="15.66" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6D854;"/>
<rect x="553.46" y="462.53" width="2.27" height="15.66" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6D854;"/>
<rect x="553.46" y="479.93" width="4.25" height="15.66" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6D854;"/>
<rect x="555.20" y="427.72" width="11.96" height="15.66" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #E78AC3;"/>
<rect x="560.05" y="445.12" width="8.82" height="15.66" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #E78AC3;"/>
<rect x="555.74" y="462.53" width="17.26" height="15.66" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #E78AC3;"/>
<rect x="557.72" y="479.93" width="16.85" height="15.66" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #E78AC3;"/>
<rect x="567.16" y="427.72" width="43.23" height="15.66" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #8DA0CB;"/>
<rect x="568.87" y="445.12" width="31.53" height="15.66" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #8DA0CB;"/>
<rect x="572.99" y="462.53" width="43.96" height="15.66" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #8DA0CB;"/>
<rect x="574.56" y="479.93" width="40.32" height="15.66" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #8DA0CB;"/>
<rect x="610.40" y="427.72" width="122.46" height="15.66" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FC8D62;"/>
<rect x="600.40" y="445.12" width="130.24" height="15.66" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FC8D62;"/>
<rect x="616.95" y="462.53" width="122.77" height="15.66" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FC8D62;"/>
<rect x="614.88" y="479.93" width="104.95" height="15.66" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FC8D62;"/>
<rect x="732.85" y="427.72" width="152.83" height="15.66" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #66C2A5;"/>
<rect x="730.63" y="445.12" width="155.05" height="15.66" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #66C2A5;"/>
<rect x="739.72" y="462.53" width="145.96" height="15.66" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #66C2A5;"/>
<rect x="719.83" y="479.93" width="165.84" height="15.66" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #66C2A5;"/>
<g><text x="588.78" y="439.49" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.13</text></g>
<g><text x="594.97" y="474.30" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.13</text></g>
<g><text x="594.72" y="491.70" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.12</text></g>
<g><text x="671.62" y="439.49" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.37</text></g>
<g><text x="665.51" y="456.89" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.39</text></g>
<g><text x="678.34" y="474.30" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.37</text></g>
<g><text x="667.36" y="491.70" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.32</text></g>
<g><text x="809.26" y="439.49" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.46</text></g>
<g><text x="808.15" y="456.89" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.47</text></g>
<g><text x="812.70" y="474.30" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.44</text></g>
<g><text x="802.76" y="491.70" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="15.57px" lengthAdjust="spacingAndGlyphs">0.5</text></g>
</g><g clip-path="url(#c40)">
<polyline points="536.85,498.20 536.85,425.11" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<g><text x="531.92" y="490.90" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="90.48px" lengthAdjust="spacingAndGlyphs">Baldock2019_Reading</text></g>
<g><text x="531.92" y="473.50" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="80.74px" lengthAdjust="spacingAndGlyphs">Baldock2019_Leeds</text></g>
<g><text x="531.92" y="456.10" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="99.91px" lengthAdjust="spacingAndGlyphs">Baldock2019_Edinburgh</text></g>
<g><text x="531.92" y="438.70" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="83.19px" lengthAdjust="spacingAndGlyphs">Baldock2019_Bristol</text></g>
<polyline points="534.11,487.76 536.85,487.76" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="534.11,470.36 536.85,470.36" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="534.11,452.96 536.85,452.96" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="534.11,435.55 536.85,435.55" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="536.85,498.20 902.29,498.20" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<polyline points="885.68,500.94 885.68,498.20" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="802.62,500.94 802.62,498.20" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="719.57,500.94 719.57,498.20" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="636.52,500.94 636.52,498.20" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="553.46,500.94 553.46,498.20" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<g><text x="885.68" y="509.42" text-anchor="middle" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.00</text></g>
<g><text x="802.62" y="509.42" text-anchor="middle" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.25</text></g>
<g><text x="719.57" y="509.42" text-anchor="middle" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.50</text></g>
<g><text x="636.52" y="509.42" text-anchor="middle" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.75</text></g>
<g><text x="553.46" y="509.42" text-anchor="middle" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">1.00</text></g>
<g><text x="719.57" y="522.13" text-anchor="middle" style="font-family: Arimo;font-size: 11.00px;" textLength="104.64px" lengthAdjust="spacingAndGlyphs">Column proportions</text></g>
</g><g clip-path="url(#c41)">
<rect x="46.58" y="547.78" width="268.57" height="89.52" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="46.58" y="547.78" width="61.98" height="2.49" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #B2DF8A;"/>
<rect x="115.45" y="547.78" width="61.98" height="4.16" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #B2DF8A;"/>
<rect x="184.31" y="547.78" width="61.98" height="4.26" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #B2DF8A;"/>
<rect x="253.17" y="547.78" width="61.98" height="1.60" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #B2DF8A;"/>
<rect x="46.58" y="550.26" width="61.98" height="8.69" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #1F78B4;"/>
<rect x="115.45" y="551.94" width="61.98" height="10.41" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #1F78B4;"/>
<rect x="184.31" y="552.03" width="61.98" height="15.62" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #1F78B4;"/>
<rect x="253.17" y="549.38" width="61.98" height="12.68" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #1F78B4;"/>
<rect x="46.58" y="558.95" width="61.98" height="78.35" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6CEE3;"/>
<rect x="115.45" y="562.35" width="61.98" height="74.95" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6CEE3;"/>
<rect x="184.31" y="567.65" width="61.98" height="69.65" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6CEE3;"/>
<rect x="253.17" y="562.06" width="61.98" height="75.24" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6CEE3;"/>
<g><text x="146.43" y="561.08" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.12</text></g>
<g><text x="215.30" y="563.78" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.17</text></g>
<g><text x="284.16" y="559.66" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.14</text></g>
<g><text x="77.57" y="602.07" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.88</text></g>
<g><text x="146.43" y="603.76" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.84</text></g>
<g><text x="215.30" y="606.41" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.78</text></g>
<g><text x="284.16" y="603.62" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.84</text></g>
</g><g clip-path="url(#c42)">
<polyline points="46.58,637.30 46.58,547.78" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<g><text x="41.65" y="640.44" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.00</text></g>
<g><text x="41.65" y="618.06" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.25</text></g>
<g><text x="41.65" y="595.68" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.50</text></g>
<g><text x="41.65" y="573.30" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.75</text></g>
<g><text x="41.65" y="550.92" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">1.00</text></g>
<polyline points="43.84,637.30 46.58,637.30" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="43.84,614.92 46.58,614.92" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="43.84,592.54 46.58,592.54" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="43.84,570.16 46.58,570.16" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="43.84,547.78 46.58,547.78" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<g><text transform="translate(18.81,592.54) rotate(-90.00)" text-anchor="middle" style="font-family: Arimo;font-size: 11.00px;" textLength="86.46px" lengthAdjust="spacingAndGlyphs">Row proportions</text></g>
<polyline points="46.58,637.30 315.15,637.30" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<polyline points="77.57,640.04 77.57,637.30" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="146.43,640.04 146.43,637.30" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="215.30,640.04 215.30,637.30" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="284.16,640.04 284.16,637.30" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<g><text transform="translate(80.71,642.23) rotate(-90.00)" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="83.19px" lengthAdjust="spacingAndGlyphs">Baldock2019_Bristol</text></g>
<g><text transform="translate(149.58,642.23) rotate(-90.00)" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="99.91px" lengthAdjust="spacingAndGlyphs">Baldock2019_Edinburgh</text></g>
<g><text transform="translate(218.44,642.23) rotate(-90.00)" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="80.74px" lengthAdjust="spacingAndGlyphs">Baldock2019_Leeds</text></g>
<g><text transform="translate(287.31,642.23) rotate(-90.00)" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="90.48px" lengthAdjust="spacingAndGlyphs">Baldock2019_Reading</text></g>
<rect x="999.10" y="393.57" width="63.50" height="123.13" style="stroke-width: 2.13;stroke: none;fill: #FFFFFF;"/>
<g><text x="1006.57" y="413.56" style="font-family: Arimo;font-size: 15.00px;" textLength="39.20px" lengthAdjust="spacingAndGlyphs">alpha</text></g>
<g><image x="1006.57" y="422.83" width="17.28" height="86.40" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAEsCAYAAAACUNnVAAAAeUlEQVQ4jcWPSw6AMAhEH2O9/5F1Y2pSARtL4oYA82HggEPsxlWaEM0QmyEkp+uj3WMvFnUTo7vjSRkVOQUEEZDLzBytJ3u/EbrMAHXkYYfzUbxLXyVV1LhMp59UjGhotRrthxhFpim69GVN8OjGR5c4ZKFLYeaEdwL6pgZTBMOKRwAAAABJRU5ErkJggg=="/></g>
<polyline points="1020.40,509.09 1023.85,509.09" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1020.40,487.56 1023.85,487.56" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1020.40,466.03 1023.85,466.03" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1020.40,444.50 1023.85,444.50" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1020.40,422.97 1023.85,422.97" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1010.03,509.09 1006.57,509.09" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1010.03,487.56 1006.57,487.56" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1010.03,466.03 1006.57,466.03" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1010.03,444.50 1006.57,444.50" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1010.03,422.97 1006.57,422.97" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<g><text x="1031.32" y="513.37" style="font-family: Arimo;font-size: 12.00px;" textLength="23.80px" lengthAdjust="spacingAndGlyphs">0.00</text></g>
<g><text x="1031.32" y="491.84" style="font-family: Arimo;font-size: 12.00px;" textLength="23.80px" lengthAdjust="spacingAndGlyphs">0.25</text></g>
<g><text x="1031.32" y="470.31" style="font-family: Arimo;font-size: 12.00px;" textLength="23.80px" lengthAdjust="spacingAndGlyphs">0.50</text></g>
<g><text x="1031.32" y="448.79" style="font-family: Arimo;font-size: 12.00px;" textLength="23.80px" lengthAdjust="spacingAndGlyphs">0.75</text></g>
<g><text x="1031.32" y="427.26" style="font-family: Arimo;font-size: 12.00px;" textLength="23.80px" lengthAdjust="spacingAndGlyphs">1.00</text></g>
<rect x="999.10" y="527.66" width="81.55" height="78.78" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<g><text x="1004.58" y="542.32" style="font-family: Arimo;font-size: 11.00px;" textLength="70.59px" lengthAdjust="spacingAndGlyphs">Column block</text></g>
<rect x="1004.58" y="549.12" width="17.28" height="17.28" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="1005.29" y="549.83" width="15.86" height="15.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6D854;"/>
<rect x="1037.85" y="549.12" width="17.28" height="17.28" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="1038.56" y="549.83" width="15.86" height="15.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #E78AC3;"/>
<rect x="1004.58" y="566.40" width="17.28" height="17.28" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="1005.29" y="567.11" width="15.86" height="15.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #8DA0CB;"/>
<rect x="1037.85" y="566.40" width="17.28" height="17.28" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="1038.56" y="567.11" width="15.86" height="15.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FC8D62;"/>
<rect x="1004.58" y="583.68" width="17.28" height="17.28" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="1005.29" y="584.39" width="15.86" height="15.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #66C2A5;"/>
<g><text x="1027.34" y="560.90" style="font-family: Arimo;font-size: 8.80px;" textLength="5.03px" lengthAdjust="spacingAndGlyphs">1</text></g>
<g><text x="1060.61" y="560.90" style="font-family: Arimo;font-size: 8.80px;" textLength="5.03px" lengthAdjust="spacingAndGlyphs">2</text></g>
<g><text x="1027.34" y="578.18" style="font-family: Arimo;font-size: 8.80px;" textLength="5.03px" lengthAdjust="spacingAndGlyphs">3</text></g>
<g><text x="1060.61" y="578.18" style="font-family: Arimo;font-size: 8.80px;" textLength="5.03px" lengthAdjust="spacingAndGlyphs">4</text></g>
<g><text x="1027.34" y="595.46" style="font-family: Arimo;font-size: 8.80px;" textLength="5.03px" lengthAdjust="spacingAndGlyphs">5</text></g>
<rect x="999.10" y="617.40" width="72.02" height="61.50" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<g><text x="1004.58" y="632.05" style="font-family: Arimo;font-size: 11.00px;" textLength="52.41px" lengthAdjust="spacingAndGlyphs">Row block</text></g>
<rect x="1004.58" y="638.85" width="17.28" height="17.28" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="1005.29" y="639.56" width="15.86" height="15.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #B2DF8A;"/>
<rect x="1037.85" y="638.85" width="17.28" height="17.28" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="1038.56" y="639.56" width="15.86" height="15.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #1F78B4;"/>
<rect x="1004.58" y="656.13" width="17.28" height="17.28" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="1005.29" y="656.84" width="15.86" height="15.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6CEE3;"/>
<g><text x="1027.34" y="650.64" style="font-family: Arimo;font-size: 8.80px;" textLength="5.03px" lengthAdjust="spacingAndGlyphs">1</text></g>
<g><text x="1060.61" y="650.64" style="font-family: Arimo;font-size: 8.80px;" textLength="5.03px" lengthAdjust="spacingAndGlyphs">2</text></g>
<g><text x="1027.34" y="667.92" style="font-family: Arimo;font-size: 8.80px;" textLength="5.03px" lengthAdjust="spacingAndGlyphs">3</text></g>
<g><text x="545.80" y="14.90" text-anchor="middle" style="font-family: Arimo;font-size: 13.20px;" textLength="83.92px" lengthAdjust="spacingAndGlyphs">Best partition</text></g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 50 KiB

View file

@ -0,0 +1,272 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="httpgd" width="1483.00" height="992.00" viewBox="0 0 1186.40 793.60">
<defs>
<style type='text/css'><![CDATA[
.httpgd line, .httpgd polyline, .httpgd polygon, .httpgd path, .httpgd rect, .httpgd circle {
fill: none;
stroke: #000000;
stroke-linecap: round;
stroke-linejoin: round;
stroke-miterlimit: 10.00;
}
]]></style>
<clipPath id="c0"><rect x="0.00" y="0.00" width="1186.40" height="793.60"/></clipPath>
<clipPath id="c1"><rect x="46.58" y="10.96" width="1034.36" height="608.79"/></clipPath>
<clipPath id="c2"><rect x="0.00" y="0.00" width="1186.40" height="793.60"/></clipPath>
<clipPath id="c3"><rect x="338.90" y="270.72" width="842.02" height="517.40"/></clipPath>
<clipPath id="c4"><rect x="0.00" y="0.00" width="1186.40" height="793.60"/></clipPath>
<clipPath id="c5"><rect x="338.90" y="5.48" width="842.02" height="265.24"/></clipPath>
<clipPath id="c6"><rect x="0.00" y="0.00" width="1186.40" height="793.60"/></clipPath>
<clipPath id="c7"><rect x="5.48" y="270.72" width="333.42" height="517.40"/></clipPath>
<clipPath id="c8"><rect x="0.00" y="0.00" width="1186.40" height="793.60"/></clipPath>
<clipPath id="c9"><rect x="509.47" y="278.19" width="569.27" height="341.56"/></clipPath>
<clipPath id="c10"><rect x="0.00" y="0.00" width="1186.40" height="793.60"/></clipPath>
<clipPath id="c11"><rect x="507.27" y="67.45" width="573.68" height="114.74"/></clipPath>
<clipPath id="c12"><rect x="0.00" y="0.00" width="1186.40" height="793.60"/></clipPath>
<clipPath id="c13"><rect x="46.58" y="401.16" width="286.84" height="95.61"/></clipPath>
<clipPath id="c14"><rect x="0.00" y="0.00" width="1186.40" height="793.60"/></clipPath>
</defs>
<rect width="100%" height="100%" style="stroke: none;fill: #FFFFFF;"/>
<g clip-path="url(#c0)">
<rect x="-0.00" y="0.00" width="1186.40" height="793.60" style="stroke-width: 1.07;stroke: #FFFFFF;fill: #FFFFFF;"/>
</g><g clip-path="url(#c3)">
<rect x="338.90" y="270.72" width="842.02" height="517.40" style="stroke-width: 2.13;stroke: #FFFFFF;fill: #FFFFFF;"/>
</g><g clip-path="url(#c5)">
<rect x="338.90" y="5.48" width="842.02" height="265.24" style="stroke-width: 1.07;stroke: #FFFFFF;fill: #FFFFFF;"/>
</g><g clip-path="url(#c7)">
<rect x="5.48" y="270.72" width="333.42" height="517.40" style="stroke-width: 1.07;stroke: #FFFFFF;fill: #FFFFFF;"/>
</g><g clip-path="url(#c9)">
<rect x="509.47" y="278.19" width="569.27" height="341.56" style="stroke-width: 2.13;stroke: none;fill: #FFFFFF;"/>
<polyline points="509.47,278.19 1078.74,278.19" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="509.47,392.04 1078.74,392.04" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="509.47,505.90 1078.74,505.90" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="509.47,619.75 1078.74,619.75" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="509.47,619.75 509.47,278.19" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="623.32,619.75 623.32,278.19" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="737.18,619.75 737.18,278.19" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="851.03,619.75 851.03,278.19" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="964.89,619.75 964.89,278.19" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="1078.74,619.75 1078.74,278.19" style="stroke-width: 1.07;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="509.47,335.12 1078.74,335.12" style="stroke-width: 2.13;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="509.47,448.97 1078.74,448.97" style="stroke-width: 2.13;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="509.47,562.82 1078.74,562.82" style="stroke-width: 2.13;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="566.40,619.75 566.40,278.19" style="stroke-width: 2.13;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="680.25,619.75 680.25,278.19" style="stroke-width: 2.13;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="794.10,619.75 794.10,278.19" style="stroke-width: 2.13;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="907.96,619.75 907.96,278.19" style="stroke-width: 2.13;stroke: #EBEBEB;stroke-linecap: butt;"/>
<polyline points="1021.81,619.75 1021.81,278.19" style="stroke-width: 2.13;stroke: #EBEBEB;stroke-linecap: butt;"/>
<rect x="509.47" y="278.19" width="113.85" height="113.85" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFC1AC;"/>
<rect x="623.32" y="278.19" width="113.85" height="113.85" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFA98E;"/>
<rect x="737.18" y="278.19" width="113.85" height="113.85" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFBAA4;"/>
<rect x="851.03" y="278.19" width="113.85" height="113.85" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFECE5;"/>
<rect x="964.89" y="278.19" width="113.85" height="113.85" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFBBA5;"/>
<rect x="509.47" y="392.04" width="113.85" height="113.85" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FF9A7D;"/>
<rect x="623.32" y="392.04" width="113.85" height="113.85" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFC6B3;"/>
<rect x="737.18" y="392.04" width="113.85" height="113.85" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFDDD0;"/>
<rect x="851.03" y="392.04" width="113.85" height="113.85" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFF8F5;"/>
<rect x="964.89" y="392.04" width="113.85" height="113.85" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFFAF9;"/>
<rect x="509.47" y="505.90" width="113.85" height="113.85" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFDBCF;"/>
<rect x="623.32" y="505.90" width="113.85" height="113.85" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFF2ED;"/>
<rect x="737.18" y="505.90" width="113.85" height="113.85" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFFCFB;"/>
<rect x="851.03" y="505.90" width="113.85" height="113.85" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFFEFD;"/>
<rect x="964.89" y="505.90" width="113.85" height="113.85" style="stroke-width: 0.21;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FFFFFF;"/>
<line x1="509.47" y1="392.04" x2="1078.74" y2="392.04" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<line x1="509.47" y1="505.90" x2="1078.74" y2="505.90" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<line x1="509.47" y1="619.75" x2="1078.74" y2="619.75" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<line x1="623.32" y1="619.75" x2="623.32" y2="278.19" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<line x1="737.18" y1="619.75" x2="737.18" y2="278.19" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<line x1="851.03" y1="619.75" x2="851.03" y2="278.19" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<line x1="964.89" y1="619.75" x2="964.89" y2="278.19" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<line x1="1078.74" y1="619.75" x2="1078.74" y2="278.19" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<g><text x="566.40" y="339.05" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.32</text></g>
<g><text x="680.25" y="339.05" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.45</text></g>
<g><text x="794.10" y="339.05" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.36</text></g>
<g><text x="907.96" y="339.05" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="15.57px" lengthAdjust="spacingAndGlyphs">0.1</text></g>
<g><text x="1021.81" y="339.05" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.35</text></g>
<g><text x="566.40" y="452.91" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.52</text></g>
<g><text x="680.25" y="452.91" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="15.57px" lengthAdjust="spacingAndGlyphs">0.3</text></g>
<g><text x="794.10" y="452.91" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.18</text></g>
<g><text x="907.96" y="452.91" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.04</text></g>
<g><text x="1021.81" y="452.91" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.02</text></g>
<g><text x="566.40" y="566.76" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.19</text></g>
<g><text x="680.25" y="566.76" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.07</text></g>
<g><text x="794.10" y="566.76" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.02</text></g>
<g><text x="907.96" y="566.76" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.01</text></g>
<g><text x="1021.81" y="566.76" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="6.31px" lengthAdjust="spacingAndGlyphs">0</text></g>
<rect x="509.47" y="278.19" width="569.27" height="341.56" style="stroke-width: 2.13;stroke: #333333;"/>
</g><g clip-path="url(#c10)">
<g><text x="502.74" y="339.40" text-anchor="end" style="font-family: Arimo;font-size: 12.00px;fill: #4D4D4D;" textLength="6.86px" lengthAdjust="spacingAndGlyphs">1</text></g>
<g><text x="502.74" y="453.25" text-anchor="end" style="font-family: Arimo;font-size: 12.00px;fill: #4D4D4D;" textLength="6.86px" lengthAdjust="spacingAndGlyphs">2</text></g>
<g><text x="502.74" y="567.11" text-anchor="end" style="font-family: Arimo;font-size: 12.00px;fill: #4D4D4D;" textLength="6.86px" lengthAdjust="spacingAndGlyphs">3</text></g>
<polyline points="505.73,335.12 509.47,335.12" style="stroke-width: 2.13;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="505.73,448.97 509.47,448.97" style="stroke-width: 2.13;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="505.73,562.82 509.47,562.82" style="stroke-width: 2.13;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="566.40,623.49 566.40,619.75" style="stroke-width: 2.13;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="680.25,623.49 680.25,619.75" style="stroke-width: 2.13;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="794.10,623.49 794.10,619.75" style="stroke-width: 2.13;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="907.96,623.49 907.96,619.75" style="stroke-width: 2.13;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="1021.81,623.49 1021.81,619.75" style="stroke-width: 2.13;stroke: #333333;stroke-linecap: butt;"/>
<g><text x="566.40" y="635.04" text-anchor="middle" style="font-family: Arimo;font-size: 12.00px;fill: #4D4D4D;" textLength="6.86px" lengthAdjust="spacingAndGlyphs">1</text></g>
<g><text x="680.25" y="635.04" text-anchor="middle" style="font-family: Arimo;font-size: 12.00px;fill: #4D4D4D;" textLength="6.86px" lengthAdjust="spacingAndGlyphs">2</text></g>
<g><text x="794.10" y="635.04" text-anchor="middle" style="font-family: Arimo;font-size: 12.00px;fill: #4D4D4D;" textLength="6.86px" lengthAdjust="spacingAndGlyphs">3</text></g>
<g><text x="907.96" y="635.04" text-anchor="middle" style="font-family: Arimo;font-size: 12.00px;fill: #4D4D4D;" textLength="6.86px" lengthAdjust="spacingAndGlyphs">4</text></g>
<g><text x="1021.81" y="635.04" text-anchor="middle" style="font-family: Arimo;font-size: 12.00px;fill: #4D4D4D;" textLength="6.86px" lengthAdjust="spacingAndGlyphs">5</text></g>
</g><g clip-path="url(#c11)">
<rect x="507.27" y="67.45" width="573.68" height="114.74" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="533.34" y="70.76" width="0.00" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6D854;"/>
<rect x="533.34" y="92.82" width="2.72" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6D854;"/>
<rect x="533.34" y="114.88" width="11.11" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6D854;"/>
<rect x="533.34" y="136.95" width="3.40" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6D854;"/>
<rect x="533.34" y="159.01" width="6.61" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6D854;"/>
<rect x="533.34" y="70.76" width="12.01" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #E78AC3;"/>
<rect x="536.06" y="92.82" width="18.08" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #E78AC3;"/>
<rect x="544.45" y="114.88" width="12.26" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #E78AC3;"/>
<rect x="536.74" y="136.95" width="26.92" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #E78AC3;"/>
<rect x="539.95" y="159.01" width="25.23" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #E78AC3;"/>
<rect x="545.35" y="70.76" width="11.80" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #8DA0CB;"/>
<rect x="554.14" y="92.82" width="68.70" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #8DA0CB;"/>
<rect x="556.71" y="114.88" width="38.34" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #8DA0CB;"/>
<rect x="563.67" y="136.95" width="68.82" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #8DA0CB;"/>
<rect x="565.19" y="159.01" width="67.52" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #8DA0CB;"/>
<rect x="557.15" y="70.76" width="47.64" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FC8D62;"/>
<rect x="622.85" y="92.82" width="317.75" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FC8D62;"/>
<rect x="595.06" y="114.88" width="388.85" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FC8D62;"/>
<rect x="632.49" y="136.95" width="328.64" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FC8D62;"/>
<rect x="632.71" y="159.01" width="216.63" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FC8D62;"/>
<rect x="604.79" y="70.76" width="450.07" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #66C2A5;"/>
<rect x="940.60" y="92.82" width="114.27" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #66C2A5;"/>
<rect x="983.90" y="114.88" width="70.96" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #66C2A5;"/>
<rect x="961.14" y="136.95" width="93.73" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #66C2A5;"/>
<rect x="849.35" y="159.01" width="205.52" height="19.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #66C2A5;"/>
<g><text x="588.49" y="106.69" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.13</text></g>
<g><text x="598.08" y="150.82" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.13</text></g>
<g><text x="598.95" y="172.88" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.13</text></g>
<g><text x="781.72" y="106.69" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.61</text></g>
<g><text x="789.48" y="128.75" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.75</text></g>
<g><text x="796.81" y="150.82" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.63</text></g>
<g><text x="741.03" y="172.88" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.42</text></g>
<g><text x="829.83" y="84.62" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.86</text></g>
<g><text x="997.73" y="106.69" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.22</text></g>
<g><text x="1019.39" y="128.75" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.14</text></g>
<g><text x="1008.00" y="150.82" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.18</text></g>
<g><text x="952.11" y="172.88" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.39</text></g>
</g><g clip-path="url(#c12)">
<polyline points="507.27,182.18 507.27,67.45" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<g><text x="502.34" y="172.08" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="90.48px" lengthAdjust="spacingAndGlyphs">Baldock2019_Reading</text></g>
<g><text x="502.34" y="150.02" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="80.74px" lengthAdjust="spacingAndGlyphs">Baldock2019_Leeds</text></g>
<g><text x="502.34" y="127.96" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="99.91px" lengthAdjust="spacingAndGlyphs">Baldock2019_Edinburgh</text></g>
<g><text x="502.34" y="105.89" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="83.19px" lengthAdjust="spacingAndGlyphs">Baldock2019_Bristol</text></g>
<g><text x="502.34" y="83.83" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="137.92px" lengthAdjust="spacingAndGlyphs">Baldock2011_TB+Baldock2011_JN</text></g>
<polyline points="504.53,168.94 507.27,168.94" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="504.53,146.88 507.27,146.88" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="504.53,124.81 507.27,124.81" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="504.53,102.75 507.27,102.75" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="504.53,80.68 507.27,80.68" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="507.27,182.18 1080.94,182.18" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<polyline points="1054.87,184.92 1054.87,182.18" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="924.49,184.92 924.49,182.18" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="794.10,184.92 794.10,182.18" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="663.72,184.92 663.72,182.18" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="533.34,184.92 533.34,182.18" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<g><text x="1054.87" y="193.40" text-anchor="middle" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.00</text></g>
<g><text x="924.49" y="193.40" text-anchor="middle" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.25</text></g>
<g><text x="794.10" y="193.40" text-anchor="middle" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.50</text></g>
<g><text x="663.72" y="193.40" text-anchor="middle" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.75</text></g>
<g><text x="533.34" y="193.40" text-anchor="middle" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">1.00</text></g>
<g><text x="794.10" y="206.11" text-anchor="middle" style="font-family: Arimo;font-size: 11.00px;" textLength="104.64px" lengthAdjust="spacingAndGlyphs">Column proportions</text></g>
</g><g clip-path="url(#c13)">
<rect x="46.58" y="401.16" width="286.84" height="95.61" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="46.58" y="401.16" width="52.68" height="1.59" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #B2DF8A;"/>
<rect x="105.12" y="401.16" width="52.68" height="2.13" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #B2DF8A;"/>
<rect x="163.66" y="401.16" width="52.68" height="4.46" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #B2DF8A;"/>
<rect x="222.20" y="401.16" width="52.68" height="3.80" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #B2DF8A;"/>
<rect x="280.73" y="401.16" width="52.68" height="1.15" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #B2DF8A;"/>
<rect x="46.58" y="402.76" width="52.68" height="94.02" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #1F78B4;"/>
<rect x="105.12" y="403.29" width="52.68" height="9.23" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #1F78B4;"/>
<rect x="163.66" y="405.62" width="52.68" height="10.37" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #1F78B4;"/>
<rect x="222.20" y="404.96" width="52.68" height="17.41" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #1F78B4;"/>
<rect x="280.73" y="402.31" width="52.68" height="14.17" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #1F78B4;"/>
<rect x="46.58" y="496.78" width="52.68" height="0.00" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6CEE3;"/>
<rect x="105.12" y="412.52" width="52.68" height="84.25" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6CEE3;"/>
<rect x="163.66" y="416.00" width="52.68" height="80.78" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6CEE3;"/>
<rect x="222.20" y="422.37" width="52.68" height="74.41" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6CEE3;"/>
<rect x="280.73" y="416.48" width="52.68" height="80.30" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6CEE3;"/>
<g><text x="72.92" y="453.71" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.98</text></g>
<g><text x="190.00" y="414.75" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.11</text></g>
<g><text x="248.54" y="417.60" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.18</text></g>
<g><text x="307.08" y="413.33" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.15</text></g>
<g><text x="131.46" y="458.59" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.88</text></g>
<g><text x="190.00" y="460.33" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.84</text></g>
<g><text x="248.54" y="463.51" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.78</text></g>
<g><text x="307.08" y="460.57" text-anchor="middle" style="font-family: Arimo;font-size: 11.04px;" textLength="21.88px" lengthAdjust="spacingAndGlyphs">0.84</text></g>
</g><g clip-path="url(#c14)">
<polyline points="46.58,496.78 46.58,401.16" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<g><text x="41.65" y="499.92" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.00</text></g>
<g><text x="41.65" y="476.02" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.25</text></g>
<g><text x="41.65" y="452.11" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.50</text></g>
<g><text x="41.65" y="428.21" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">0.75</text></g>
<g><text x="41.65" y="404.31" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="17.45px" lengthAdjust="spacingAndGlyphs">1.00</text></g>
<polyline points="43.84,496.78 46.58,496.78" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="43.84,472.87 46.58,472.87" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="43.84,448.97 46.58,448.97" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="43.84,425.07 46.58,425.07" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="43.84,401.16 46.58,401.16" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<g><text transform="translate(18.81,448.97) rotate(-90.00)" text-anchor="middle" style="font-family: Arimo;font-size: 11.00px;" textLength="86.46px" lengthAdjust="spacingAndGlyphs">Row proportions</text></g>
<polyline points="46.58,496.78 333.42,496.78" style="stroke-width: 1.07;stroke-linecap: butt;"/>
<polyline points="72.92,499.52 72.92,496.78" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="131.46,499.52 131.46,496.78" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="190.00,499.52 190.00,496.78" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="248.54,499.52 248.54,496.78" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<polyline points="307.08,499.52 307.08,496.78" style="stroke-width: 1.07;stroke: #333333;stroke-linecap: butt;"/>
<g><text transform="translate(76.07,501.71) rotate(-90.00)" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="137.92px" lengthAdjust="spacingAndGlyphs">Baldock2011_TB+Baldock2011_JN</text></g>
<g><text transform="translate(134.60,501.71) rotate(-90.00)" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="83.19px" lengthAdjust="spacingAndGlyphs">Baldock2019_Bristol</text></g>
<g><text transform="translate(193.14,501.71) rotate(-90.00)" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="99.91px" lengthAdjust="spacingAndGlyphs">Baldock2019_Edinburgh</text></g>
<g><text transform="translate(251.68,501.71) rotate(-90.00)" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="80.74px" lengthAdjust="spacingAndGlyphs">Baldock2019_Leeds</text></g>
<g><text transform="translate(310.22,501.71) rotate(-90.00)" text-anchor="end" style="font-family: Arimo;font-size: 8.80px;fill: #4D4D4D;" textLength="90.48px" lengthAdjust="spacingAndGlyphs">Baldock2019_Reading</text></g>
<rect x="1091.90" y="172.70" width="63.50" height="123.13" style="stroke-width: 2.13;stroke: none;fill: #FFFFFF;"/>
<g><text x="1099.37" y="192.68" style="font-family: Arimo;font-size: 15.00px;" textLength="39.20px" lengthAdjust="spacingAndGlyphs">alpha</text></g>
<g><image x="1099.37" y="201.95" width="17.28" height="86.40" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAEsCAYAAAACUNnVAAAAeUlEQVQ4jcWPSw6AMAhEH2O9/5F1Y2pSARtL4oYA82HggEPsxlWaEM0QmyEkp+uj3WMvFnUTo7vjSRkVOQUEEZDLzBytJ3u/EbrMAHXkYYfzUbxLXyVV1LhMp59UjGhotRrthxhFpim69GVN8OjGR5c4ZKFLYeaEdwL6pgZTBMOKRwAAAABJRU5ErkJggg=="/></g>
<polyline points="1113.20,288.21 1116.65,288.21" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1113.20,266.68 1116.65,266.68" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1113.20,245.15 1116.65,245.15" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1113.20,223.63 1116.65,223.63" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1113.20,202.10 1116.65,202.10" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1102.83,288.21 1099.37,288.21" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1102.83,266.68 1099.37,266.68" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1102.83,245.15 1099.37,245.15" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1102.83,223.63 1099.37,223.63" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<polyline points="1102.83,202.10 1099.37,202.10" style="stroke-width: 0.38;stroke: #FFFFFF;stroke-linecap: butt;"/>
<g><text x="1124.12" y="292.49" style="font-family: Arimo;font-size: 12.00px;" textLength="23.80px" lengthAdjust="spacingAndGlyphs">0.00</text></g>
<g><text x="1124.12" y="270.97" style="font-family: Arimo;font-size: 12.00px;" textLength="23.80px" lengthAdjust="spacingAndGlyphs">0.25</text></g>
<g><text x="1124.12" y="249.44" style="font-family: Arimo;font-size: 12.00px;" textLength="23.80px" lengthAdjust="spacingAndGlyphs">0.50</text></g>
<g><text x="1124.12" y="227.91" style="font-family: Arimo;font-size: 12.00px;" textLength="23.80px" lengthAdjust="spacingAndGlyphs">0.75</text></g>
<g><text x="1124.12" y="206.38" style="font-family: Arimo;font-size: 12.00px;" textLength="23.80px" lengthAdjust="spacingAndGlyphs">1.00</text></g>
<rect x="1091.90" y="306.78" width="81.55" height="78.78" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<g><text x="1097.38" y="321.44" style="font-family: Arimo;font-size: 11.00px;" textLength="70.59px" lengthAdjust="spacingAndGlyphs">Column block</text></g>
<rect x="1097.38" y="328.24" width="17.28" height="17.28" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="1098.09" y="328.95" width="15.86" height="15.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6D854;"/>
<rect x="1130.65" y="328.24" width="17.28" height="17.28" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="1131.36" y="328.95" width="15.86" height="15.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #E78AC3;"/>
<rect x="1097.38" y="345.52" width="17.28" height="17.28" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="1098.09" y="346.23" width="15.86" height="15.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #8DA0CB;"/>
<rect x="1130.65" y="345.52" width="17.28" height="17.28" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="1131.36" y="346.23" width="15.86" height="15.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #FC8D62;"/>
<rect x="1097.38" y="362.80" width="17.28" height="17.28" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="1098.09" y="363.51" width="15.86" height="15.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #66C2A5;"/>
<g><text x="1120.14" y="340.02" style="font-family: Arimo;font-size: 8.80px;" textLength="5.03px" lengthAdjust="spacingAndGlyphs">1</text></g>
<g><text x="1153.41" y="340.02" style="font-family: Arimo;font-size: 8.80px;" textLength="5.03px" lengthAdjust="spacingAndGlyphs">2</text></g>
<g><text x="1120.14" y="357.30" style="font-family: Arimo;font-size: 8.80px;" textLength="5.03px" lengthAdjust="spacingAndGlyphs">3</text></g>
<g><text x="1153.41" y="357.30" style="font-family: Arimo;font-size: 8.80px;" textLength="5.03px" lengthAdjust="spacingAndGlyphs">4</text></g>
<g><text x="1120.14" y="374.58" style="font-family: Arimo;font-size: 8.80px;" textLength="5.03px" lengthAdjust="spacingAndGlyphs">5</text></g>
<rect x="1091.90" y="396.52" width="72.02" height="61.50" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<g><text x="1097.38" y="411.17" style="font-family: Arimo;font-size: 11.00px;" textLength="52.41px" lengthAdjust="spacingAndGlyphs">Row block</text></g>
<rect x="1097.38" y="417.98" width="17.28" height="17.28" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="1098.09" y="418.68" width="15.86" height="15.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #B2DF8A;"/>
<rect x="1130.65" y="417.98" width="17.28" height="17.28" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="1131.36" y="418.68" width="15.86" height="15.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #1F78B4;"/>
<rect x="1097.38" y="435.26" width="17.28" height="17.28" style="stroke-width: 1.07;stroke: none;fill: #FFFFFF;"/>
<rect x="1098.09" y="435.96" width="15.86" height="15.86" style="stroke-width: 1.07;stroke: none;stroke-linecap: butt;stroke-linejoin: miter;fill: #A6CEE3;"/>
<g><text x="1120.14" y="429.76" style="font-family: Arimo;font-size: 8.80px;" textLength="5.03px" lengthAdjust="spacingAndGlyphs">1</text></g>
<g><text x="1153.41" y="429.76" style="font-family: Arimo;font-size: 8.80px;" textLength="5.03px" lengthAdjust="spacingAndGlyphs">2</text></g>
<g><text x="1120.14" y="447.04" style="font-family: Arimo;font-size: 8.80px;" textLength="5.03px" lengthAdjust="spacingAndGlyphs">3</text></g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 35 KiB

856
suivi/2025-19/2025-19.html Normal file
View file

@ -0,0 +1,856 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 19 2025 : 5 mai - 9 mai Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 19 2025 : 5 mai - 9 mai</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
<div class="quarto-category">inférence</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">9 mai 2025</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#top-priorité" id="toc-top-priorité" class="nav-link active" data-scroll-target="#top-priorité"><span class="header-section-number">1</span> TOP PRIORITÉ</a>
<ul class="collapse">
<li><a href="#applications" id="toc-applications" class="nav-link" data-scroll-target="#applications"><span class="header-section-number">1.1</span> Applications</a></li>
<li><a href="#présentations-lsd-jds-et-mlaussois" id="toc-présentations-lsd-jds-et-mlaussois" class="nav-link" data-scroll-target="#présentations-lsd-jds-et-mlaussois"><span class="header-section-number">1.2</span> Présentations LSD, JdS et ML@Aussois</a></li>
<li><a href="#inférence-et-microbes" id="toc-inférence-et-microbes" class="nav-link" data-scroll-target="#inférence-et-microbes"><span class="header-section-number">1.3</span> Inférence et microbes</a></li>
</ul></li>
<li><a href="#a-discuter" id="toc-a-discuter" class="nav-link" data-scroll-target="#a-discuter"><span class="header-section-number">2</span> A discuter</a></li>
<li><a href="#a-faire" id="toc-a-faire" class="nav-link" data-scroll-target="#a-faire"><span class="header-section-number">3</span> A faire</a>
<ul class="collapse">
<li><a href="#inférence" id="toc-inférence" class="nav-link" data-scroll-target="#inférence"><span class="header-section-number">3.1</span> Inférence</a></li>
<li><a href="#rédaction-article" id="toc-rédaction-article" class="nav-link" data-scroll-target="#rédaction-article"><span class="header-section-number">3.2</span> Rédaction article</a></li>
</ul></li>
<li><a href="#jai-fait" id="toc-jai-fait" class="nav-link" data-scroll-target="#jai-fait"><span class="header-section-number">4</span> Jai fait</a>
<ul class="collapse">
<li><a href="#csi-en-attente-contacts-pb-et-sd" id="toc-csi-en-attente-contacts-pb-et-sd" class="nav-link" data-scroll-target="#csi-en-attente-contacts-pb-et-sd"><span class="header-section-number">4.1</span> CSI (en attente contacts PB et SD)</a></li>
<li><a href="#finistr" id="toc-finistr" class="nav-link" data-scroll-target="#finistr"><span class="header-section-number">4.2</span> FinistR</a></li>
<li><a href="#ml-at-aussois" id="toc-ml-at-aussois" class="nav-link" data-scroll-target="#ml-at-aussois"><span class="header-section-number">4.3</span> ML at Aussois</a></li>
<li><a href="#présentation" id="toc-présentation" class="nav-link" data-scroll-target="#présentation"><span class="header-section-number">4.4</span> Présentation</a></li>
</ul></li>
<li><a href="#a-continuer" id="toc-a-continuer" class="nav-link" data-scroll-target="#a-continuer"><span class="header-section-number">5</span> A continuer</a>
<ul class="collapse">
<li><a href="#applications-1" id="toc-applications-1" class="nav-link" data-scroll-target="#applications-1"><span class="header-section-number">5.1</span> Applications</a></li>
<li><a href="#axe-inférence" id="toc-axe-inférence" class="nav-link" data-scroll-target="#axe-inférence"><span class="header-section-number">5.2</span> Axe inférence</a></li>
</ul></li>
<li><a href="#repoussés-ou-abandonnés" id="toc-repoussés-ou-abandonnés" class="nav-link" data-scroll-target="#repoussés-ou-abandonnés"><span class="header-section-number">6</span> Repoussés ou abandonnés</a>
<ul class="collapse">
<li><a href="#papier-plus-multi-applications" id="toc-papier-plus-multi-applications" class="nav-link" data-scroll-target="#papier-plus-multi-applications"><span class="header-section-number">6.1</span> Papier plus multi-applications</a></li>
<li><a href="#autour-de-larticle-et-du-package" id="toc-autour-de-larticle-et-du-package" class="nav-link" data-scroll-target="#autour-de-larticle-et-du-package"><span class="header-section-number">6.2</span> Autour de larticle et du package</a></li>
<li><a href="#simulations-article" id="toc-simulations-article" class="nav-link" data-scroll-target="#simulations-article"><span class="header-section-number">6.3</span> Simulations article</a></li>
</ul></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="top-priorité" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="top-priorité"><span class="header-section-number">1</span> TOP PRIORITÉ</h2>
<ul>
<li><p>Débugguer les simulations :</p>
<ul>
<li><p>Clustering : Relancer simulations de clustering avec <span class="math inline">M = 30</span><span class="math inline">M_i = 10, \forall i</span>. En attente retour MIGALE Relancer simus clustering avec VEM steps = 10 000 et plus nombreux init pour spectral. Ajouter simu clustering métriques nb sous-collections obtenues. Vérifier les résultats obtenus si ARI = 0. Et augmenter la taille <span class="math inline">M = 30</span> avec <span class="math inline">M_1 = M_2 = M_3 = 10</span>. <del>-&gt; BUG, dois creuser mais juste des problèmes techniques.</del> Le bug venait probablement dune inadéquation entre la version de <em>future</em> et <em>future.callr</em>, les résultats temporaires sont encourageant.</p></li>
<li><p>Inférence : Relancer simus dinférence avec n = 240 pour voir si la qualité augmenter (se rassurer). En fait on est déjà à 240, jai relancé avec M = 4 au lieu de M = 2. En attente résultats MIGALE -&gt; BUG, dois creuser mais juste des problèmes techniques -&gt; Visiblement il y a dautres problèmes que juste le plan de parallélisation.</p></li>
</ul></li>
</ul>
<section id="applications" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="applications"><span class="header-section-number">1.1</span> Applications</h3>
<ul>
<li>Kmeans sur la densité des réseaux subdoré pour pré-partitionner et <em>clusteriser</em>. Car densités déséquilibrées.</li>
</ul>
<div id="ref-kmeans-vae" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-ref figure">
<div aria-describedby="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<ul>
<li>Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur lespace latent Jai commencé à regarder un peu</li>
</ul>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-ref quarto-uncaptioned" id="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Reference&nbsp;1
</figcaption>
</figure>
</div>
</section>
<section id="présentations-lsd-jds-et-mlaussois" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="présentations-lsd-jds-et-mlaussois"><span class="header-section-number">1.2</span> Présentations LSD, JdS et ML@Aussois</h3>
<ul>
<li><del>PRÉSENTATION JDS (LSD), durée introuvable, adapter en anglais les slides</del> et voir avec PB et SD.</li>
<li>Quel plan ?</li>
<li>Quels résultats ? Baldock, Traveset … (sub-Doré)</li>
</ul>
</section>
<section id="inférence-et-microbes" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="inférence-et-microbes"><span class="header-section-number">1.3</span> Inférence et microbes</h3>
<ul>
<li>Lire Papiers compositional data (Aitchison et al.&nbsp;intro)</li>
<li>Se renseigner techniques dinférence de réseaux :
<ul>
<li>covariance (base corrélation et seuil)</li>
<li>GraphicalLASSO</li>
<li>Co-occurence</li>
</ul></li>
<li>Lire article multi-niveaux Saint-Clair</li>
</ul>
</section>
</section>
<section id="a-discuter" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="a-discuter"><span class="header-section-number">2</span> A discuter</h2>
<ul>
<li>Voir pour TT période du 11 au 14 août</li>
<li>Voir pour date CSI car congés avec parents prévu du 29/08 au 12/09.</li>
</ul>
</section>
<section id="a-faire" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="a-faire"><span class="header-section-number">3</span> A faire</h2>
<section id="inférence" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="inférence"><span class="header-section-number">3.1</span> Inférence</h3>
<ul>
<li>Papier pour comprendre données
<ul>
<li><del>Faust et al.</del></li>
<li>Abdill et al.</li>
<li>Bashan et al.</li>
</ul></li>
<li>pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU …)</li>
</ul>
<blockquote class="blockquote">
<p>Combine networks at different taxonomic levels</p>
</blockquote>
<ul>
<li>Inférence + GREMLINS</li>
</ul>
</section>
<section id="rédaction-article" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="rédaction-article"><span class="header-section-number">3.2</span> Rédaction article</h3>
<ul>
<li>Relire intro St Clair</li>
<li>Sinspirer structure pour mon intro</li>
<li>Trouver biblio intro</li>
<li>Rédiger lintro</li>
<li>Dire résultats nettement meilleurs et variabilités inférieures.</li>
</ul>
</section>
</section>
<section id="jai-fait" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="jai-fait"><span class="header-section-number">4</span> Jai fait</h2>
<section id="csi-en-attente-contacts-pb-et-sd" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="csi-en-attente-contacts-pb-et-sd"><span class="header-section-number">4.1</span> CSI (en attente contacts PB et SD)</h3>
<ul>
<li>Est-ce à moi de contacter Saint-Clair et Sonia/Elisa ? <em>Pierre et Sophie gèrent</em></li>
<li>Pierre Gérard a dit oui, il attend les détails</li>
<li>Quand : <em>fin juin début juillet</em></li>
<li>Liste potentielle :
<ul>
<li>(Saint-Clair)</li>
<li>Mahendra</li>
<li>Elisa/Sonia</li>
<li>Pierre Gérard</li>
</ul></li>
</ul>
</section>
<section id="finistr" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="finistr"><span class="header-section-number">4.2</span> FinistR</h3>
<ul>
<li>Sinscrire</li>
</ul>
</section>
<section id="ml-at-aussois" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="ml-at-aussois"><span class="header-section-number">4.3</span> ML at Aussois</h3>
<ul>
<li>Sinscrire avec abstract court</li>
<li>Demander la bourse</li>
<li>Détails dinscriptions : <em>Je demande une bourse et je minscris avec la demande de bourse, Pierre et Sophie font la lettre de recommendation</em></li>
</ul>
</section>
<section id="présentation" class="level3" data-number="4.4">
<h3 data-number="4.4" class="anchored" data-anchor-id="présentation"><span class="header-section-number">4.4</span> Présentation</h3>
<ul>
<li>Jai traduis en anglais ma présentation : <a href="https://forgemia.inra.fr/louis.lacoste/presentation-colbisbm/-/raw/main/presentation.pdf?ref_type=heads">Lien</a></li>
</ul>
</section>
</section>
<section id="a-continuer" class="level2" data-number="5">
<h2 data-number="5" class="anchored" data-anchor-id="a-continuer"><span class="header-section-number">5</span> A continuer</h2>
<section id="applications-1" class="level3" data-number="5.1">
<h3 data-number="5.1" class="anchored" data-anchor-id="applications-1"><span class="header-section-number">5.1</span> Applications</h3>
<ul>
<li>Idée Sophie: Regarder clustering de données plantes-pollinisateur selon gradient durbanisation</li>
</ul>
<blockquote class="blockquote">
<p>Sophie a fait une appli qui marche bien et va dans le sens de lanalyse faite (à savoir pas deffet du gradien durbanisation). À continuer pour lintégrer dans larticle !</p>
</blockquote>
</section>
<section id="axe-inférence" class="level3" data-number="5.2">
<h3 data-number="5.2" class="anchored" data-anchor-id="axe-inférence"><span class="header-section-number">5.2</span> Axe inférence</h3>
<ul>
<li>Lire biblio fournie Julie, Inférence de réseaux : co-occurence</li>
</ul>
<blockquote class="blockquote">
<p>Jai lu Faust et al.&nbsp; Je lis Abdill et al.</p>
</blockquote>
</section>
</section>
<section id="repoussés-ou-abandonnés" class="level2" data-number="6">
<h2 data-number="6" class="anchored" data-anchor-id="repoussés-ou-abandonnés"><span class="header-section-number">6</span> Repoussés ou abandonnés</h2>
<ul>
<li>Résultats simus NA <strong>Erreur pour certaines conditions</strong> : Pour NA robustness générer <code>nb_rep</code> collections de taille <span class="math inline">M=2</span> et prélever <span class="math inline">\epsilon_{max}n_r n_c</span> liens à retirer puis pour les <span class="math inline">\epsilon &lt; \epsilon_{max}</span> prélever dans la liste des indices afin davoir des perturbations emboitées. Il faut que jajoute un mécanisme pour reprendre des conditions qui ont plantés et que je skip dans le future_lapply les conditions déjà traitées (pour avoir la même seed quand je vais exécuter le code). Implémenté les missing steps.</li>
</ul>
<blockquote class="blockquote">
<p>Je narrive pas à comprendre les erreurs qui arrivent</p>
</blockquote>
<ul>
<li><p>Lire Biological Networks - François Képès</p></li>
<li><p>Regarder les applications pour les collections de réseaux recommender system <em>Pas pertinents et trop gros</em></p></li>
</ul>
<div id="lst-reco-systems" class="listing quarto-float quarto-figure quarto-figure-left anchored">
<figure class="quarto-float quarto-float-lst figure">
<figcaption class="quarto-float-caption-top quarto-float-caption quarto-float-lst" id="lst-reco-systems-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Listing&nbsp;1: Recommender systems data
</figcaption>
<div aria-describedby="lst-reco-systems-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<p>Par exemple :</p>
<ul>
<li><a href="https://cseweb.ucsd.edu/~jmcauley/datasets.html">Liste de recommendation data</a></li>
</ul>
</div>
</figure>
</div>
<section id="papier-plus-multi-applications" class="level3" data-number="6.1">
<h3 data-number="6.1" class="anchored" data-anchor-id="papier-plus-multi-applications"><span class="header-section-number">6.1</span> Papier plus multi-applications</h3>
<ul>
<li>Données dElisa herbivore ?</li>
<li>Données urbanisations ?</li>
</ul>
</section>
<section id="autour-de-larticle-et-du-package" class="level3" data-number="6.2">
<h3 data-number="6.2" class="anchored" data-anchor-id="autour-de-larticle-et-du-package"><span class="header-section-number">6.2</span> Autour de larticle et du package</h3>
<ul>
<li>Créer des vignettes illustrant par exemple des cas de simulations. <strong>Possible de mettre lexemple dapplication de Sophie sur les réseaux avec gradient durbanisation</strong>.</li>
</ul>
</section>
<section id="simulations-article" class="level3" data-number="6.3">
<h3 data-number="6.3" class="anchored" data-anchor-id="simulations-article"><span class="header-section-number">6.3</span> Simulations article</h3>
<ul>
<li><p>Comparer sur clustering unipartite avec versions symétriser des par blocs des matrices dadjacences.</p></li>
<li><p>Corriger structure de simus :</p>
<ul>
<li>Pour noisy <span class="math inline">\alpha</span> :
<ul>
<li>Logit pour envoyer la gaussienne vers (0,1)</li>
<li>Beta contrainte dans (0,1)</li>
</ul></li>
<li>Pour noisy links : Générer <code>nb_clustering</code> collections de taille M puis prélever <span class="math inline">\epsilon_{max}n_r n_c</span> liens à inverser puis pour les <span class="math inline">\epsilon &lt; \epsilon_{max}</span> prélever dans la liste des indices afin davoir des perturbations emboitées.</li>
</ul></li>
</ul>
</section>
</section>
</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

868
suivi/2025-20/2025-20.html Normal file
View file

@ -0,0 +1,868 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 20 2025 : 12 mai - 16 mai Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 20 2025 : 12 mai - 16 mai</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
<div class="quarto-category">inférence</div>
<div class="quarto-category">GNN</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">16 mai 2025</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#top-priorité" id="toc-top-priorité" class="nav-link active" data-scroll-target="#top-priorité"><span class="header-section-number">1</span> TOP PRIORITÉ</a>
<ul class="collapse">
<li><a href="#présentations-lsd-jds-et-mlaussois" id="toc-présentations-lsd-jds-et-mlaussois" class="nav-link" data-scroll-target="#présentations-lsd-jds-et-mlaussois"><span class="header-section-number">1.1</span> Présentations LSD, JdS et ML@Aussois</a></li>
<li><a href="#applications" id="toc-applications" class="nav-link" data-scroll-target="#applications"><span class="header-section-number">1.2</span> Applications</a></li>
<li><a href="#inférence-et-microbes" id="toc-inférence-et-microbes" class="nav-link" data-scroll-target="#inférence-et-microbes"><span class="header-section-number">1.3</span> Inférence et microbes</a></li>
</ul></li>
<li><a href="#a-discuter" id="toc-a-discuter" class="nav-link" data-scroll-target="#a-discuter"><span class="header-section-number">2</span> A discuter</a></li>
<li><a href="#a-faire" id="toc-a-faire" class="nav-link" data-scroll-target="#a-faire"><span class="header-section-number">3</span> A faire</a>
<ul class="collapse">
<li><a href="#inférence" id="toc-inférence" class="nav-link" data-scroll-target="#inférence"><span class="header-section-number">3.1</span> Inférence</a></li>
<li><a href="#rédaction-article" id="toc-rédaction-article" class="nav-link" data-scroll-target="#rédaction-article"><span class="header-section-number">3.2</span> Rédaction article</a></li>
</ul></li>
<li><a href="#jai-fait" id="toc-jai-fait" class="nav-link" data-scroll-target="#jai-fait"><span class="header-section-number">4</span> Jai fait</a>
<ul class="collapse">
<li><a href="#présentations-lsd-jds-et-mlaussois-1" id="toc-présentations-lsd-jds-et-mlaussois-1" class="nav-link" data-scroll-target="#présentations-lsd-jds-et-mlaussois-1"><span class="header-section-number">4.1</span> Présentations LSD, JdS et ML@Aussois</a></li>
<li><a href="#vgae" id="toc-vgae" class="nav-link" data-scroll-target="#vgae"><span class="header-section-number">4.2</span> VGAE</a></li>
<li><a href="#inférence-et-microbes-1" id="toc-inférence-et-microbes-1" class="nav-link" data-scroll-target="#inférence-et-microbes-1"><span class="header-section-number">4.3</span> Inférence et microbes</a></li>
<li><a href="#applications-1" id="toc-applications-1" class="nav-link" data-scroll-target="#applications-1"><span class="header-section-number">4.4</span> Applications</a></li>
<li><a href="#axe-inférence" id="toc-axe-inférence" class="nav-link" data-scroll-target="#axe-inférence"><span class="header-section-number">4.5</span> Axe inférence</a></li>
</ul></li>
<li><a href="#repoussés-ou-abandonnés" id="toc-repoussés-ou-abandonnés" class="nav-link" data-scroll-target="#repoussés-ou-abandonnés"><span class="header-section-number">5</span> Repoussés ou abandonnés</a></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="top-priorité" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="top-priorité"><span class="header-section-number">1</span> TOP PRIORITÉ</h2>
<ul>
<li><p>Pour clustering de collections sur données réelles :</p>
<ul>
<li><del>Relâcher la pénalité pour les coupes pour proposer modèles.</del></li>
</ul>
<p>→ Lintuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs <span class="math inline">(Q_1,Q_2)</span>.</p>
<ul>
<li>Faire le <code>hclust</code> avec diverses distances et voir si les coupes proposées diffèrent sensiblement</li>
<li>Si plusieurs clustering possibles les tester et sélectionner le meilleur</li>
<li>Ré-ajuster les bonnes partitions.</li>
</ul></li>
<li><p>Données simulées tester diverses distances.</p></li>
<li><p>Dé-bugger les simulations :</p>
<ul>
<li>Inférence : Relancer simus dinférence avec n = 240 pour voir si la qualité augmenter (se rassurer). En fait on est déjà à 240, jai relancé avec M = 4 au lieu de M = 2. En attente résultats MIGALE -&gt; BUG, dois creuser mais juste des problèmes techniques -&gt; Visiblement il y a dautres problèmes que juste le plan de parallélisation.</li>
</ul></li>
<li><p>Vérifier si problème de version tidyverse pour vapply sur l<strong>inférence</strong>.</p></li>
<li><p>Si problème de parallélisation vient de pb de version <em>future.callr</em> le signaler à MIGALE.</p></li>
</ul>
<section id="présentations-lsd-jds-et-mlaussois" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="présentations-lsd-jds-et-mlaussois"><span class="header-section-number">1.1</span> Présentations LSD, JdS et ML@Aussois</h3>
<ul>
<li><del>PRÉSENTATION JDS (LSD), durée introuvable, adapter en anglais les slides</del> et voir avec PB et SD.</li>
<li>Quel plan ?</li>
<li>Quels résultats ? Baldock, Traveset … (sub-Doré)</li>
<li>Pas la peine de préciser lalgo de clustering</li>
<li>Indiquer sur une slide le problème de support pour <span class="math inline">\pi\rho</span> à faire sil y a le temps.</li>
<li>Résultats sur les réseaux Baldock, regarder le positionnement par bloc des espèces communes, regarder les probas dappartenance aux blocs par espèces communes et par réseau.</li>
</ul>
</section>
<section id="applications" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="applications"><span class="header-section-number">1.2</span> Applications</h3>
<ul>
<li>Kmeans sur la densité des réseaux subdoré pour pré-partitionner et <em>clusteriser</em>. Car densités déséquilibrées.</li>
</ul>
<div id="ref-kmeans-vae" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-ref figure">
<div aria-describedby="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<ul>
<li>Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur lespace latent Jai commencé à regarder un peu</li>
</ul>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-ref quarto-uncaptioned" id="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Reference&nbsp;1
</figcaption>
</figure>
</div>
</section>
<section id="inférence-et-microbes" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="inférence-et-microbes"><span class="header-section-number">1.3</span> Inférence et microbes</h3>
<ul>
<li>Lancer <em>colBiSBM</em> sur <span class="math inline">OTU\times Sample</span></li>
<li>Se renseigner techniques dinférence de réseaux :
<ul>
<li>covariance (base corrélation et seuil)</li>
<li>GraphicalLASSO</li>
<li>Co-occurence</li>
</ul></li>
<li>Lancer <em>colSBM</em> sur <span class="math inline">OTU\times OTU</span></li>
<li>Creuser <a href="https://raw.githubusercontent.com/cregouby/R-toulouse-tabnet/main/Tabnet_RR2023_fr_pdf.pdf">TabNet</a> de Christophe Regouby et les <a href="https://github.com/cregouby/Tutoriel_torch">exercices</a></li>
<li>Regarder <strong>SPARTA</strong> Rennes</li>
<li>Lire Papiers compositional data (Aitchison et al.&nbsp;intro)</li>
<li>Lire article multi-niveaux Saint-Clair</li>
</ul>
</section>
</section>
<section id="a-discuter" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="a-discuter"><span class="header-section-number">2</span> A discuter</h2>
</section>
<section id="a-faire" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="a-faire"><span class="header-section-number">3</span> A faire</h2>
<section id="inférence" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="inférence"><span class="header-section-number">3.1</span> Inférence</h3>
<ul>
<li>Papier pour comprendre données
<ul>
<li><del>Faust et al.</del></li>
<li>Abdill et al.</li>
<li>Bashan et al.</li>
</ul></li>
<li>pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU …)</li>
</ul>
<blockquote class="blockquote">
<p>Combine networks at different taxonomic levels</p>
</blockquote>
<ul>
<li>Inférence + GREMLINS</li>
</ul>
</section>
<section id="rédaction-article" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="rédaction-article"><span class="header-section-number">3.2</span> Rédaction article</h3>
<ul>
<li>Relire intro St Clair</li>
<li>Sinspirer structure pour mon intro</li>
<li>Trouver biblio intro</li>
<li>Rédiger lintro</li>
<li>Dire résultats nettement meilleurs et variabilités inférieures.</li>
</ul>
</section>
</section>
<section id="jai-fait" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="jai-fait"><span class="header-section-number">4</span> Jai fait</h2>
<ul>
<li><p>Dé-bugger les simulations :</p>
<ul>
<li>Clustering : Relancer simulations de clustering avec <span class="math inline">M = 30</span><span class="math inline">M_i = 10, \forall i</span>. En attente retour MIGALE Relancer simus clustering avec VEM steps = 10 000 et plus nombreux init pour spectral. Ajouter simu clustering métriques nb sous-collections obtenues. Vérifier les résultats obtenus si ARI = 0. Et augmenter la taille <span class="math inline">M = 30</span> avec <span class="math inline">M_1 = M_2 = M_3 = 10</span>. <del>-&gt; BUG, dois creuser mais juste des problèmes techniques.</del> Le bug venait probablement dune inadéquation entre la version de <em>future</em> et <em>future.callr</em>, les résultats temporaires sont encourageants. <strong>Jai mis les résultats dans larticle</strong>.</li>
</ul></li>
</ul>
<section id="présentations-lsd-jds-et-mlaussois-1" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="présentations-lsd-jds-et-mlaussois-1"><span class="header-section-number">4.1</span> Présentations LSD, JdS et ML@Aussois</h3>
<ul>
<li><p><del>PRÉSENTATION JDS (LSD), durée introuvable, adapter en anglais les slides</del> et voir avec PB et SD.</p></li>
<li><p>Quel plan ?</p></li>
<li><p>Quels résultats ? Baldock, Traveset … (sub-Doré)</p></li>
<li><p>Mettre le détails des formules et des algos pour VE et sélection de modèle en annexe.</p></li>
<li><p>Préciser simplement que lon utilise un algo VE et un critère type BIC.</p></li>
</ul>
</section>
<section id="vgae" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="vgae"><span class="header-section-number">4.2</span> VGAE</h3>
<ul>
<li><del>Dé-bugger pourquoi <code>BipartiteInnerProductDecoder.forward() -&gt; NaN</code></del> -&gt; <strong>Cétait parce que les features en entrée nétait pas normalisée par les couches de convolutions</strong>. Les meilleurs résultats dAUC et de précisions que jobtiens par VGAE sont autour de 0.80.</li>
</ul>
</section>
<section id="inférence-et-microbes-1" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="inférence-et-microbes-1"><span class="header-section-number">4.3</span> Inférence et microbes</h3>
<ul>
<li>Human Gut Compendium télécharger et préparé les données. Mises au format <code>edgelist</code> et liste de matrices et extrait les infos supplémentaires. → trop lourd en RAM pour tourner sur machine perso (optim colSBM…) ## A continuer</li>
</ul>
</section>
<section id="applications-1" class="level3" data-number="4.4">
<h3 data-number="4.4" class="anchored" data-anchor-id="applications-1"><span class="header-section-number">4.4</span> Applications</h3>
<ul>
<li>Idée Sophie: Regarder clustering de données plantes-pollinisateur selon gradient durbanisation</li>
</ul>
<blockquote class="blockquote">
<p>Sophie a fait une appli qui marche bien et va dans le sens de lanalyse faite (à savoir pas deffet du gradien durbanisation). À continuer pour lintégrer dans larticle !</p>
</blockquote>
</section>
<section id="axe-inférence" class="level3" data-number="4.5">
<h3 data-number="4.5" class="anchored" data-anchor-id="axe-inférence"><span class="header-section-number">4.5</span> Axe inférence</h3>
<ul>
<li>Lire biblio fournie Julie, Inférence de réseaux : co-occurence</li>
</ul>
<blockquote class="blockquote">
<p>Jai lu Faust et al.&nbsp; Je lis Abdill et al.</p>
</blockquote>
</section>
</section>
<section id="repoussés-ou-abandonnés" class="level2" data-number="5">
<h2 data-number="5" class="anchored" data-anchor-id="repoussés-ou-abandonnés"><span class="header-section-number">5</span> Repoussés ou abandonnés</h2>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Déplier pour voir
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<ul>
<li>Résultats simus NA <strong>Erreur pour certaines conditions</strong> : Pour NA robustness générer <code>nb_rep</code> collections de taille <span class="math inline">M=2</span> et prélever <span class="math inline">\epsilon_{max}n_r n_c</span> liens à retirer puis pour les <span class="math inline">\epsilon &lt; \epsilon_{max}</span> prélever dans la liste des indices afin davoir des perturbations emboitées. Il faut que jajoute un mécanisme pour reprendre des conditions qui ont plantés et que je skip dans le future_lapply les conditions déjà traitées (pour avoir la même seed quand je vais exécuter le code). Implémenté les missing steps.</li>
</ul>
<blockquote class="blockquote">
<p>Je narrive pas à comprendre les erreurs qui arrivent</p>
</blockquote>
<ul>
<li><p>Lire Biological Networks - François Képès</p></li>
<li><p>Regarder les applications pour les collections de réseaux recommender system <em>Pas pertinents et trop gros</em></p></li>
</ul>
<div id="lst-reco-systems" class="listing quarto-float quarto-figure quarto-figure-left anchored">
<figure class="quarto-float quarto-float-lst figure">
<figcaption class="quarto-float-caption-top quarto-float-caption quarto-float-lst" id="lst-reco-systems-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Listing&nbsp;1: Recommender systems data
</figcaption>
<div aria-describedby="lst-reco-systems-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<p>Par exemple :</p>
<ul>
<li><a href="https://cseweb.ucsd.edu/~jmcauley/datasets.html">Liste de recommendation data</a></li>
</ul>
</div>
</figure>
</div>
<section id="papier-plus-multi-applications" class="level3" data-number="5.1">
<h3 data-number="5.1" class="anchored" data-anchor-id="papier-plus-multi-applications"><span class="header-section-number">5.1</span> Papier plus multi-applications</h3>
<ul>
<li>Données dElisa herbivore ?</li>
<li>Données urbanisations ?</li>
</ul>
</section>
<section id="autour-de-larticle-et-du-package" class="level3" data-number="5.2">
<h3 data-number="5.2" class="anchored" data-anchor-id="autour-de-larticle-et-du-package"><span class="header-section-number">5.2</span> Autour de larticle et du package</h3>
<ul>
<li>Créer des vignettes illustrant par exemple des cas de simulations. <strong>Possible de mettre lexemple dapplication de Sophie sur les réseaux avec gradient durbanisation</strong>.</li>
</ul>
</section>
<section id="simulations-article" class="level3" data-number="5.3">
<h3 data-number="5.3" class="anchored" data-anchor-id="simulations-article"><span class="header-section-number">5.3</span> Simulations article</h3>
<ul>
<li><p>Comparer sur clustering unipartite avec versions symétriser des par blocs des matrices dadjacences.</p></li>
<li><p>Corriger structure de simus :</p>
<ul>
<li>Pour noisy <span class="math inline">\alpha</span> :
<ul>
<li>Logit pour envoyer la gaussienne vers (0,1)</li>
<li>Beta contrainte dans (0,1)</li>
</ul></li>
<li>Pour noisy links : Générer <code>nb_clustering</code> collections de taille M puis prélever <span class="math inline">\epsilon_{max}n_r n_c</span> liens à inverser puis pour les <span class="math inline">\epsilon &lt; \epsilon_{max}</span> prélever dans la liste des indices afin davoir des perturbations emboitées.</li>
</ul></li>
</ul>
</section>
</div>
</div>
</div>
</section>
</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

845
suivi/2025-21/2025-21.html Normal file
View file

@ -0,0 +1,845 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 21 2025 : 26 mai - 30 mai Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 21 2025 : 26 mai - 30 mai</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
<div class="quarto-category">inférence</div>
<div class="quarto-category">GNN</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">23 mai 2025</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#top-priorité" id="toc-top-priorité" class="nav-link active" data-scroll-target="#top-priorité"><span class="header-section-number">1</span> TOP PRIORITÉ</a>
<ul class="collapse">
<li><a href="#présentations-lsd-jds-et-mlaussois" id="toc-présentations-lsd-jds-et-mlaussois" class="nav-link" data-scroll-target="#présentations-lsd-jds-et-mlaussois"><span class="header-section-number">1.1</span> Présentations LSD, JdS et ML@Aussois</a></li>
<li><a href="#applications" id="toc-applications" class="nav-link" data-scroll-target="#applications"><span class="header-section-number">1.2</span> Applications</a></li>
<li><a href="#inférence-et-microbes" id="toc-inférence-et-microbes" class="nav-link" data-scroll-target="#inférence-et-microbes"><span class="header-section-number">1.3</span> Inférence et microbes</a></li>
</ul></li>
<li><a href="#a-discuter" id="toc-a-discuter" class="nav-link" data-scroll-target="#a-discuter"><span class="header-section-number">2</span> A discuter</a></li>
<li><a href="#a-faire" id="toc-a-faire" class="nav-link" data-scroll-target="#a-faire"><span class="header-section-number">3</span> A faire</a>
<ul class="collapse">
<li><a href="#inférence" id="toc-inférence" class="nav-link" data-scroll-target="#inférence"><span class="header-section-number">3.1</span> Inférence</a></li>
<li><a href="#rédaction-article" id="toc-rédaction-article" class="nav-link" data-scroll-target="#rédaction-article"><span class="header-section-number">3.2</span> Rédaction article</a></li>
</ul></li>
<li><a href="#a-continuer" id="toc-a-continuer" class="nav-link" data-scroll-target="#a-continuer"><span class="header-section-number">4</span> A continuer</a>
<ul class="collapse">
<li><a href="#applications-1" id="toc-applications-1" class="nav-link" data-scroll-target="#applications-1"><span class="header-section-number">4.1</span> Applications</a></li>
<li><a href="#axe-inférence" id="toc-axe-inférence" class="nav-link" data-scroll-target="#axe-inférence"><span class="header-section-number">4.2</span> Axe inférence</a></li>
</ul></li>
<li><a href="#repoussés-ou-abandonnés" id="toc-repoussés-ou-abandonnés" class="nav-link" data-scroll-target="#repoussés-ou-abandonnés"><span class="header-section-number">5</span> Repoussés ou abandonnés</a></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="top-priorité" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="top-priorité"><span class="header-section-number">1</span> TOP PRIORITÉ</h2>
<ul>
<li><p>✅ Corriger pour les simus dans larticle : écrire <span class="math inline">N = \#\text{ de répétitions}</span></p></li>
<li><p>Pour clustering de collections sur données réelles :<br>
→ Lintuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs <span class="math inline">(Q_1,Q_2)</span>.</p>
<ul>
<li>Faire le <code>hclust</code> avec diverses distances et voir si les coupes proposées diffèrent sensiblement</li>
<li>Si plusieurs clustering possibles les tester et sélectionner le meilleur</li>
<li>Ré-ajuster les bonnes partitions.</li>
</ul></li>
<li><p>Idée de Sophie : alterner descendant et ascendant → prometteur aussi</p></li>
<li><p>Pour les deux propositions données simulées tester diverses distances.</p></li>
<li><p>Dé-bugger les simulations :</p>
<ul>
<li>Inférence : Relancer simus dinférence avec n = 240 pour voir si la qualité augmenter (se rassurer). En fait on est déjà à 240, jai relancé avec M = 4 au lieu de M = 2. En attente résultats MIGALE -&gt; BUG, dois creuser mais juste des problèmes techniques -&gt; Visiblement il y a dautres problèmes que juste le plan de parallélisation.</li>
</ul></li>
<li><p>Vérifier si problème de version tidyverse pour vapply sur l<strong>inférence</strong>.</p></li>
<li><p>Si problème de parallélisation vient de pb de version <em>future.callr</em> le signaler à MIGALE.</p></li>
</ul>
<section id="présentations-lsd-jds-et-mlaussois" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="présentations-lsd-jds-et-mlaussois"><span class="header-section-number">1.1</span> Présentations LSD, JdS et ML@Aussois</h3>
<ul>
<li>✅ A loral pourquoi des réseaux : car de plus en plus disponibles et idée derrière, la structure fonctionnelle permet de comprendre les caractéristiques de lécosystème décrit</li>
<li>✅ Chercher des réfs pour les méthodes (Hoff Latent Position Model, Nowicki pour LBM, une review pour les métriques voir thèses St Clair et Emré)</li>
<li>✅ Sur slide méthodes différencier métriques micro et macro et dire oralement que nous méso</li>
<li>❎ Indiquer sur une slide le problème de support pour <span class="math inline">\pi\rho</span> à faire sil y a le temps.</li>
<li>✅ Résultats sur les réseaux Baldock, regarder le positionnement par bloc des espèces communes, regarder les probas dappartenance aux blocs par espèces communes et par réseau ➡️ Bourdons</li>
<li>✅ Intégrer les retours de Sophie</li>
<li>Attente retours Pierre</li>
</ul>
</section>
<section id="applications" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="applications"><span class="header-section-number">1.2</span> Applications</h3>
<ul>
<li>Kmeans sur la densité des réseaux subdoré pour pré-partitionner et <em>clusteriser</em>. Car densités déséquilibrées.</li>
</ul>
<div id="ref-kmeans-vae" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-ref figure">
<div aria-describedby="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<ul>
<li>Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur lespace latent Jai commencé à regarder un peu</li>
</ul>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-ref quarto-uncaptioned" id="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Reference&nbsp;1
</figcaption>
</figure>
</div>
<ul>
<li>Comparer les perfs du VAE sur Baldock avec colBiSBM par exemple</li>
</ul>
</section>
<section id="inférence-et-microbes" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="inférence-et-microbes"><span class="header-section-number">1.3</span> Inférence et microbes</h3>
<ul>
<li>Lancer <em>colBiSBM</em> sur <span class="math inline">OTU\times Sample</span> → problème du chargement en mémoire des données à voir</li>
<li>Se renseigner techniques dinférence de réseaux :
<ul>
<li>covariance (base corrélation et seuil)</li>
<li>GraphicalLASSO</li>
<li>Co-occurence</li>
</ul></li>
<li>Lancer <em>colSBM</em> sur <span class="math inline">OTU\times OTU</span></li>
<li>Creuser <a href="https://raw.githubusercontent.com/cregouby/R-toulouse-tabnet/main/Tabnet_RR2023_fr_pdf.pdf">TabNet</a> de Christophe Regouby et les <a href="https://github.com/cregouby/Tutoriel_torch">exercices</a></li>
<li>Regarder <strong>SPARTA</strong> Rennes</li>
<li>Lire Papiers compositional data (Aitchison et al.&nbsp;intro)</li>
<li>Lire article multi-niveaux Saint-Clair</li>
<li>Demander à JA si elle connaît des réseaux dinteractions connus par les experts (idée dintégrer une connaissance experte et de voir les différences de structure par rapport à celle attendue)</li>
<li>Ecrire et étudier les modèles pour différents niveaux taxonomiques. <span class="math display">\begin{align*}
i \rightarrow &amp;~N^1_i \subseteq N^2_i \subseteq N^3_i &amp; \text{Taxonomie}\\
Z^0_i \overset{?}{=} &amp; Z^1_i \overset{?}{=} Z^2_i \overset{?}{=} Z^3_i &amp; \text{Groupes fonctionnels}
\end{align*}</span></li>
</ul>
</section>
</section>
<section id="a-discuter" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="a-discuter"><span class="header-section-number">2</span> A discuter</h2>
</section>
<section id="a-faire" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="a-faire"><span class="header-section-number">3</span> A faire</h2>
<section id="inférence" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="inférence"><span class="header-section-number">3.1</span> Inférence</h3>
<ul>
<li>Papier pour comprendre données
<ul>
<li><del>Faust et al.</del></li>
<li>Abdill et al.</li>
<li>Bashan et al.</li>
</ul></li>
<li>pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU …)</li>
</ul>
<blockquote class="blockquote">
<p>Combine networks at different taxonomic levels</p>
</blockquote>
<ul>
<li>Inférence + GREMLINS</li>
</ul>
</section>
<section id="rédaction-article" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="rédaction-article"><span class="header-section-number">3.2</span> Rédaction article</h3>
<ul>
<li>Relire intro St Clair</li>
<li>Sinspirer structure pour mon intro</li>
<li>Trouver biblio intro</li>
<li>Rédiger lintro</li>
<li>Dire résultats nettement meilleurs et variabilités inférieures.</li>
</ul>
</section>
</section>
<section id="a-continuer" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="a-continuer"><span class="header-section-number">4</span> A continuer</h2>
<section id="applications-1" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="applications-1"><span class="header-section-number">4.1</span> Applications</h3>
<ul>
<li>Idée Sophie: Regarder clustering de données plantes-pollinisateur selon gradient durbanisation</li>
</ul>
<blockquote class="blockquote">
<p>Sophie a fait une appli qui marche bien et va dans le sens de lanalyse faite (à savoir pas deffet du gradien durbanisation). À continuer pour lintégrer dans larticle !</p>
</blockquote>
</section>
<section id="axe-inférence" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="axe-inférence"><span class="header-section-number">4.2</span> Axe inférence</h3>
<ul>
<li>Lire biblio fournie Julie, Inférence de réseaux : co-occurence</li>
</ul>
<blockquote class="blockquote">
<p>Jai lu Faust et al.&nbsp; Je lis Abdill et al.</p>
</blockquote>
</section>
</section>
<section id="repoussés-ou-abandonnés" class="level2" data-number="5">
<h2 data-number="5" class="anchored" data-anchor-id="repoussés-ou-abandonnés"><span class="header-section-number">5</span> Repoussés ou abandonnés</h2>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Déplier pour voir
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<ul>
<li>Résultats simus NA <strong>Erreur pour certaines conditions</strong> : Pour NA robustness générer <code>nb_rep</code> collections de taille <span class="math inline">M=2</span> et prélever <span class="math inline">\epsilon_{max}n_r n_c</span> liens à retirer puis pour les <span class="math inline">\epsilon &lt; \epsilon_{max}</span> prélever dans la liste des indices afin davoir des perturbations emboitées. Il faut que jajoute un mécanisme pour reprendre des conditions qui ont plantés et que je skip dans le future_lapply les conditions déjà traitées (pour avoir la même seed quand je vais exécuter le code). Implémenté les missing steps.</li>
</ul>
<blockquote class="blockquote">
<p>Je narrive pas à comprendre les erreurs qui arrivent</p>
</blockquote>
<ul>
<li><p>Lire Biological Networks - François Képès</p></li>
<li><p>Regarder les applications pour les collections de réseaux recommender system <em>Pas pertinents et trop gros</em></p></li>
</ul>
<div id="lst-reco-systems" class="listing quarto-float quarto-figure quarto-figure-left anchored">
<figure class="quarto-float quarto-float-lst figure">
<figcaption class="quarto-float-caption-top quarto-float-caption quarto-float-lst" id="lst-reco-systems-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Listing&nbsp;1: Recommender systems data
</figcaption>
<div aria-describedby="lst-reco-systems-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<p>Par exemple :</p>
<ul>
<li><a href="https://cseweb.ucsd.edu/~jmcauley/datasets.html">Liste de recommendation data</a></li>
</ul>
</div>
</figure>
</div>
<section id="papier-plus-multi-applications" class="level3" data-number="5.1">
<h3 data-number="5.1" class="anchored" data-anchor-id="papier-plus-multi-applications"><span class="header-section-number">5.1</span> Papier plus multi-applications</h3>
<ul>
<li>Données dElisa herbivore ?</li>
<li>Données urbanisations ?</li>
</ul>
</section>
<section id="autour-de-larticle-et-du-package" class="level3" data-number="5.2">
<h3 data-number="5.2" class="anchored" data-anchor-id="autour-de-larticle-et-du-package"><span class="header-section-number">5.2</span> Autour de larticle et du package</h3>
<ul>
<li>Créer des vignettes illustrant par exemple des cas de simulations. <strong>Possible de mettre lexemple dapplication de Sophie sur les réseaux avec gradient durbanisation</strong>.</li>
</ul>
</section>
<section id="simulations-article" class="level3" data-number="5.3">
<h3 data-number="5.3" class="anchored" data-anchor-id="simulations-article"><span class="header-section-number">5.3</span> Simulations article</h3>
<ul>
<li><p>Comparer sur clustering unipartite avec versions symétriser des par blocs des matrices dadjacences.</p></li>
<li><p>Corriger structure de simus :</p>
<ul>
<li>Pour noisy <span class="math inline">\alpha</span> :
<ul>
<li>Logit pour envoyer la gaussienne vers (0,1)</li>
<li>Beta contrainte dans (0,1)</li>
</ul></li>
<li>Pour noisy links : Générer <code>nb_clustering</code> collections de taille M puis prélever <span class="math inline">\epsilon_{max}n_r n_c</span> liens à inverser puis pour les <span class="math inline">\epsilon &lt; \epsilon_{max}</span> prélever dans la liste des indices afin davoir des perturbations emboitées.</li>
</ul></li>
</ul>
</section>
</div>
</div>
</div>
</section>
</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

838
suivi/2025-22/2025-22.html Normal file
View file

@ -0,0 +1,838 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 22 2025 : 26 mai - 30 mai Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 22 2025 : 26 mai - 30 mai</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
<div class="quarto-category">inférence</div>
<div class="quarto-category">GNN</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">28 mai 2025</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#top-priorité" id="toc-top-priorité" class="nav-link active" data-scroll-target="#top-priorité"><span class="header-section-number">1</span> TOP PRIORITÉ</a>
<ul class="collapse">
<li><a href="#présentations-lsd-jds-et-mlaussois" id="toc-présentations-lsd-jds-et-mlaussois" class="nav-link" data-scroll-target="#présentations-lsd-jds-et-mlaussois"><span class="header-section-number">1.1</span> Présentations LSD, JdS et ML@Aussois</a></li>
<li><a href="#applications" id="toc-applications" class="nav-link" data-scroll-target="#applications"><span class="header-section-number">1.2</span> Applications</a></li>
<li><a href="#inférence-et-microbes" id="toc-inférence-et-microbes" class="nav-link" data-scroll-target="#inférence-et-microbes"><span class="header-section-number">1.3</span> Inférence et microbes</a></li>
</ul></li>
<li><a href="#a-discuter" id="toc-a-discuter" class="nav-link" data-scroll-target="#a-discuter"><span class="header-section-number">2</span> A discuter</a></li>
<li><a href="#a-faire" id="toc-a-faire" class="nav-link" data-scroll-target="#a-faire"><span class="header-section-number">3</span> A faire</a>
<ul class="collapse">
<li><a href="#inférence" id="toc-inférence" class="nav-link" data-scroll-target="#inférence"><span class="header-section-number">3.1</span> Inférence</a></li>
<li><a href="#rédaction-article" id="toc-rédaction-article" class="nav-link" data-scroll-target="#rédaction-article"><span class="header-section-number">3.2</span> Rédaction article</a></li>
</ul></li>
<li><a href="#a-continuer" id="toc-a-continuer" class="nav-link" data-scroll-target="#a-continuer"><span class="header-section-number">4</span> A continuer</a>
<ul class="collapse">
<li><a href="#applications-1" id="toc-applications-1" class="nav-link" data-scroll-target="#applications-1"><span class="header-section-number">4.1</span> Applications</a></li>
<li><a href="#axe-inférence" id="toc-axe-inférence" class="nav-link" data-scroll-target="#axe-inférence"><span class="header-section-number">4.2</span> Axe inférence</a></li>
</ul></li>
<li><a href="#repoussés-ou-abandonnés" id="toc-repoussés-ou-abandonnés" class="nav-link" data-scroll-target="#repoussés-ou-abandonnés"><span class="header-section-number">5</span> Repoussés ou abandonnés</a></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="top-priorité" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="top-priorité"><span class="header-section-number">1</span> TOP PRIORITÉ</h2>
<ul>
<li><p>Pour clustering de collections sur données réelles :<br>
→ Lintuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs <span class="math inline">(Q_1,Q_2)</span>.</p>
<ul>
<li>Faire le <code>hclust</code> avec diverses distances et voir si les coupes proposées diffèrent sensiblement</li>
<li>Si plusieurs clustering possibles les tester et sélectionner le meilleur</li>
<li>Ré-ajuster les bonnes partitions.</li>
</ul></li>
<li><p>Idée de Sophie : alterner descendant et ascendant → prometteur aussi</p></li>
<li><p>Pour les deux propositions données simulées tester diverses distances.</p></li>
<li><p>Dé-bugger les simulations :</p>
<ul>
<li>Inférence : Relancer simus dinférence avec n = 240 pour voir si la qualité augmenter (se rassurer). En fait on est déjà à 240, jai relancé avec M = 4 au lieu de M = 2. En attente résultats MIGALE -&gt; BUG, dois creuser mais juste des problèmes techniques -&gt; Visiblement il y a dautres problèmes que juste le plan de parallélisation.</li>
</ul></li>
<li><p>Vérifier si problème de version tidyverse pour vapply sur l<strong>inférence</strong>.</p></li>
<li><p>Si problème de parallélisation vient de pb de version <em>future.callr</em> le signaler à MIGALE.</p></li>
</ul>
<section id="présentations-lsd-jds-et-mlaussois" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="présentations-lsd-jds-et-mlaussois"><span class="header-section-number">1.1</span> Présentations LSD, JdS et ML@Aussois</h3>
<ul>
<li>Attente retours Pierre</li>
</ul>
</section>
<section id="applications" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="applications"><span class="header-section-number">1.2</span> Applications</h3>
<ul>
<li>Kmeans sur la densité des réseaux subdoré pour pré-partitionner et <em>clusteriser</em>. Car densités déséquilibrées.</li>
</ul>
<div id="ref-kmeans-vae" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-ref figure">
<div aria-describedby="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<ul>
<li>Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur lespace latent Jai commencé à regarder un peu</li>
</ul>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-ref quarto-uncaptioned" id="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Reference&nbsp;1
</figcaption>
</figure>
</div>
<ul>
<li>Comparer les perfs du VAE sur Baldock avec colBiSBM par exemple</li>
</ul>
</section>
<section id="inférence-et-microbes" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="inférence-et-microbes"><span class="header-section-number">1.3</span> Inférence et microbes</h3>
<ul>
<li>Lancer <em>colBiSBM</em> sur <span class="math inline">OTU\times Sample</span> → problème du chargement en mémoire des données à voir</li>
<li>Se renseigner techniques dinférence de réseaux :
<ul>
<li>covariance (base corrélation et seuil)</li>
<li>GraphicalLASSO</li>
<li>Co-occurence</li>
</ul></li>
<li>Lancer <em>colSBM</em> sur <span class="math inline">OTU\times OTU</span></li>
<li>Creuser <a href="https://raw.githubusercontent.com/cregouby/R-toulouse-tabnet/main/Tabnet_RR2023_fr_pdf.pdf">TabNet</a> de Christophe Regouby et les <a href="https://github.com/cregouby/Tutoriel_torch">exercices</a></li>
<li>Regarder <strong>SPARTA</strong> Rennes</li>
<li>Lire Papiers compositional data (Aitchison et al.&nbsp;intro)</li>
<li>Lire article multi-niveaux Saint-Clair</li>
<li>Demander à JA si elle connaît des réseaux dinteractions connus par les experts (idée dintégrer une connaissance experte et de voir les différences de structure par rapport à celle attendue)</li>
<li>Ecrire et étudier les modèles pour différents niveaux taxonomiques. <span class="math display">\begin{align*}
i \rightarrow &amp;~N^1_i \subseteq N^2_i \subseteq N^3_i &amp; \text{Taxonomie}\\
Z^0_i \overset{?}{=} &amp; Z^1_i \overset{?}{=} Z^2_i \overset{?}{=} Z^3_i &amp; \text{Groupes fonctionnels}
\end{align*}</span></li>
</ul>
</section>
</section>
<section id="a-discuter" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="a-discuter"><span class="header-section-number">2</span> A discuter</h2>
</section>
<section id="a-faire" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="a-faire"><span class="header-section-number">3</span> A faire</h2>
<section id="inférence" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="inférence"><span class="header-section-number">3.1</span> Inférence</h3>
<ul>
<li>Papier pour comprendre données
<ul>
<li><del>Faust et al.</del></li>
<li>Abdill et al.</li>
<li>Bashan et al.</li>
</ul></li>
<li>pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU …)</li>
</ul>
<blockquote class="blockquote">
<p>Combine networks at different taxonomic levels</p>
</blockquote>
<ul>
<li>Inférence + GREMLINS</li>
</ul>
</section>
<section id="rédaction-article" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="rédaction-article"><span class="header-section-number">3.2</span> Rédaction article</h3>
<ul>
<li>Relire intro St Clair</li>
<li>Sinspirer structure pour mon intro</li>
<li>Trouver biblio intro</li>
<li>Rédiger lintro</li>
<li>Dire résultats nettement meilleurs et variabilités inférieures.</li>
</ul>
</section>
</section>
<section id="a-continuer" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="a-continuer"><span class="header-section-number">4</span> A continuer</h2>
<section id="applications-1" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="applications-1"><span class="header-section-number">4.1</span> Applications</h3>
<ul>
<li>Idée Sophie: Regarder clustering de données plantes-pollinisateur selon gradient durbanisation</li>
</ul>
<blockquote class="blockquote">
<p>Sophie a fait une appli qui marche bien et va dans le sens de lanalyse faite (à savoir pas deffet du gradien durbanisation). À continuer pour lintégrer dans larticle !</p>
</blockquote>
</section>
<section id="axe-inférence" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="axe-inférence"><span class="header-section-number">4.2</span> Axe inférence</h3>
<ul>
<li>Lire biblio fournie Julie, Inférence de réseaux : co-occurence</li>
</ul>
<blockquote class="blockquote">
<p>Jai lu Faust et al.&nbsp; Je lis Abdill et al.</p>
</blockquote>
</section>
</section>
<section id="repoussés-ou-abandonnés" class="level2" data-number="5">
<h2 data-number="5" class="anchored" data-anchor-id="repoussés-ou-abandonnés"><span class="header-section-number">5</span> Repoussés ou abandonnés</h2>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Déplier pour voir
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<ul>
<li>Résultats simus NA <strong>Erreur pour certaines conditions</strong> : Pour NA robustness générer <code>nb_rep</code> collections de taille <span class="math inline">M=2</span> et prélever <span class="math inline">\epsilon_{max}n_r n_c</span> liens à retirer puis pour les <span class="math inline">\epsilon &lt; \epsilon_{max}</span> prélever dans la liste des indices afin davoir des perturbations emboitées. Il faut que jajoute un mécanisme pour reprendre des conditions qui ont plantés et que je skip dans le future_lapply les conditions déjà traitées (pour avoir la même seed quand je vais exécuter le code). Implémenté les missing steps.</li>
</ul>
<blockquote class="blockquote">
<p>Je narrive pas à comprendre les erreurs qui arrivent</p>
</blockquote>
<ul>
<li><p>Lire Biological Networks - François Képès</p></li>
<li><p>Regarder les applications pour les collections de réseaux recommender system <em>Pas pertinents et trop gros</em></p></li>
</ul>
<div id="lst-reco-systems" class="listing quarto-float quarto-figure quarto-figure-left anchored">
<figure class="quarto-float quarto-float-lst figure">
<figcaption class="quarto-float-caption-top quarto-float-caption quarto-float-lst" id="lst-reco-systems-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Listing&nbsp;1: Recommender systems data
</figcaption>
<div aria-describedby="lst-reco-systems-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<p>Par exemple :</p>
<ul>
<li><a href="https://cseweb.ucsd.edu/~jmcauley/datasets.html">Liste de recommendation data</a></li>
</ul>
</div>
</figure>
</div>
<section id="papier-plus-multi-applications" class="level3" data-number="5.1">
<h3 data-number="5.1" class="anchored" data-anchor-id="papier-plus-multi-applications"><span class="header-section-number">5.1</span> Papier plus multi-applications</h3>
<ul>
<li>Données dElisa herbivore ?</li>
<li>Données urbanisations ?</li>
</ul>
</section>
<section id="autour-de-larticle-et-du-package" class="level3" data-number="5.2">
<h3 data-number="5.2" class="anchored" data-anchor-id="autour-de-larticle-et-du-package"><span class="header-section-number">5.2</span> Autour de larticle et du package</h3>
<ul>
<li>Créer des vignettes illustrant par exemple des cas de simulations. <strong>Possible de mettre lexemple dapplication de Sophie sur les réseaux avec gradient durbanisation</strong>.</li>
</ul>
</section>
<section id="simulations-article" class="level3" data-number="5.3">
<h3 data-number="5.3" class="anchored" data-anchor-id="simulations-article"><span class="header-section-number">5.3</span> Simulations article</h3>
<ul>
<li><p>Comparer sur clustering unipartite avec versions symétriser des par blocs des matrices dadjacences.</p></li>
<li><p>Corriger structure de simus :</p>
<ul>
<li>Pour noisy <span class="math inline">\alpha</span> :
<ul>
<li>Logit pour envoyer la gaussienne vers (0,1)</li>
<li>Beta contrainte dans (0,1)</li>
</ul></li>
<li>Pour noisy links : Générer <code>nb_clustering</code> collections de taille M puis prélever <span class="math inline">\epsilon_{max}n_r n_c</span> liens à inverser puis pour les <span class="math inline">\epsilon &lt; \epsilon_{max}</span> prélever dans la liste des indices afin davoir des perturbations emboitées.</li>
</ul></li>
</ul>
</section>
</div>
</div>
</div>
</section>
</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

940
suivi/2025-24/2025-24.html Normal file
View file

@ -0,0 +1,940 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 24 2025 : 10 juin - 13 juin Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
/* CSS for citations */
div.csl-bib-body { }
div.csl-entry {
clear: both;
margin-bottom: 0em;
}
.hanging-indent div.csl-entry {
margin-left:2em;
text-indent:-2em;
}
div.csl-left-margin {
min-width:2em;
float:left;
}
div.csl-right-inline {
margin-left:2em;
padding-left:1em;
}
div.csl-indent {
margin-left: 2em;
}</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script src="../../site_libs/quarto-contrib/glightbox/glightbox.min.js"></script>
<link href="../../site_libs/quarto-contrib/glightbox/glightbox.min.css" rel="stylesheet">
<link href="../../site_libs/quarto-contrib/glightbox/lightbox.css" rel="stylesheet">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 24 2025 : 10 juin - 13 juin</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
<div class="quarto-category">inférence</div>
<div class="quarto-category">GNN</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">13 juin 2025</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#todo-list" id="toc-todo-list" class="nav-link active" data-scroll-target="#todo-list"><span class="header-section-number">1</span> TODO List</a>
<ul class="collapse">
<li><a href="#applications" id="toc-applications" class="nav-link" data-scroll-target="#applications"><span class="header-section-number">1.1</span> Applications</a></li>
<li><a href="#inférence-et-microbes" id="toc-inférence-et-microbes" class="nav-link" data-scroll-target="#inférence-et-microbes"><span class="header-section-number">1.2</span> Inférence et microbes</a></li>
</ul></li>
<li><a href="#lecture-en-cours" id="toc-lecture-en-cours" class="nav-link" data-scroll-target="#lecture-en-cours"><span class="header-section-number">2</span> Lecture en cours</a>
<ul class="collapse">
<li><a href="#ot" id="toc-ot" class="nav-link" data-scroll-target="#ot"><span class="header-section-number">2.1</span> OT</a></li>
</ul></li>
<li><a href="#a-discuter" id="toc-a-discuter" class="nav-link" data-scroll-target="#a-discuter"><span class="header-section-number">3</span> A discuter</a>
<ul class="collapse">
<li><a href="#inférence" id="toc-inférence" class="nav-link" data-scroll-target="#inférence"><span class="header-section-number">3.1</span> Inférence</a></li>
<li><a href="#rédaction-article" id="toc-rédaction-article" class="nav-link" data-scroll-target="#rédaction-article"><span class="header-section-number">3.2</span> Rédaction article</a></li>
</ul></li>
<li><a href="#a-continuer" id="toc-a-continuer" class="nav-link" data-scroll-target="#a-continuer"><span class="header-section-number">4</span> A continuer</a>
<ul class="collapse">
<li><a href="#applications-1" id="toc-applications-1" class="nav-link" data-scroll-target="#applications-1"><span class="header-section-number">4.1</span> Applications</a></li>
<li><a href="#axe-inférence" id="toc-axe-inférence" class="nav-link" data-scroll-target="#axe-inférence"><span class="header-section-number">4.2</span> Axe inférence</a></li>
</ul></li>
<li><a href="#repoussés-ou-abandonnés" id="toc-repoussés-ou-abandonnés" class="nav-link" data-scroll-target="#repoussés-ou-abandonnés"><span class="header-section-number">5</span> Repoussés ou abandonnés</a></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="todo-list" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="todo-list"><span class="header-section-number">1</span> TODO List</h2>
<ul>
<li>✅ Préparer la séance intro à Git pour le 13 juin. <strong>La séance sest très bien passée</strong></li>
<li>Pour clustering de collections sur données réelles :<br>
→ Lintuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs <span class="math inline">(Q_1,Q_2)</span>.
<ul>
<li>Faire le <code>hclust</code> avec diverses distances et voir si les coupes proposées diffèrent sensiblement</li>
<li>Si plusieurs clustering possibles les tester et sélectionner le meilleur</li>
<li>Ré-ajuster les bonnes partitions.</li>
<li>✅ Cest bon jai une fonction qui tourne, mais lentement ⌛</li>
<li>⏳Simulations en train de tourner</li>
<li>❗Lapproche que jai en mettant la pénalité à 0 peut favoriser de séparer trop les réseaux et donc il faudrait refusionner. ➡️ mais le d&amp;a ne fonctionne quen <em>iid</em></li>
</ul></li>
<li>✅ Idée de Sophie : alterner descendant et ascendant → prometteur aussi. Jai codé le fichier de simulations et débugguer le vecteur de clustering ▶️ à voir les performances. ➡️ la simu à 9 réseaux (bcp de variabilité a priori) est lancée attente résultats ➡️ Je tombe sur un bug déjà rencontré dans les simus dinférence. jai lancé sans parallélisation pour essayer de comprendre le bug.</li>
</ul>
<p>✅ Il y avait un bug dans la fenêtre glissant où la condition darrêt quand le BICL naugmentait plus était mal détectée. Corrigé</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="figs/ari-clustering-desc&amp;asc9.png" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="9 réseaux - ARI pour le clustering avec modèles iid, procédure descendante et descendante&amp;ascendante"><img src="figs/ari-clustering-desc&amp;asc9.png" class="img-fluid figure-img" alt="9 réseaux - ARI pour le clustering avec modèles iid, procédure descendante et descendante&amp;ascendante"></a></p>
<figcaption>9 réseaux - ARI pour le clustering avec modèles iid, procédure descendante et descendante&amp;ascendante</figcaption>
</figure>
</div>
<div class="quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="figs/ari-clustering-desc&amp;asc30.png" class="lightbox" data-gallery="quarto-lightbox-gallery-2" title="30 réseaux - ARI pour le clustering avec modèles iid, procédure descendante et descendante&amp;ascendante"><img src="figs/ari-clustering-desc&amp;asc30.png" class="img-fluid figure-img" alt="30 réseaux - ARI pour le clustering avec modèles iid, procédure descendante et descendante&amp;ascendante"></a></p>
<figcaption>30 réseaux - ARI pour le clustering avec modèles iid, procédure descendante et descendante&amp;ascendante</figcaption>
</figure>
</div>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: flex-start;">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="figs/nbcollections-clustering-descending.png" class="lightbox" data-gallery="quarto-lightbox-gallery-3" title="30 réseaux - # collections à la fin du clustering. La vraie valeur 3 est en rouge pointillés"><img src="figs/nbcollections-clustering-descending.png" class="img-fluid figure-img" alt="30 réseaux - # collections à la fin du clustering. La vraie valeur 3 est en rouge pointillés"></a></p>
<figcaption>30 réseaux - # collections à la fin du clustering. La vraie valeur 3 est en rouge pointillés</figcaption>
</figure>
</div>
</div>
</div>
</div>
<ul>
<li><p>Pour les deux propositions données simulées tester diverses distances.</p></li>
<li><p>Dé-bugger les simulations :</p>
<ul>
<li>Inférence : Relancer simus dinférence avec n = 240 pour voir si la qualité augmenter (se rassurer). En fait on est déjà à 240, jai relancé avec M = 4 au lieu de M = 2. En attente résultats MIGALE -&gt; BUG, dois creuser mais juste des problèmes techniques -&gt; Visiblement il y a dautres problèmes que juste le plan de parallélisation.</li>
</ul></li>
<li><p>Vérifier si problème de version tidyverse pour vapply sur l<strong>inférence</strong>.</p></li>
<li><p>Si problème de parallélisation vient de pb de version <em>future.callr</em> le signaler à MIGALE.</p></li>
<li><p>✅ Réparé mauvais placement des légendes, des valeurs etc.</p></li>
</ul>
<section id="applications" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="applications"><span class="header-section-number">1.1</span> Applications</h3>
<ul>
<li>Kmeans sur la densité des réseaux subdoré pour pré-partitionner et <em>clusteriser</em>. Car densités déséquilibrées.</li>
</ul>
<div id="ref-kmeans-vae" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-ref figure">
<div aria-describedby="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<ul>
<li>Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur lespace latent Jai commencé à regarder un peu</li>
</ul>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-ref quarto-uncaptioned" id="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Reference&nbsp;1
</figcaption>
</figure>
</div>
<ul>
<li>Comparer les perfs du VAE sur Baldock avec colBiSBM par exemple</li>
</ul>
</section>
<section id="inférence-et-microbes" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="inférence-et-microbes"><span class="header-section-number">1.2</span> Inférence et microbes</h3>
<ul>
<li>Lancer <em>colBiSBM</em> sur <span class="math inline">OTU\times Sample</span> → problème du chargement en mémoire des données à voir</li>
<li>Se renseigner techniques dinférence de réseaux :
<ul>
<li>covariance (base corrélation et seuil)</li>
<li>GraphicalLASSO</li>
<li>Co-occurence</li>
</ul></li>
<li>Lancer <em>colSBM</em> sur <span class="math inline">OTU\times OTU</span></li>
<li>Creuser <a href="https://raw.githubusercontent.com/cregouby/R-toulouse-tabnet/main/Tabnet_RR2023_fr_pdf.pdf">TabNet</a> de Christophe Regouby et les <a href="https://github.com/cregouby/Tutoriel_torch">exercices</a></li>
<li>Regarder <strong>SPARTA</strong> Rennes</li>
<li>Lire Papiers compositional data (Aitchison et al.&nbsp;intro)</li>
<li>Lire article multi-niveaux Saint-Clair</li>
<li>Demander à JA si elle connaît des réseaux dinteractions connus par les experts (idée dintégrer une connaissance experte et de voir les différences de structure par rapport à celle attendue)</li>
<li>Ecrire et étudier les modèles pour différents niveaux taxonomiques. <span class="math display">\begin{align*}
i \rightarrow &amp;~N^1_i \subseteq N^2_i \subseteq N^3_i &amp; \text{Taxonomie}\\
Z^0_i \overset{?}{=} &amp; Z^1_i \overset{?}{=} Z^2_i \overset{?}{=} Z^3_i &amp; \text{Groupes fonctionnels}
\end{align*}</span></li>
</ul>
</section>
</section>
<section id="lecture-en-cours" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="lecture-en-cours"><span class="header-section-number">2</span> Lecture en cours</h2>
<section id="ot" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="ot"><span class="header-section-number">2.1</span> OT</h3>
<ul>
<li><span class="citation" data-cites="mazeletUnsupervisedLearningOptimal">Mazelet, Flamary, et Thirion (<a href="#ref-mazeletUnsupervisedLearningOptimal" role="doc-biblioref">s.&nbsp;d.</a>)</span> Intéressant pour le transport optimal entre graphes de tailles différentes
<ul>
<li><span class="citation" data-cites="nennaLecture2Entropic">Nenna (<a href="#ref-nennaLecture2Entropic" role="doc-biblioref">s.&nbsp;d.</a>)</span> Pour comprendre le problème dOT régularisé pour lentropie.</li>
</ul></li>
</ul>
</section>
</section>
<section id="a-discuter" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="a-discuter"><span class="header-section-number">3</span> A discuter</h2>
<section id="inférence" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="inférence"><span class="header-section-number">3.1</span> Inférence</h3>
<ul>
<li>Papier pour comprendre données
<ul>
<li><del>Faust et al.</del></li>
<li>Abdill et al.</li>
<li>Bashan et al.</li>
</ul></li>
<li>pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU …)</li>
</ul>
<blockquote class="blockquote">
<p>Combine networks at different taxonomic levels</p>
</blockquote>
<ul>
<li>Inférence + GREMLINS</li>
</ul>
</section>
<section id="rédaction-article" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="rédaction-article"><span class="header-section-number">3.2</span> Rédaction article</h3>
<ul>
<li>Relire intro St Clair</li>
<li>Sinspirer structure pour mon intro</li>
<li>Trouver biblio intro</li>
<li>Rédiger lintro</li>
<li>Dire résultats nettement meilleurs et variabilités inférieures.</li>
</ul>
</section>
</section>
<section id="a-continuer" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="a-continuer"><span class="header-section-number">4</span> A continuer</h2>
<section id="applications-1" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="applications-1"><span class="header-section-number">4.1</span> Applications</h3>
<ul>
<li>Idée Sophie: Regarder clustering de données plantes-pollinisateur selon gradient durbanisation</li>
</ul>
<blockquote class="blockquote">
<p>Sophie a fait une appli qui marche bien et va dans le sens de lanalyse faite (à savoir pas deffet du gradien durbanisation). À continuer pour lintégrer dans larticle !</p>
</blockquote>
</section>
<section id="axe-inférence" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="axe-inférence"><span class="header-section-number">4.2</span> Axe inférence</h3>
<ul>
<li>Lire biblio fournie Julie, Inférence de réseaux : co-occurence</li>
</ul>
<blockquote class="blockquote">
<p>Jai lu Faust et al.&nbsp; Je lis Abdill et al.</p>
</blockquote>
</section>
</section>
<section id="repoussés-ou-abandonnés" class="level2" data-number="5">
<h2 data-number="5" class="anchored" data-anchor-id="repoussés-ou-abandonnés"><span class="header-section-number">5</span> Repoussés ou abandonnés</h2>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Déplier pour voir
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<ul>
<li>Résultats simus NA <strong>Erreur pour certaines conditions</strong> : Pour NA robustness générer <code>nb_rep</code> collections de taille <span class="math inline">M=2</span> et prélever <span class="math inline">\epsilon_{max}n_r n_c</span> liens à retirer puis pour les <span class="math inline">\epsilon &lt; \epsilon_{max}</span> prélever dans la liste des indices afin davoir des perturbations emboitées. Il faut que jajoute un mécanisme pour reprendre des conditions qui ont plantés et que je skip dans le future_lapply les conditions déjà traitées (pour avoir la même seed quand je vais exécuter le code). Implémenté les missing steps.</li>
</ul>
<blockquote class="blockquote">
<p>Je narrive pas à comprendre les erreurs qui arrivent</p>
</blockquote>
<ul>
<li><p>Lire Biological Networks - François Képès</p></li>
<li><p>Regarder les applications pour les collections de réseaux recommender system <em>Pas pertinents et trop gros</em></p></li>
</ul>
<div id="lst-reco-systems" class="listing quarto-float quarto-figure quarto-figure-left anchored">
<figure class="quarto-float quarto-float-lst figure">
<figcaption class="quarto-float-caption-top quarto-float-caption quarto-float-lst" id="lst-reco-systems-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Listing&nbsp;1: Recommender systems data
</figcaption>
<div aria-describedby="lst-reco-systems-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<p>Par exemple :</p>
<ul>
<li><a href="https://cseweb.ucsd.edu/~jmcauley/datasets.html">Liste de recommendation data</a></li>
</ul>
</div>
</figure>
</div>
<section id="papier-plus-multi-applications" class="level3" data-number="5.1">
<h3 data-number="5.1" class="anchored" data-anchor-id="papier-plus-multi-applications"><span class="header-section-number">5.1</span> Papier plus multi-applications</h3>
<ul>
<li>Données dElisa herbivore ?</li>
<li>Données urbanisations ?</li>
</ul>
</section>
<section id="autour-de-larticle-et-du-package" class="level3" data-number="5.2">
<h3 data-number="5.2" class="anchored" data-anchor-id="autour-de-larticle-et-du-package"><span class="header-section-number">5.2</span> Autour de larticle et du package</h3>
<ul>
<li>Créer des vignettes illustrant par exemple des cas de simulations. <strong>Possible de mettre lexemple dapplication de Sophie sur les réseaux avec gradient durbanisation</strong>.</li>
</ul>
</section>
<section id="simulations-article" class="level3" data-number="5.3">
<h3 data-number="5.3" class="anchored" data-anchor-id="simulations-article"><span class="header-section-number">5.3</span> Simulations article</h3>
<ul>
<li><p>Comparer sur clustering unipartite avec versions symétriser des par blocs des matrices dadjacences.</p></li>
<li><p>Corriger structure de simus :</p>
<ul>
<li>Pour noisy <span class="math inline">\alpha</span> :
<ul>
<li>Logit pour envoyer la gaussienne vers (0,1)</li>
<li>Beta contrainte dans (0,1)</li>
</ul></li>
<li>Pour noisy links : Générer <code>nb_clustering</code> collections de taille M puis prélever <span class="math inline">\epsilon_{max}n_r n_c</span> liens à inverser puis pour les <span class="math inline">\epsilon &lt; \epsilon_{max}</span> prélever dans la liste des indices afin davoir des perturbations emboitées.</li>
</ul></li>
</ul>
</section>
</div>
</div>
</div>
</section>
<div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" role="doc-bibliography" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">Les références</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0" role="list">
<div id="ref-mazeletUnsupervisedLearningOptimal" class="csl-entry" role="listitem">
Mazelet, Sonia, Rémi Flamary, et Bertrand Thirion. s.&nbsp;d. <span>«&nbsp;Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs&nbsp;»</span>.
</div>
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
Nenna, Luca. s.&nbsp;d. <span>«&nbsp;Lecture 2: <span>Entropic Optimal Transport</span>&nbsp;»</span>.
</div>
</div></section></div></main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
<script>var lightboxQuarto = GLightbox({"closeEffect":"zoom","descPosition":"bottom","loop":false,"openEffect":"zoom","selector":".lightbox"});
(function() {
let previousOnload = window.onload;
window.onload = () => {
if (previousOnload) {
previousOnload();
}
lightboxQuarto.on('slide_before_load', (data) => {
const { slideIndex, slideNode, slideConfig, player, trigger } = data;
const href = trigger.getAttribute('href');
if (href !== null) {
const imgEl = window.document.querySelector(`a[href="${href}"] img`);
if (imgEl !== null) {
const srcAttr = imgEl.getAttribute("src");
if (srcAttr && srcAttr.startsWith("data:")) {
slideConfig.href = srcAttr;
}
}
}
});
lightboxQuarto.on('slide_after_load', (data) => {
const { slideIndex, slideNode, slideConfig, player, trigger } = data;
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(slideNode);
}
});
};
})();
</script>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

846
suivi/2025-25/2025-25.html Normal file
View file

@ -0,0 +1,846 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 25 2025 : 16 juin - 20 juin Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
/* CSS for citations */
div.csl-bib-body { }
div.csl-entry {
clear: both;
margin-bottom: 0em;
}
.hanging-indent div.csl-entry {
margin-left:2em;
text-indent:-2em;
}
div.csl-left-margin {
min-width:2em;
float:left;
}
div.csl-right-inline {
margin-left:2em;
padding-left:1em;
}
div.csl-indent {
margin-left: 2em;
}</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 25 2025 : 16 juin - 20 juin</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
<div class="quarto-category">inférence</div>
<div class="quarto-category">GNN</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">20 juin 2025</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#todo-list" id="toc-todo-list" class="nav-link active" data-scroll-target="#todo-list"><span class="header-section-number">1</span> TODO List</a>
<ul class="collapse">
<li><a href="#inférence-et-microbes" id="toc-inférence-et-microbes" class="nav-link" data-scroll-target="#inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</a></li>
</ul></li>
<li><a href="#lecture-en-cours" id="toc-lecture-en-cours" class="nav-link" data-scroll-target="#lecture-en-cours"><span class="header-section-number">2</span> Lecture en cours</a>
<ul class="collapse">
<li><a href="#ot" id="toc-ot" class="nav-link" data-scroll-target="#ot"><span class="header-section-number">2.1</span> OT</a></li>
<li><a href="#inférence-de-graphes" id="toc-inférence-de-graphes" class="nav-link" data-scroll-target="#inférence-de-graphes"><span class="header-section-number">2.2</span> Inférence de graphes</a></li>
</ul></li>
<li><a href="#a-discuter" id="toc-a-discuter" class="nav-link" data-scroll-target="#a-discuter"><span class="header-section-number">3</span> A discuter</a>
<ul class="collapse">
<li><a href="#inférence" id="toc-inférence" class="nav-link" data-scroll-target="#inférence"><span class="header-section-number">3.1</span> Inférence</a></li>
</ul></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="todo-list" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="todo-list"><span class="header-section-number">1</span> TODO List</h2>
<ul>
<li><p>Pour clustering de collections sur données réelles :<br>
→ Lintuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs <span class="math inline">(Q_1,Q_2)</span>.</p>
<ul>
<li>✅ Si plusieurs clustering possibles les tester et sélectionner le meilleur</li>
<li>✅ Ré-ajuster les bonnes partitions.</li>
<li>❓Je narrive plus à reproduire le bug pour linférence…</li>
</ul></li>
<li><p><strong>Oui cest bien le cas</strong> Clustering descendant &amp; ascendant : vérifier quau cours du temps le <span class="math inline">BICL_{asc} \geq BICL_{desc}</span></p></li>
<li><p>Creuser et explorer avec easy16s !</p></li>
<li><p>✅ Comparer les perfs du VAE sur Baldock avec colBiSBM par exemple</p></li>
</ul>
<table>
<caption>
AUC values for colBiSBM and VGAE models across cities
</caption>
<thead>
<tr>
<th style="empty-cells: hide;border-bottom:hidden;" colspan="1">
</th>
<th style="border-bottom:hidden;padding-bottom:0; padding-left:3px;padding-right:3px;text-align: center; " colspan="2">
<div style="border-bottom: 1px solid #ddd; padding-bottom: 5px; ">
AUC
</div>
</th>
</tr>
<tr>
<th style="text-align:left;">
City
</th>
<th style="text-align:right;">
colBiSBM
</th>
<th style="text-align:right;">
Untuned VGAE
</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;">
Bristol
</td>
<td style="text-align:right;">
0.798
</td>
<td style="text-align:right;">
0.755
</td>
</tr>
<tr>
<td style="text-align:left;">
Edinburgh
</td>
<td style="text-align:right;">
0.836
</td>
<td style="text-align:right;">
0.774
</td>
</tr>
<tr>
<td style="text-align:left;">
Leeds
</td>
<td style="text-align:right;">
0.854
</td>
<td style="text-align:right;">
0.760
</td>
</tr>
<tr>
<td style="text-align:left;">
Reading
</td>
<td style="text-align:right;">
0.867
</td>
<td style="text-align:right;">
0.740
</td>
</tr>
</tbody>
</table>
<ul>
<li><p>Dé-bugger les simulations :</p>
<ul>
<li>⌛ Inférence : Relancer simus dinférence avec n = 240 pour voir si la qualité augmenter (se rassurer). En fait on est déjà à 240, jai relancé avec M = 4 au lieu de M = 2. En attente résultats MIGALE -&gt; BUG, dois creuser mais juste des problèmes techniques -&gt; Visiblement il y a dautres problèmes que juste le plan de parallélisation.
<ul>
<li><strong>Non ça na pas lair dêtre ça</strong>. Vérifier si problème de version tidyverse pour vapply sur l<strong>inférence</strong>.</li>
<li>⌛Bon le bug ne se reproduit plus… les jobs sont juste trop longs (&gt; 120h) jai relancé, il ne reste que 182/972 conditions.</li>
</ul></li>
</ul></li>
<li><p><strong>Il suffisait de faire la màj soit même…</strong> Si problème de parallélisation vient de pb de version <em>future.callr</em> le signaler à MIGALE.</p></li>
<li><p>Kmeans sur la densité des réseaux subdoré pour pré-partitionner et <em>clusteriser</em>. Car densités déséquilibrées.</p></li>
</ul>
<div id="ref-kmeans-vae" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-ref figure">
<div aria-describedby="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<ul>
<li>Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur lespace latent Jai commencé à regarder un peu</li>
</ul>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-ref quarto-uncaptioned" id="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Reference&nbsp;1
</figcaption>
</figure>
</div>
<section id="inférence-et-microbes" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</h3>
<ul>
<li>Lancer <em>colBiSBM</em> sur <span class="math inline">OTU\times Sample</span> → problème du chargement en mémoire des données à voir</li>
<li>Lancer <em>colSBM</em> sur <span class="math inline">OTU\times OTU</span></li>
<li>Creuser <a href="https://raw.githubusercontent.com/cregouby/R-toulouse-tabnet/main/Tabnet_RR2023_fr_pdf.pdf">TabNet</a> de Christophe Regouby et les <a href="https://github.com/cregouby/Tutoriel_torch">exercices</a></li>
<li>Regarder <strong>SPARTA</strong> Rennes</li>
<li>Lire Papiers compositional data (Aitchison et al.&nbsp;intro)</li>
<li>Lire article multi-niveaux Saint-Clair</li>
<li>Demander à JA si elle connaît des réseaux dinteractions connus par les experts (idée dintégrer une connaissance experte et de voir les différences de structure par rapport à celle attendue)</li>
<li>Ecrire et étudier les modèles pour différents niveaux taxonomiques. <span class="math display">\begin{align*}
i \rightarrow &amp;~N^1_i \subseteq N^2_i \subseteq N^3_i &amp; \text{Taxonomie}\\
Z^0_i \overset{?}{=} &amp; Z^1_i \overset{?}{=} Z^2_i \overset{?}{=} Z^3_i &amp; \text{Groupes fonctionnels}
\end{align*}</span></li>
</ul>
</section>
</section>
<section id="lecture-en-cours" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="lecture-en-cours"><span class="header-section-number">2</span> Lecture en cours</h2>
<section id="ot" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="ot"><span class="header-section-number">2.1</span> OT</h3>
<ul>
<li><span class="citation" data-cites="mazeletUnsupervisedLearningOptimal">Mazelet, Flamary, et Thirion (<a href="#ref-mazeletUnsupervisedLearningOptimal" role="doc-biblioref">s.&nbsp;d.</a>)</span> Intéressant pour le transport optimal entre graphes de tailles différentes</li>
<li><span class="citation" data-cites="nennaLecture2Entropic">Nenna (<a href="#ref-nennaLecture2Entropic" role="doc-biblioref">s.&nbsp;d.b</a>)</span> Pour comprendre le problème dOT régularisé pour lentropie.</li>
<li><span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s.&nbsp;d.a</a>)</span></li>
</ul>
</section>
<section id="inférence-de-graphes" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="inférence-de-graphes"><span class="header-section-number">2.2</span> Inférence de graphes</h3>
<ul>
<li><span class="citation" data-cites="matchadoNetworkAnalysisMethods2021b">Matchado et al. (<a href="#ref-matchadoNetworkAnalysisMethods2021b" role="doc-biblioref">2021</a>)</span> ➡️ Nos données étant compositionnelles il faut utiliser:
<ul>
<li>CCLasso et SparCC</li>
<li>HARMONIES pour zéro inflation (Binomiale négative), COZINE centered log ratio transformation compositionnalité, zéro inflation et forte précision</li>
<li>MixMPLN pour générer K réseaux issus de K Poisson log Normal</li>
<li>mLDM peut enlever les arêtes indirectes.</li>
</ul></li>
<li>NetComi agrège plusieurs méthodes tout en permettant lanalyse différentielle !</li>
</ul>
<p>Si pas compositionnelles :</p>
<ul>
<li>Meta-Network pour arêtes indirectes et non linéaires</li>
<li>Environmentally-Driven Edge detection pour corriger les effets de lenvironnement</li>
</ul>
</section>
</section>
<section id="a-discuter" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="a-discuter"><span class="header-section-number">3</span> A discuter</h2>
<section id="inférence" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="inférence"><span class="header-section-number">3.1</span> Inférence</h3>
<ul>
<li>pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU …)</li>
</ul>
<blockquote class="blockquote">
<p>Combine networks at different taxonomic levels</p>
</blockquote>
<ul>
<li>Inférence + GREMLINS</li>
</ul>
</section>
</section>
<div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" role="doc-bibliography" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">Les références</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0" role="list">
<div id="ref-matchadoNetworkAnalysisMethods2021b" class="csl-entry" role="listitem">
Matchado, Monica Steffi, Michael Lauber, Sandra Reitmeier, Tim Kacprowski, Jan Baumbach, Dirk Haller, et Markus List. 2021. <span>«&nbsp;Network Analysis Methods for Studying Microbial Communities: <span>A</span> Mini Review&nbsp;»</span>. <em>Computational and Structural Biotechnology Journal</em> 19 (janvier): 268798. <a href="https://doi.org/10.1016/j.csbj.2021.05.001">https://doi.org/10.1016/j.csbj.2021.05.001</a>.
</div>
<div id="ref-mazeletUnsupervisedLearningOptimal" class="csl-entry" role="listitem">
Mazelet, Sonia, Rémi Flamary, et Bertrand Thirion. s.&nbsp;d. <span>«&nbsp;Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs&nbsp;»</span>.
</div>
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
Nenna, Luca. s.&nbsp;d.a. <span>«&nbsp;Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual&nbsp;»</span>.
</div>
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
———. s.&nbsp;d.b. <span>«&nbsp;Lecture 2: <span>Entropic Optimal Transport</span>&nbsp;»</span>.
</div>
</div></section></div></main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

811
suivi/2025-27/2025-27.html Normal file
View file

@ -0,0 +1,811 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 27 2025 : 30 juin - 4 juillet Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
/* CSS for citations */
div.csl-bib-body { }
div.csl-entry {
clear: both;
margin-bottom: 0em;
}
.hanging-indent div.csl-entry {
margin-left:2em;
text-indent:-2em;
}
div.csl-left-margin {
min-width:2em;
float:left;
}
div.csl-right-inline {
margin-left:2em;
padding-left:1em;
}
div.csl-indent {
margin-left: 2em;
}</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 27 2025 : 30 juin - 4 juillet</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
<div class="quarto-category">inférence</div>
<div class="quarto-category">GNN</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">30 juin 2025</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#todo-list" id="toc-todo-list" class="nav-link active" data-scroll-target="#todo-list"><span class="header-section-number">1</span> TODO List</a>
<ul class="collapse">
<li><a href="#inférence-et-microbes" id="toc-inférence-et-microbes" class="nav-link" data-scroll-target="#inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</a></li>
</ul></li>
<li><a href="#lectures-en-cours" id="toc-lectures-en-cours" class="nav-link" data-scroll-target="#lectures-en-cours"><span class="header-section-number">2</span> Lectures en cours 📚</a>
<ul class="collapse">
<li><a href="#ot" id="toc-ot" class="nav-link" data-scroll-target="#ot"><span class="header-section-number">2.1</span> OT</a></li>
<li><a href="#inférence-de-graphes" id="toc-inférence-de-graphes" class="nav-link" data-scroll-target="#inférence-de-graphes"><span class="header-section-number">2.2</span> Inférence de graphes</a></li>
<li><a href="#causalité-1" id="toc-causalité-1" class="nav-link" data-scroll-target="#causalité-1"><span class="header-section-number">2.3</span> Causalité</a></li>
</ul></li>
<li><a href="#a-discuter" id="toc-a-discuter" class="nav-link" data-scroll-target="#a-discuter"><span class="header-section-number">3</span> A discuter</a>
<ul class="collapse">
<li><a href="#congés-ps" id="toc-congés-ps" class="nav-link" data-scroll-target="#congés-ps"><span class="header-section-number">3.1</span> Congés P&amp;S</a></li>
<li><a href="#thèse" id="toc-thèse" class="nav-link" data-scroll-target="#thèse"><span class="header-section-number">3.2</span> Thèse</a></li>
<li><a href="#interprétation-écologiques-résultats-de-baldock" id="toc-interprétation-écologiques-résultats-de-baldock" class="nav-link" data-scroll-target="#interprétation-écologiques-résultats-de-baldock"><span class="header-section-number">3.3</span> Interprétation écologiques résultats de Baldock</a></li>
<li><a href="#inférence" id="toc-inférence" class="nav-link" data-scroll-target="#inférence"><span class="header-section-number">3.4</span> Inférence</a></li>
</ul></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="todo-list" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="todo-list"><span class="header-section-number">1</span> TODO List</h2>
<ul>
<li><p>Pour clustering de collections sur données réelles :<br>
→ Lintuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs <span class="math inline">(Q_1,Q_2)</span>.</p>
<ul>
<li>❓Je narrive plus à reproduire le bug pour linférence…</li>
<li>Sassurer que ça marche et relancer</li>
</ul></li>
<li><p>Creuser et explorer avec easy16s !</p></li>
<li><p>✅ Ajouter le tableau de comparaison du VGAE avec colBiSBM</p></li>
<li><p><strong>Calcul du score F1</strong>Revérifier que jentraîne correctement le VGAE car résultats de généralisation trop bons sur les autres réseaux Doré, ce qui est étonnant</p></li>
<li><p>Regarder la liste des cours du MathSV et de lUniversité Paris-Saclay.</p></li>
<li><p>Dé-bugger les simulations :</p>
<ul>
<li>⌛ Inférence : Relancer simus dinférence avec n = 240 pour voir si la qualité augmenter (se rassurer). En fait on est déjà à 240, jai relancé avec M = 4 au lieu de M = 2. En attente résultats MIGALE -&gt; BUG, dois creuser mais juste des problèmes techniques -&gt; Visiblement il y a dautres problèmes que juste le plan de parallélisation.
<ul>
<li>⌛Bon le bug ne se reproduit plus… les jobs sont juste trop longs (&gt; 120h) jai relancé, il ne reste que 182/972 conditions.</li>
</ul></li>
</ul></li>
<li><p><strong>Plutôt regarder pour introduire un modèle <span class="math inline">\delta</span>-colBiSBM</strong>. Kmeans sur la densité des réseaux subdoré pour pré-partitionner et <em>clusteriser</em>. Car densités déséquilibrées.</p></li>
</ul>
<div id="ref-kmeans-vae" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-ref figure">
<div aria-describedby="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<ul>
<li>Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur lespace latent Jai commencé à regarder un peu</li>
</ul>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-ref quarto-uncaptioned" id="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Reference&nbsp;1
</figcaption>
</figure>
</div>
<section id="inférence-et-microbes" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</h3>
<ul>
<li>Lancer <em>colBiSBM</em> sur <span class="math inline">OTU\times Sample</span> → problème du chargement en mémoire des données à voir</li>
<li>Lancer <em>colSBM</em> sur <span class="math inline">OTU\times OTU</span></li>
<li>✅ Creuser <a href="https://raw.githubusercontent.com/cregouby/R-toulouse-tabnet/main/Tabnet_RR2023_fr_pdf.pdf">TabNet</a> de Christophe Regouby</li>
<li>TabNet pratiquer les <a href="https://github.com/cregouby/Tutoriel_torch">exercices</a></li>
<li>Regarder <strong>SPARTA</strong> Rennes</li>
<li>Lire Papiers compositional data (Aitchison et al.&nbsp;intro)</li>
<li>Lire article multi-niveaux Saint-Clair</li>
<li>Ecrire et étudier les modèles pour différents niveaux taxonomiques. <span class="math display">\begin{align*}
i \rightarrow &amp;~N^1_i \subseteq N^2_i \subseteq N^3_i &amp; \text{Taxonomie}\\
Z^0_i \overset{?}{=} &amp; Z^1_i \overset{?}{=} Z^2_i \overset{?}{=} Z^3_i &amp; \text{Groupes fonctionnels}
\end{align*}</span></li>
</ul>
<section id="causalité" class="level4" data-number="1.1.1">
<h4 data-number="1.1.1" class="anchored" data-anchor-id="causalité"><span class="header-section-number">1.1.1</span> Causalité</h4>
<p>Plus sur le temps long, à regarder</p>
<ul>
<li>GT causalité</li>
<li>Daria Bystrova lire présentation <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span> (Meek rules, V-structure)</li>
</ul>
</section>
</section>
</section>
<section id="lectures-en-cours" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="lectures-en-cours"><span class="header-section-number">2</span> Lectures en cours 📚</h2>
<section id="ot" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="ot"><span class="header-section-number">2.1</span> OT</h3>
<ul>
<li><span class="citation" data-cites="mazeletUnsupervisedLearningOptimal">Mazelet, Flamary, et Thirion (<a href="#ref-mazeletUnsupervisedLearningOptimal" role="doc-biblioref">s.&nbsp;d.</a>)</span> Intéressant pour le transport optimal entre graphes de tailles différentes</li>
<li><span class="citation" data-cites="nennaLecture2Entropic">Nenna (<a href="#ref-nennaLecture2Entropic" role="doc-biblioref">s.&nbsp;d.b</a>)</span> Pour comprendre le problème dOT régularisé pour lentropie.</li>
<li><span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s.&nbsp;d.a</a>)</span></li>
</ul>
</section>
<section id="inférence-de-graphes" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="inférence-de-graphes"><span class="header-section-number">2.2</span> Inférence de graphes</h3>
<ul>
<li><p><span class="citation" data-cites="Morton2021.11.09.467939">Morton et al. (<a href="#ref-Morton2021.11.09.467939" role="doc-biblioref">2021</a>)</span> VAE with Multinomial Logistic Normal distribution using Isometric Log Ratio tranform. Plus rapide que les autres méthodes et performances équivalentes</p></li>
<li><p><span class="citation" data-cites="aitchisonStatisticalAnalysisCompositional1982a">Aitchison (<a href="#ref-aitchisonStatisticalAnalysisCompositional1982a" role="doc-biblioref">1982</a>)</span></p></li>
<li><p>❗📖 <span class="citation" data-cites="payneFiniteMixturesMultivariate2023">Payne et al. (<a href="#ref-payneFiniteMixturesMultivariate2023" role="doc-biblioref">2023</a>)</span> sur MixMPLN</p></li>
</ul>
</section>
<section id="causalité-1" class="level3" data-number="2.3">
<h3 data-number="2.3" class="anchored" data-anchor-id="causalité-1"><span class="header-section-number">2.3</span> Causalité</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span></li>
</ul>
</section>
</section>
<section id="a-discuter" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="a-discuter"><span class="header-section-number">3</span> A discuter</h2>
<section id="congés-ps" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="congés-ps"><span class="header-section-number">3.1</span> Congés P&amp;S</h3>
<ul>
<li>✅ Quand est-ce quon ne se voit pas ? Et donc quand est-ce quon se voit après ?</li>
<li>✅ Calendrier partagé</li>
</ul>
</section>
<section id="thèse" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="thèse"><span class="header-section-number">3.2</span> Thèse</h3>
<ul>
<li><p>✅ Que prévoir pour le CSI</p>
<ul>
<li>👍 Un petit rapport</li>
<li>👍 Une présentation</li>
</ul></li>
<li><p>👨‍🏫 <strong>Demander à Pierre</strong> Comment valider les enseignements comme formations Adum ?</p></li>
<li><p>✅ Des recommandations de formations, voir les cours du MathSV</p></li>
</ul>
</section>
<section id="interprétation-écologiques-résultats-de-baldock" class="level3" data-number="3.3">
<h3 data-number="3.3" class="anchored" data-anchor-id="interprétation-écologiques-résultats-de-baldock"><span class="header-section-number">3.3</span> Interprétation écologiques résultats de Baldock</h3>
<ul>
<li>⌛ Point avec Elisa, <strong>oui on relance</strong></li>
</ul>
</section>
<section id="inférence" class="level3" data-number="3.4">
<h3 data-number="3.4" class="anchored" data-anchor-id="inférence"><span class="header-section-number">3.4</span> Inférence</h3>
<ul>
<li>pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU …)</li>
</ul>
<blockquote class="blockquote">
<p>Combine networks at different taxonomic levels</p>
</blockquote>
<ul>
<li>Inférence + GREMLINS</li>
</ul>
</section>
</section>
<div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" role="doc-bibliography" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">Les références</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0" role="list">
<div id="ref-aitchisonStatisticalAnalysisCompositional1982a" class="csl-entry" role="listitem">
Aitchison, J. 1982. <span>«&nbsp;The <span>Statistical Analysis</span> of <span>Compositional Data</span>&nbsp;»</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 13977. <a href="https://www.jstor.org/stable/2345821">https://www.jstor.org/stable/2345821</a>.
</div>
<div id="ref-bystrovaCausalDiscovery" class="csl-entry" role="listitem">
Bystrova, Daria. s.&nbsp;d. <span>«&nbsp;Causal Discovery&nbsp;»</span>.
</div>
<div id="ref-mazeletUnsupervisedLearningOptimal" class="csl-entry" role="listitem">
Mazelet, Sonia, Rémi Flamary, et Bertrand Thirion. s.&nbsp;d. <span>«&nbsp;Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs&nbsp;»</span>.
</div>
<div id="ref-Morton2021.11.09.467939" class="csl-entry" role="listitem">
Morton, James T., Justin Silverman, Gleb Tikhonov, Harri Lähdesmäki, et Rich Bonneau. 2021. <span>«&nbsp;Scalable Estimation of Microbial Co-Occurrence Networks with <span>Variational Autoencoders</span>&nbsp;»</span>. <em>bioRxiv : the preprint server for biology</em>. <a href="https://doi.org/10.1101/2021.11.09.467939">https://doi.org/10.1101/2021.11.09.467939</a>.
</div>
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
Nenna, Luca. s.&nbsp;d.a. <span>«&nbsp;Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual&nbsp;»</span>.
</div>
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
———. s.&nbsp;d.b. <span>«&nbsp;Lecture 2: <span>Entropic Optimal Transport</span>&nbsp;»</span>.
</div>
<div id="ref-payneFiniteMixturesMultivariate2023" class="csl-entry" role="listitem">
Payne, Andrea, Anjali Silva, Steven J. Rothstein, Paul D. McNicholas, et Sanjeena Subedi. 2023. <span>«&nbsp;Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span>&nbsp;»</span>. 13 novembre 2023. <a href="https://doi.org/10.48550/arXiv.2311.07762">https://doi.org/10.48550/arXiv.2311.07762</a>.
</div>
</div></section></div></main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

862
suivi/2025-28/2025-28.html Normal file
View file

@ -0,0 +1,862 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 28 2025 : 07 juillet - 11 juillet Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
/* CSS for citations */
div.csl-bib-body { }
div.csl-entry {
clear: both;
margin-bottom: 0em;
}
.hanging-indent div.csl-entry {
margin-left:2em;
text-indent:-2em;
}
div.csl-left-margin {
min-width:2em;
float:left;
}
div.csl-right-inline {
margin-left:2em;
padding-left:1em;
}
div.csl-indent {
margin-left: 2em;
}</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 28 2025 : 07 juillet - 11 juillet</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
<div class="quarto-category">inférence</div>
<div class="quarto-category">GNN</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">7 juillet 2025</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 juillet 2025</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#todo-list" id="toc-todo-list" class="nav-link active" data-scroll-target="#todo-list"><span class="header-section-number">1</span> TODO List</a>
<ul class="collapse">
<li><a href="#inférence-et-microbes" id="toc-inférence-et-microbes" class="nav-link" data-scroll-target="#inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</a></li>
</ul></li>
<li><a href="#biblio-à-faire" id="toc-biblio-à-faire" class="nav-link" data-scroll-target="#biblio-à-faire"><span class="header-section-number">2</span> Biblio à faire</a></li>
<li><a href="#lectures-en-cours" id="toc-lectures-en-cours" class="nav-link" data-scroll-target="#lectures-en-cours"><span class="header-section-number">3</span> Lectures en cours 📚</a>
<ul class="collapse">
<li><a href="#ot" id="toc-ot" class="nav-link" data-scroll-target="#ot"><span class="header-section-number">3.1</span> OT</a></li>
<li><a href="#inférence-de-graphes" id="toc-inférence-de-graphes" class="nav-link" data-scroll-target="#inférence-de-graphes"><span class="header-section-number">3.2</span> Inférence de graphes</a></li>
<li><a href="#causalité-1" id="toc-causalité-1" class="nav-link" data-scroll-target="#causalité-1"><span class="header-section-number">3.3</span> Causalité</a></li>
<li><a href="#largest-gaps" id="toc-largest-gaps" class="nav-link" data-scroll-target="#largest-gaps"><span class="header-section-number">3.4</span> Largest Gaps</a></li>
</ul></li>
<li><a href="#a-discuter" id="toc-a-discuter" class="nav-link" data-scroll-target="#a-discuter"><span class="header-section-number">4</span> A discuter</a>
<ul class="collapse">
<li><a href="#congés-ps" id="toc-congés-ps" class="nav-link" data-scroll-target="#congés-ps"><span class="header-section-number">4.1</span> Congés P&amp;S</a></li>
<li><a href="#thèse" id="toc-thèse" class="nav-link" data-scroll-target="#thèse"><span class="header-section-number">4.2</span> Thèse</a></li>
<li><a href="#interprétation-écologiques-résultats-de-baldock" id="toc-interprétation-écologiques-résultats-de-baldock" class="nav-link" data-scroll-target="#interprétation-écologiques-résultats-de-baldock"><span class="header-section-number">4.3</span> Interprétation écologiques résultats de Baldock</a></li>
<li><a href="#inférence" id="toc-inférence" class="nav-link" data-scroll-target="#inférence"><span class="header-section-number">4.4</span> Inférence</a></li>
</ul></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="todo-list" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="todo-list"><span class="header-section-number">1</span> TODO List</h2>
<ul>
<li><p>Pour clustering de collections sur données <del>réelles</del> :<br>
→ Lintuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs <span class="math inline">(Q_1,Q_2)</span>.</p>
<ul>
<li>❓Je narrive plus à reproduire le bug pour linférence…</li>
<li>Sassurer que ça marche et relancer</li>
</ul></li>
<li><p>Creuser et explorer avec easy16s !</p></li>
<li><p><strong>Calcul du score F1</strong>Revérifier que jentraîne correctement le VGAE car résultats de généralisation trop bons sur les autres réseaux Doré, ce qui est étonnant</p></li>
<li><p>Ajouter au tableau comparatif sep BiSBM</p></li>
<li><p>Regarder les codes Mangal database pour <span class="math inline">\delta</span></p></li>
<li><p>✅ Formules ci-dessous. Voir <span class="math inline">\delta</span> mais additif</p></li>
</ul>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="math inline">\delta</span> additif Bernoulli
</div>
</div>
<div class="callout-body-container callout-body">
<p>En Bernoulli pas de forme analytique non plus : Pour <span class="math inline">\alpha_{qr}</span>: <span class="math display"> \sum_{m=1}^M \sum_{i=1}^{n_1^m} \sum_{j=1}^{n_2^m} \tau_{iq}^{1,m}\tau_{jr}^{2,m}(\frac{X_{ij}^m}{\alpha_{qr}} + \frac{(1-X_{ij}^m)}{\alpha_{qr} + \delta_m -1}) = 0</span> <span class="math display">\Leftrightarrow \sum_m \frac{e^m_{qr}}{\alpha_{qr}} + \frac{1}{\alpha_{qr}+\delta_m-1} (n^m_{qr}-e^m_{qr}) = 0</span></p>
<p>Et pour <span class="math inline">\delta_m</span>: <span class="math display"> \sum_{i=1}^{n_1^m} \sum_{j=1}^{n_2^m} \sum_{q=1}^{Q_1} \sum_{r=1}^{Q_2} \tau_{iq}^{1,m}\tau_{jr}^{2,m}(\frac{X_{ij}^m}{\delta_{m}} + \frac{(1-X_{ij}^m)}{\alpha_{qr} + \delta_m -1}) = 0</span></p>
</div>
</div>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="math inline">\delta</span> additif Poisson
</div>
</div>
<div class="callout-body-container callout-body">
<p>Forme analytique mais risque de confusion ? <span class="math display">\widehat{\delta_m} = \frac{\sum_{q,r} e^m_{qr}}{\sum_{q,r} n^m_{qr}},~\widehat{\alpha_{qr}} = \frac{\sum_{m} e^m_{qr}}{\sum_{m} n^m_{qr}} </span></p>
</div>
</div>
<ul>
<li><p>Attente retour Pierre pour faire dautres clustering</p></li>
<li><p>✅ Implémenter décodeur Generalized Random Dot Product.</p></li>
<li><p>✅ Réimplémentation propre et évolutive du DeepBVGAE (suivi des guidelines PyTorch Geometric)</p></li>
<li><p>Vérifier si il ny a pas de data leakage (ie je prends aussi les données de val et de test pour prédire ?)</p></li>
<li><p>Dé-bugger les simulations :</p>
<ul>
<li>✅ Inférence : Relancer simus dinférence avec n = 240 pour voir si la qualité augmenter (se rassurer). En fait on est déjà à 240, jai relancé avec M = 4 au lieu de M = 2. En attente résultats MIGALE -&gt; BUG, dois creuser mais juste des problèmes techniques -&gt; Visiblement il y a dautres problèmes que juste le plan de parallélisation.</li>
</ul></li>
<li><p><strong>Plutôt regarder pour introduire un modèle <span class="math inline">\delta</span>-colBiSBM</strong>.</p>
<ul>
<li>Ajouter le produit par <span class="math inline">\delta</span> là où nécessaire</li>
<li>Ajouter les modèles <span class="math inline">\delta</span>, <span class="math inline">\delta\pi, \dots</span> et les blocs conditionnels</li>
<li>Ajouter les tests unitaires adéquats et les vérifier</li>
</ul></li>
<li><p>🛑<strong>Dabord je lis la biblio dessus</strong> Regarder <em>Largest gap</em> sur réseaux Doré</p></li>
<li><p>Essayer <em>clustering</em> sur <code>supinfo</code></p></li>
<li><p>Homogénéiser notations dans les supplementaries</p></li>
</ul>
<div id="ref-kmeans-vae" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-ref figure">
<div aria-describedby="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<ul>
<li>Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur lespace latent Jai commencé à regarder un peu</li>
</ul>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-ref quarto-uncaptioned" id="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Reference&nbsp;1
</figcaption>
</figure>
</div>
<section id="inférence-et-microbes" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</h3>
<ul>
<li>Lancer <em>colBiSBM</em> sur <span class="math inline">OTU\times Sample</span> → problème du chargement en mémoire des données à voir</li>
<li>Lancer <em>colSBM</em> sur <span class="math inline">OTU\times OTU</span></li>
<li>TabNet pratiquer les <a href="https://github.com/cregouby/Tutoriel_torch">exercices</a></li>
<li>Regarder <strong>SPARTA</strong> Rennes</li>
<li>Lire Papiers compositional data (Aitchison et al.&nbsp;intro)</li>
<li>Lire article multi-niveaux Saint-Clair</li>
<li>Ecrire et étudier les modèles pour différents niveaux taxonomiques. <span class="math display">\begin{align*}
i \rightarrow &amp;~N^1_i \subseteq N^2_i \subseteq N^3_i &amp; \text{Taxonomie}\\
Z^0_i \overset{?}{=} &amp; Z^1_i \overset{?}{=} Z^2_i \overset{?}{=} Z^3_i &amp; \text{Groupes fonctionnels}
\end{align*}</span></li>
</ul>
<section id="causalité" class="level4" data-number="1.1.1">
<h4 data-number="1.1.1" class="anchored" data-anchor-id="causalité"><span class="header-section-number">1.1.1</span> Causalité</h4>
<p>Plus sur le temps long, à regarder</p>
<ul>
<li>GT causalité</li>
<li>Daria Bystrova lire présentation <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span> (Meek rules, V-structure)</li>
</ul>
</section>
</section>
</section>
<section id="biblio-à-faire" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="biblio-à-faire"><span class="header-section-number">2</span> Biblio à faire</h2>
<ul>
<li>Regarder Transport optimal graphes bipartite.</li>
<li>HDR VB, chapitre de modèle à blocs latents, bcp travaillé sur bipartite OT, comparaison clustering, adaption ARI, <em>Largest Gap</em></li>
</ul>
</section>
<section id="lectures-en-cours" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="lectures-en-cours"><span class="header-section-number">3</span> Lectures en cours 📚</h2>
<section id="ot" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="ot"><span class="header-section-number">3.1</span> OT</h3>
<ul>
<li><span class="citation" data-cites="mazeletUnsupervisedLearningOptimal">Mazelet, Flamary, et Thirion (<a href="#ref-mazeletUnsupervisedLearningOptimal" role="doc-biblioref">s.&nbsp;d.</a>)</span> Intéressant pour le transport optimal entre graphes de tailles différentes | Regarder si regularization entropique ne marche pas bien pour le graphe.</li>
<li><span class="citation" data-cites="nennaLecture2Entropic">Nenna (<a href="#ref-nennaLecture2Entropic" role="doc-biblioref">s.&nbsp;d.b</a>)</span> Pour comprendre le problème dOT régularisé pour lentropie.</li>
<li><span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s.&nbsp;d.a</a>)</span></li>
</ul>
</section>
<section id="inférence-de-graphes" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="inférence-de-graphes"><span class="header-section-number">3.2</span> Inférence de graphes</h3>
<ul>
<li><p><span class="citation" data-cites="aitchisonStatisticalAnalysisCompositional1982a">Aitchison (<a href="#ref-aitchisonStatisticalAnalysisCompositional1982a" role="doc-biblioref">1982</a>)</span>, en cours</p></li>
<li><p>❗📖 <span class="citation" data-cites="payneFiniteMixturesMultivariate2023">Payne et al. (<a href="#ref-payneFiniteMixturesMultivariate2023" role="doc-biblioref">2023</a>)</span> sur MixMPLN</p></li>
</ul>
</section>
<section id="causalité-1" class="level3" data-number="3.3">
<h3 data-number="3.3" class="anchored" data-anchor-id="causalité-1"><span class="header-section-number">3.3</span> Causalité</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span></li>
</ul>
</section>
<section id="largest-gaps" class="level3" data-number="3.4">
<h3 data-number="3.4" class="anchored" data-anchor-id="largest-gaps"><span class="header-section-number">3.4</span> Largest Gaps</h3>
<ul>
<li><span class="citation" data-cites="braultGeneralisationLalgorithmeLargest">Brault, Channarond, et Robert (<a href="#ref-braultGeneralisationLalgorithmeLargest" role="doc-biblioref">s.&nbsp;d.</a>)</span> petit résumé de lalgo de <span class="citation" data-cites="braultFastConsistentAlgorithm2023">Brault et Channarond (<a href="#ref-braultFastConsistentAlgorithm2023" role="doc-biblioref">2023</a>)</span></li>
<li>❗📖 <span class="citation" data-cites="braultFastConsistentAlgorithm2023">Brault et Channarond (<a href="#ref-braultFastConsistentAlgorithm2023" role="doc-biblioref">2023</a>)</span></li>
<li>❗📖 <span class="citation" data-cites="channarondClassificationEstimationStochastic2012">Channarond, Daudin, et Robin (<a href="#ref-channarondClassificationEstimationStochastic2012" role="doc-biblioref">2012</a>)</span> le papier qui introduit le <em>Largest Gaps</em></li>
</ul>
</section>
</section>
<section id="a-discuter" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="a-discuter"><span class="header-section-number">4</span> A discuter</h2>
<section id="congés-ps" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="congés-ps"><span class="header-section-number">4.1</span> Congés P&amp;S</h3>
</section>
<section id="thèse" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="thèse"><span class="header-section-number">4.2</span> Thèse</h3>
<ul>
<li>Faire préz CSI</li>
<li>Faire rapport CSI</li>
</ul>
</section>
<section id="interprétation-écologiques-résultats-de-baldock" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="interprétation-écologiques-résultats-de-baldock"><span class="header-section-number">4.3</span> Interprétation écologiques résultats de Baldock</h3>
<ul>
<li>⌛ Point avec Elisa, <strong>oui on relance</strong></li>
</ul>
</section>
<section id="inférence" class="level3" data-number="4.4">
<h3 data-number="4.4" class="anchored" data-anchor-id="inférence"><span class="header-section-number">4.4</span> Inférence</h3>
<ul>
<li>pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU …)</li>
</ul>
<blockquote class="blockquote">
<p>Combine networks at different taxonomic levels</p>
</blockquote>
<ul>
<li>Inférence + GREMLINS</li>
</ul>
</section>
</section>
<div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" role="doc-bibliography" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">Les références</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0" role="list">
<div id="ref-aitchisonStatisticalAnalysisCompositional1982a" class="csl-entry" role="listitem">
Aitchison, J. 1982. <span>«&nbsp;The <span>Statistical Analysis</span> of <span>Compositional Data</span>&nbsp;»</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 13977. <a href="https://www.jstor.org/stable/2345821">https://www.jstor.org/stable/2345821</a>.
</div>
<div id="ref-braultFastConsistentAlgorithm2023" class="csl-entry" role="listitem">
Brault, Vincent, et Antoine Channarond. 2023. <span>«&nbsp;Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span>&nbsp;»</span>. 9 mars 2023. <a href="https://doi.org/10.48550/arXiv.1610.09005">https://doi.org/10.48550/arXiv.1610.09005</a>.
</div>
<div id="ref-braultGeneralisationLalgorithmeLargest" class="csl-entry" role="listitem">
Brault, Vincent, Antoine Channarond, et Valérie Robert. s.&nbsp;d. <span>«&nbsp;Généralisation de lalgorithme Largest Gaps pour le modèle des blocs latents non-paramétrique&nbsp;»</span>.
</div>
<div id="ref-bystrovaCausalDiscovery" class="csl-entry" role="listitem">
Bystrova, Daria. s.&nbsp;d. <span>«&nbsp;Causal Discovery&nbsp;»</span>.
</div>
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>«&nbsp;Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees&nbsp;»</span>. <em>Electronic Journal of Statistics</em> 6 (janvier). <a href="https://doi.org/10.1214/12-ejs753">https://doi.org/10.1214/12-ejs753</a>.
</div>
<div id="ref-mazeletUnsupervisedLearningOptimal" class="csl-entry" role="listitem">
Mazelet, Sonia, Rémi Flamary, et Bertrand Thirion. s.&nbsp;d. <span>«&nbsp;Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs&nbsp;»</span>.
</div>
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
Nenna, Luca. s.&nbsp;d.a. <span>«&nbsp;Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual&nbsp;»</span>.
</div>
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
———. s.&nbsp;d.b. <span>«&nbsp;Lecture 2: <span>Entropic Optimal Transport</span>&nbsp;»</span>.
</div>
<div id="ref-payneFiniteMixturesMultivariate2023" class="csl-entry" role="listitem">
Payne, Andrea, Anjali Silva, Steven J. Rothstein, Paul D. McNicholas, et Sanjeena Subedi. 2023. <span>«&nbsp;Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span>&nbsp;»</span>. 13 novembre 2023. <a href="https://doi.org/10.48550/arXiv.2311.07762">https://doi.org/10.48550/arXiv.2311.07762</a>.
</div>
</div></section></div></main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

1771
suivi/2025-29/2025-29.html Normal file

File diff suppressed because it is too large Load diff

924
suivi/2025-33/2025-33.html Normal file
View file

@ -0,0 +1,924 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 33 2025 : 11 août - 15 août Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
/* CSS for citations */
div.csl-bib-body { }
div.csl-entry {
clear: both;
margin-bottom: 0em;
}
.hanging-indent div.csl-entry {
margin-left:2em;
text-indent:-2em;
}
div.csl-left-margin {
min-width:2em;
float:left;
}
div.csl-right-inline {
margin-left:2em;
padding-left:1em;
}
div.csl-indent {
margin-left: 2em;
}</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script src="../../site_libs/quarto-contrib/glightbox/glightbox.min.js"></script>
<link href="../../site_libs/quarto-contrib/glightbox/glightbox.min.css" rel="stylesheet">
<link href="../../site_libs/quarto-contrib/glightbox/lightbox.css" rel="stylesheet">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 33 2025 : 11 août - 15 août</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
<div class="quarto-category">inférence</div>
<div class="quarto-category">GNN</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">14 août 2025</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#todo-list" id="toc-todo-list" class="nav-link active" data-scroll-target="#todo-list"><span class="header-section-number">1</span> TODO List</a>
<ul class="collapse">
<li><a href="#inférence-et-microbes" id="toc-inférence-et-microbes" class="nav-link" data-scroll-target="#inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</a></li>
</ul></li>
<li><a href="#biblio-à-faire" id="toc-biblio-à-faire" class="nav-link" data-scroll-target="#biblio-à-faire"><span class="header-section-number">2</span> Biblio à faire</a></li>
<li><a href="#lectures-en-cours" id="toc-lectures-en-cours" class="nav-link" data-scroll-target="#lectures-en-cours"><span class="header-section-number">3</span> Lectures en cours 📚</a>
<ul class="collapse">
<li><a href="#hdr-vincent-brault" id="toc-hdr-vincent-brault" class="nav-link" data-scroll-target="#hdr-vincent-brault"><span class="header-section-number">3.1</span> HDR Vincent Brault</a></li>
<li><a href="#ot" id="toc-ot" class="nav-link" data-scroll-target="#ot"><span class="header-section-number">3.2</span> OT</a></li>
<li><a href="#inférence-de-graphes" id="toc-inférence-de-graphes" class="nav-link" data-scroll-target="#inférence-de-graphes"><span class="header-section-number">3.3</span> Inférence de graphes</a></li>
<li><a href="#causalité-1" id="toc-causalité-1" class="nav-link" data-scroll-target="#causalité-1"><span class="header-section-number">3.4</span> Causalité</a></li>
<li><a href="#largest-gaps" id="toc-largest-gaps" class="nav-link" data-scroll-target="#largest-gaps"><span class="header-section-number">3.5</span> Largest Gaps</a></li>
</ul></li>
<li><a href="#a-discuter" id="toc-a-discuter" class="nav-link" data-scroll-target="#a-discuter"><span class="header-section-number">4</span> A discuter</a>
<ul class="collapse">
<li><a href="#congés-ps" id="toc-congés-ps" class="nav-link" data-scroll-target="#congés-ps"><span class="header-section-number">4.1</span> Congés P&amp;S</a></li>
<li><a href="#thèse" id="toc-thèse" class="nav-link" data-scroll-target="#thèse"><span class="header-section-number">4.2</span> Thèse</a></li>
<li><a href="#interprétation-écologiques-résultats-de-baldock" id="toc-interprétation-écologiques-résultats-de-baldock" class="nav-link" data-scroll-target="#interprétation-écologiques-résultats-de-baldock"><span class="header-section-number">4.3</span> Interprétation écologiques résultats de Baldock</a></li>
<li><a href="#inférence" id="toc-inférence" class="nav-link" data-scroll-target="#inférence"><span class="header-section-number">4.4</span> Inférence</a></li>
</ul></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="todo-list" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="todo-list"><span class="header-section-number">1</span> TODO List</h2>
<ul>
<li><p>Pour clustering de collections sur données <del>réelles</del> :<br>
→ Lintuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs <span class="math inline">(Q_1,Q_2)</span>.</p>
<ul>
<li>❓Je narrive plus à reproduire le bug pour linférence…</li>
<li>😫 bug encore. Sassurer que ça marche et relancer</li>
</ul></li>
<li><p><strong>En fait je donne tous les degrés donc le GNN a juste à retrouver les arêtes non vues</strong>.Revérifier que jentraîne correctement le VGAE car résultats de généralisation trop bons sur les autres réseaux Doré, ce qui est étonnant Pour corriger cet effet :</p>
<ul>
<li>Donner la matrice identité comme features</li>
<li>Corriger les degrés calculés.</li>
</ul></li>
<li><p>✅ Ajouter au tableau comparatif sep BiSBM</p></li>
<li><p>✅ Pour sassurer que colBiSBM marche, il faut comparer avec une proportion de :</p>
<ul>
<li><em>Missing links</em>, ie des faux zéros</li>
<li><em>NA</em> en <em>Missing at random (MAR)</em></li>
</ul>
<p><a href="figs/auc-model.png" class="lightbox" data-gallery="quarto-lightbox-gallery-1"><img src="figs/auc-model.png" class="img-fluid"></a></p></li>
<li><p>Faible performances de linférence :</p>
<ul>
<li>Vérifier que les conditions didentifiabilité des modèles fautifs sont bien remplies.</li>
<li>Récupérer des jeux de paramètres et essayer de reproduire les résultats.</li>
</ul></li>
<li><p>Clustering sur Doré :</p>
<ul>
<li>✅ Désaggréger les réseaux et relancer le clustering sur certains auteurs.</li>
<li>Regarder pour les couples date+nom les études et le nombre de réseaux analysables (Possible demander à Élisa)
<ul>
<li>⌛ Chamberlain et al semble intéressant à regarder !</li>
</ul></li>
<li>Clusteriser sur la base des noms et voir parmi les réseaux Européens (désagrégés ?)</li>
<li>Si M &gt; 10, alors voir si je retrouve les mêmes résultats que dans les études.</li>
</ul></li>
<li><p>Regarder les codes Mangal database pour <span class="math inline">\delta</span></p></li>
<li><p>Voir <span class="math inline">\delta</span> mais additif</p></li>
</ul>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="math inline">\delta</span> additif Bernoulli
</div>
</div>
<div class="callout-body-container callout-body">
<p>En Bernoulli pas de forme analytique non plus : Pour <span class="math inline">\alpha_{qr}</span>: <span class="math display"> \sum_{m=1}^M \sum_{i=1}^{n_1^m} \sum_{j=1}^{n_2^m} \tau_{iq}^{1,m}\tau_{jr}^{2,m}(\frac{X_{ij}^m}{\alpha_{qr}} + \frac{(1-X_{ij}^m)}{\alpha_{qr} + \delta_m -1}) = 0</span> <span class="math display">\Leftrightarrow \sum_m \frac{e^m_{qr}}{\alpha_{qr}} + \frac{1}{\alpha_{qr}+\delta_m-1} (n^m_{qr}-e^m_{qr}) = 0</span></p>
<p>Et pour <span class="math inline">\delta_m</span>: <span class="math display"> \sum_{i=1}^{n_1^m} \sum_{j=1}^{n_2^m} \sum_{q=1}^{Q_1} \sum_{r=1}^{Q_2} \tau_{iq}^{1,m}\tau_{jr}^{2,m}(\frac{X_{ij}^m}{\delta_{m}} + \frac{(1-X_{ij}^m)}{\alpha_{qr} + \delta_m -1}) = 0</span></p>
</div>
</div>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="math inline">\delta</span> additif Poisson
</div>
</div>
<div class="callout-body-container callout-body">
<p>Forme analytique mais risque de confusion ? <span class="math display">\widehat{\delta_m} = \frac{\sum_{q,r} e^m_{qr}}{\sum_{q,r} n^m_{qr}},~\widehat{\alpha_{qr}} = \frac{\sum_{m} e^m_{qr}}{\sum_{m} n^m_{qr}} </span></p>
</div>
</div>
<ul>
<li><p>Regarder la liste des cours du MathSV et de lUniversité Paris-Saclay.</p></li>
<li><p><strong>Plutôt regarder pour introduire un modèle <span class="math inline">\delta</span>-colBiSBM</strong>.</p>
<ul>
<li>Ajouter le produit par <span class="math inline">\delta</span> là où nécessaire</li>
<li>Ajouter les modèles <span class="math inline">\delta</span>, <span class="math inline">\delta\pi, \dots</span> et les blocs conditionnels</li>
<li>Ajouter les tests unitaires adéquats et les vérifier</li>
</ul></li>
<li><p>Regarder <em>Largest gap</em> sur réseaux Doré</p></li>
<li><p>Essayer <em>clustering</em> sur <code>supinfo</code></p></li>
<li><p>Homogénéiser notations dans les supplementaries</p></li>
</ul>
<div id="ref-kmeans-vae" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-ref figure">
<div aria-describedby="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<ul>
<li>Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur lespace latent Jai commencé à regarder un peu</li>
</ul>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-ref quarto-uncaptioned" id="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Reference&nbsp;1
</figcaption>
</figure>
</div>
<section id="inférence-et-microbes" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</h3>
<ul>
<li>✅ Ouvert les donnés Compendium Europe avec easy16s, premières remarques : en dessous de famille peu dinformation</li>
<li>easy16s : se renseigner sur
<ul>
<li><span class="math inline">\alpha</span>, <span class="math inline">\beta</span> diversité</li>
<li>Heatmap</li>
</ul></li>
<li>Lancer <em>colBiSBM</em> sur <span class="math inline">OTU\times Sample</span> → problème du chargement en mémoire des données à voir</li>
<li>Lancer <em>colSBM</em> sur <span class="math inline">OTU\times OTU</span></li>
<li>TabNet pratiquer les <a href="https://github.com/cregouby/Tutoriel_torch">exercices</a></li>
<li>Regarder <strong>SPARTA</strong> Rennes</li>
<li>Lire Papiers compositional data (Aitchison et al.&nbsp;intro)</li>
<li>Lire article multi-niveaux Saint-Clair</li>
<li>Ecrire et étudier les modèles pour différents niveaux taxonomiques. <span class="math display">\begin{align*}
i \rightarrow &amp;~N^1_i \subseteq N^2_i \subseteq N^3_i &amp; \text{Taxonomie}\\
Z^0_i \overset{?}{=} &amp; Z^1_i \overset{?}{=} Z^2_i \overset{?}{=} Z^3_i &amp; \text{Groupes fonctionnels}
\end{align*}</span></li>
</ul>
<section id="causalité" class="level4" data-number="1.1.1">
<h4 data-number="1.1.1" class="anchored" data-anchor-id="causalité"><span class="header-section-number">1.1.1</span> Causalité</h4>
<p>Plus sur le temps long, à regarder</p>
<ul>
<li>GT causalité</li>
<li>Daria Bystrova lire présentation <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span> (Meek rules, V-structure)</li>
</ul>
</section>
</section>
</section>
<section id="biblio-à-faire" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="biblio-à-faire"><span class="header-section-number">2</span> Biblio à faire</h2>
<ul>
<li>Regarder Transport optimal graphes bipartite.</li>
</ul>
</section>
<section id="lectures-en-cours" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="lectures-en-cours"><span class="header-section-number">3</span> Lectures en cours 📚</h2>
<section id="hdr-vincent-brault" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="hdr-vincent-brault"><span class="header-section-number">3.1</span> HDR Vincent Brault</h3>
<ul>
<li>✅ Intro : Présentation de toutes les recherches, très diversifiée et de lapplication aux propriétées théoriques en passant par des codes efficients. Creuser le lien entre <em>les modèles à var latentes et le transport optimal</em>. Le chap 4 a lair intéressant notamment le <strong>mélange de modèles de segmentation</strong>.</li>
<li>⌛ Chap 2 : Creuser lidé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</li>
<li>Chap 3</li>
</ul>
</section>
<section id="ot" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="ot"><span class="header-section-number">3.2</span> OT</h3>
<ul>
<li><span class="citation" data-cites="mazeletUnsupervisedLearningOptimal">Mazelet, Flamary, et Thirion (<a href="#ref-mazeletUnsupervisedLearningOptimal" role="doc-biblioref">s.&nbsp;d.</a>)</span> Intéressant pour le transport optimal entre graphes de tailles différentes | Regarder si regularization entropique ne marche pas bien pour le graphe.</li>
<li><span class="citation" data-cites="nennaLecture2Entropic">Nenna (<a href="#ref-nennaLecture2Entropic" role="doc-biblioref">s.&nbsp;d.b</a>)</span> Pour comprendre le problème dOT régularisé pour lentropie.</li>
<li><span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s.&nbsp;d.a</a>)</span></li>
</ul>
</section>
<section id="inférence-de-graphes" class="level3" data-number="3.3">
<h3 data-number="3.3" class="anchored" data-anchor-id="inférence-de-graphes"><span class="header-section-number">3.3</span> Inférence de graphes</h3>
<ul>
<li><p><span class="citation" data-cites="aitchisonStatisticalAnalysisCompositional1982a">Aitchison (<a href="#ref-aitchisonStatisticalAnalysisCompositional1982a" role="doc-biblioref">1982</a>)</span>, en cours</p></li>
<li><p>❗📖 <span class="citation" data-cites="payneFiniteMixturesMultivariate2023">Payne et al. (<a href="#ref-payneFiniteMixturesMultivariate2023" role="doc-biblioref">2023</a>)</span> sur MixMPLN</p></li>
</ul>
</section>
<section id="causalité-1" class="level3" data-number="3.4">
<h3 data-number="3.4" class="anchored" data-anchor-id="causalité-1"><span class="header-section-number">3.4</span> Causalité</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span></li>
</ul>
</section>
<section id="largest-gaps" class="level3" data-number="3.5">
<h3 data-number="3.5" class="anchored" data-anchor-id="largest-gaps"><span class="header-section-number">3.5</span> Largest Gaps</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="braultFastConsistentAlgorithm2023">Brault et Channarond (<a href="#ref-braultFastConsistentAlgorithm2023" role="doc-biblioref">2023</a>)</span></li>
<li>❗📖 <span class="citation" data-cites="channarondClassificationEstimationStochastic2012">Channarond, Daudin, et Robin (<a href="#ref-channarondClassificationEstimationStochastic2012" role="doc-biblioref">2012</a>)</span> le papier qui introduit le <em>Largest Gaps</em></li>
</ul>
</section>
</section>
<section id="a-discuter" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="a-discuter"><span class="header-section-number">4</span> A discuter</h2>
<section id="congés-ps" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="congés-ps"><span class="header-section-number">4.1</span> Congés P&amp;S</h3>
</section>
<section id="thèse" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="thèse"><span class="header-section-number">4.2</span> Thèse</h3>
<ul>
<li>Faire préz CSI</li>
<li>Faire rapport CSI</li>
</ul>
</section>
<section id="interprétation-écologiques-résultats-de-baldock" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="interprétation-écologiques-résultats-de-baldock"><span class="header-section-number">4.3</span> Interprétation écologiques résultats de Baldock</h3>
<ul>
<li>⌛ Point avec Elisa, <strong>oui on relance</strong></li>
</ul>
</section>
<section id="inférence" class="level3" data-number="4.4">
<h3 data-number="4.4" class="anchored" data-anchor-id="inférence"><span class="header-section-number">4.4</span> Inférence</h3>
<ul>
<li>pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU …)</li>
</ul>
<blockquote class="blockquote">
<p>Combine networks at different taxonomic levels</p>
</blockquote>
<ul>
<li>Inférence + GREMLINS</li>
</ul>
</section>
</section>
<div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" role="doc-bibliography" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">Les références</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0" role="list">
<div id="ref-aitchisonStatisticalAnalysisCompositional1982a" class="csl-entry" role="listitem">
Aitchison, J. 1982. <span>«&nbsp;The <span>Statistical Analysis</span> of <span>Compositional Data</span>&nbsp;»</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 13977. <a href="https://www.jstor.org/stable/2345821">https://www.jstor.org/stable/2345821</a>.
</div>
<div id="ref-braultFastConsistentAlgorithm2023" class="csl-entry" role="listitem">
Brault, Vincent, et Antoine Channarond. 2023. <span>«&nbsp;Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span>&nbsp;»</span>. 9 mars 2023. <a href="https://doi.org/10.48550/arXiv.1610.09005">https://doi.org/10.48550/arXiv.1610.09005</a>.
</div>
<div id="ref-bystrovaCausalDiscovery" class="csl-entry" role="listitem">
Bystrova, Daria. s.&nbsp;d. <span>«&nbsp;Causal Discovery&nbsp;»</span>.
</div>
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>«&nbsp;Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees&nbsp;»</span>. <em>Electronic Journal of Statistics</em> 6 (janvier). <a href="https://doi.org/10.1214/12-ejs753">https://doi.org/10.1214/12-ejs753</a>.
</div>
<div id="ref-mazeletUnsupervisedLearningOptimal" class="csl-entry" role="listitem">
Mazelet, Sonia, Rémi Flamary, et Bertrand Thirion. s.&nbsp;d. <span>«&nbsp;Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs&nbsp;»</span>.
</div>
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
Nenna, Luca. s.&nbsp;d.a. <span>«&nbsp;Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual&nbsp;»</span>.
</div>
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
———. s.&nbsp;d.b. <span>«&nbsp;Lecture 2: <span>Entropic Optimal Transport</span>&nbsp;»</span>.
</div>
<div id="ref-payneFiniteMixturesMultivariate2023" class="csl-entry" role="listitem">
Payne, Andrea, Anjali Silva, Steven J. Rothstein, Paul D. McNicholas, et Sanjeena Subedi. 2023. <span>«&nbsp;Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span>&nbsp;»</span>. 13 novembre 2023. <a href="https://doi.org/10.48550/arXiv.2311.07762">https://doi.org/10.48550/arXiv.2311.07762</a>.
</div>
</div></section></div></main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
<script>var lightboxQuarto = GLightbox({"closeEffect":"zoom","descPosition":"bottom","loop":false,"openEffect":"zoom","selector":".lightbox"});
(function() {
let previousOnload = window.onload;
window.onload = () => {
if (previousOnload) {
previousOnload();
}
lightboxQuarto.on('slide_before_load', (data) => {
const { slideIndex, slideNode, slideConfig, player, trigger } = data;
const href = trigger.getAttribute('href');
if (href !== null) {
const imgEl = window.document.querySelector(`a[href="${href}"] img`);
if (imgEl !== null) {
const srcAttr = imgEl.getAttribute("src");
if (srcAttr && srcAttr.startsWith("data:")) {
slideConfig.href = srcAttr;
}
}
}
});
lightboxQuarto.on('slide_after_load', (data) => {
const { slideIndex, slideNode, slideConfig, player, trigger } = data;
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(slideNode);
}
});
};
})();
</script>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

873
suivi/2025-35/2025-35.html Normal file
View file

@ -0,0 +1,873 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 35 2025 : 25 août - 29 août Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
/* CSS for citations */
div.csl-bib-body { }
div.csl-entry {
clear: both;
margin-bottom: 0em;
}
.hanging-indent div.csl-entry {
margin-left:2em;
text-indent:-2em;
}
div.csl-left-margin {
min-width:2em;
float:left;
}
div.csl-right-inline {
margin-left:2em;
padding-left:1em;
}
div.csl-indent {
margin-left: 2em;
}</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 35 2025 : 25 août - 29 août</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
<div class="quarto-category">inférence</div>
<div class="quarto-category">GNN</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">29 août 2025</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#todo-list" id="toc-todo-list" class="nav-link active" data-scroll-target="#todo-list"><span class="header-section-number">1</span> TODO List</a>
<ul class="collapse">
<li><a href="#inférence-et-microbes" id="toc-inférence-et-microbes" class="nav-link" data-scroll-target="#inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</a></li>
</ul></li>
<li><a href="#biblio-à-faire" id="toc-biblio-à-faire" class="nav-link" data-scroll-target="#biblio-à-faire"><span class="header-section-number">2</span> Biblio à faire</a></li>
<li><a href="#lectures-en-cours" id="toc-lectures-en-cours" class="nav-link" data-scroll-target="#lectures-en-cours"><span class="header-section-number">3</span> Lectures en cours 📚</a>
<ul class="collapse">
<li><a href="#hdr-vincent-brault" id="toc-hdr-vincent-brault" class="nav-link" data-scroll-target="#hdr-vincent-brault"><span class="header-section-number">3.1</span> HDR Vincent Brault</a></li>
<li><a href="#ot" id="toc-ot" class="nav-link" data-scroll-target="#ot"><span class="header-section-number">3.2</span> OT</a></li>
<li><a href="#inférence-de-graphes" id="toc-inférence-de-graphes" class="nav-link" data-scroll-target="#inférence-de-graphes"><span class="header-section-number">3.3</span> Inférence de graphes</a></li>
<li><a href="#causalité-1" id="toc-causalité-1" class="nav-link" data-scroll-target="#causalité-1"><span class="header-section-number">3.4</span> Causalité</a></li>
<li><a href="#largest-gaps" id="toc-largest-gaps" class="nav-link" data-scroll-target="#largest-gaps"><span class="header-section-number">3.5</span> Largest Gaps</a></li>
</ul></li>
<li><a href="#a-discuter" id="toc-a-discuter" class="nav-link" data-scroll-target="#a-discuter"><span class="header-section-number">4</span> A discuter</a>
<ul class="collapse">
<li><a href="#congés-ps" id="toc-congés-ps" class="nav-link" data-scroll-target="#congés-ps"><span class="header-section-number">4.1</span> Congés P&amp;S</a></li>
<li><a href="#thèse" id="toc-thèse" class="nav-link" data-scroll-target="#thèse"><span class="header-section-number">4.2</span> Thèse</a></li>
<li><a href="#inférence" id="toc-inférence" class="nav-link" data-scroll-target="#inférence"><span class="header-section-number">4.3</span> Inférence</a></li>
</ul></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="todo-list" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="todo-list"><span class="header-section-number">1</span> TODO List</h2>
<ul>
<li>Pour clustering de collections sur données <del>réelles</del> :<br>
→ Lintuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs <span class="math inline">(Q_1,Q_2)</span>.
<ul>
<li>❓Je narrive plus à reproduire le bug pour linférence…</li>
<li>😫 bug encore. Sassurer que ça marche et relancer</li>
</ul></li>
<li>⌛ A Roscoff avec Julie et Pierre nous avons constaté que cétait lextraction des dyades pour le calcul des métriques qui était incorrecte. Maintenant cest corrigé et ça fonctionne ! En fait je donne tous les degrés donc le GNN a juste à retrouver les arêtes non vues.Revérifier que jentraîne correctement le VGAE car résultats de généralisation trop bons sur les autres réseaux Doré, ce qui est étonnant Pour corriger cet effet :
<ul>
<li>Donner la matrice identité comme features</li>
<li>Corriger les degrés calculés.</li>
</ul></li>
<li>Faible performances de linférence :
<ul>
<li>Vérifier que les conditions didentifiabilité des modèles fautifs sont bien remplies.</li>
<li>Récupérer des jeux de paramètres et essayer de reproduire les résultats.</li>
</ul></li>
<li>Clustering sur Doré :
<ul>
<li>Regarder pour les couples date+nom les études et le nombre de réseaux analysables (Possible demander à Élisa)
<ul>
<li>⌛ Chamberlain et al semble intéressant à regarder ! Voir le Rmarkdown</li>
</ul></li>
<li>Clusteriser sur la base des noms et voir parmi les réseaux Européens (désagrégés ?)</li>
<li>Si M &gt; 10, alors voir si je retrouve les mêmes résultats que dans les études.</li>
</ul></li>
<li>Regarder les codes Mangal database pour <span class="math inline">\delta</span></li>
<li>Voir <span class="math inline">\delta</span> mais additif</li>
</ul>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="math inline">\delta</span> additif Bernoulli
</div>
</div>
<div class="callout-body-container callout-body">
<p>En Bernoulli pas de forme analytique non plus : Pour <span class="math inline">\alpha_{qr}</span>: <span class="math display"> \sum_{m=1}^M \sum_{i=1}^{n_1^m} \sum_{j=1}^{n_2^m} \tau_{iq}^{1,m}\tau_{jr}^{2,m}(\frac{X_{ij}^m}{\alpha_{qr}} + \frac{(1-X_{ij}^m)}{\alpha_{qr} + \delta_m -1}) = 0</span> <span class="math display">\Leftrightarrow \sum_m \frac{e^m_{qr}}{\alpha_{qr}} + \frac{1}{\alpha_{qr}+\delta_m-1} (n^m_{qr}-e^m_{qr}) = 0</span></p>
<p>Et pour <span class="math inline">\delta_m</span>: <span class="math display"> \sum_{i=1}^{n_1^m} \sum_{j=1}^{n_2^m} \sum_{q=1}^{Q_1} \sum_{r=1}^{Q_2} \tau_{iq}^{1,m}\tau_{jr}^{2,m}(\frac{X_{ij}^m}{\delta_{m}} + \frac{(1-X_{ij}^m)}{\alpha_{qr} + \delta_m -1}) = 0</span></p>
</div>
</div>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="math inline">\delta</span> additif Poisson
</div>
</div>
<div class="callout-body-container callout-body">
<p>Forme analytique mais risque de confusion ? <span class="math display">\widehat{\delta_m} = \frac{\sum_{q,r} e^m_{qr}}{\sum_{q,r} n^m_{qr}},~\widehat{\alpha_{qr}} = \frac{\sum_{m} e^m_{qr}}{\sum_{m} n^m_{qr}} </span></p>
</div>
</div>
<ul>
<li><p>Regarder la liste des cours du MathSV et de lUniversité Paris-Saclay.</p></li>
<li><p><strong>Plutôt regarder pour introduire un modèle <span class="math inline">\delta</span>-colBiSBM</strong>.</p>
<ul>
<li>Ajouter le produit par <span class="math inline">\delta</span> là où nécessaire</li>
<li>Ajouter les modèles <span class="math inline">\delta</span>, <span class="math inline">\delta\pi, \dots</span> et les blocs conditionnels</li>
<li>Ajouter les tests unitaires adéquats et les vérifier</li>
</ul></li>
<li><p>Regarder <em>Largest gap</em> sur réseaux Doré</p></li>
<li><p>Essayer <em>clustering</em> sur <code>supinfo</code></p></li>
<li><p>Homogénéiser notations dans les supplementaries</p></li>
</ul>
<div id="ref-kmeans-vae" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-ref figure">
<div aria-describedby="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<ul>
<li>Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur lespace latent Jai commencé à regarder un peu</li>
</ul>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-ref quarto-uncaptioned" id="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Reference&nbsp;1
</figcaption>
</figure>
</div>
<section id="inférence-et-microbes" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</h3>
<ul>
<li>easy16s : se renseigner sur
<ul>
<li><span class="math inline">\alpha</span>, <span class="math inline">\beta</span> diversité</li>
<li>Heatmap</li>
<li>Voir avec Mahendra à loccasion du CSI</li>
</ul></li>
<li>Lancer <em>colBiSBM</em> sur <span class="math inline">OTU\times Sample</span> → problème du chargement en mémoire des données à voir</li>
<li>Lancer <em>colSBM</em> sur <span class="math inline">OTU\times OTU</span></li>
<li>TabNet pratiquer les <a href="https://github.com/cregouby/Tutoriel_torch">exercices</a></li>
<li>Regarder <strong>SPARTA</strong> Rennes</li>
<li>Lire Papiers compositional data (Aitchison et al.&nbsp;intro)</li>
<li>Lire article multi-niveaux Saint-Clair</li>
<li>Ecrire et étudier les modèles pour différents niveaux taxonomiques. <span class="math display">\begin{align*}
i \rightarrow &amp;~N^1_i \subseteq N^2_i \subseteq N^3_i &amp; \text{Taxonomie}\\
Z^0_i \overset{?}{=} &amp; Z^1_i \overset{?}{=} Z^2_i \overset{?}{=} Z^3_i &amp; \text{Groupes fonctionnels}
\end{align*}</span></li>
</ul>
<section id="causalité" class="level4" data-number="1.1.1">
<h4 data-number="1.1.1" class="anchored" data-anchor-id="causalité"><span class="header-section-number">1.1.1</span> Causalité</h4>
<p>Plus sur le temps long, à regarder</p>
<ul>
<li>GT causalité</li>
<li>Daria Bystrova lire présentation <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span> (Meek rules, V-structure)</li>
</ul>
</section>
</section>
</section>
<section id="biblio-à-faire" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="biblio-à-faire"><span class="header-section-number">2</span> Biblio à faire</h2>
<ul>
<li>Regarder Transport optimal graphes bipartite.</li>
</ul>
</section>
<section id="lectures-en-cours" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="lectures-en-cours"><span class="header-section-number">3</span> Lectures en cours 📚</h2>
<section id="hdr-vincent-brault" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="hdr-vincent-brault"><span class="header-section-number">3.1</span> HDR Vincent Brault</h3>
<ul>
<li>⌛ Chap 2 : Creuser lidé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</li>
<li>Chap 3</li>
</ul>
</section>
<section id="ot" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="ot"><span class="header-section-number">3.2</span> OT</h3>
<ul>
<li><span class="citation" data-cites="mazeletUnsupervisedLearningOptimal">Mazelet, Flamary, et Thirion (<a href="#ref-mazeletUnsupervisedLearningOptimal" role="doc-biblioref">s.&nbsp;d.</a>)</span> Intéressant pour le transport optimal entre graphes de tailles différentes | Regarder si regularization entropique ne marche pas bien pour le graphe.</li>
<li><span class="citation" data-cites="nennaLecture2Entropic">Nenna (<a href="#ref-nennaLecture2Entropic" role="doc-biblioref">s.&nbsp;d.b</a>)</span> Pour comprendre le problème dOT régularisé pour lentropie.</li>
<li><span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s.&nbsp;d.a</a>)</span></li>
</ul>
</section>
<section id="inférence-de-graphes" class="level3" data-number="3.3">
<h3 data-number="3.3" class="anchored" data-anchor-id="inférence-de-graphes"><span class="header-section-number">3.3</span> Inférence de graphes</h3>
<ul>
<li><p><span class="citation" data-cites="aitchisonStatisticalAnalysisCompositional1982a">Aitchison (<a href="#ref-aitchisonStatisticalAnalysisCompositional1982a" role="doc-biblioref">1982</a>)</span>, en cours</p></li>
<li><p>❗📖 <span class="citation" data-cites="payneFiniteMixturesMultivariate2023">Payne et al. (<a href="#ref-payneFiniteMixturesMultivariate2023" role="doc-biblioref">2023</a>)</span> sur MixMPLN</p></li>
</ul>
</section>
<section id="causalité-1" class="level3" data-number="3.4">
<h3 data-number="3.4" class="anchored" data-anchor-id="causalité-1"><span class="header-section-number">3.4</span> Causalité</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span></li>
</ul>
</section>
<section id="largest-gaps" class="level3" data-number="3.5">
<h3 data-number="3.5" class="anchored" data-anchor-id="largest-gaps"><span class="header-section-number">3.5</span> Largest Gaps</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="braultFastConsistentAlgorithm2023">Brault et Channarond (<a href="#ref-braultFastConsistentAlgorithm2023" role="doc-biblioref">2023</a>)</span></li>
<li>❗📖 <span class="citation" data-cites="channarondClassificationEstimationStochastic2012">Channarond, Daudin, et Robin (<a href="#ref-channarondClassificationEstimationStochastic2012" role="doc-biblioref">2012</a>)</span> le papier qui introduit le <em>Largest Gaps</em></li>
</ul>
</section>
</section>
<section id="a-discuter" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="a-discuter"><span class="header-section-number">4</span> A discuter</h2>
<section id="congés-ps" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="congés-ps"><span class="header-section-number">4.1</span> Congés P&amp;S</h3>
</section>
<section id="thèse" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="thèse"><span class="header-section-number">4.2</span> Thèse</h3>
<ul>
<li>Faire préz CSI</li>
<li>Faire rapport CSI</li>
</ul>
</section>
<section id="inférence" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="inférence"><span class="header-section-number">4.3</span> Inférence</h3>
<ul>
<li>pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU …)</li>
</ul>
<blockquote class="blockquote">
<p>Combine networks at different taxonomic levels</p>
</blockquote>
<ul>
<li>Inférence + GREMLINS</li>
</ul>
</section>
</section>
<div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" role="doc-bibliography" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">Les références</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0" role="list">
<div id="ref-aitchisonStatisticalAnalysisCompositional1982a" class="csl-entry" role="listitem">
Aitchison, J. 1982. <span>«&nbsp;The <span>Statistical Analysis</span> of <span>Compositional Data</span>&nbsp;»</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 13977. <a href="https://www.jstor.org/stable/2345821">https://www.jstor.org/stable/2345821</a>.
</div>
<div id="ref-braultFastConsistentAlgorithm2023" class="csl-entry" role="listitem">
Brault, Vincent, et Antoine Channarond. 2023. <span>«&nbsp;Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span>&nbsp;»</span>. 9 mars 2023. <a href="https://doi.org/10.48550/arXiv.1610.09005">https://doi.org/10.48550/arXiv.1610.09005</a>.
</div>
<div id="ref-bystrovaCausalDiscovery" class="csl-entry" role="listitem">
Bystrova, Daria. s.&nbsp;d. <span>«&nbsp;Causal Discovery&nbsp;»</span>.
</div>
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>«&nbsp;Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees&nbsp;»</span>. <em>Electronic Journal of Statistics</em> 6 (janvier). <a href="https://doi.org/10.1214/12-ejs753">https://doi.org/10.1214/12-ejs753</a>.
</div>
<div id="ref-mazeletUnsupervisedLearningOptimal" class="csl-entry" role="listitem">
Mazelet, Sonia, Rémi Flamary, et Bertrand Thirion. s.&nbsp;d. <span>«&nbsp;Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs&nbsp;»</span>.
</div>
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
Nenna, Luca. s.&nbsp;d.a. <span>«&nbsp;Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual&nbsp;»</span>.
</div>
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
———. s.&nbsp;d.b. <span>«&nbsp;Lecture 2: <span>Entropic Optimal Transport</span>&nbsp;»</span>.
</div>
<div id="ref-payneFiniteMixturesMultivariate2023" class="csl-entry" role="listitem">
Payne, Andrea, Anjali Silva, Steven J. Rothstein, Paul D. McNicholas, et Sanjeena Subedi. 2023. <span>«&nbsp;Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span>&nbsp;»</span>. 13 novembre 2023. <a href="https://doi.org/10.48550/arXiv.2311.07762">https://doi.org/10.48550/arXiv.2311.07762</a>.
</div>
</div></section></div></main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

869
suivi/2025-38/2025-38.html Normal file
View file

@ -0,0 +1,869 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 38 2025 : 15 septembre - 19 septembre Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
/* CSS for citations */
div.csl-bib-body { }
div.csl-entry {
clear: both;
margin-bottom: 0em;
}
.hanging-indent div.csl-entry {
margin-left:2em;
text-indent:-2em;
}
div.csl-left-margin {
min-width:2em;
float:left;
}
div.csl-right-inline {
margin-left:2em;
padding-left:1em;
}
div.csl-indent {
margin-left: 2em;
}</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 38 2025 : 15 septembre - 19 septembre</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
<div class="quarto-category">inférence</div>
<div class="quarto-category">GNN</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">19 septembre 2025</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#todo-list" id="toc-todo-list" class="nav-link active" data-scroll-target="#todo-list"><span class="header-section-number">1</span> TODO List</a>
<ul class="collapse">
<li><a href="#inférence-et-microbes" id="toc-inférence-et-microbes" class="nav-link" data-scroll-target="#inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</a></li>
</ul></li>
<li><a href="#biblio-à-faire" id="toc-biblio-à-faire" class="nav-link" data-scroll-target="#biblio-à-faire"><span class="header-section-number">2</span> Biblio à faire</a></li>
<li><a href="#lectures-en-cours" id="toc-lectures-en-cours" class="nav-link" data-scroll-target="#lectures-en-cours"><span class="header-section-number">3</span> Lectures en cours 📚</a>
<ul class="collapse">
<li><a href="#hdr-vincent-brault" id="toc-hdr-vincent-brault" class="nav-link" data-scroll-target="#hdr-vincent-brault"><span class="header-section-number">3.1</span> HDR Vincent Brault</a></li>
<li><a href="#ot" id="toc-ot" class="nav-link" data-scroll-target="#ot"><span class="header-section-number">3.2</span> OT</a></li>
<li><a href="#inférence-de-graphes" id="toc-inférence-de-graphes" class="nav-link" data-scroll-target="#inférence-de-graphes"><span class="header-section-number">3.3</span> Inférence de graphes</a></li>
<li><a href="#causalité-1" id="toc-causalité-1" class="nav-link" data-scroll-target="#causalité-1"><span class="header-section-number">3.4</span> Causalité</a></li>
<li><a href="#largest-gaps" id="toc-largest-gaps" class="nav-link" data-scroll-target="#largest-gaps"><span class="header-section-number">3.5</span> Largest Gaps</a></li>
</ul></li>
<li><a href="#a-discuter" id="toc-a-discuter" class="nav-link" data-scroll-target="#a-discuter"><span class="header-section-number">4</span> A discuter</a>
<ul class="collapse">
<li><a href="#congés-ps" id="toc-congés-ps" class="nav-link" data-scroll-target="#congés-ps"><span class="header-section-number">4.1</span> Congés P&amp;S</a></li>
<li><a href="#thèse" id="toc-thèse" class="nav-link" data-scroll-target="#thèse"><span class="header-section-number">4.2</span> Thèse</a></li>
<li><a href="#inférence" id="toc-inférence" class="nav-link" data-scroll-target="#inférence"><span class="header-section-number">4.3</span> Inférence</a></li>
</ul></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="todo-list" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="todo-list"><span class="header-section-number">1</span> TODO List</h2>
<ul>
<li>Pour clustering de collections sur données <del>réelles</del> :<br>
→ Lintuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs <span class="math inline">(Q_1,Q_2)</span>.
<ul>
<li>❓Je narrive plus à reproduire le bug pour linférence…</li>
<li>😫 bug encore. Sassurer que ça marche et relancer</li>
</ul></li>
<li>⌛ A Roscoff avec Julie et Pierre nous avons constaté que cétait lextraction des dyades pour le calcul des métriques qui était incorrecte. Maintenant cest corrigé et ça fonctionne ! En fait je donne tous les degrés donc le GNN a juste à retrouver les arêtes non vues.Revérifier que jentraîne correctement le VGAE car résultats de généralisation trop bons sur les autres réseaux Doré, ce qui est étonnant Pour corriger cet effet :
<ul>
<li>Donner la matrice identité comme features</li>
<li>Corriger les degrés calculés.</li>
</ul></li>
<li>⚠️ Discuter intersection simulations</li>
<li>Clustering sur Doré :
<ul>
<li>Regarder pour les couples date+nom les études et le nombre de réseaux analysables (Possible demander à Élisa)
<ul>
<li>⌛ Chamberlain et al semble intéressant à regarder ! Voir le Rmarkdown</li>
</ul></li>
<li>Clusteriser sur la base des noms et voir parmi les réseaux Européens (désagrégés ?)</li>
<li>Si M &gt; 10, alors voir si je retrouve les mêmes résultats que dans les études.</li>
</ul></li>
<li>Regarder les codes Mangal database pour <span class="math inline">\delta</span></li>
<li>Voir <span class="math inline">\delta</span> mais additif</li>
</ul>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="math inline">\delta</span> additif Bernoulli
</div>
</div>
<div class="callout-body-container callout-body">
<p>En Bernoulli pas de forme analytique non plus : Pour <span class="math inline">\alpha_{qr}</span>: <span class="math display"> \sum_{m=1}^M \sum_{i=1}^{n_1^m} \sum_{j=1}^{n_2^m} \tau_{iq}^{1,m}\tau_{jr}^{2,m}(\frac{X_{ij}^m}{\alpha_{qr}} + \frac{(1-X_{ij}^m)}{\alpha_{qr} + \delta_m -1}) = 0</span> <span class="math display">\Leftrightarrow \sum_m \frac{e^m_{qr}}{\alpha_{qr}} + \frac{1}{\alpha_{qr}+\delta_m-1} (n^m_{qr}-e^m_{qr}) = 0</span></p>
<p>Et pour <span class="math inline">\delta_m</span>: <span class="math display"> \sum_{i=1}^{n_1^m} \sum_{j=1}^{n_2^m} \sum_{q=1}^{Q_1} \sum_{r=1}^{Q_2} \tau_{iq}^{1,m}\tau_{jr}^{2,m}(\frac{X_{ij}^m}{\delta_{m}} + \frac{(1-X_{ij}^m)}{\alpha_{qr} + \delta_m -1}) = 0</span></p>
</div>
</div>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="math inline">\delta</span> additif Poisson
</div>
</div>
<div class="callout-body-container callout-body">
<p>Forme analytique mais risque de confusion ? <span class="math display">\widehat{\delta_m} = \frac{\sum_{q,r} e^m_{qr}}{\sum_{q,r} n^m_{qr}},~\widehat{\alpha_{qr}} = \frac{\sum_{m} e^m_{qr}}{\sum_{m} n^m_{qr}} </span></p>
</div>
</div>
<ul>
<li><p>Regarder la liste des cours du MathSV et de lUniversité Paris-Saclay.</p></li>
<li><p><strong>Plutôt regarder pour introduire un modèle <span class="math inline">\delta</span>-colBiSBM</strong>.</p>
<ul>
<li>Ajouter le produit par <span class="math inline">\delta</span> là où nécessaire</li>
<li>Ajouter les modèles <span class="math inline">\delta</span>, <span class="math inline">\delta\pi, \dots</span> et les blocs conditionnels</li>
<li>Ajouter les tests unitaires adéquats et les vérifier</li>
</ul></li>
<li><p>Regarder <em>Largest gap</em> sur réseaux Doré</p></li>
<li><p>Essayer <em>clustering</em> sur <code>supinfo</code></p></li>
<li><p>Homogénéiser notations dans les supplementaries</p></li>
</ul>
<div id="ref-kmeans-vae" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-ref figure">
<div aria-describedby="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<ul>
<li>Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur lespace latent Jai commencé à regarder un peu</li>
</ul>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-ref quarto-uncaptioned" id="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Reference&nbsp;1
</figcaption>
</figure>
</div>
<section id="inférence-et-microbes" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</h3>
<ul>
<li>easy16s : se renseigner sur
<ul>
<li><span class="math inline">\alpha</span>, <span class="math inline">\beta</span> diversité</li>
<li>Heatmap</li>
<li>Voir avec Mahendra à loccasion du CSI</li>
</ul></li>
<li>Lancer <em>colBiSBM</em> sur <span class="math inline">OTU\times Sample</span> → problème du chargement en mémoire des données à voir</li>
<li>Lancer <em>colSBM</em> sur <span class="math inline">OTU\times OTU</span></li>
<li>TabNet pratiquer les <a href="https://github.com/cregouby/Tutoriel_torch">exercices</a></li>
<li>Regarder <strong>SPARTA</strong> Rennes</li>
<li>Lire Papiers compositional data (Aitchison et al.&nbsp;intro)</li>
<li>Lire article multi-niveaux Saint-Clair</li>
<li>Ecrire et étudier les modèles pour différents niveaux taxonomiques. <span class="math display">\begin{align*}
i \rightarrow &amp;~N^1_i \subseteq N^2_i \subseteq N^3_i &amp; \text{Taxonomie}\\
Z^0_i \overset{?}{=} &amp; Z^1_i \overset{?}{=} Z^2_i \overset{?}{=} Z^3_i &amp; \text{Groupes fonctionnels}
\end{align*}</span></li>
</ul>
<section id="causalité" class="level4" data-number="1.1.1">
<h4 data-number="1.1.1" class="anchored" data-anchor-id="causalité"><span class="header-section-number">1.1.1</span> Causalité</h4>
<p>Plus sur le temps long, à regarder</p>
<ul>
<li>GT causalité</li>
<li>Daria Bystrova lire présentation <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span> (Meek rules, V-structure)</li>
</ul>
</section>
</section>
</section>
<section id="biblio-à-faire" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="biblio-à-faire"><span class="header-section-number">2</span> Biblio à faire</h2>
<ul>
<li>Regarder Transport optimal graphes bipartite.</li>
</ul>
</section>
<section id="lectures-en-cours" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="lectures-en-cours"><span class="header-section-number">3</span> Lectures en cours 📚</h2>
<section id="hdr-vincent-brault" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="hdr-vincent-brault"><span class="header-section-number">3.1</span> HDR Vincent Brault</h3>
<ul>
<li>⌛ Chap 2 : Creuser lidé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</li>
<li>Chap 3</li>
</ul>
</section>
<section id="ot" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="ot"><span class="header-section-number">3.2</span> OT</h3>
<ul>
<li><span class="citation" data-cites="mazeletUnsupervisedLearningOptimal">Mazelet, Flamary, et Thirion (<a href="#ref-mazeletUnsupervisedLearningOptimal" role="doc-biblioref">s.&nbsp;d.</a>)</span> Intéressant pour le transport optimal entre graphes de tailles différentes | Regarder si regularization entropique ne marche pas bien pour le graphe.</li>
<li><span class="citation" data-cites="nennaLecture2Entropic">Nenna (<a href="#ref-nennaLecture2Entropic" role="doc-biblioref">s.&nbsp;d.b</a>)</span> Pour comprendre le problème dOT régularisé pour lentropie.</li>
<li><span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s.&nbsp;d.a</a>)</span></li>
</ul>
</section>
<section id="inférence-de-graphes" class="level3" data-number="3.3">
<h3 data-number="3.3" class="anchored" data-anchor-id="inférence-de-graphes"><span class="header-section-number">3.3</span> Inférence de graphes</h3>
<ul>
<li><p><span class="citation" data-cites="aitchisonStatisticalAnalysisCompositional1982a">Aitchison (<a href="#ref-aitchisonStatisticalAnalysisCompositional1982a" role="doc-biblioref">1982</a>)</span>, en cours</p></li>
<li><p>❗📖 <span class="citation" data-cites="payneFiniteMixturesMultivariate2023">Payne et al. (<a href="#ref-payneFiniteMixturesMultivariate2023" role="doc-biblioref">2023</a>)</span> sur MixMPLN</p></li>
</ul>
</section>
<section id="causalité-1" class="level3" data-number="3.4">
<h3 data-number="3.4" class="anchored" data-anchor-id="causalité-1"><span class="header-section-number">3.4</span> Causalité</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span></li>
</ul>
</section>
<section id="largest-gaps" class="level3" data-number="3.5">
<h3 data-number="3.5" class="anchored" data-anchor-id="largest-gaps"><span class="header-section-number">3.5</span> Largest Gaps</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="braultFastConsistentAlgorithm2023">Brault et Channarond (<a href="#ref-braultFastConsistentAlgorithm2023" role="doc-biblioref">2023</a>)</span></li>
<li>❗📖 <span class="citation" data-cites="channarondClassificationEstimationStochastic2012">Channarond, Daudin, et Robin (<a href="#ref-channarondClassificationEstimationStochastic2012" role="doc-biblioref">2012</a>)</span> le papier qui introduit le <em>Largest Gaps</em></li>
</ul>
</section>
</section>
<section id="a-discuter" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="a-discuter"><span class="header-section-number">4</span> A discuter</h2>
<section id="congés-ps" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="congés-ps"><span class="header-section-number">4.1</span> Congés P&amp;S</h3>
</section>
<section id="thèse" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="thèse"><span class="header-section-number">4.2</span> Thèse</h3>
<ul>
<li>Faire préz CSI</li>
<li>Faire rapport CSI</li>
</ul>
</section>
<section id="inférence" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="inférence"><span class="header-section-number">4.3</span> Inférence</h3>
<ul>
<li>pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU …)</li>
</ul>
<blockquote class="blockquote">
<p>Combine networks at different taxonomic levels</p>
</blockquote>
<ul>
<li>Inférence + GREMLINS</li>
</ul>
</section>
</section>
<div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" role="doc-bibliography" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">Les références</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0" role="list">
<div id="ref-aitchisonStatisticalAnalysisCompositional1982a" class="csl-entry" role="listitem">
Aitchison, J. 1982. <span>«&nbsp;The <span>Statistical Analysis</span> of <span>Compositional Data</span>&nbsp;»</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 13977. <a href="https://www.jstor.org/stable/2345821">https://www.jstor.org/stable/2345821</a>.
</div>
<div id="ref-braultFastConsistentAlgorithm2023" class="csl-entry" role="listitem">
Brault, Vincent, et Antoine Channarond. 2023. <span>«&nbsp;Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span>&nbsp;»</span>. 9 mars 2023. <a href="https://doi.org/10.48550/arXiv.1610.09005">https://doi.org/10.48550/arXiv.1610.09005</a>.
</div>
<div id="ref-bystrovaCausalDiscovery" class="csl-entry" role="listitem">
Bystrova, Daria. s.&nbsp;d. <span>«&nbsp;Causal Discovery&nbsp;»</span>.
</div>
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>«&nbsp;Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees&nbsp;»</span>. <em>Electronic Journal of Statistics</em> 6 (janvier). <a href="https://doi.org/10.1214/12-ejs753">https://doi.org/10.1214/12-ejs753</a>.
</div>
<div id="ref-mazeletUnsupervisedLearningOptimal" class="csl-entry" role="listitem">
Mazelet, Sonia, Rémi Flamary, et Bertrand Thirion. s.&nbsp;d. <span>«&nbsp;Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs&nbsp;»</span>.
</div>
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
Nenna, Luca. s.&nbsp;d.a. <span>«&nbsp;Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual&nbsp;»</span>.
</div>
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
———. s.&nbsp;d.b. <span>«&nbsp;Lecture 2: <span>Entropic Optimal Transport</span>&nbsp;»</span>.
</div>
<div id="ref-payneFiniteMixturesMultivariate2023" class="csl-entry" role="listitem">
Payne, Andrea, Anjali Silva, Steven J. Rothstein, Paul D. McNicholas, et Sanjeena Subedi. 2023. <span>«&nbsp;Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span>&nbsp;»</span>. 13 novembre 2023. <a href="https://doi.org/10.48550/arXiv.2311.07762">https://doi.org/10.48550/arXiv.2311.07762</a>.
</div>
</div></section></div></main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

889
suivi/2025-43/2025-43.html Normal file
View file

@ -0,0 +1,889 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 43 2025 : 20 octobre - 24 octobre Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
/* CSS for citations */
div.csl-bib-body { }
div.csl-entry {
clear: both;
margin-bottom: 0em;
}
.hanging-indent div.csl-entry {
margin-left:2em;
text-indent:-2em;
}
div.csl-left-margin {
min-width:2em;
float:left;
}
div.csl-right-inline {
margin-left:2em;
padding-left:1em;
}
div.csl-indent {
margin-left: 2em;
}</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 43 2025 : 20 octobre - 24 octobre</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
<div class="quarto-category">inférence</div>
<div class="quarto-category">GNN</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">20 octobre 2025</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#todo-list" id="toc-todo-list" class="nav-link active" data-scroll-target="#todo-list"><span class="header-section-number">1</span> TODO List</a>
<ul class="collapse">
<li><a href="#inférence-et-microbes" id="toc-inférence-et-microbes" class="nav-link" data-scroll-target="#inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</a></li>
</ul></li>
<li><a href="#biblio-à-faire" id="toc-biblio-à-faire" class="nav-link" data-scroll-target="#biblio-à-faire"><span class="header-section-number">2</span> Biblio à faire</a></li>
<li><a href="#lectures-en-cours" id="toc-lectures-en-cours" class="nav-link" data-scroll-target="#lectures-en-cours"><span class="header-section-number">3</span> Lectures en cours 📚</a>
<ul class="collapse">
<li><a href="#hdr-vincent-brault" id="toc-hdr-vincent-brault" class="nav-link" data-scroll-target="#hdr-vincent-brault"><span class="header-section-number">3.1</span> HDR Vincent Brault</a></li>
<li><a href="#ot" id="toc-ot" class="nav-link" data-scroll-target="#ot"><span class="header-section-number">3.2</span> OT</a></li>
<li><a href="#inférence-de-graphes" id="toc-inférence-de-graphes" class="nav-link" data-scroll-target="#inférence-de-graphes"><span class="header-section-number">3.3</span> Inférence de graphes</a></li>
<li><a href="#causalité-1" id="toc-causalité-1" class="nav-link" data-scroll-target="#causalité-1"><span class="header-section-number">3.4</span> Causalité</a></li>
<li><a href="#largest-gaps" id="toc-largest-gaps" class="nav-link" data-scroll-target="#largest-gaps"><span class="header-section-number">3.5</span> Largest Gaps</a></li>
</ul></li>
<li><a href="#a-discuter" id="toc-a-discuter" class="nav-link" data-scroll-target="#a-discuter"><span class="header-section-number">4</span> A discuter</a>
<ul class="collapse">
<li><a href="#congés-ps" id="toc-congés-ps" class="nav-link" data-scroll-target="#congés-ps"><span class="header-section-number">4.1</span> Congés P&amp;S</a></li>
<li><a href="#thèse" id="toc-thèse" class="nav-link" data-scroll-target="#thèse"><span class="header-section-number">4.2</span> Thèse</a></li>
<li><a href="#inférence" id="toc-inférence" class="nav-link" data-scroll-target="#inférence"><span class="header-section-number">4.3</span> Inférence</a></li>
</ul></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="todo-list" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="todo-list"><span class="header-section-number">1</span> TODO List</h2>
<ul>
<li><p>Finir le papier :</p>
<ul>
<li>Re-structurer le plan, mon plan, Donnet et Barbillon, échelle méso et comparaison inter réseau et noeuds non partagés.</li>
<li>✅ Écrire en annexe le BIC-L, faire attention à ajouter lentropie à la toute fin en mentionnant</li>
<li>⌛ Fusionner VGAE et information transfer (missing links seulement) donc refaire tourner sur même données quen R. A adapter pour Python et pouvoir intégrer dans la figure. (raccourcit).</li>
<li>Faire sep-VGAE (seulement sur le réseaux avec missing links) et VGAE avec les 4 réseaux. En train de reproduire les résultats, AUC stable autour de 0.7</li>
<li>Remplacer <em>Information tranfer on simu</em> par Network partitioning.</li>
<li>⌛ Écrire le poster avec un titre aguicheur “Are my pollinators your pollinators: …”: Commencé contenu à déterminer avec Pierre et Sophie</li>
</ul></li>
<li><p>Maitriser graphtools de Peixoto pour essayer dutiliser larbre taxonomique sur graphe de cooccurence inférer par SparCC</p></li>
<li><p>Maitriser SparCC</p></li>
<li><p>Faire LBM sur niveau taxonomique grossier, initialiser avec le résultat pour un niveau plus fin et ainsi de suite.</p></li>
<li><p>Clustering unipartite jai cassé une fonction de distance à vérifier et réparer</p></li>
</ul>
<!-- - Idée clustering unipartite graphes des métros
<div class="embed-container">
<iframe src="https://csun.uic.edu/wp-content/uploads/sites/1080/2023/12/pdf_7.pdf" width=100% height="475px" style="position: relative;">
</iframe>
</div> -->
<ul>
<li>Pour clustering de collections sur données <del>réelles</del> :<br>
→ Lintuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs <span class="math inline">(Q_1,Q_2)</span>.
<ul>
<li>❓Je narrive plus à reproduire le bug pour linférence…</li>
<li>😫 bug encore. Sassurer que ça marche et relancer</li>
</ul></li>
<li>⌛ A Roscoff avec Julie et Pierre nous avons constaté que cétait lextraction des dyades pour le calcul des métriques qui était incorrecte. Maintenant cest corrigé et ça fonctionne ! En fait je donne tous les degrés donc le GNN a juste à retrouver les arêtes non vues.Revérifier que jentraîne correctement le VGAE car résultats de généralisation trop bons sur les autres réseaux Doré, ce qui est étonnant Pour corriger cet effet :
<ul>
<li>Donner la matrice identité comme features</li>
<li>Corriger les degrés calculés.</li>
</ul></li>
<li>⚠️ Discuter intersection simulations</li>
<li>Clustering sur Doré :
<ul>
<li>Regarder pour les couples date+nom les études et le nombre de réseaux analysables (Possible demander à Élisa)
<ul>
<li>⌛ Chamberlain et al semble intéressant à regarder ! Voir le Rmarkdown</li>
</ul></li>
<li>Clusteriser sur la base des noms et voir parmi les réseaux Européens (désagrégés ?)</li>
<li>Si M &gt; 10, alors voir si je retrouve les mêmes résultats que dans les études.</li>
</ul></li>
<li>Regarder les codes Mangal database pour <span class="math inline">\delta</span></li>
<li>Voir <span class="math inline">\delta</span> mais additif</li>
</ul>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="math inline">\delta</span> additif Bernoulli
</div>
</div>
<div class="callout-body-container callout-body">
<p>En Bernoulli pas de forme analytique non plus : Pour <span class="math inline">\alpha_{qr}</span>: <span class="math display"> \sum_{m=1}^M \sum_{i=1}^{n_1^m} \sum_{j=1}^{n_2^m} \tau_{iq}^{1,m}\tau_{jr}^{2,m}(\frac{X_{ij}^m}{\alpha_{qr}} + \frac{(1-X_{ij}^m)}{\alpha_{qr} + \delta_m -1}) = 0</span> <span class="math display">\Leftrightarrow \sum_m \frac{e^m_{qr}}{\alpha_{qr}} + \frac{1}{\alpha_{qr}+\delta_m-1} (n^m_{qr}-e^m_{qr}) = 0</span></p>
<p>Et pour <span class="math inline">\delta_m</span>: <span class="math display"> \sum_{i=1}^{n_1^m} \sum_{j=1}^{n_2^m} \sum_{q=1}^{Q_1} \sum_{r=1}^{Q_2} \tau_{iq}^{1,m}\tau_{jr}^{2,m}(\frac{X_{ij}^m}{\delta_{m}} + \frac{(1-X_{ij}^m)}{\alpha_{qr} + \delta_m -1}) = 0</span></p>
</div>
</div>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="math inline">\delta</span> additif Poisson
</div>
</div>
<div class="callout-body-container callout-body">
<p>Forme analytique mais risque de confusion ? <span class="math display">\widehat{\delta_m} = \frac{\sum_{q,r} e^m_{qr}}{\sum_{q,r} n^m_{qr}},~\widehat{\alpha_{qr}} = \frac{\sum_{m} e^m_{qr}}{\sum_{m} n^m_{qr}} </span></p>
</div>
</div>
<ul>
<li><p>Regarder la liste des cours du MathSV et de lUniversité Paris-Saclay.</p></li>
<li><p><strong>Plutôt regarder pour introduire un modèle <span class="math inline">\delta</span>-colBiSBM</strong>.</p>
<ul>
<li>Ajouter le produit par <span class="math inline">\delta</span> là où nécessaire</li>
<li>Ajouter les modèles <span class="math inline">\delta</span>, <span class="math inline">\delta\pi, \dots</span> et les blocs conditionnels</li>
<li>Ajouter les tests unitaires adéquats et les vérifier</li>
</ul></li>
<li><p>Regarder <em>Largest gap</em> sur réseaux Doré</p></li>
<li><p>Essayer <em>clustering</em> sur <code>supinfo</code></p></li>
<li><p>Homogénéiser notations dans les supplementaries</p></li>
</ul>
<div id="ref-kmeans-vae" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-ref figure">
<div aria-describedby="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<ul>
<li>Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur lespace latent Jai commencé à regarder un peu</li>
</ul>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-ref quarto-uncaptioned" id="ref-kmeans-vae-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Reference&nbsp;1
</figcaption>
</figure>
</div>
<section id="inférence-et-microbes" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</h3>
<ul>
<li>easy16s : se renseigner sur
<ul>
<li><span class="math inline">\alpha</span>, <span class="math inline">\beta</span> diversité</li>
<li>Heatmap</li>
<li>Voir avec Mahendra à loccasion du CSI</li>
</ul></li>
<li>Lancer <em>colBiSBM</em> sur <span class="math inline">OTU\times Sample</span> → problème du chargement en mémoire des données à voir</li>
<li>Lancer <em>colSBM</em> sur <span class="math inline">OTU\times OTU</span></li>
<li>TabNet pratiquer les <a href="https://github.com/cregouby/Tutoriel_torch">exercices</a></li>
<li>Regarder <strong>SPARTA</strong> Rennes</li>
<li>Lire Papiers compositional data (Aitchison et al.&nbsp;intro)</li>
<li>Lire article multi-niveaux Saint-Clair</li>
<li>Ecrire et étudier les modèles pour différents niveaux taxonomiques. <span class="math display">\begin{align*}
i \rightarrow &amp;~N^1_i \subseteq N^2_i \subseteq N^3_i &amp; \text{Taxonomie}\\
Z^0_i \overset{?}{=} &amp; Z^1_i \overset{?}{=} Z^2_i \overset{?}{=} Z^3_i &amp; \text{Groupes fonctionnels}
\end{align*}</span></li>
</ul>
<section id="causalité" class="level4" data-number="1.1.1">
<h4 data-number="1.1.1" class="anchored" data-anchor-id="causalité"><span class="header-section-number">1.1.1</span> Causalité</h4>
<p>Plus sur le temps long, à regarder</p>
<ul>
<li>GT causalité</li>
<li>Daria Bystrova lire présentation <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span> (Meek rules, V-structure)</li>
</ul>
</section>
</section>
</section>
<section id="biblio-à-faire" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="biblio-à-faire"><span class="header-section-number">2</span> Biblio à faire</h2>
<ul>
<li>Regarder Transport optimal graphes bipartite.</li>
</ul>
</section>
<section id="lectures-en-cours" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="lectures-en-cours"><span class="header-section-number">3</span> Lectures en cours 📚</h2>
<section id="hdr-vincent-brault" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="hdr-vincent-brault"><span class="header-section-number">3.1</span> HDR Vincent Brault</h3>
<ul>
<li>⌛ Chap 2 : Creuser lidé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</li>
<li>Chap 3</li>
</ul>
</section>
<section id="ot" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="ot"><span class="header-section-number">3.2</span> OT</h3>
<ul>
<li><span class="citation" data-cites="mazeletUnsupervisedLearningOptimal">Mazelet, Flamary, et Thirion (<a href="#ref-mazeletUnsupervisedLearningOptimal" role="doc-biblioref">s.&nbsp;d.</a>)</span> Intéressant pour le transport optimal entre graphes de tailles différentes | Regarder si regularization entropique ne marche pas bien pour le graphe.</li>
<li><span class="citation" data-cites="nennaLecture2Entropic">Nenna (<a href="#ref-nennaLecture2Entropic" role="doc-biblioref">s.&nbsp;d.b</a>)</span> Pour comprendre le problème dOT régularisé pour lentropie.</li>
<li><span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s.&nbsp;d.a</a>)</span></li>
</ul>
</section>
<section id="inférence-de-graphes" class="level3" data-number="3.3">
<h3 data-number="3.3" class="anchored" data-anchor-id="inférence-de-graphes"><span class="header-section-number">3.3</span> Inférence de graphes</h3>
<ul>
<li><p><span class="citation" data-cites="aitchisonStatisticalAnalysisCompositional1982a">Aitchison (<a href="#ref-aitchisonStatisticalAnalysisCompositional1982a" role="doc-biblioref">1982</a>)</span>, en cours</p></li>
<li><p>❗📖 <span class="citation" data-cites="payneFiniteMixturesMultivariate2023">Payne et al. (<a href="#ref-payneFiniteMixturesMultivariate2023" role="doc-biblioref">2023</a>)</span> sur MixMPLN</p></li>
</ul>
</section>
<section id="causalité-1" class="level3" data-number="3.4">
<h3 data-number="3.4" class="anchored" data-anchor-id="causalité-1"><span class="header-section-number">3.4</span> Causalité</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span></li>
</ul>
</section>
<section id="largest-gaps" class="level3" data-number="3.5">
<h3 data-number="3.5" class="anchored" data-anchor-id="largest-gaps"><span class="header-section-number">3.5</span> Largest Gaps</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="braultFastConsistentAlgorithm2023">Brault et Channarond (<a href="#ref-braultFastConsistentAlgorithm2023" role="doc-biblioref">2023</a>)</span></li>
<li>❗📖 <span class="citation" data-cites="channarondClassificationEstimationStochastic2012">Channarond, Daudin, et Robin (<a href="#ref-channarondClassificationEstimationStochastic2012" role="doc-biblioref">2012</a>)</span> le papier qui introduit le <em>Largest Gaps</em></li>
</ul>
</section>
</section>
<section id="a-discuter" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="a-discuter"><span class="header-section-number">4</span> A discuter</h2>
<section id="congés-ps" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="congés-ps"><span class="header-section-number">4.1</span> Congés P&amp;S</h3>
</section>
<section id="thèse" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="thèse"><span class="header-section-number">4.2</span> Thèse</h3>
<ul>
<li>Faire préz CSI</li>
<li>Faire rapport CSI</li>
</ul>
</section>
<section id="inférence" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="inférence"><span class="header-section-number">4.3</span> Inférence</h3>
<ul>
<li>pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU …)</li>
</ul>
<blockquote class="blockquote">
<p>Combine networks at different taxonomic levels</p>
</blockquote>
<ul>
<li>Inférence + GREMLINS</li>
</ul>
</section>
</section>
<div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" role="doc-bibliography" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">Les références</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0" role="list">
<div id="ref-aitchisonStatisticalAnalysisCompositional1982a" class="csl-entry" role="listitem">
Aitchison, J. 1982. <span>«&nbsp;The <span>Statistical Analysis</span> of <span>Compositional Data</span>&nbsp;»</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 13977. <a href="https://www.jstor.org/stable/2345821">https://www.jstor.org/stable/2345821</a>.
</div>
<div id="ref-braultFastConsistentAlgorithm2023" class="csl-entry" role="listitem">
Brault, Vincent, et Antoine Channarond. 2023. <span>«&nbsp;Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span>&nbsp;»</span>. 9 mars 2023. <a href="https://doi.org/10.48550/arXiv.1610.09005">https://doi.org/10.48550/arXiv.1610.09005</a>.
</div>
<div id="ref-bystrovaCausalDiscovery" class="csl-entry" role="listitem">
Bystrova, Daria. s.&nbsp;d. <span>«&nbsp;Causal Discovery&nbsp;»</span>.
</div>
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>«&nbsp;Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees&nbsp;»</span>. <em>Electronic Journal of Statistics</em> 6 (janvier). <a href="https://doi.org/10.1214/12-ejs753">https://doi.org/10.1214/12-ejs753</a>.
</div>
<div id="ref-mazeletUnsupervisedLearningOptimal" class="csl-entry" role="listitem">
Mazelet, Sonia, Rémi Flamary, et Bertrand Thirion. s.&nbsp;d. <span>«&nbsp;Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs&nbsp;»</span>.
</div>
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
Nenna, Luca. s.&nbsp;d.a. <span>«&nbsp;Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual&nbsp;»</span>.
</div>
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
———. s.&nbsp;d.b. <span>«&nbsp;Lecture 2: <span>Entropic Optimal Transport</span>&nbsp;»</span>.
</div>
<div id="ref-payneFiniteMixturesMultivariate2023" class="csl-entry" role="listitem">
Payne, Andrea, Anjali Silva, Steven J. Rothstein, Paul D. McNicholas, et Sanjeena Subedi. 2023. <span>«&nbsp;Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span>&nbsp;»</span>. 13 novembre 2023. <a href="https://doi.org/10.48550/arXiv.2311.07762">https://doi.org/10.48550/arXiv.2311.07762</a>.
</div>
</div></section></div></main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

827
suivi/2025-44/2025-44.html Normal file
View file

@ -0,0 +1,827 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 44 2025 : 27 octobre - 31 octobre Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
/* CSS for citations */
div.csl-bib-body { }
div.csl-entry {
clear: both;
margin-bottom: 0em;
}
.hanging-indent div.csl-entry {
margin-left:2em;
text-indent:-2em;
}
div.csl-left-margin {
min-width:2em;
float:left;
}
div.csl-right-inline {
margin-left:2em;
padding-left:1em;
}
div.csl-indent {
margin-left: 2em;
}</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 44 2025 : 27 octobre - 31 octobre</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
<div class="quarto-category">inférence</div>
<div class="quarto-category">GNN</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">27 octobre 2025</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#todo-list" id="toc-todo-list" class="nav-link active" data-scroll-target="#todo-list"><span class="header-section-number">1</span> TODO List</a>
<ul class="collapse">
<li><a href="#inférence-et-microbes" id="toc-inférence-et-microbes" class="nav-link" data-scroll-target="#inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</a></li>
</ul></li>
<li><a href="#a-discuter" id="toc-a-discuter" class="nav-link" data-scroll-target="#a-discuter"><span class="header-section-number">2</span> A discuter</a></li>
<li><a href="#biblio-à-faire" id="toc-biblio-à-faire" class="nav-link" data-scroll-target="#biblio-à-faire"><span class="header-section-number">3</span> Biblio à faire</a></li>
<li><a href="#lectures-en-cours" id="toc-lectures-en-cours" class="nav-link" data-scroll-target="#lectures-en-cours"><span class="header-section-number">4</span> Lectures en cours 📚</a>
<ul class="collapse">
<li><a href="#hdr-vincent-brault" id="toc-hdr-vincent-brault" class="nav-link" data-scroll-target="#hdr-vincent-brault"><span class="header-section-number">4.1</span> HDR Vincent Brault</a></li>
<li><a href="#ot" id="toc-ot" class="nav-link" data-scroll-target="#ot"><span class="header-section-number">4.2</span> OT</a></li>
<li><a href="#inférence-de-graphes" id="toc-inférence-de-graphes" class="nav-link" data-scroll-target="#inférence-de-graphes"><span class="header-section-number">4.3</span> Inférence de graphes</a></li>
<li><a href="#causalité-1" id="toc-causalité-1" class="nav-link" data-scroll-target="#causalité-1"><span class="header-section-number">4.4</span> Causalité</a></li>
<li><a href="#largest-gaps" id="toc-largest-gaps" class="nav-link" data-scroll-target="#largest-gaps"><span class="header-section-number">4.5</span> Largest Gaps</a></li>
</ul></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="todo-list" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="todo-list"><span class="header-section-number">1</span> TODO List</h2>
<ul>
<li><p>Finir le papier :</p>
<ul>
<li><p>Re-structurer le plan, mon plan, Donnet et Barbillon, échelle méso et comparaison inter réseau et noeuds non partagés.</p></li>
<li><p>Partie Baldock: Ajouter lordre des modèles préférés</p></li>
<li><p>Envoyer Info transfer en annexe et remplacer par Network partitioning</p></li>
<li><p>✅ Fusionner VGAE et information transfer (missing links seulement) donc refaire tourner sur même données quen R. A adapter pour Python et pouvoir intégrer dans la figure. (raccourcit).</p></li>
<li><p>✅ Faire sep-VGAE (seulement sur le réseaux avec missing links) et VGAE avec les 4 réseaux. En train de reproduire les résultats, AUC stable autour de 0.7</p></li>
<li><p>Remplacer <em>Information tranfer on simu</em> par Network partitioning.</p></li>
<li><p>✅ Écrire le poster avec un titre aguicheur “Are my pollinators your pollinators: …”:</p></li>
</ul></li>
<li><p>Maitriser graphtools de Peixoto pour essayer dutiliser larbre taxonomique sur graphe de cooccurence inférer par SparCC</p></li>
<li><p>Maitriser SparCC</p></li>
<li><p>Faire LBM sur niveau taxonomique grossier, initialiser avec le résultat pour un niveau plus fin et ainsi de suite.</p></li>
<li><p>Clustering unipartite jai cassé une fonction de distance à vérifier et réparer</p></li>
</ul>
<!-- - Idée clustering unipartite graphes des métros
<div class="embed-container">
<iframe src="https://csun.uic.edu/wp-content/uploads/sites/1080/2023/12/pdf_7.pdf" width=100% height="475px" style="position: relative;">
</iframe>
</div> -->
<ul>
<li><p>Pour clustering de collections sur données <del>réelles</del> :<br>
→ Lintuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs <span class="math inline">(Q_1,Q_2)</span>.</p></li>
<li><p>👶 (délégué à stagiaire) Clustering sur Doré :</p>
<ul>
<li><p>Regarder pour les couples date+nom les études et le nombre de réseaux analysables (Possible demander à Élisa)</p>
<ul>
<li>⌛ Chamberlain et al semble intéressant à regarder ! Voir le Rmarkdown</li>
</ul></li>
<li><p>Clusteriser sur la base des noms et voir parmi les réseaux Européens (désagrégés ?)</p></li>
<li><p>Si M &gt; 10, alors voir si je retrouve les mêmes résultats que dans les études.</p></li>
<li><p>Regarder <em>Largest gap</em> sur réseaux Doré</p></li>
<li><p>Essayer <em>clustering</em> sur <code>supinfo</code></p></li>
</ul></li>
<li><p>✅ Homogénéiser notations dans les supplementaries</p></li>
</ul>
<section id="inférence-et-microbes" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</h3>
<section id="bibliographie-à-lire-à-faire" class="level4" data-number="1.1.1">
<h4 data-number="1.1.1" class="anchored" data-anchor-id="bibliographie-à-lire-à-faire"><span class="header-section-number">1.1.1</span> Bibliographie: à lire, à faire</h4>
<ul>
<li>Lire article multi-niveaux Saint-Clair</li>
<li>🆕⌛ Papier Julie Negative Binomiale</li>
<li>🆕 🔎 Trouver des papiers:
<ul>
<li>LBM Negative Binomial</li>
<li>Network inference through sample comparison</li>
</ul></li>
</ul>
</section>
<section id="réflexion" class="level4" data-number="1.1.2">
<h4 data-number="1.1.2" class="anchored" data-anchor-id="réflexion"><span class="header-section-number">1.1.2</span> Réflexion</h4>
<ul>
<li>easy16s : se renseigner sur
<ul>
<li><span class="math inline">\alpha</span>, <span class="math inline">\beta</span> diversité</li>
<li>Heatmap</li>
</ul></li>
<li>Regarder <strong>SPARTA</strong> Rennes</li>
<li>Ecrire et étudier les modèles pour différents niveaux taxonomiques.</li>
<li>🆕 Regarder NetComi</li>
<li>🆕 Regarder OneNet car aggrégation plus robuste</li>
<li>🆕 Réfléchir sens daggréger les données ou de les diviser</li>
</ul>
</section>
<section id="écrire-et-faire-tourner" class="level4" data-number="1.1.3">
<h4 data-number="1.1.3" class="anchored" data-anchor-id="écrire-et-faire-tourner"><span class="header-section-number">1.1.3</span> Écrire et faire tourner</h4>
<ul>
<li>Lancer <em>colBiSBM</em> sur <span class="math inline">OTU\times Sample</span> → problème du chargement en mémoire des données à voir</li>
<li>Lancer <em>colSBM</em> sur <span class="math inline">OTU\times OTU</span></li>
<li>TabNet pratiquer les <a href="https://github.com/cregouby/Tutoriel_torch">exercices</a></li>
<li>🆕 SparCC à différent niveaux</li>
<li>🆕 SBM à différent niveaux</li>
<li>🆕⌛ Tree-PLN à différents niveaux</li>
</ul>
</section>
<section id="causalité" class="level4" data-number="1.1.4">
<h4 data-number="1.1.4" class="anchored" data-anchor-id="causalité"><span class="header-section-number">1.1.4</span> Causalité</h4>
<p>Plus sur le temps long, à regarder</p>
<ul>
<li>GT causalité</li>
<li>Daria Bystrova lire présentation <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span> (Meek rules, V-structure)</li>
</ul>
</section>
</section>
</section>
<section id="a-discuter" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="a-discuter"><span class="header-section-number">2</span> A discuter</h2>
<ul>
<li>🆕 Voir pour des Réseaux / GDR ou aller</li>
<li>🆕 Chercher des cours à suivre</li>
</ul>
</section>
<section id="biblio-à-faire" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="biblio-à-faire"><span class="header-section-number">3</span> Biblio à faire</h2>
<ul>
<li>Regarder Transport optimal graphes bipartite.</li>
</ul>
</section>
<section id="lectures-en-cours" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="lectures-en-cours"><span class="header-section-number">4</span> Lectures en cours 📚</h2>
<section id="hdr-vincent-brault" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="hdr-vincent-brault"><span class="header-section-number">4.1</span> HDR Vincent Brault</h3>
<ul>
<li>⌛ Chap 2 : Creuser lidé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</li>
<li>Chap 3</li>
</ul>
</section>
<section id="ot" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="ot"><span class="header-section-number">4.2</span> OT</h3>
<ul>
<li><span class="citation" data-cites="mazeletUnsupervisedLearningOptimal">Mazelet, Flamary, et Thirion (<a href="#ref-mazeletUnsupervisedLearningOptimal" role="doc-biblioref">s.&nbsp;d.</a>)</span> Intéressant pour le transport optimal entre graphes de tailles différentes | Regarder si regularization entropique ne marche pas bien pour le graphe.</li>
<li><span class="citation" data-cites="nennaLecture2Entropic">Nenna (<a href="#ref-nennaLecture2Entropic" role="doc-biblioref">s.&nbsp;d.b</a>)</span> Pour comprendre le problème dOT régularisé pour lentropie.</li>
<li><span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s.&nbsp;d.a</a>)</span></li>
</ul>
</section>
<section id="inférence-de-graphes" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="inférence-de-graphes"><span class="header-section-number">4.3</span> Inférence de graphes</h3>
<ul>
<li><p><span class="citation" data-cites="aitchisonStatisticalAnalysisCompositional1982a">Aitchison (<a href="#ref-aitchisonStatisticalAnalysisCompositional1982a" role="doc-biblioref">1982</a>)</span>, en cours</p></li>
<li><p>❗📖 <span class="citation" data-cites="payneFiniteMixturesMultivariate2023">Payne et al. (<a href="#ref-payneFiniteMixturesMultivariate2023" role="doc-biblioref">2023</a>)</span> sur MixMPLN</p></li>
</ul>
</section>
<section id="causalité-1" class="level3" data-number="4.4">
<h3 data-number="4.4" class="anchored" data-anchor-id="causalité-1"><span class="header-section-number">4.4</span> Causalité</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span></li>
</ul>
</section>
<section id="largest-gaps" class="level3" data-number="4.5">
<h3 data-number="4.5" class="anchored" data-anchor-id="largest-gaps"><span class="header-section-number">4.5</span> Largest Gaps</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="braultFastConsistentAlgorithm2023">Brault et Channarond (<a href="#ref-braultFastConsistentAlgorithm2023" role="doc-biblioref">2023</a>)</span></li>
<li>❗📖 <span class="citation" data-cites="channarondClassificationEstimationStochastic2012">Channarond, Daudin, et Robin (<a href="#ref-channarondClassificationEstimationStochastic2012" role="doc-biblioref">2012</a>)</span> le papier qui introduit le <em>Largest Gaps</em></li>
</ul>
</section>
</section>
<div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" role="doc-bibliography" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">Les références</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0" role="list">
<div id="ref-aitchisonStatisticalAnalysisCompositional1982a" class="csl-entry" role="listitem">
Aitchison, J. 1982. <span>«&nbsp;The <span>Statistical Analysis</span> of <span>Compositional Data</span>&nbsp;»</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 13977. <a href="https://www.jstor.org/stable/2345821">https://www.jstor.org/stable/2345821</a>.
</div>
<div id="ref-braultFastConsistentAlgorithm2023" class="csl-entry" role="listitem">
Brault, Vincent, et Antoine Channarond. 2023. <span>«&nbsp;Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span>&nbsp;»</span>. 9 mars 2023. <a href="https://doi.org/10.48550/arXiv.1610.09005">https://doi.org/10.48550/arXiv.1610.09005</a>.
</div>
<div id="ref-bystrovaCausalDiscovery" class="csl-entry" role="listitem">
Bystrova, Daria. s.&nbsp;d. <span>«&nbsp;Causal Discovery&nbsp;»</span>.
</div>
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>«&nbsp;Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees&nbsp;»</span>. <em>Electronic Journal of Statistics</em> 6 (janvier). <a href="https://doi.org/10.1214/12-ejs753">https://doi.org/10.1214/12-ejs753</a>.
</div>
<div id="ref-mazeletUnsupervisedLearningOptimal" class="csl-entry" role="listitem">
Mazelet, Sonia, Rémi Flamary, et Bertrand Thirion. s.&nbsp;d. <span>«&nbsp;Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs&nbsp;»</span>.
</div>
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
Nenna, Luca. s.&nbsp;d.a. <span>«&nbsp;Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual&nbsp;»</span>.
</div>
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
———. s.&nbsp;d.b. <span>«&nbsp;Lecture 2: <span>Entropic Optimal Transport</span>&nbsp;»</span>.
</div>
<div id="ref-payneFiniteMixturesMultivariate2023" class="csl-entry" role="listitem">
Payne, Andrea, Anjali Silva, Steven J. Rothstein, Paul D. McNicholas, et Sanjeena Subedi. 2023. <span>«&nbsp;Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span>&nbsp;»</span>. 13 novembre 2023. <a href="https://doi.org/10.48550/arXiv.2311.07762">https://doi.org/10.48550/arXiv.2311.07762</a>.
</div>
</div></section></div></main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

835
suivi/2025-45/2025-45.html Normal file
View file

@ -0,0 +1,835 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 45 2025 : 03 novembre - 06 novembre Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
/* CSS for citations */
div.csl-bib-body { }
div.csl-entry {
clear: both;
margin-bottom: 0em;
}
.hanging-indent div.csl-entry {
margin-left:2em;
text-indent:-2em;
}
div.csl-left-margin {
min-width:2em;
float:left;
}
div.csl-right-inline {
margin-left:2em;
padding-left:1em;
}
div.csl-indent {
margin-left: 2em;
}</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 45 2025 : 03 novembre - 06 novembre</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
<div class="quarto-category">inférence</div>
<div class="quarto-category">GNN</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">3 novembre 2025</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#todo-list" id="toc-todo-list" class="nav-link active" data-scroll-target="#todo-list"><span class="header-section-number">1</span> TODO List</a>
<ul class="collapse">
<li><a href="#inférence-et-microbes" id="toc-inférence-et-microbes" class="nav-link" data-scroll-target="#inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</a></li>
</ul></li>
<li><a href="#a-discuter" id="toc-a-discuter" class="nav-link" data-scroll-target="#a-discuter"><span class="header-section-number">2</span> A discuter</a></li>
<li><a href="#biblio-à-faire" id="toc-biblio-à-faire" class="nav-link" data-scroll-target="#biblio-à-faire"><span class="header-section-number">3</span> Biblio à faire</a></li>
<li><a href="#lectures-en-cours" id="toc-lectures-en-cours" class="nav-link" data-scroll-target="#lectures-en-cours"><span class="header-section-number">4</span> Lectures en cours 📚</a>
<ul class="collapse">
<li><a href="#hdr-vincent-brault" id="toc-hdr-vincent-brault" class="nav-link" data-scroll-target="#hdr-vincent-brault"><span class="header-section-number">4.1</span> HDR Vincent Brault</a></li>
<li><a href="#ot" id="toc-ot" class="nav-link" data-scroll-target="#ot"><span class="header-section-number">4.2</span> OT</a></li>
<li><a href="#inférence-de-graphes" id="toc-inférence-de-graphes" class="nav-link" data-scroll-target="#inférence-de-graphes"><span class="header-section-number">4.3</span> Inférence de graphes</a></li>
<li><a href="#causalité-1" id="toc-causalité-1" class="nav-link" data-scroll-target="#causalité-1"><span class="header-section-number">4.4</span> Causalité</a></li>
<li><a href="#largest-gaps" id="toc-largest-gaps" class="nav-link" data-scroll-target="#largest-gaps"><span class="header-section-number">4.5</span> Largest Gaps</a></li>
</ul></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="todo-list" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="todo-list"><span class="header-section-number">1</span> TODO List</h2>
<ul>
<li><p>Finir le papier :</p>
<ul>
<li>❓ Fait ? Re-structurer le plan, mon plan, Donnet et Barbillon, échelle méso et comparaison inter réseau et noeuds non partagés.</li>
<li>✅ Partie Baldock: Ajouter lordre des modèles préférés et vérifier mais BICLsep &lt; BICL pirho &lt; BICL iid</li>
<li>✅ Toutes les simus en annexe. Envoyer Info transfer en annexe et remplacer par Network partitioning</li>
</ul></li>
<li><p>Codes pour le papier :</p>
<ul>
<li>Nettoyer les scripts</li>
<li>Faire un joli README</li>
<li>❓Faire des notebooks</li>
</ul></li>
<li><p>Maitriser graphtools de Peixoto pour essayer dutiliser larbre taxonomique sur graphe de cooccurence inférer par SparCC</p></li>
<li><p>Maitriser SparCC</p></li>
<li><p>Faire LBM sur niveau taxonomique grossier, initialiser avec le résultat pour un niveau plus fin et ainsi de suite.</p></li>
<li><p>Clustering unipartite jai cassé une fonction de distance à vérifier et réparer</p></li>
<li><p>Pour clustering de collections sur données <del>réelles</del> :<br>
→ Lintuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs <span class="math inline">(Q_1,Q_2)</span>.</p></li>
<li><p>👶 (délégué à Mona) Clustering sur Doré :</p>
<ul>
<li><p>Regarder pour les couples date+nom les études et le nombre de réseaux analysables (Possible demander à Élisa)</p>
<ul>
<li>⌛ Chamberlain et al semble intéressant à regarder ! Voir le Rmarkdown</li>
</ul></li>
<li><p>Clusteriser sur la base des noms et voir parmi les réseaux Européens (désagrégés ?)</p></li>
<li><p>Si M &gt; 10, alors voir si je retrouve les mêmes résultats que dans les études.</p></li>
<li><p>Regarder <em>Largest gap</em> sur réseaux Doré</p></li>
<li><p>⌛ Essayer <em>clustering</em> sur <code>supinfo</code></p>
<ul>
<li>CAH et Kmeans tendent vers faire <span class="math inline">K = 13</span> clusters sur les supinfos</li>
<li>Enrichir avec des métriques sur les réseaux (nestedness, connectance autres ?)</li>
<li>Demander à Elisa pour la signification des métadonnées</li>
<li>Demander à Elisa une fois vu cohérences de groupe voir pour interprétation écologiques ?</li>
<li>Algo de clustering sur les groupes trouvés</li>
</ul></li>
</ul></li>
</ul>
<section id="inférence-et-microbes" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</h3>
<section id="bibliographie-à-lire-à-faire" class="level4" data-number="1.1.1">
<h4 data-number="1.1.1" class="anchored" data-anchor-id="bibliographie-à-lire-à-faire"><span class="header-section-number">1.1.1</span> Bibliographie: à lire, à faire</h4>
<ul>
<li>Lire article multi-niveaux Saint-Clair</li>
<li>✅ Papier Julie Negative Binomiale</li>
<li>🆕 🔎 Trouver des papiers:
<ul>
<li>LBM Negative Binomial</li>
<li>Network inference through sample comparison</li>
</ul></li>
<li>Idée des groupes sur la base de distance phylogénétique:
<ul>
<li>En train de comprendre les distances que phyloseq permet de calculer sur notre exemple</li>
<li>En train de lire sur Principle coordinate analysis : https://openplantpathology.github.io/OPP_Workshop_Multivariate/2-MV_PCO.html</li>
<li>Parametric t-SNE pour avoir une unique représentation latente (inconvénient utilise du Deep Learning)</li>
<li>Lire Papier UniFrac</li>
</ul></li>
</ul>
</section>
<section id="réflexion" class="level4" data-number="1.1.2">
<h4 data-number="1.1.2" class="anchored" data-anchor-id="réflexion"><span class="header-section-number">1.1.2</span> Réflexion</h4>
<ul>
<li>easy16s : se renseigner sur
<ul>
<li><span class="math inline">\alpha</span>, <span class="math inline">\beta</span> diversité</li>
<li>Heatmap</li>
</ul></li>
<li>Regarder <strong>SPARTA</strong> Rennes</li>
<li>Ecrire et étudier les modèles pour différents niveaux taxonomiques.</li>
<li>🆕 Regarder NetComi</li>
<li>🆕 Regarder OneNet car aggrégation plus robuste</li>
<li>🆕 Réfléchir sens daggréger les données ou de les diviser</li>
</ul>
</section>
<section id="écrire-et-faire-tourner" class="level4" data-number="1.1.3">
<h4 data-number="1.1.3" class="anchored" data-anchor-id="écrire-et-faire-tourner"><span class="header-section-number">1.1.3</span> Écrire et faire tourner</h4>
<ul>
<li>Lancer <em>colBiSBM</em> sur <span class="math inline">OTU\times Sample</span> → problème du chargement en mémoire des données à voir</li>
<li>Lancer <em>colSBM</em> sur <span class="math inline">OTU\times OTU</span></li>
<li>TabNet pratiquer les <a href="https://github.com/cregouby/Tutoriel_torch">exercices</a></li>
<li>🆕 SparCC à différent niveaux</li>
<li>🆕 SBM à différent niveaux</li>
<li>🆕⌛ Tree-PLN à différents niveaux</li>
</ul>
</section>
<section id="causalité" class="level4" data-number="1.1.4">
<h4 data-number="1.1.4" class="anchored" data-anchor-id="causalité"><span class="header-section-number">1.1.4</span> Causalité</h4>
<p>Plus sur le temps long, à regarder</p>
<ul>
<li>GT causalité</li>
<li>Daria Bystrova lire présentation <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span> (Meek rules, V-structure)</li>
</ul>
</section>
</section>
</section>
<section id="a-discuter" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="a-discuter"><span class="header-section-number">2</span> A discuter</h2>
<ul>
<li>🆕 Voir pour des Réseaux / GDR ou aller</li>
<li>🆕 Chercher des cours à suivre</li>
</ul>
</section>
<section id="biblio-à-faire" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="biblio-à-faire"><span class="header-section-number">3</span> Biblio à faire</h2>
<ul>
<li>Regarder Transport optimal graphes bipartite.</li>
</ul>
</section>
<section id="lectures-en-cours" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="lectures-en-cours"><span class="header-section-number">4</span> Lectures en cours 📚</h2>
<section id="hdr-vincent-brault" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="hdr-vincent-brault"><span class="header-section-number">4.1</span> HDR Vincent Brault</h3>
<ul>
<li>⌛ Chap 2 : Creuser lidé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</li>
<li>Chap 3</li>
</ul>
</section>
<section id="ot" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="ot"><span class="header-section-number">4.2</span> OT</h3>
<ul>
<li><span class="citation" data-cites="mazeletUnsupervisedLearningOptimal">Mazelet, Flamary, et Thirion (<a href="#ref-mazeletUnsupervisedLearningOptimal" role="doc-biblioref">s.&nbsp;d.</a>)</span> Intéressant pour le transport optimal entre graphes de tailles différentes | Regarder si regularization entropique ne marche pas bien pour le graphe.</li>
<li><span class="citation" data-cites="nennaLecture2Entropic">Nenna (<a href="#ref-nennaLecture2Entropic" role="doc-biblioref">s.&nbsp;d.b</a>)</span> Pour comprendre le problème dOT régularisé pour lentropie.</li>
<li><span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s.&nbsp;d.a</a>)</span></li>
</ul>
</section>
<section id="inférence-de-graphes" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="inférence-de-graphes"><span class="header-section-number">4.3</span> Inférence de graphes</h3>
<ul>
<li><p><span class="citation" data-cites="aitchisonStatisticalAnalysisCompositional1982a">Aitchison (<a href="#ref-aitchisonStatisticalAnalysisCompositional1982a" role="doc-biblioref">1982</a>)</span>, en cours</p></li>
<li><p>❗📖 <span class="citation" data-cites="payneFiniteMixturesMultivariate2023">Payne et al. (<a href="#ref-payneFiniteMixturesMultivariate2023" role="doc-biblioref">2023</a>)</span> sur MixMPLN</p></li>
</ul>
</section>
<section id="causalité-1" class="level3" data-number="4.4">
<h3 data-number="4.4" class="anchored" data-anchor-id="causalité-1"><span class="header-section-number">4.4</span> Causalité</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span></li>
</ul>
</section>
<section id="largest-gaps" class="level3" data-number="4.5">
<h3 data-number="4.5" class="anchored" data-anchor-id="largest-gaps"><span class="header-section-number">4.5</span> Largest Gaps</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="braultFastConsistentAlgorithm2023">Brault et Channarond (<a href="#ref-braultFastConsistentAlgorithm2023" role="doc-biblioref">2023</a>)</span></li>
<li>❗📖 <span class="citation" data-cites="channarondClassificationEstimationStochastic2012">Channarond, Daudin, et Robin (<a href="#ref-channarondClassificationEstimationStochastic2012" role="doc-biblioref">2012</a>)</span> le papier qui introduit le <em>Largest Gaps</em></li>
</ul>
</section>
</section>
<div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" role="doc-bibliography" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">Les références</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0" role="list">
<div id="ref-aitchisonStatisticalAnalysisCompositional1982a" class="csl-entry" role="listitem">
Aitchison, J. 1982. <span>«&nbsp;The <span>Statistical Analysis</span> of <span>Compositional Data</span>&nbsp;»</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 13977. <a href="https://www.jstor.org/stable/2345821">https://www.jstor.org/stable/2345821</a>.
</div>
<div id="ref-braultFastConsistentAlgorithm2023" class="csl-entry" role="listitem">
Brault, Vincent, et Antoine Channarond. 2023. <span>«&nbsp;Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span>&nbsp;»</span>. 9 mars 2023. <a href="https://doi.org/10.48550/arXiv.1610.09005">https://doi.org/10.48550/arXiv.1610.09005</a>.
</div>
<div id="ref-bystrovaCausalDiscovery" class="csl-entry" role="listitem">
Bystrova, Daria. s.&nbsp;d. <span>«&nbsp;Causal Discovery&nbsp;»</span>.
</div>
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>«&nbsp;Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees&nbsp;»</span>. <em>Electronic Journal of Statistics</em> 6 (janvier). <a href="https://doi.org/10.1214/12-ejs753">https://doi.org/10.1214/12-ejs753</a>.
</div>
<div id="ref-mazeletUnsupervisedLearningOptimal" class="csl-entry" role="listitem">
Mazelet, Sonia, Rémi Flamary, et Bertrand Thirion. s.&nbsp;d. <span>«&nbsp;Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs&nbsp;»</span>.
</div>
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
Nenna, Luca. s.&nbsp;d.a. <span>«&nbsp;Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual&nbsp;»</span>.
</div>
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
———. s.&nbsp;d.b. <span>«&nbsp;Lecture 2: <span>Entropic Optimal Transport</span>&nbsp;»</span>.
</div>
<div id="ref-payneFiniteMixturesMultivariate2023" class="csl-entry" role="listitem">
Payne, Andrea, Anjali Silva, Steven J. Rothstein, Paul D. McNicholas, et Sanjeena Subedi. 2023. <span>«&nbsp;Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span>&nbsp;»</span>. 13 novembre 2023. <a href="https://doi.org/10.48550/arXiv.2311.07762">https://doi.org/10.48550/arXiv.2311.07762</a>.
</div>
</div></section></div></main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

875
suivi/2025-50/2025-50.html Normal file
View file

@ -0,0 +1,875 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 50 2025 : 08 décembre - 12 décembre Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
/* CSS for citations */
div.csl-bib-body { }
div.csl-entry {
clear: both;
margin-bottom: 0em;
}
.hanging-indent div.csl-entry {
margin-left:2em;
text-indent:-2em;
}
div.csl-left-margin {
min-width:2em;
float:left;
}
div.csl-right-inline {
margin-left:2em;
padding-left:1em;
}
div.csl-indent {
margin-left: 2em;
}</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 50 2025 : 08 décembre - 12 décembre</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
<div class="quarto-category">inférence</div>
<div class="quarto-category">GNN</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">12 décembre 2025</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#todo-list" id="toc-todo-list" class="nav-link active" data-scroll-target="#todo-list"><span class="header-section-number">1</span> TODO List</a>
<ul class="collapse">
<li><a href="#inférence-et-microbes" id="toc-inférence-et-microbes" class="nav-link" data-scroll-target="#inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</a></li>
</ul></li>
<li><a href="#a-discuter" id="toc-a-discuter" class="nav-link" data-scroll-target="#a-discuter"><span class="header-section-number">2</span> A discuter</a></li>
<li><a href="#biblio-à-faire" id="toc-biblio-à-faire" class="nav-link" data-scroll-target="#biblio-à-faire"><span class="header-section-number">3</span> Biblio à faire</a></li>
<li><a href="#lectures-en-cours" id="toc-lectures-en-cours" class="nav-link" data-scroll-target="#lectures-en-cours"><span class="header-section-number">4</span> Lectures en cours 📚</a>
<ul class="collapse">
<li><a href="#hdr-vincent-brault" id="toc-hdr-vincent-brault" class="nav-link" data-scroll-target="#hdr-vincent-brault"><span class="header-section-number">4.1</span> HDR Vincent Brault</a></li>
<li><a href="#ot" id="toc-ot" class="nav-link" data-scroll-target="#ot"><span class="header-section-number">4.2</span> OT</a></li>
<li><a href="#inférence-de-graphes" id="toc-inférence-de-graphes" class="nav-link" data-scroll-target="#inférence-de-graphes"><span class="header-section-number">4.3</span> Inférence de graphes</a></li>
<li><a href="#causalité-1" id="toc-causalité-1" class="nav-link" data-scroll-target="#causalité-1"><span class="header-section-number">4.4</span> Causalité</a></li>
<li><a href="#largest-gaps" id="toc-largest-gaps" class="nav-link" data-scroll-target="#largest-gaps"><span class="header-section-number">4.5</span> Largest Gaps</a></li>
</ul></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="todo-list" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="todo-list"><span class="header-section-number">1</span> TODO List</h2>
<ul>
<li><p>⚠️ IL Y A UNE TYPO SUR LE SIGNE DE LENTROPIE POUR LE PAPIER: <span class="math inline">- \mathcal{H}</span> au lieu de <span class="math inline">+\mathcal{H}</span></p></li>
<li><p>Codes pour le papier :</p>
<ul>
<li>Nettoyer les scripts</li>
<li>Faire un joli README</li>
<li>❓Faire des notebooks</li>
</ul></li>
<li><p>Faire tourner clustering sur Trojelsgaard</p></li>
<li><p>Réussir à reproduire résultat de <span class="citation" data-cites="abramovStructureKnowsBest">Abramov et al. (<a href="#ref-abramovStructureKnowsBest" role="doc-biblioref">s.&nbsp;d.</a>)</span></p></li>
<li><p>Maitriser graphtools de Peixoto pour essayer dutiliser larbre taxonomique sur graphe de cooccurence inférer par SparCC</p></li>
<li><p>Maitriser SparCC</p></li>
<li><p>Faire LBM sur niveau taxonomique grossier, initialiser avec le résultat pour un niveau plus fin et ainsi de suite.</p></li>
<li><p>Clustering unipartite jai cassé une fonction de distance à vérifier et réparer</p></li>
<li><p>Pour clustering de collections sur données <del>réelles</del> :<br>
→ Lintuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs <span class="math inline">(Q_1,Q_2)</span>.</p></li>
<li><p>👶 (délégué à Mona) Clustering sur Doré :</p>
<ul>
<li><p>Regarder pour les couples date+nom les études et le nombre de réseaux analysables (Possible demander à Élisa)</p>
<ul>
<li>⌛ Chamberlain et al semble intéressant à regarder ! Voir le Rmarkdown</li>
</ul></li>
<li><p>Clusteriser sur la base des noms et voir parmi les réseaux Européens (désagrégés ?)</p></li>
<li><p>Si M &gt; 10, alors voir si je retrouve les mêmes résultats que dans les études.</p></li>
<li><p>Regarder <em>Largest gap</em> sur réseaux Doré</p></li>
<li><p>⌛ Essayer <em>clustering</em> sur <code>supinfo</code></p>
<ul>
<li>CAH et Kmeans tendent vers faire <span class="math inline">K = 13</span> clusters sur les supinfos</li>
<li>Enrichir avec des métriques sur les réseaux (nestedness, connectance autres ?)</li>
<li>Demander à Elisa pour la signification des métadonnées</li>
<li>Demander à Elisa une fois vu cohérences de groupe voir pour interprétation écologiques ?</li>
<li>Algo de clustering sur les groupes trouvés</li>
</ul></li>
</ul></li>
</ul>
<section id="inférence-et-microbes" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</h3>
<section id="modèle-avec-covariables-sur-probas-dappartenances-aux-groupes" class="level4" data-number="1.1.1">
<h4 data-number="1.1.1" class="anchored" data-anchor-id="modèle-avec-covariables-sur-probas-dappartenances-aux-groupes"><span class="header-section-number">1.1.1</span> Modèle avec covariables sur probas dappartenances aux groupes</h4>
<p>Toujours modèle LBM mais avec probas dappartenance pour les colonnes variables:</p>
<p><span class="math display">\begin{align*}
Z_i &amp;\sim \mathcal{M}(1; \pi_1, \dots, \pi_Q), \sum_{q=1}^{Q} \pi_q = 1\\
W_j &amp;\sim \mathcal{M}(1; \rho_1^j, \dots, \rho_R^j), \sum_{r=1}^{R} \rho_r^j = 1\\
Y_{i,j}&amp;\mid Z_i = q, W_j = r \sim \mathcal{F}(\alpha_{qr})
\end{align*}</span></p>
<p>Inférence variationnelle donc <span class="math inline">\ell(Y;\pmb{\theta}) \geq \mathcal{J}(\mathcal{R},\pmb{\theta})</span> avec</p>
<p><span class="math display">
\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}
</span></p>
<p>Plusieurs possibilités pour la définition de <span class="math inline">\rho_r^j</span></p>
<section id="modèle-1-tabouy" class="level5" data-number="1.1.1.1">
<h5 data-number="1.1.1.1" class="anchored" data-anchor-id="modèle-1-tabouy"><span class="header-section-number">1.1.1.1</span> Modèle 1 (Tabouy)</h5>
<p>Dénominateur pas correct, ne somme pas à 1.</p>
<p><span class="math inline">\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</span> et <span class="math inline">\rho_R^{j} = \frac{1}{1+\sum_{s=1}^{R-1} \beta_s X_j}</span> (pas de compréhension intuitive)</p>
<p>La partie pertinente de lELBO devient: <span class="math display">
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))]
</span></p>
<p>Et on obtient la dérivée partielle par rapport à <span class="math inline">\beta_t</span> comme: <span class="math display">\begin{align*}
\dfrac{\partial P}{\partial \beta_t}&amp;((\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]\\
&amp; = \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*}</span></p>
<p>❓ Gradient mesure lécart entre probas a posteriori et la proba a priori du groupe de référence ?</p>
<p><strong>Conclusion</strong>: Il manque lexponentielle cette formulation ne somme pas à 1.</p>
</section>
<section id="modèle-sophie" class="level5" data-number="1.1.1.2">
<h5 data-number="1.1.1.2" class="anchored" data-anchor-id="modèle-sophie"><span class="header-section-number">1.1.1.2</span> Modèle Sophie</h5>
<p>Avec <span class="math inline">\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}</span>, où <span class="math inline">\sigma</span> désigne le softmax. Mais il y a besoin de poser une contrainte sur lun des <span class="math inline">(\beta_r)_{r=1,\dots,R}</span>, ici <span class="math inline">\beta_R = 0</span>.</p>
<p>La partie pertinente de lELBO devient: <span class="math display">
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}))]
</span></p>
<p>Et on obtient la dérivée partielle par rapport à <span class="math inline">\beta_t</span> comme: <span class="math display">\begin{align*}
\dfrac{\partial P}{\partial \beta_t}&amp;((\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]\\
&amp; = \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*}</span></p>
</section>
</section>
<section id="bibliographie-à-lire-à-faire" class="level4" data-number="1.1.2">
<h4 data-number="1.1.2" class="anchored" data-anchor-id="bibliographie-à-lire-à-faire"><span class="header-section-number">1.1.2</span> Bibliographie: à lire, à faire</h4>
<ul>
<li>Lire article multi-niveaux Saint-Clair</li>
<li>🆕 🔎 Trouver des papiers:
<ul>
<li>LBM Negative Binomial</li>
<li>Network inference through sample comparison</li>
</ul></li>
<li>Idée des groupes sur la base de distance phylogénétique:
<ul>
<li>En train de comprendre les distances que phyloseq permet de calculer sur notre exemple</li>
<li>En train de lire sur Principle coordinate analysis : https://openplantpathology.github.io/OPP_Workshop_Multivariate/2-MV_PCO.html</li>
<li>Parametric t-SNE pour avoir une unique représentation latente (inconvénient utilise du Deep Learning)</li>
<li>Lire Papier UniFrac</li>
</ul></li>
</ul>
</section>
<section id="réflexion" class="level4" data-number="1.1.3">
<h4 data-number="1.1.3" class="anchored" data-anchor-id="réflexion"><span class="header-section-number">1.1.3</span> Réflexion</h4>
<ul>
<li>easy16s : se renseigner sur
<ul>
<li><span class="math inline">\alpha</span>, <span class="math inline">\beta</span> diversité</li>
<li>Heatmap</li>
</ul></li>
<li>Regarder <strong>SPARTA</strong> Rennes</li>
<li>Ecrire et étudier les modèles pour différents niveaux taxonomiques.</li>
<li>🆕 Regarder NetComi</li>
<li>🆕 Regarder OneNet car aggrégation plus robuste</li>
<li>🆕 Réfléchir sens daggréger les données ou de les diviser</li>
</ul>
</section>
<section id="écrire-et-faire-tourner" class="level4" data-number="1.1.4">
<h4 data-number="1.1.4" class="anchored" data-anchor-id="écrire-et-faire-tourner"><span class="header-section-number">1.1.4</span> Écrire et faire tourner</h4>
<ul>
<li>Lancer <em>colBiSBM</em> sur <span class="math inline">OTU\times Sample</span> → problème du chargement en mémoire des données à voir</li>
<li>Lancer <em>colSBM</em> sur <span class="math inline">OTU\times OTU</span></li>
<li>TabNet pratiquer les <a href="https://github.com/cregouby/Tutoriel_torch">exercices</a></li>
<li>🆕 SparCC à différent niveaux</li>
<li>🆕 SBM à différent niveaux</li>
<li>🆕⌛ Tree-PLN à différents niveaux</li>
</ul>
</section>
<section id="causalité" class="level4" data-number="1.1.5">
<h4 data-number="1.1.5" class="anchored" data-anchor-id="causalité"><span class="header-section-number">1.1.5</span> Causalité</h4>
<p>Plus sur le temps long, à regarder</p>
<ul>
<li>GT causalité</li>
<li>Daria Bystrova lire présentation <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span> (Meek rules, V-structure)</li>
</ul>
</section>
</section>
</section>
<section id="a-discuter" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="a-discuter"><span class="header-section-number">2</span> A discuter</h2>
<ul>
<li>🆕 Voir pour des Réseaux / GDR ou aller</li>
<li>🆕 Chercher des cours à suivre</li>
</ul>
</section>
<section id="biblio-à-faire" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="biblio-à-faire"><span class="header-section-number">3</span> Biblio à faire</h2>
<ul>
<li>Regarder Transport optimal graphes bipartite.</li>
</ul>
</section>
<section id="lectures-en-cours" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="lectures-en-cours"><span class="header-section-number">4</span> Lectures en cours 📚</h2>
<section id="hdr-vincent-brault" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="hdr-vincent-brault"><span class="header-section-number">4.1</span> HDR Vincent Brault</h3>
<ul>
<li>⌛ Chap 2 : Creuser lidé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</li>
<li>Chap 3</li>
</ul>
</section>
<section id="ot" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="ot"><span class="header-section-number">4.2</span> OT</h3>
<ul>
<li><span class="citation" data-cites="mazeletUnsupervisedLearningOptimal">Mazelet, Flamary, et Thirion (<a href="#ref-mazeletUnsupervisedLearningOptimal" role="doc-biblioref">s.&nbsp;d.</a>)</span> Intéressant pour le transport optimal entre graphes de tailles différentes | Regarder si regularization entropique ne marche pas bien pour le graphe.</li>
<li><span class="citation" data-cites="nennaLecture2Entropic">Nenna (<a href="#ref-nennaLecture2Entropic" role="doc-biblioref">s.&nbsp;d.b</a>)</span> Pour comprendre le problème dOT régularisé pour lentropie.</li>
<li><span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s.&nbsp;d.a</a>)</span></li>
</ul>
</section>
<section id="inférence-de-graphes" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="inférence-de-graphes"><span class="header-section-number">4.3</span> Inférence de graphes</h3>
<ul>
<li><p><span class="citation" data-cites="aitchisonStatisticalAnalysisCompositional1982a">Aitchison (<a href="#ref-aitchisonStatisticalAnalysisCompositional1982a" role="doc-biblioref">1982</a>)</span>, en cours</p></li>
<li><p>❗📖 <span class="citation" data-cites="payneFiniteMixturesMultivariate2023">Payne et al. (<a href="#ref-payneFiniteMixturesMultivariate2023" role="doc-biblioref">2023</a>)</span> sur MixMPLN</p></li>
</ul>
</section>
<section id="causalité-1" class="level3" data-number="4.4">
<h3 data-number="4.4" class="anchored" data-anchor-id="causalité-1"><span class="header-section-number">4.4</span> Causalité</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span></li>
</ul>
</section>
<section id="largest-gaps" class="level3" data-number="4.5">
<h3 data-number="4.5" class="anchored" data-anchor-id="largest-gaps"><span class="header-section-number">4.5</span> Largest Gaps</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="braultFastConsistentAlgorithm2023">Brault et Channarond (<a href="#ref-braultFastConsistentAlgorithm2023" role="doc-biblioref">2023</a>)</span></li>
<li>❗📖 <span class="citation" data-cites="channarondClassificationEstimationStochastic2012">Channarond, Daudin, et Robin (<a href="#ref-channarondClassificationEstimationStochastic2012" role="doc-biblioref">2012</a>)</span> le papier qui introduit le <em>Largest Gaps</em></li>
</ul>
</section>
</section>
<div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" role="doc-bibliography" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">Les références</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0" role="list">
<div id="ref-abramovStructureKnowsBest" class="csl-entry" role="listitem">
Abramov, Kesem, Barry Biton, Geut Galai, Rami Puzis, et Shai Pilosof. s.&nbsp;d. <span>«&nbsp;Structure Knows Best: Predicting Ecological Interactions Across Space Through Pairwise Integration of Latent Network Patterns&nbsp;»</span>.
</div>
<div id="ref-aitchisonStatisticalAnalysisCompositional1982a" class="csl-entry" role="listitem">
Aitchison, J. 1982. <span>«&nbsp;The <span>Statistical Analysis</span> of <span>Compositional Data</span>&nbsp;»</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 13977. <a href="https://www.jstor.org/stable/2345821">https://www.jstor.org/stable/2345821</a>.
</div>
<div id="ref-braultFastConsistentAlgorithm2023" class="csl-entry" role="listitem">
Brault, Vincent, et Antoine Channarond. 2023. <span>«&nbsp;Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span>&nbsp;»</span>. 9 mars 2023. <a href="https://doi.org/10.48550/arXiv.1610.09005">https://doi.org/10.48550/arXiv.1610.09005</a>.
</div>
<div id="ref-bystrovaCausalDiscovery" class="csl-entry" role="listitem">
Bystrova, Daria. s.&nbsp;d. <span>«&nbsp;Causal Discovery&nbsp;»</span>.
</div>
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>«&nbsp;Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees&nbsp;»</span>. <em>Electronic Journal of Statistics</em> 6 (janvier). <a href="https://doi.org/10.1214/12-ejs753">https://doi.org/10.1214/12-ejs753</a>.
</div>
<div id="ref-mazeletUnsupervisedLearningOptimal" class="csl-entry" role="listitem">
Mazelet, Sonia, Rémi Flamary, et Bertrand Thirion. s.&nbsp;d. <span>«&nbsp;Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs&nbsp;»</span>.
</div>
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
Nenna, Luca. s.&nbsp;d.a. <span>«&nbsp;Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual&nbsp;»</span>.
</div>
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
———. s.&nbsp;d.b. <span>«&nbsp;Lecture 2: <span>Entropic Optimal Transport</span>&nbsp;»</span>.
</div>
<div id="ref-payneFiniteMixturesMultivariate2023" class="csl-entry" role="listitem">
Payne, Andrea, Anjali Silva, Steven J. Rothstein, Paul D. McNicholas, et Sanjeena Subedi. 2023. <span>«&nbsp;Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span>&nbsp;»</span>. 13 novembre 2023. <a href="https://doi.org/10.48550/arXiv.2311.07762">https://doi.org/10.48550/arXiv.2311.07762</a>.
</div>
</div></section></div></main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

1027
suivi/2025-51/2025-51.html Normal file

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

906
suivi/2026-12/2026-12.html Normal file
View file

@ -0,0 +1,906 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 9 2026 : 16 mars - 20 mars Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
/* CSS for citations */
div.csl-bib-body { }
div.csl-entry {
clear: both;
margin-bottom: 0em;
}
.hanging-indent div.csl-entry {
margin-left:2em;
text-indent:-2em;
}
div.csl-left-margin {
min-width:2em;
float:left;
}
div.csl-right-inline {
margin-left:2em;
padding-left:1em;
}
div.csl-indent {
margin-left: 2em;
}</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 9 2026 : 16 mars - 20 mars</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
<div class="quarto-category">inférence</div>
<div class="quarto-category">GNN</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">16 mars 2026</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#todo-list" id="toc-todo-list" class="nav-link active" data-scroll-target="#todo-list"><span class="header-section-number">1</span> TODO List</a>
<ul class="collapse">
<li><a href="#mes-priorités-de-la-semaine" id="toc-mes-priorités-de-la-semaine" class="nav-link" data-scroll-target="#mes-priorités-de-la-semaine"><span class="header-section-number">1.1</span> Mes priorités de la semaine</a></li>
<li><a href="#les-autres-tâches" id="toc-les-autres-tâches" class="nav-link" data-scroll-target="#les-autres-tâches"><span class="header-section-number">1.2</span> Les autres tâches</a></li>
<li><a href="#inférence-et-microbes" id="toc-inférence-et-microbes" class="nav-link" data-scroll-target="#inférence-et-microbes"><span class="header-section-number">1.3</span> Inférence et microbes</a></li>
</ul></li>
<li><a href="#a-discuter" id="toc-a-discuter" class="nav-link" data-scroll-target="#a-discuter"><span class="header-section-number">2</span> A discuter</a></li>
<li><a href="#biblio-à-faire" id="toc-biblio-à-faire" class="nav-link" data-scroll-target="#biblio-à-faire"><span class="header-section-number">3</span> Biblio à faire</a></li>
<li><a href="#lectures-en-cours" id="toc-lectures-en-cours" class="nav-link" data-scroll-target="#lectures-en-cours"><span class="header-section-number">4</span> Lectures en cours 📚</a>
<ul class="collapse">
<li><a href="#hdr-vincent-brault" id="toc-hdr-vincent-brault" class="nav-link" data-scroll-target="#hdr-vincent-brault"><span class="header-section-number">4.1</span> HDR Vincent Brault</a></li>
<li><a href="#ot" id="toc-ot" class="nav-link" data-scroll-target="#ot"><span class="header-section-number">4.2</span> OT</a></li>
<li><a href="#inférence-de-graphes" id="toc-inférence-de-graphes" class="nav-link" data-scroll-target="#inférence-de-graphes"><span class="header-section-number">4.3</span> Inférence de graphes</a></li>
<li><a href="#causalité-1" id="toc-causalité-1" class="nav-link" data-scroll-target="#causalité-1"><span class="header-section-number">4.4</span> Causalité</a></li>
<li><a href="#largest-gaps" id="toc-largest-gaps" class="nav-link" data-scroll-target="#largest-gaps"><span class="header-section-number">4.5</span> Largest Gaps</a></li>
</ul></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="todo-list" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="todo-list"><span class="header-section-number">1</span> TODO List</h2>
<section id="mes-priorités-de-la-semaine" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="mes-priorités-de-la-semaine"><span class="header-section-number">1.1</span> Mes priorités de la semaine</h3>
<ul>
<li>Faire tourner clustering colBiSBM sur les clusters dégagés par Mona et laccompagner sur la rédaction de son poster</li>
<li>Préparer ma présentation (voir le bloc ci-après) pour Rochebrune et donner un titre :
<ul>
<li>“Comparing networks, a challenging task?” (NUL/20)</li>
<li>“High and low: comparing networks, <del>a burden for the mind</del> what works and what dont(?)”</li>
</ul></li>
<li>Finir implémentation dans sbm de blockmodels avec covariables sur les noeuds</li>
<li>Bricoler une pipeline sbm |&gt; nnet::multinom comme performance de référence pour lintroduction de covariables</li>
<li>Comprendre pourquoi lidée géniale de Sophie est remise en question</li>
<li>Corriger les copies des 1As</li>
</ul>
<div class="callout callout-style-default callout-note callout-titled" title="Idées présentation Rochebrune">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Idées présentation Rochebrune
</div>
</div>
<div class="callout-body-container callout-body">
<ul>
<li>colBiSBM: ce qui marche (et à la fin la galère du clustering)</li>
<li>Transition sur les OTUs et motivations de pourquoi cest galère (#OTU&gt;&gt;#Sample, dépendance par la phylogénie …)</li>
<li>Motivation du co-clustering (LBM), trouver des groupes déchantillons et dOTUs qui exhibent des comportement différents (pathologies, sols particuliers, échantillon alimentaire avec une flore dintérêt …)</li>
<li>Première idée: LBM séquentiel, faire repartir des <span class="math inline">\tau^{l}</span> pour initialiser les <span class="math inline">\tau^{l+1}</span> selon larbre phylogénétique
<ul>
<li>Idées: faciliter lexploration du paysage de lELBO 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.</li>
<li>Problèmes: ne résout pas le problème de la dimensionnalité en les OTUs</li>
<li>Comme implém., performances pas incroyable et signal peu clair.</li>
</ul></li>
<li>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 larbre). Mais aussi modèle plus large pour prendre en compte diverses situations (trouver des exemples dautres données?).
<ul>
<li>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</li>
<li>Quasiment implémenté dans <code>{blockmodels}</code> et dans <code>{sbm}</code> (jaimerai pouvoir dire le jour de ma présentation que cest dispo sur la version de développement, il va falloir charbonner de mon côté).</li>
<li>Théoriquement: on a lidentifiabilité (ou pas vu la pratique?)</li>
<li>Problèmes: Ne résoud pas les problèmes de calculs, en pratique on ne retrouve pas les bons coefficients (label-switching?)</li>
</ul></li>
<li>Troisième idée: Utiliser la structure de larbre phylogénétique pour encoder une relation des positions latentes dans un <em>Latent Position Model</em> (LPM).
<ul>
<li>Détail: pour chaque couche <span class="math inline">l</span>, chaque individu de la couche <span class="math inline">i</span> et son ancêtre <span class="math inline">j=Ancestor(i)</span> (CITER LES PAPIERS A LORIGINE DE LIDEE), on écrit <span class="math inline">\gamma_{l,i} = \gamma_{l-1,j=Ancestor(i)} + \delta_{l,i} = \gamma_{0} + \sum_{k\in Ancestry(i)} \delta_{l,k}</span> (puisque quon a un unique ancêtre dans chaque couche <span class="math inline">l</span>), les noeuds qui partagent un ancêtre commun partage la position latente à ce niveau et lui ajoute un décalage <span class="math inline">\delta</span>.</li>
<li>Remarque: Peut-être possible de gérer les cas de transferts horizontaux en élargissant le concept de lignée ancestrale?</li>
<li>Idée: (casquette de biologiste) possible davoir 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 à dautres familles. Dans ce cas, le <span class="math inline">\delta_{l,i}</span> rapprochent le <span class="math inline">\gamma_{l,i}</span> dun <span class="math inline">\gamma_{l, i^{\prime}}</span> qui a le trait commun.</li>
<li>Problème: les calculs seraient ils simplifiés? pas sûr. Et je ny ai pas encore touché.</li>
</ul></li>
<li>Utiliser les Hierarchical SBM et LBM de Peixoto dans son package <code>graphtools</code> pour initialiser larbre liant les couches avec larbre phylogénétique.</li>
</ul>
</div>
</div>
</section>
<section id="les-autres-tâches" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="les-autres-tâches"><span class="header-section-number">1.2</span> Les autres tâches</h3>
<ul>
<li>Petites opérations sur les OTUs (regarder la matrice dans les yeux):
<ul>
<li>Ranger les OTUs par variances (i.e.&nbsp;<code>sd(OTU_j)</code>)
<ul>
<li>HMC sur-dispersés (au-dessus bissectrice)</li>
<li>Enterotype phyloseq sous-disp</li>
</ul></li>
<li>Regarder la proportion de 1. taxon rares, 2. zeros.</li>
<li>Faire des coupures selon niveaux taxonomiques et regarder si <span class="math inline">\mathbb{V}_{\text{intra}} \approx \mathbb{V}_{\text{inter}}</span></li>
<li><em>Bonus</em>: faire ça dans qmd et voir si forge permet gitlab pages</li>
</ul></li>
<li>Relire <span class="citation" data-cites="peixotoHierarchicalBlockStructures2014">Peixoto (<a href="#ref-peixotoHierarchicalBlockStructures2014" role="doc-biblioref">2014</a>)</span>
<ul>
<li>Regarder les gens qui citent les travaux de Peixoto</li>
<li>Utiliser graphtools en initialisant la recherche Nested avec le partitionnement donné par larbre phylogénétique.</li>
</ul></li>
</ul>
<div class="callout callout-style-default callout-note callout-titled" title="Idées">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Idées
</div>
</div>
<div class="callout-body-container callout-body">
<ul>
<li>Trouver manière de faire un compromis : <span class="math inline">\ell(Y,Z,W;\theta) - \lambda d(C(W),C_0)</span> avec <span class="math inline">C(W)</span> le clustering seulement sur la base de la structure LBM et <span class="math inline">C_0</span> le clustering de larbre. Problème <span class="math inline">d</span> est une distance entre partition, comment optimiser dessus ?</li>
<li>⌛ Mise à jour partielle des <span class="math inline">\tau</span> : ce qui pose soucis cest les gros calculs matriciels (cest vraiment vrai?). Donc sorte de “stochastic” VEM où on update seulement une partie des <span class="math inline">\tau</span> à chaque itération. Et échantillonnage stratifié selon larbre ?
<ul>
<li>⌛ Simulations avec <span class="math inline">n_2</span> croissant lancée sur Migale</li>
<li>Réimplementé VE Bernoulli dans colSBM pour Bipartite et début implémentation Stochastic VE. En fait le problème des calculs matriciels <span class="math inline">Y\times(\tau^{(1)})^{\top}</span> (<span class="math inline">n_2^2</span>) donc besoin de sous-échantillonner les noeuds de lautre dimension à mettre à jour.</li>
</ul></li>
</ul>
</div>
</div>
<ul>
<li><p>Clustering unipartite jai cassé une fonction de distance à vérifier et réparer</p></li>
<li><p>Codes pour le papier :</p>
<ul>
<li>Nettoyer les scripts</li>
<li>Faire un joli README</li>
<li>❓Faire des notebooks</li>
</ul></li>
<li><p>Réussir à reproduire résultat de <span class="citation" data-cites="abramovStructureKnowsBest">Abramov et al. (<a href="#ref-abramovStructureKnowsBest" role="doc-biblioref">s.&nbsp;d.</a>)</span></p></li>
<li><p>Maitriser graphtools de Peixoto pour essayer dutiliser larbre taxonomique sur graphe de cooccurence inférer par SparCC</p></li>
<li><p>Maitriser SparCC</p></li>
<li><p>👶 (délégué à Mona) Clustering sur Doré :</p>
<ul>
<li>Ajouter Chao1 et 2, colonne par colonne (site par site), et faire indice moyen et la variance.</li>
</ul></li>
</ul>
</section>
<section id="inférence-et-microbes" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="inférence-et-microbes"><span class="header-section-number">1.3</span> Inférence et microbes</h3>
<ul>
<li>⌛ (En cours) Possible en modifiant lbm.h et sbm.h dobtenir un modèle utilisant les covariables de groupes (de blocs ?). Car besoin de changer <code>membership.m_step()</code> pour mettre à jour <span class="math inline">\pmb\pi</span> et <span class="math inline">\pmb{\rho}</span> en utilisant les <span class="math inline">\pmb B^{\top}\pmb X</span> et en renvoyant lELBO adaptée.
<ul>
<li><p>😄 Avantage sinscrit directement dans blockmodels et permet davoir toutes les lois démissions déjà codées et compatibles !</p></li>
<li><p>😢 Besoin de réfléchir a une bonne implémentation.</p></li>
</ul></li>
</ul>
<p>Jai codé loptimisation et les transferts mais il faut que je vérifie que tout fonctionne</p>
<ul>
<li>✅ Appliqué multipartite sur <span class="math inline">\forall i, OTU_i \times Sample</span>: <img src="figs/Multipartite.svg" class="img-fluid" alt="Le plot des groupes trouvés par le multipartite (2 pour tous les OTUs et 4 pour les échantillons.)"></li>
</ul>
<section id="bibliographie-à-lire-à-faire" class="level4" data-number="1.3.1">
<h4 data-number="1.3.1" class="anchored" data-anchor-id="bibliographie-à-lire-à-faire"><span class="header-section-number">1.3.1</span> Bibliographie: à lire, à faire</h4>
<ul>
<li>Lire article multi-niveaux Saint-Clair</li>
<li>🆕 🔎 Trouver des papiers:
<ul>
<li>LBM Negative Binomial</li>
<li>Network inference through sample comparison</li>
</ul></li>
<li>Idée des groupes sur la base de distance phylogénétique:
<ul>
<li>En train de comprendre les distances que phyloseq permet de calculer sur notre exemple</li>
<li>En train de lire sur Principle coordinate analysis : https://openplantpathology.github.io/OPP_Workshop_Multivariate/2-MV_PCO.html</li>
<li>Parametric t-SNE pour avoir une unique représentation latente (inconvénient utilise du Deep Learning)</li>
<li>Lire Papier UniFrac</li>
</ul></li>
</ul>
</section>
<section id="écrire-et-faire-tourner" class="level4" data-number="1.3.2">
<h4 data-number="1.3.2" class="anchored" data-anchor-id="écrire-et-faire-tourner"><span class="header-section-number">1.3.2</span> Écrire et faire tourner</h4>
<ul>
<li>🆕 SparCC à différent niveaux</li>
<li>🆕⌛ Tree-PLN à différents niveaux</li>
</ul>
</section>
<section id="causalité" class="level4" data-number="1.3.3">
<h4 data-number="1.3.3" class="anchored" data-anchor-id="causalité"><span class="header-section-number">1.3.3</span> Causalité</h4>
<p>Plus sur le temps long, à regarder</p>
<ul>
<li>GT causalité</li>
<li>Daria Bystrova lire présentation <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span> (Meek rules, V-structure)</li>
</ul>
</section>
</section>
</section>
<section id="a-discuter" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="a-discuter"><span class="header-section-number">2</span> A discuter</h2>
<ul>
<li>🆕 Voir pour des Réseaux / GDR ou aller</li>
<li>🆕 Chercher des cours à suivre</li>
</ul>
</section>
<section id="biblio-à-faire" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="biblio-à-faire"><span class="header-section-number">3</span> Biblio à faire</h2>
<ul>
<li>Regarder Transport optimal graphes bipartite.</li>
</ul>
</section>
<section id="lectures-en-cours" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="lectures-en-cours"><span class="header-section-number">4</span> Lectures en cours 📚</h2>
<section id="hdr-vincent-brault" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="hdr-vincent-brault"><span class="header-section-number">4.1</span> HDR Vincent Brault</h3>
<ul>
<li>⌛ Chap 2 : Creuser lidé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</li>
<li>Chap 3</li>
</ul>
</section>
<section id="ot" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="ot"><span class="header-section-number">4.2</span> OT</h3>
<ul>
<li><span class="citation" data-cites="mazeletUnsupervisedLearningOptimal">Mazelet, Flamary, et Thirion (<a href="#ref-mazeletUnsupervisedLearningOptimal" role="doc-biblioref">s.&nbsp;d.</a>)</span> Intéressant pour le transport optimal entre graphes de tailles différentes | Regarder si regularization entropique ne marche pas bien pour le graphe.</li>
<li><span class="citation" data-cites="nennaLecture2Entropic">Nenna (<a href="#ref-nennaLecture2Entropic" role="doc-biblioref">s.&nbsp;d.b</a>)</span> Pour comprendre le problème dOT régularisé pour lentropie.</li>
<li><span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s.&nbsp;d.a</a>)</span></li>
</ul>
</section>
<section id="inférence-de-graphes" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="inférence-de-graphes"><span class="header-section-number">4.3</span> Inférence de graphes</h3>
<ul>
<li><p><span class="citation" data-cites="aitchisonStatisticalAnalysisCompositional1982a">Aitchison (<a href="#ref-aitchisonStatisticalAnalysisCompositional1982a" role="doc-biblioref">1982</a>)</span>, en cours</p></li>
<li><p>❗📖 <span class="citation" data-cites="payneFiniteMixturesMultivariate2023">Payne et al. (<a href="#ref-payneFiniteMixturesMultivariate2023" role="doc-biblioref">2023</a>)</span> sur MixMPLN</p></li>
</ul>
</section>
<section id="causalité-1" class="level3" data-number="4.4">
<h3 data-number="4.4" class="anchored" data-anchor-id="causalité-1"><span class="header-section-number">4.4</span> Causalité</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span></li>
</ul>
</section>
<section id="largest-gaps" class="level3" data-number="4.5">
<h3 data-number="4.5" class="anchored" data-anchor-id="largest-gaps"><span class="header-section-number">4.5</span> Largest Gaps</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="braultFastConsistentAlgorithm2023">Brault et Channarond (<a href="#ref-braultFastConsistentAlgorithm2023" role="doc-biblioref">2023</a>)</span></li>
<li>❗📖 <span class="citation" data-cites="channarondClassificationEstimationStochastic2012">Channarond, Daudin, et Robin (<a href="#ref-channarondClassificationEstimationStochastic2012" role="doc-biblioref">2012</a>)</span> le papier qui introduit le <em>Largest Gaps</em></li>
</ul>
</section>
</section>
<div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" role="doc-bibliography" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">Les références</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0" role="list">
<div id="ref-abramovStructureKnowsBest" class="csl-entry" role="listitem">
Abramov, Kesem, Barry Biton, Geut Galai, Rami Puzis, et Shai Pilosof. s.&nbsp;d. <span>«&nbsp;Structure Knows Best: Predicting Ecological Interactions Across Space Through Pairwise Integration of Latent Network Patterns&nbsp;»</span>.
</div>
<div id="ref-aitchisonStatisticalAnalysisCompositional1982a" class="csl-entry" role="listitem">
Aitchison, J. 1982. <span>«&nbsp;The <span>Statistical Analysis</span> of <span>Compositional Data</span>&nbsp;»</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 13977. <a href="https://www.jstor.org/stable/2345821">https://www.jstor.org/stable/2345821</a>.
</div>
<div id="ref-braultFastConsistentAlgorithm2023" class="csl-entry" role="listitem">
Brault, Vincent, et Antoine Channarond. 2023. <span>«&nbsp;Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span>&nbsp;»</span>. 9 mars 2023. <a href="https://doi.org/10.48550/arXiv.1610.09005">https://doi.org/10.48550/arXiv.1610.09005</a>.
</div>
<div id="ref-bystrovaCausalDiscovery" class="csl-entry" role="listitem">
Bystrova, Daria. s.&nbsp;d. <span>«&nbsp;Causal Discovery&nbsp;»</span>.
</div>
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>«&nbsp;Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees&nbsp;»</span>. <em>Electronic Journal of Statistics</em> 6 (janvier). <a href="https://doi.org/10.1214/12-ejs753">https://doi.org/10.1214/12-ejs753</a>.
</div>
<div id="ref-mazeletUnsupervisedLearningOptimal" class="csl-entry" role="listitem">
Mazelet, Sonia, Rémi Flamary, et Bertrand Thirion. s.&nbsp;d. <span>«&nbsp;Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs&nbsp;»</span>.
</div>
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
Nenna, Luca. s.&nbsp;d.a. <span>«&nbsp;Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual&nbsp;»</span>.
</div>
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
———. s.&nbsp;d.b. <span>«&nbsp;Lecture 2: <span>Entropic Optimal Transport</span>&nbsp;»</span>.
</div>
<div id="ref-payneFiniteMixturesMultivariate2023" class="csl-entry" role="listitem">
Payne, Andrea, Anjali Silva, Steven J. Rothstein, Paul D. McNicholas, et Sanjeena Subedi. 2023. <span>«&nbsp;Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span>&nbsp;»</span>. 13 novembre 2023. <a href="https://doi.org/10.48550/arXiv.2311.07762">https://doi.org/10.48550/arXiv.2311.07762</a>.
</div>
<div id="ref-peixotoHierarchicalBlockStructures2014" class="csl-entry" role="listitem">
Peixoto, Tiago P. 2014. <span>«&nbsp;Hierarchical <span>Block Structures</span> and <span>High-Resolution Model Selection</span> in <span>Large Networks</span>&nbsp;»</span>. <em>Physical Review X</em> 4 (1): 011047. <a href="https://doi.org/10.1103/PhysRevX.4.011047">https://doi.org/10.1103/PhysRevX.4.011047</a>.
</div>
</div></section></div></main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

953
suivi/2026-6/2026-6.html Normal file
View file

@ -0,0 +1,953 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 6 2026 : 02 février - 06 février Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
/* CSS for citations */
div.csl-bib-body { }
div.csl-entry {
clear: both;
margin-bottom: 0em;
}
.hanging-indent div.csl-entry {
margin-left:2em;
text-indent:-2em;
}
div.csl-left-margin {
min-width:2em;
float:left;
}
div.csl-right-inline {
margin-left:2em;
padding-left:1em;
}
div.csl-indent {
margin-left: 2em;
}</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 6 2026 : 02 février - 06 février</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
<div class="quarto-category">inférence</div>
<div class="quarto-category">GNN</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">6 février 2026</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#todo-list" id="toc-todo-list" class="nav-link active" data-scroll-target="#todo-list"><span class="header-section-number">1</span> TODO List</a>
<ul class="collapse">
<li><a href="#inférence-et-microbes" id="toc-inférence-et-microbes" class="nav-link" data-scroll-target="#inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</a></li>
</ul></li>
<li><a href="#a-discuter" id="toc-a-discuter" class="nav-link" data-scroll-target="#a-discuter"><span class="header-section-number">2</span> A discuter</a></li>
<li><a href="#biblio-à-faire" id="toc-biblio-à-faire" class="nav-link" data-scroll-target="#biblio-à-faire"><span class="header-section-number">3</span> Biblio à faire</a></li>
<li><a href="#lectures-en-cours" id="toc-lectures-en-cours" class="nav-link" data-scroll-target="#lectures-en-cours"><span class="header-section-number">4</span> Lectures en cours 📚</a>
<ul class="collapse">
<li><a href="#hdr-vincent-brault" id="toc-hdr-vincent-brault" class="nav-link" data-scroll-target="#hdr-vincent-brault"><span class="header-section-number">4.1</span> HDR Vincent Brault</a></li>
<li><a href="#ot" id="toc-ot" class="nav-link" data-scroll-target="#ot"><span class="header-section-number">4.2</span> OT</a></li>
<li><a href="#inférence-de-graphes" id="toc-inférence-de-graphes" class="nav-link" data-scroll-target="#inférence-de-graphes"><span class="header-section-number">4.3</span> Inférence de graphes</a></li>
<li><a href="#causalité-1" id="toc-causalité-1" class="nav-link" data-scroll-target="#causalité-1"><span class="header-section-number">4.4</span> Causalité</a></li>
<li><a href="#largest-gaps" id="toc-largest-gaps" class="nav-link" data-scroll-target="#largest-gaps"><span class="header-section-number">4.5</span> Largest Gaps</a></li>
</ul></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="todo-list" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="todo-list"><span class="header-section-number">1</span> TODO List</h2>
<ul>
<li><p>Petites opérations sur les OTUs (regarder la matrice dans les yeux):</p>
<ul>
<li>Ranger les OTUs par variances (i.e.&nbsp;<code>sd(OTU_j)</code>)
<ul>
<li>HMC sur-dispersés (au-dessus bissectrice)</li>
<li>Enterotype phyloseq sous-disp</li>
</ul></li>
<li>Regarder la proportion de 1. taxon rares, 2. zeros.</li>
<li>Faire des coupures selon niveaux taxonomiques et regarder si <span class="math inline">\mathbb{V}_{\text{intra}} \approx \mathbb{V}_{\text{inter}}</span></li>
<li><em>Bonus</em>: faire ça dans qmd et voir si forge permet gitlab pages</li>
</ul></li>
<li><p>✅ Faire tourner un LBM sur Human Gut et voir si ça plante sinon, <strong>ça plante, la ram est surchargée.</strong></p>
<ul>
<li>TODO Faire LBM sur niveau taxonomique grossier, initialiser avec le résultat pour un niveau plus fin et ainsi de suite.</li>
</ul></li>
<li><p>✅ Avec blockmodels, codé un LBM-Séquentiel. <em>Des différences contrastées…</em></p></li>
<li><p>⌛ Prendre jeu de données exemple de phyloseq :</p>
<ul>
<li>✅ 😞 enterotype tourne mais pas bon résultats (semble deux blocs échantillons mais pas vu par le modèle).</li>
<li>✅ des jeux de données de Mahendra ne tourne pas (phase forward interminable).</li>
</ul></li>
<li><p>Relire <span class="citation" data-cites="peixotoHierarchicalBlockStructures2014">Peixoto (<a href="#ref-peixotoHierarchicalBlockStructures2014" role="doc-biblioref">2014</a>)</span></p>
<ul>
<li>Regarder les gens qui citent les travaux de Peixoto</li>
</ul></li>
<li><p>Implémentation <code>blockmodels</code> LBM avec covariables sur proportions (voir <a href="#eq-modele-covar-prop" class="quarto-xref">Équation&nbsp;1</a>)</p></li>
</ul>
<div class="callout callout-style-default callout-note callout-titled" title="Idées">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Idées
</div>
</div>
<div class="callout-body-container callout-body">
<ul>
<li>Travailler sur Fungus Tree network</li>
<li>🔍<strong>Demander à PB et SD</strong> : Comparaison covar prop avec GREMLINS multipartite sur (log(dist_phylo), fungus-tree)</li>
<li>Trouver manière de faire un compromis : <span class="math inline">\ell(Y,Z,W;\theta) - \lambda d(C(W),C_0)</span> avec <span class="math inline">C(W)</span> le clustering seulement sur la base de la structure LBM et <span class="math inline">C_0</span> le clustering de larbre. Problème <span class="math inline">d</span> est une distance entre partition, comment optimiser dessus ?</li>
<li>⌛ Mise à jour partielle des <span class="math inline">\tau</span> : ce qui pose soucis cest les gros calculs matriciels (cest vraiment vrai?). Donc sorte de “stochastic” VEM où on update seulement une partie des <span class="math inline">\tau</span> à chaque itération. Et échantillonnage stratifié selon larbre ?
<ul>
<li>⌛ Simulations avec <span class="math inline">n_2</span> croissant lancée sur Migale</li>
<li>Réimplementé VE Bernoulli dans colSBM pour Bipartite et début implémentation Stochastic VE. En fait le problème des calculs matriciels <span class="math inline">Y\times(\tau^{(1)})^{\top}</span> (<span class="math inline">n_2^2</span>) donc besoin de sous-échantillonner les noeuds de lautre dimension à mettre à jour.</li>
</ul></li>
</ul>
</div>
</div>
<ul>
<li><p>Clustering unipartite jai cassé une fonction de distance à vérifier et réparer</p></li>
<li><p>Codes pour le papier :</p>
<ul>
<li>Nettoyer les scripts</li>
<li>Faire un joli README</li>
<li>❓Faire des notebooks</li>
</ul></li>
<li><p>Réussir à reproduire résultat de <span class="citation" data-cites="abramovStructureKnowsBest">Abramov et al. (<a href="#ref-abramovStructureKnowsBest" role="doc-biblioref">s.&nbsp;d.</a>)</span></p></li>
<li><p>Maitriser graphtools de Peixoto pour essayer dutiliser larbre taxonomique sur graphe de cooccurence inférer par SparCC</p></li>
<li><p>Maitriser SparCC</p></li>
<li><p>👶 (délégué à Mona) Clustering sur Doré :</p>
<ul>
<li>Ajouter Chao1 et 2, colonne par colonne (site par site), et faire indice moyen et la variance.</li>
</ul></li>
</ul>
<section id="inférence-et-microbes" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</h3>
<ul>
<li>✅ En préparation dun fichier (réu avec JBL à 10h45 le 06/02/2026). Possible en modifiant lbm.h et sbm.h dobtenir un modèle utilisant les covariables de groupes (de blocs ?). Car besoin de changer <code>membership.m_step()</code> pour mettre à jour <span class="math inline">\pmb\pi</span> et <span class="math inline">\pmb{\rho}</span> en utilisant les <span class="math inline">\pmb B^{\top}\pmb X</span> et en renvoyant lELBO adaptée.
<ul>
<li><p>😄 Avantage sinscrit directement dans blockmodels et permet davoir toutes les lois démissions déjà codées et compatibles !</p></li>
<li><p>😢 Besoin de réfléchir a une bonne implémentation.</p></li>
</ul></li>
</ul>
<section id="modèle-avec-covariables-sur-probas-dappartenances-aux-groupes" class="level4" data-number="1.1.1">
<h4 data-number="1.1.1" class="anchored" data-anchor-id="modèle-avec-covariables-sur-probas-dappartenances-aux-groupes"><span class="header-section-number">1.1.1</span> Modèle avec covariables sur probas dappartenances aux groupes</h4>
<p><span class="math display">\begin{align*}
\pmb{\beta}_{r}&amp; = \begin{pmatrix}
\beta_{r,0}\\
\vdots\\
\beta_{r,p}
\end{pmatrix}, &amp; X_{:,j} = \begin{pmatrix}
1\\
x_{1}\\
\vdots\\
x_p
\end{pmatrix}\\
\pmb{\beta}_r^{\top} X_{:,j}&amp; = \beta_{r,0} + \beta_{r,1} x_{1} + \dots + \beta_{r,p} x_p &amp; \approx \log(\rho_r^j) \\
\pmb{B} &amp; = \begin{pmatrix}
\pmb{\beta}_1 \dots \pmb{\beta}_r \dots \pmb{\beta}_R
\end{pmatrix} &amp; \pmb{B}^{\top} X_{:,j} \approx \log(\pmb{\rho}^j) \\
\pmb{B}^{\top} \pmb{X} &amp; \approx \log((\pmb{\rho}^j)_{j=1,\dots,n_2}) = \log(\pmb{\Rho})\\
\end{align*}</span> Et pour les probas en lignes du LBM <span class="math display">\begin{align*}
\pmb{\gamma}_{q}&amp; = \begin{pmatrix}
\gamma_{q,0}\\
\vdots\\
\gamma_{q,d}
\end{pmatrix}, &amp; V_{:,i} = \begin{pmatrix}
1\\
v_{1}\\
\vdots\\
v_d
\end{pmatrix}\\
\pmb{\gamma}_q^{\top} V_{:,i}&amp; = \gamma_{q,0} + \gamma_{q,1} x_{1} + \dots + \gamma_{q,p} x_p &amp; \approx \log(\pi_q^i) \\
\pmb{\Gamma} &amp; = \begin{pmatrix}
\pmb{\gamma}_1 \dots \pmb{\gamma}_q \dots \pmb{\gamma}_Q
\end{pmatrix} &amp; \pmb{\Gamma}^{\top} V_{:,i} \approx \log(\pmb{\pi}^i) \\
\pmb{\Gamma}^{\top} \pmb{X} &amp; \approx \log((\pmb{\pi}^i)_{i=1,\dots,n_1}) = \log(\pmb{\Pi})
\end{align*}</span></p>
</section>
<section id="note-sur-lidentifiabilité-par-jbl" class="level4" data-number="1.1.2">
<h4 data-number="1.1.2" class="anchored" data-anchor-id="note-sur-lidentifiabilité-par-jbl"><span class="header-section-number">1.1.2</span> Note sur lidentifiabilité (par JBL)</h4>
<p>Soient <span class="math inline">X : (p+1, n_2), B : (p+1, R)</span> avec <span class="math inline">X</span> de plein rang, i.e., <span class="math inline">rg(X) = p+1\implies XX^{\top}</span> est inversible.</p>
<p>On veut quil existe <span class="math inline">B^{\prime}</span> et <span class="math inline">B</span> avec <span class="math inline">B_{:,R} = \vec 0_p</span>, par les propriétés de la fonction softmax, <span class="math inline">\sigma(.)</span> :</p>
<p><span class="math display">\begin{align*}
&amp; \sigma(B^{\top}X) = \sigma({B^{\prime}}^{\top}X)\\
&amp; \iff \exists C \in \mathbb{R}^{n_2}, B^{\top} X = {B^{\prime}}^{\top} X + \pmb{1}_R C^{\top}\\
&amp; \iff \exists C \in \mathbb{R}^{n_2}, B^{\top} X - \pmb{1}_R C^{\top} = {B^{\prime}}^{\top} X\\
&amp; \iff \exists C \in \mathbb{R}^{n_2}, (B^{\top} X - \pmb{1}_R C^{\top}) X^{\top} = {B^{\prime}}^{\top} X X^{\top}\\
&amp; \iff \exists C \in \mathbb{R}^{n_2}, (B^{\top} X - \pmb{1}_R C^{\top}) X^{\top}(X X^{\top})^{-1} = {B^{\prime}}^{\top}\\
\end{align*}</span></p>
</section>
<section id="description-du-modèle-hiérarchique" class="level4" data-number="1.1.3">
<h4 data-number="1.1.3" class="anchored" data-anchor-id="description-du-modèle-hiérarchique"><span class="header-section-number">1.1.3</span> Description du modèle hiérarchique</h4>
<p>Toujours modèle LBM mais avec probas dappartenance pour les colonnes variables:</p>
<p><span class="math display">\begin{align*}
Z_i &amp;\sim \mathcal{M}(1; \pi_1, \dots, \pi_Q), \sum_{q=1}^{Q} \pi_q = 1\\
W_j &amp;\sim \mathcal{M}(1; \rho_1^j, \dots, \rho_R^j), \sum_{r=1}^{R} \rho_r^j = 1\\
Y_{i,j}&amp;\mid Z_i = q, W_j = r \sim \mathcal{F}(\alpha_{qr})
\end{align*}</span></p>
<p>Inférence variationnelle donc <span class="math inline">\ell(Y;\pmb{\theta}) \geq \mathcal{J}(\mathcal{R},\pmb{\theta})</span> avec</p>
<p><span class="math display">
\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}
</span></p>
<section id="modèle-sophie" class="level5" data-number="1.1.3.1">
<h5 data-number="1.1.3.1" class="anchored" data-anchor-id="modèle-sophie"><span class="header-section-number">1.1.3.1</span> Modèle Sophie</h5>
<p>Avec <span class="math inline">\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}</span>, où <span class="math inline">\sigma</span> désigne le softmax. Mais il y a besoin de poser une contrainte sur lun des <span class="math inline">(\beta_r)_{r=1,\dots,R}</span>, ici <span class="math inline">\beta_R = 0</span>.</p>
<p>La partie pertinente de lELBO devient: <span id="eq-modele-covar-prop"><span class="math display">
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}</span></span></p>
<p>Et on obtient la dérivée partielle par rapport à <span class="math inline">\beta_t</span> comme: <span class="math display">\begin{align*}
\dfrac{\partial P}{\partial \beta_t}&amp;((\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]\\
&amp; = \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*}</span></p>
</section>
</section>
<section id="bibliographie-à-lire-à-faire" class="level4" data-number="1.1.4">
<h4 data-number="1.1.4" class="anchored" data-anchor-id="bibliographie-à-lire-à-faire"><span class="header-section-number">1.1.4</span> Bibliographie: à lire, à faire</h4>
<ul>
<li>Lire article multi-niveaux Saint-Clair</li>
<li>🆕 🔎 Trouver des papiers:
<ul>
<li>LBM Negative Binomial</li>
<li>Network inference through sample comparison</li>
</ul></li>
<li>Idée des groupes sur la base de distance phylogénétique:
<ul>
<li>En train de comprendre les distances que phyloseq permet de calculer sur notre exemple</li>
<li>En train de lire sur Principle coordinate analysis : https://openplantpathology.github.io/OPP_Workshop_Multivariate/2-MV_PCO.html</li>
<li>Parametric t-SNE pour avoir une unique représentation latente (inconvénient utilise du Deep Learning)</li>
<li>Lire Papier UniFrac</li>
</ul></li>
</ul>
</section>
<section id="réflexion" class="level4" data-number="1.1.5">
<h4 data-number="1.1.5" class="anchored" data-anchor-id="réflexion"><span class="header-section-number">1.1.5</span> Réflexion</h4>
<ul>
<li>easy16s : se renseigner sur
<ul>
<li><span class="math inline">\alpha</span>, <span class="math inline">\beta</span> diversité</li>
<li>Heatmap</li>
</ul></li>
<li>Regarder <strong>SPARTA</strong> Rennes</li>
<li>Ecrire et étudier les modèles pour différents niveaux taxonomiques.</li>
<li>🆕 Regarder NetComi</li>
<li>🆕 Regarder OneNet car aggrégation plus robuste</li>
<li>🆕 Réfléchir sens daggréger les données ou de les diviser</li>
</ul>
</section>
<section id="écrire-et-faire-tourner" class="level4" data-number="1.1.6">
<h4 data-number="1.1.6" class="anchored" data-anchor-id="écrire-et-faire-tourner"><span class="header-section-number">1.1.6</span> Écrire et faire tourner</h4>
<ul>
<li>Lancer <em>colBiSBM</em> sur <span class="math inline">OTU\times Sample</span> → problème du chargement en mémoire des données à voir</li>
<li>Lancer <em>colSBM</em> sur <span class="math inline">OTU\times OTU</span></li>
<li>TabNet pratiquer les <a href="https://github.com/cregouby/Tutoriel_torch">exercices</a></li>
<li>🆕 SparCC à différent niveaux</li>
<li>🆕 SBM à différent niveaux</li>
<li>🆕⌛ Tree-PLN à différents niveaux</li>
</ul>
</section>
<section id="causalité" class="level4" data-number="1.1.7">
<h4 data-number="1.1.7" class="anchored" data-anchor-id="causalité"><span class="header-section-number">1.1.7</span> Causalité</h4>
<p>Plus sur le temps long, à regarder</p>
<ul>
<li>GT causalité</li>
<li>Daria Bystrova lire présentation <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span> (Meek rules, V-structure)</li>
</ul>
</section>
</section>
</section>
<section id="a-discuter" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="a-discuter"><span class="header-section-number">2</span> A discuter</h2>
<ul>
<li>🆕 Voir pour des Réseaux / GDR ou aller</li>
<li>🆕 Chercher des cours à suivre</li>
</ul>
</section>
<section id="biblio-à-faire" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="biblio-à-faire"><span class="header-section-number">3</span> Biblio à faire</h2>
<ul>
<li>Regarder Transport optimal graphes bipartite.</li>
</ul>
</section>
<section id="lectures-en-cours" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="lectures-en-cours"><span class="header-section-number">4</span> Lectures en cours 📚</h2>
<section id="hdr-vincent-brault" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="hdr-vincent-brault"><span class="header-section-number">4.1</span> HDR Vincent Brault</h3>
<ul>
<li>⌛ Chap 2 : Creuser lidé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</li>
<li>Chap 3</li>
</ul>
</section>
<section id="ot" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="ot"><span class="header-section-number">4.2</span> OT</h3>
<ul>
<li><span class="citation" data-cites="mazeletUnsupervisedLearningOptimal">Mazelet, Flamary, et Thirion (<a href="#ref-mazeletUnsupervisedLearningOptimal" role="doc-biblioref">s.&nbsp;d.</a>)</span> Intéressant pour le transport optimal entre graphes de tailles différentes | Regarder si regularization entropique ne marche pas bien pour le graphe.</li>
<li><span class="citation" data-cites="nennaLecture2Entropic">Nenna (<a href="#ref-nennaLecture2Entropic" role="doc-biblioref">s.&nbsp;d.b</a>)</span> Pour comprendre le problème dOT régularisé pour lentropie.</li>
<li><span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s.&nbsp;d.a</a>)</span></li>
</ul>
</section>
<section id="inférence-de-graphes" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="inférence-de-graphes"><span class="header-section-number">4.3</span> Inférence de graphes</h3>
<ul>
<li><p><span class="citation" data-cites="aitchisonStatisticalAnalysisCompositional1982a">Aitchison (<a href="#ref-aitchisonStatisticalAnalysisCompositional1982a" role="doc-biblioref">1982</a>)</span>, en cours</p></li>
<li><p>❗📖 <span class="citation" data-cites="payneFiniteMixturesMultivariate2023">Payne et al. (<a href="#ref-payneFiniteMixturesMultivariate2023" role="doc-biblioref">2023</a>)</span> sur MixMPLN</p></li>
</ul>
</section>
<section id="causalité-1" class="level3" data-number="4.4">
<h3 data-number="4.4" class="anchored" data-anchor-id="causalité-1"><span class="header-section-number">4.4</span> Causalité</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span></li>
</ul>
</section>
<section id="largest-gaps" class="level3" data-number="4.5">
<h3 data-number="4.5" class="anchored" data-anchor-id="largest-gaps"><span class="header-section-number">4.5</span> Largest Gaps</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="braultFastConsistentAlgorithm2023">Brault et Channarond (<a href="#ref-braultFastConsistentAlgorithm2023" role="doc-biblioref">2023</a>)</span></li>
<li>❗📖 <span class="citation" data-cites="channarondClassificationEstimationStochastic2012">Channarond, Daudin, et Robin (<a href="#ref-channarondClassificationEstimationStochastic2012" role="doc-biblioref">2012</a>)</span> le papier qui introduit le <em>Largest Gaps</em></li>
</ul>
</section>
</section>
<div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" role="doc-bibliography" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">Les références</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0" role="list">
<div id="ref-abramovStructureKnowsBest" class="csl-entry" role="listitem">
Abramov, Kesem, Barry Biton, Geut Galai, Rami Puzis, et Shai Pilosof. s.&nbsp;d. <span>«&nbsp;Structure Knows Best: Predicting Ecological Interactions Across Space Through Pairwise Integration of Latent Network Patterns&nbsp;»</span>.
</div>
<div id="ref-aitchisonStatisticalAnalysisCompositional1982a" class="csl-entry" role="listitem">
Aitchison, J. 1982. <span>«&nbsp;The <span>Statistical Analysis</span> of <span>Compositional Data</span>&nbsp;»</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 13977. <a href="https://www.jstor.org/stable/2345821">https://www.jstor.org/stable/2345821</a>.
</div>
<div id="ref-braultFastConsistentAlgorithm2023" class="csl-entry" role="listitem">
Brault, Vincent, et Antoine Channarond. 2023. <span>«&nbsp;Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span>&nbsp;»</span>. 9 mars 2023. <a href="https://doi.org/10.48550/arXiv.1610.09005">https://doi.org/10.48550/arXiv.1610.09005</a>.
</div>
<div id="ref-bystrovaCausalDiscovery" class="csl-entry" role="listitem">
Bystrova, Daria. s.&nbsp;d. <span>«&nbsp;Causal Discovery&nbsp;»</span>.
</div>
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>«&nbsp;Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees&nbsp;»</span>. <em>Electronic Journal of Statistics</em> 6 (janvier). <a href="https://doi.org/10.1214/12-ejs753">https://doi.org/10.1214/12-ejs753</a>.
</div>
<div id="ref-mazeletUnsupervisedLearningOptimal" class="csl-entry" role="listitem">
Mazelet, Sonia, Rémi Flamary, et Bertrand Thirion. s.&nbsp;d. <span>«&nbsp;Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs&nbsp;»</span>.
</div>
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
Nenna, Luca. s.&nbsp;d.a. <span>«&nbsp;Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual&nbsp;»</span>.
</div>
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
———. s.&nbsp;d.b. <span>«&nbsp;Lecture 2: <span>Entropic Optimal Transport</span>&nbsp;»</span>.
</div>
<div id="ref-payneFiniteMixturesMultivariate2023" class="csl-entry" role="listitem">
Payne, Andrea, Anjali Silva, Steven J. Rothstein, Paul D. McNicholas, et Sanjeena Subedi. 2023. <span>«&nbsp;Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span>&nbsp;»</span>. 13 novembre 2023. <a href="https://doi.org/10.48550/arXiv.2311.07762">https://doi.org/10.48550/arXiv.2311.07762</a>.
</div>
<div id="ref-peixotoHierarchicalBlockStructures2014" class="csl-entry" role="listitem">
Peixoto, Tiago P. 2014. <span>«&nbsp;Hierarchical <span>Block Structures</span> and <span>High-Resolution Model Selection</span> in <span>Large Networks</span>&nbsp;»</span>. <em>Physical Review X</em> 4 (1): 011047. <a href="https://doi.org/10.1103/PhysRevX.4.011047">https://doi.org/10.1103/PhysRevX.4.011047</a>.
</div>
</div></section></div></main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

944
suivi/2026-7/2026-7.html Normal file
View file

@ -0,0 +1,944 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 7 2026 : 09 février - 13 février Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
/* CSS for citations */
div.csl-bib-body { }
div.csl-entry {
clear: both;
margin-bottom: 0em;
}
.hanging-indent div.csl-entry {
margin-left:2em;
text-indent:-2em;
}
div.csl-left-margin {
min-width:2em;
float:left;
}
div.csl-right-inline {
margin-left:2em;
padding-left:1em;
}
div.csl-indent {
margin-left: 2em;
}</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 7 2026 : 09 février - 13 février</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
<div class="quarto-category">inférence</div>
<div class="quarto-category">GNN</div>
<div class="quarto-category">covariables</div>
<div class="quarto-category">identifiabilité</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">13 février 2026</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#todo-list" id="toc-todo-list" class="nav-link active" data-scroll-target="#todo-list"><span class="header-section-number">1</span> TODO List</a>
<ul class="collapse">
<li><a href="#inférence-et-microbes" id="toc-inférence-et-microbes" class="nav-link" data-scroll-target="#inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</a></li>
</ul></li>
<li><a href="#a-discuter" id="toc-a-discuter" class="nav-link" data-scroll-target="#a-discuter"><span class="header-section-number">2</span> A discuter</a></li>
<li><a href="#biblio-à-faire" id="toc-biblio-à-faire" class="nav-link" data-scroll-target="#biblio-à-faire"><span class="header-section-number">3</span> Biblio à faire</a></li>
<li><a href="#lectures-en-cours" id="toc-lectures-en-cours" class="nav-link" data-scroll-target="#lectures-en-cours"><span class="header-section-number">4</span> Lectures en cours 📚</a>
<ul class="collapse">
<li><a href="#hdr-vincent-brault" id="toc-hdr-vincent-brault" class="nav-link" data-scroll-target="#hdr-vincent-brault"><span class="header-section-number">4.1</span> HDR Vincent Brault</a></li>
<li><a href="#ot" id="toc-ot" class="nav-link" data-scroll-target="#ot"><span class="header-section-number">4.2</span> OT</a></li>
<li><a href="#inférence-de-graphes" id="toc-inférence-de-graphes" class="nav-link" data-scroll-target="#inférence-de-graphes"><span class="header-section-number">4.3</span> Inférence de graphes</a></li>
<li><a href="#causalité-1" id="toc-causalité-1" class="nav-link" data-scroll-target="#causalité-1"><span class="header-section-number">4.4</span> Causalité</a></li>
<li><a href="#largest-gaps" id="toc-largest-gaps" class="nav-link" data-scroll-target="#largest-gaps"><span class="header-section-number">4.5</span> Largest Gaps</a></li>
</ul></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="todo-list" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="todo-list"><span class="header-section-number">1</span> TODO List</h2>
<ul>
<li>Petites opérations sur les OTUs (regarder la matrice dans les yeux):
<ul>
<li>Ranger les OTUs par variances (i.e.&nbsp;<code>sd(OTU_j)</code>)
<ul>
<li>HMC sur-dispersés (au-dessus bissectrice)</li>
<li>Enterotype phyloseq sous-disp</li>
</ul></li>
<li>Regarder la proportion de 1. taxon rares, 2. zeros.</li>
<li>Faire des coupures selon niveaux taxonomiques et regarder si <span class="math inline">\mathbb{V}_{\text{intra}} \approx \mathbb{V}_{\text{inter}}</span></li>
<li><em>Bonus</em>: faire ça dans qmd et voir si forge permet gitlab pages</li>
</ul></li>
<li>✅ Avec blockmodels, codé un LBM-Séquentiel. <em>Des différences contrastées…</em>
<ul>
<li>TODO Ajouter lien vers notebooks résultats</li>
</ul></li>
<li>Relire <span class="citation" data-cites="peixotoHierarchicalBlockStructures2014">Peixoto (<a href="#ref-peixotoHierarchicalBlockStructures2014" role="doc-biblioref">2014</a>)</span>
<ul>
<li>Regarder les gens qui citent les travaux de Peixoto</li>
</ul></li>
<li><strong>En cours</strong> Implémentation <code>blockmodels</code> LBM avec covariables sur proportions (voir <a href="#eq-modele-covar-prop" class="quarto-xref">Équation&nbsp;1</a>)</li>
</ul>
<div class="callout callout-style-default callout-note callout-titled" title="Idées">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Idées
</div>
</div>
<div class="callout-body-container callout-body">
<ul>
<li>Travailler sur Fungus Tree network</li>
<li><strong>Demander à PB et SD</strong>, ils regardent : Comparaison covar prop avec GREMLINS multipartite sur (log(dist_phylo), fungus-tree)</li>
<li>Trouver manière de faire un compromis : <span class="math inline">\ell(Y,Z,W;\theta) - \lambda d(C(W),C_0)</span> avec <span class="math inline">C(W)</span> le clustering seulement sur la base de la structure LBM et <span class="math inline">C_0</span> le clustering de larbre. Problème <span class="math inline">d</span> est une distance entre partition, comment optimiser dessus ?</li>
<li>⌛ Mise à jour partielle des <span class="math inline">\tau</span> : ce qui pose soucis cest les gros calculs matriciels (cest vraiment vrai?). Donc sorte de “stochastic” VEM où on update seulement une partie des <span class="math inline">\tau</span> à chaque itération. Et échantillonnage stratifié selon larbre ?
<ul>
<li>⌛ Simulations avec <span class="math inline">n_2</span> croissant lancée sur Migale</li>
<li>Réimplementé VE Bernoulli dans colSBM pour Bipartite et début implémentation Stochastic VE. En fait le problème des calculs matriciels <span class="math inline">Y\times(\tau^{(1)})^{\top}</span> (<span class="math inline">n_2^2</span>) donc besoin de sous-échantillonner les noeuds de lautre dimension à mettre à jour.</li>
</ul></li>
</ul>
</div>
</div>
<ul>
<li><p>Clustering unipartite jai cassé une fonction de distance à vérifier et réparer</p></li>
<li><p>Codes pour le papier :</p>
<ul>
<li>Nettoyer les scripts</li>
<li>Faire un joli README</li>
<li>❓Faire des notebooks</li>
</ul></li>
<li><p>Réussir à reproduire résultat de <span class="citation" data-cites="abramovStructureKnowsBest">Abramov et al. (<a href="#ref-abramovStructureKnowsBest" role="doc-biblioref">s.&nbsp;d.</a>)</span></p></li>
<li><p>Maitriser graphtools de Peixoto pour essayer dutiliser larbre taxonomique sur graphe de cooccurence inférer par SparCC</p></li>
<li><p>Maitriser SparCC</p></li>
<li><p>👶 (délégué à Mona) Clustering sur Doré :</p>
<ul>
<li>Ajouter Chao1 et 2, colonne par colonne (site par site), et faire indice moyen et la variance.</li>
</ul></li>
</ul>
<section id="inférence-et-microbes" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</h3>
<ul>
<li>✅ En préparation dun fichier (réu avec JBL à 10h45 le 06/02/2026). Possible en modifiant lbm.h et sbm.h dobtenir un modèle utilisant les covariables de groupes (de blocs ?). Car besoin de changer <code>membership.m_step()</code> pour mettre à jour <span class="math inline">\pmb\pi</span> et <span class="math inline">\pmb{\rho}</span> en utilisant les <span class="math inline">\pmb B^{\top}\pmb X</span> et en renvoyant lELBO adaptée.
<ul>
<li><p>😄 Avantage sinscrit directement dans blockmodels et permet davoir toutes les lois démissions déjà codées et compatibles !</p></li>
<li><p>😢 Besoin de réfléchir a une bonne implémentation.</p></li>
</ul></li>
</ul>
<section id="modèle-avec-covariables-sur-probas-dappartenances-aux-groupes" class="level4" data-number="1.1.1">
<h4 data-number="1.1.1" class="anchored" data-anchor-id="modèle-avec-covariables-sur-probas-dappartenances-aux-groupes"><span class="header-section-number">1.1.1</span> Modèle avec covariables sur probas dappartenances aux groupes</h4>
<p><span class="math display">\begin{align*}
\pmb{\beta}_{r}&amp; = \begin{pmatrix}
\beta_{r,0}\\
\vdots\\
\beta_{r,p}
\end{pmatrix}, &amp; X_{j,\bullet} = \begin{pmatrix}
1 = x_{0,j} &amp; x_{1,j} &amp; \dots &amp; x_{p,j}
\end{pmatrix}\\
X_{j,\bullet} \pmb{\beta}_r&amp; = \beta_{r,0} x_{0,j} + \beta_{r,1} x_{1,j} + \dots + \beta_{r,p} x_{p,j} &amp; \approx \log(\rho_r^j) \\
B &amp; = \begin{pmatrix}
\pmb{\beta}_1 \dots \pmb{\beta}_r \dots \pmb{\beta}_R
\end{pmatrix} &amp; X_{j,\bullet}B \approx \log(\pmb{\rho}^j) \\
X B &amp; \approx \log((\pmb{\rho}^j)_{j=1,\dots,n_2}) = \log(\pmb{\Rho})\\
\end{align*}</span> Et pour les probas en lignes du LBM <span class="math display">\begin{align*}
\pmb{\gamma}_{q}&amp; = \begin{pmatrix}
\gamma_{q,0}\\
\vdots\\
\gamma_{q,d}
\end{pmatrix}, &amp; V_{i,\bullet} = \begin{pmatrix}
1 = v_{0,i} &amp; v_{1,i} &amp; \dots &amp; v_{d,i}
\end{pmatrix}\\
V_{i,\bullet} \pmb{\gamma}_q &amp; = \gamma_{q,0} v_{0,i} + \gamma_{q,1} v_{1,i} + \dots + \gamma_{q,d} v_{d,i} &amp; \approx \log(\pi_q^i) \\
\Gamma &amp; = \begin{pmatrix}
\gamma_1 \dots \pmb{\gamma}_q \dots \pmb{\gamma}_Q
\end{pmatrix} &amp; V_{i,\bullet} \Gamma \approx \log(\pmb{\pi}^i) \\
V \Gamma &amp; \approx \log((\pmb{\pi}^i)_{i=1,\dots,n_1}) = \log(\pmb{\Pi})
\end{align*}</span></p>
</section>
<section id="preuve-sur-lidentifiabilité" class="level4" data-number="1.1.2">
<h4 data-number="1.1.2" class="anchored" data-anchor-id="preuve-sur-lidentifiabilité"><span class="header-section-number">1.1.2</span> Preuve sur lidentifiabilité</h4>
<p>Soient <span class="math inline">B,B^{\prime}</span> avec <span class="math inline">B_{\bullet,R} = B^{\prime}_{\bullet,R} = \vec{0}_{p+1}</span> et <span class="math inline">X</span> de rang plein tel que <span class="math inline">X^{\top}X</span> soit inversible.</p>
<p><span class="math display">\begin{align*}
&amp;\sigma(XB) = \sigma(XB^{\prime})\\
&amp;\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} \\
&amp;\implies \exists C \in \mathbb{R}^{n_2}, (X B)_{j,r} = (X B^{\prime})_{j,r} + (C \pmb{1}_{R}^{\top})_{j,r} \\
&amp;\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\\
&amp;\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 \\
&amp;\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 \\
&amp;\implies \exists C \in \mathbb{R}^{n_2}, \forall j\in\{1,\dots,n_2\}, 0 = 0 + c_j \implies c_j = 0 \\
&amp;\implies C = \begin{pmatrix} 0 \\ \vdots \\ 0 \end{pmatrix} \text{and thus}, XB = XB^{\prime} \\
&amp; \implies (X^{\top} X)^{-1}X^{\top} X B = (X^{\top} X)^{-1}X^{\top} X B^{\prime} \implies B=B^{\prime}
\end{align*}</span></p>
</section>
<section id="description-du-modèle-hiérarchique" class="level4" data-number="1.1.3">
<h4 data-number="1.1.3" class="anchored" data-anchor-id="description-du-modèle-hiérarchique"><span class="header-section-number">1.1.3</span> Description du modèle hiérarchique</h4>
<p>Toujours modèle LBM mais avec probas dappartenance pour les colonnes variables:</p>
<p><span class="math display">\begin{align*}
Z_i &amp;\sim \mathcal{M}(1; \pi_1, \dots, \pi_Q), \sum_{q=1}^{Q} \pi_q = 1\\
W_j &amp;\sim \mathcal{M}(1; \rho_1^j, \dots, \rho_R^j), \sum_{r=1}^{R} \rho_r^j = 1\\
Y_{i,j}&amp;\mid Z_i = q, W_j = r \sim \mathcal{F}(\alpha_{qr})
\end{align*}</span></p>
<p>Inférence variationnelle donc <span class="math inline">\ell(Y;\pmb{\theta}) \geq \mathcal{J}(\mathcal{R},\pmb{\theta})</span> avec</p>
<p><span class="math display">
\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}
</span></p>
<section id="modèle-sophie" class="level5" data-number="1.1.3.1">
<h5 data-number="1.1.3.1" class="anchored" data-anchor-id="modèle-sophie"><span class="header-section-number">1.1.3.1</span> Modèle Sophie</h5>
<p>Avec <span class="math inline">\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}</span>, où <span class="math inline">\sigma</span> désigne le softmax. Mais il y a besoin de poser une contrainte sur lun des <span class="math inline">(\beta_r)_{r=1,\dots,R}</span>, ici <span class="math inline">\beta_R = 0</span>.</p>
<p>La partie pertinente de lELBO devient: <span id="eq-modele-covar-prop"><span class="math display">
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}</span></span></p>
<p>Et on obtient la dérivée partielle par rapport à <span class="math inline">\beta_t</span> comme: <span class="math display">\begin{align*}
\dfrac{\partial P}{\partial \beta_t}&amp;((\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]\\
&amp; = \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*}</span></p>
</section>
</section>
<section id="bibliographie-à-lire-à-faire" class="level4" data-number="1.1.4">
<h4 data-number="1.1.4" class="anchored" data-anchor-id="bibliographie-à-lire-à-faire"><span class="header-section-number">1.1.4</span> Bibliographie: à lire, à faire</h4>
<ul>
<li>Lire article multi-niveaux Saint-Clair</li>
<li>🆕 🔎 Trouver des papiers:
<ul>
<li>LBM Negative Binomial</li>
<li>Network inference through sample comparison</li>
</ul></li>
<li>Idée des groupes sur la base de distance phylogénétique:
<ul>
<li>En train de comprendre les distances que phyloseq permet de calculer sur notre exemple</li>
<li>En train de lire sur Principle coordinate analysis : https://openplantpathology.github.io/OPP_Workshop_Multivariate/2-MV_PCO.html</li>
<li>Parametric t-SNE pour avoir une unique représentation latente (inconvénient utilise du Deep Learning)</li>
<li>Lire Papier UniFrac</li>
</ul></li>
</ul>
</section>
<section id="réflexion" class="level4" data-number="1.1.5">
<h4 data-number="1.1.5" class="anchored" data-anchor-id="réflexion"><span class="header-section-number">1.1.5</span> Réflexion</h4>
<ul>
<li>easy16s : se renseigner sur
<ul>
<li><span class="math inline">\alpha</span>, <span class="math inline">\beta</span> diversité</li>
<li>Heatmap</li>
</ul></li>
<li>Regarder <strong>SPARTA</strong> Rennes</li>
<li>Ecrire et étudier les modèles pour différents niveaux taxonomiques.</li>
<li>🆕 Regarder NetComi</li>
<li>🆕 Regarder OneNet car aggrégation plus robuste</li>
<li>🆕 Réfléchir sens daggréger les données ou de les diviser</li>
</ul>
</section>
<section id="écrire-et-faire-tourner" class="level4" data-number="1.1.6">
<h4 data-number="1.1.6" class="anchored" data-anchor-id="écrire-et-faire-tourner"><span class="header-section-number">1.1.6</span> Écrire et faire tourner</h4>
<ul>
<li>Lancer <em>colBiSBM</em> sur <span class="math inline">OTU\times Sample</span> → problème du chargement en mémoire des données à voir</li>
<li>Lancer <em>colSBM</em> sur <span class="math inline">OTU\times OTU</span></li>
<li>TabNet pratiquer les <a href="https://github.com/cregouby/Tutoriel_torch">exercices</a></li>
<li>🆕 SparCC à différent niveaux</li>
<li>🆕 SBM à différent niveaux</li>
<li>🆕⌛ Tree-PLN à différents niveaux</li>
</ul>
</section>
<section id="causalité" class="level4" data-number="1.1.7">
<h4 data-number="1.1.7" class="anchored" data-anchor-id="causalité"><span class="header-section-number">1.1.7</span> Causalité</h4>
<p>Plus sur le temps long, à regarder</p>
<ul>
<li>GT causalité</li>
<li>Daria Bystrova lire présentation <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span> (Meek rules, V-structure)</li>
</ul>
</section>
</section>
</section>
<section id="a-discuter" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="a-discuter"><span class="header-section-number">2</span> A discuter</h2>
<ul>
<li>🆕 Voir pour des Réseaux / GDR ou aller</li>
<li>🆕 Chercher des cours à suivre</li>
</ul>
</section>
<section id="biblio-à-faire" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="biblio-à-faire"><span class="header-section-number">3</span> Biblio à faire</h2>
<ul>
<li>Regarder Transport optimal graphes bipartite.</li>
</ul>
</section>
<section id="lectures-en-cours" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="lectures-en-cours"><span class="header-section-number">4</span> Lectures en cours 📚</h2>
<section id="hdr-vincent-brault" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="hdr-vincent-brault"><span class="header-section-number">4.1</span> HDR Vincent Brault</h3>
<ul>
<li>⌛ Chap 2 : Creuser lidé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</li>
<li>Chap 3</li>
</ul>
</section>
<section id="ot" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="ot"><span class="header-section-number">4.2</span> OT</h3>
<ul>
<li><span class="citation" data-cites="mazeletUnsupervisedLearningOptimal">Mazelet, Flamary, et Thirion (<a href="#ref-mazeletUnsupervisedLearningOptimal" role="doc-biblioref">s.&nbsp;d.</a>)</span> Intéressant pour le transport optimal entre graphes de tailles différentes | Regarder si regularization entropique ne marche pas bien pour le graphe.</li>
<li><span class="citation" data-cites="nennaLecture2Entropic">Nenna (<a href="#ref-nennaLecture2Entropic" role="doc-biblioref">s.&nbsp;d.b</a>)</span> Pour comprendre le problème dOT régularisé pour lentropie.</li>
<li><span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s.&nbsp;d.a</a>)</span></li>
</ul>
</section>
<section id="inférence-de-graphes" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="inférence-de-graphes"><span class="header-section-number">4.3</span> Inférence de graphes</h3>
<ul>
<li><p><span class="citation" data-cites="aitchisonStatisticalAnalysisCompositional1982a">Aitchison (<a href="#ref-aitchisonStatisticalAnalysisCompositional1982a" role="doc-biblioref">1982</a>)</span>, en cours</p></li>
<li><p>❗📖 <span class="citation" data-cites="payneFiniteMixturesMultivariate2023">Payne et al. (<a href="#ref-payneFiniteMixturesMultivariate2023" role="doc-biblioref">2023</a>)</span> sur MixMPLN</p></li>
</ul>
</section>
<section id="causalité-1" class="level3" data-number="4.4">
<h3 data-number="4.4" class="anchored" data-anchor-id="causalité-1"><span class="header-section-number">4.4</span> Causalité</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span></li>
</ul>
</section>
<section id="largest-gaps" class="level3" data-number="4.5">
<h3 data-number="4.5" class="anchored" data-anchor-id="largest-gaps"><span class="header-section-number">4.5</span> Largest Gaps</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="braultFastConsistentAlgorithm2023">Brault et Channarond (<a href="#ref-braultFastConsistentAlgorithm2023" role="doc-biblioref">2023</a>)</span></li>
<li>❗📖 <span class="citation" data-cites="channarondClassificationEstimationStochastic2012">Channarond, Daudin, et Robin (<a href="#ref-channarondClassificationEstimationStochastic2012" role="doc-biblioref">2012</a>)</span> le papier qui introduit le <em>Largest Gaps</em></li>
</ul>
</section>
</section>
<div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" role="doc-bibliography" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">Les références</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0" role="list">
<div id="ref-abramovStructureKnowsBest" class="csl-entry" role="listitem">
Abramov, Kesem, Barry Biton, Geut Galai, Rami Puzis, et Shai Pilosof. s.&nbsp;d. <span>«&nbsp;Structure Knows Best: Predicting Ecological Interactions Across Space Through Pairwise Integration of Latent Network Patterns&nbsp;»</span>.
</div>
<div id="ref-aitchisonStatisticalAnalysisCompositional1982a" class="csl-entry" role="listitem">
Aitchison, J. 1982. <span>«&nbsp;The <span>Statistical Analysis</span> of <span>Compositional Data</span>&nbsp;»</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 13977. <a href="https://www.jstor.org/stable/2345821">https://www.jstor.org/stable/2345821</a>.
</div>
<div id="ref-braultFastConsistentAlgorithm2023" class="csl-entry" role="listitem">
Brault, Vincent, et Antoine Channarond. 2023. <span>«&nbsp;Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span>&nbsp;»</span>. 9 mars 2023. <a href="https://doi.org/10.48550/arXiv.1610.09005">https://doi.org/10.48550/arXiv.1610.09005</a>.
</div>
<div id="ref-bystrovaCausalDiscovery" class="csl-entry" role="listitem">
Bystrova, Daria. s.&nbsp;d. <span>«&nbsp;Causal Discovery&nbsp;»</span>.
</div>
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>«&nbsp;Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees&nbsp;»</span>. <em>Electronic Journal of Statistics</em> 6 (janvier). <a href="https://doi.org/10.1214/12-ejs753">https://doi.org/10.1214/12-ejs753</a>.
</div>
<div id="ref-mazeletUnsupervisedLearningOptimal" class="csl-entry" role="listitem">
Mazelet, Sonia, Rémi Flamary, et Bertrand Thirion. s.&nbsp;d. <span>«&nbsp;Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs&nbsp;»</span>.
</div>
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
Nenna, Luca. s.&nbsp;d.a. <span>«&nbsp;Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual&nbsp;»</span>.
</div>
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
———. s.&nbsp;d.b. <span>«&nbsp;Lecture 2: <span>Entropic Optimal Transport</span>&nbsp;»</span>.
</div>
<div id="ref-payneFiniteMixturesMultivariate2023" class="csl-entry" role="listitem">
Payne, Andrea, Anjali Silva, Steven J. Rothstein, Paul D. McNicholas, et Sanjeena Subedi. 2023. <span>«&nbsp;Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span>&nbsp;»</span>. 13 novembre 2023. <a href="https://doi.org/10.48550/arXiv.2311.07762">https://doi.org/10.48550/arXiv.2311.07762</a>.
</div>
<div id="ref-peixotoHierarchicalBlockStructures2014" class="csl-entry" role="listitem">
Peixoto, Tiago P. 2014. <span>«&nbsp;Hierarchical <span>Block Structures</span> and <span>High-Resolution Model Selection</span> in <span>Large Networks</span>&nbsp;»</span>. <em>Physical Review X</em> 4 (1): 011047. <a href="https://doi.org/10.1103/PhysRevX.4.011047">https://doi.org/10.1103/PhysRevX.4.011047</a>.
</div>
</div></section></div></main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

850
suivi/2026-8/2026-8.html Normal file
View file

@ -0,0 +1,850 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 8 2026 : 16 février - 20 février Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
/* CSS for citations */
div.csl-bib-body { }
div.csl-entry {
clear: both;
margin-bottom: 0em;
}
.hanging-indent div.csl-entry {
margin-left:2em;
text-indent:-2em;
}
div.csl-left-margin {
min-width:2em;
float:left;
}
div.csl-right-inline {
margin-left:2em;
padding-left:1em;
}
div.csl-indent {
margin-left: 2em;
}</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 8 2026 : 16 février - 20 février</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
<div class="quarto-category">inférence</div>
<div class="quarto-category">GNN</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">13 février 2026</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#todo-list" id="toc-todo-list" class="nav-link active" data-scroll-target="#todo-list"><span class="header-section-number">1</span> TODO List</a>
<ul class="collapse">
<li><a href="#inférence-et-microbes" id="toc-inférence-et-microbes" class="nav-link" data-scroll-target="#inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</a></li>
</ul></li>
<li><a href="#a-discuter" id="toc-a-discuter" class="nav-link" data-scroll-target="#a-discuter"><span class="header-section-number">2</span> A discuter</a></li>
<li><a href="#biblio-à-faire" id="toc-biblio-à-faire" class="nav-link" data-scroll-target="#biblio-à-faire"><span class="header-section-number">3</span> Biblio à faire</a></li>
<li><a href="#lectures-en-cours" id="toc-lectures-en-cours" class="nav-link" data-scroll-target="#lectures-en-cours"><span class="header-section-number">4</span> Lectures en cours 📚</a>
<ul class="collapse">
<li><a href="#hdr-vincent-brault" id="toc-hdr-vincent-brault" class="nav-link" data-scroll-target="#hdr-vincent-brault"><span class="header-section-number">4.1</span> HDR Vincent Brault</a></li>
<li><a href="#ot" id="toc-ot" class="nav-link" data-scroll-target="#ot"><span class="header-section-number">4.2</span> OT</a></li>
<li><a href="#inférence-de-graphes" id="toc-inférence-de-graphes" class="nav-link" data-scroll-target="#inférence-de-graphes"><span class="header-section-number">4.3</span> Inférence de graphes</a></li>
<li><a href="#causalité-1" id="toc-causalité-1" class="nav-link" data-scroll-target="#causalité-1"><span class="header-section-number">4.4</span> Causalité</a></li>
<li><a href="#largest-gaps" id="toc-largest-gaps" class="nav-link" data-scroll-target="#largest-gaps"><span class="header-section-number">4.5</span> Largest Gaps</a></li>
</ul></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="todo-list" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="todo-list"><span class="header-section-number">1</span> TODO List</h2>
<ul>
<li>Petites opérations sur les OTUs (regarder la matrice dans les yeux):
<ul>
<li>Ranger les OTUs par variances (i.e.&nbsp;<code>sd(OTU_j)</code>)
<ul>
<li>HMC sur-dispersés (au-dessus bissectrice)</li>
<li>Enterotype phyloseq sous-disp</li>
</ul></li>
<li>Regarder la proportion de 1. taxon rares, 2. zeros.</li>
<li>Faire des coupures selon niveaux taxonomiques et regarder si <span class="math inline">\mathbb{V}_{\text{intra}} \approx \mathbb{V}_{\text{inter}}</span></li>
<li><em>Bonus</em>: faire ça dans qmd et voir si forge permet gitlab pages</li>
</ul></li>
<li>✅ Avec blockmodels, codé un LBM-Séquentiel. <em>Des différences contrastées…</em>
<ul>
<li>TODO Ajouter lien vers notebooks résultats</li>
</ul></li>
<li>Relire <span class="citation" data-cites="peixotoHierarchicalBlockStructures2014">Peixoto (<a href="#ref-peixotoHierarchicalBlockStructures2014" role="doc-biblioref">2014</a>)</span>
<ul>
<li>Regarder les gens qui citent les travaux de Peixoto</li>
</ul></li>
<li><strong>En cours</strong> Implémentation <code>blockmodels</code> LBM avec covariables sur proportions (voir <strong>?@eq-modele-covar-prop</strong>)</li>
</ul>
<div class="callout callout-style-default callout-note callout-titled" title="Idées">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Idées
</div>
</div>
<div class="callout-body-container callout-body">
<ul>
<li>Travailler sur Fungus Tree network</li>
<li><strong>Demander à PB et SD</strong>, ils regardent : Comparaison covar prop avec GREMLINS multipartite sur (log(dist_phylo), fungus-tree)</li>
<li>Trouver manière de faire un compromis : <span class="math inline">\ell(Y,Z,W;\theta) - \lambda d(C(W),C_0)</span> avec <span class="math inline">C(W)</span> le clustering seulement sur la base de la structure LBM et <span class="math inline">C_0</span> le clustering de larbre. Problème <span class="math inline">d</span> est une distance entre partition, comment optimiser dessus ?</li>
<li>⌛ Mise à jour partielle des <span class="math inline">\tau</span> : ce qui pose soucis cest les gros calculs matriciels (cest vraiment vrai?). Donc sorte de “stochastic” VEM où on update seulement une partie des <span class="math inline">\tau</span> à chaque itération. Et échantillonnage stratifié selon larbre ?
<ul>
<li>⌛ Simulations avec <span class="math inline">n_2</span> croissant lancée sur Migale</li>
<li>Réimplementé VE Bernoulli dans colSBM pour Bipartite et début implémentation Stochastic VE. En fait le problème des calculs matriciels <span class="math inline">Y\times(\tau^{(1)})^{\top}</span> (<span class="math inline">n_2^2</span>) donc besoin de sous-échantillonner les noeuds de lautre dimension à mettre à jour.</li>
</ul></li>
</ul>
</div>
</div>
<ul>
<li><p>Clustering unipartite jai cassé une fonction de distance à vérifier et réparer</p></li>
<li><p>Codes pour le papier :</p>
<ul>
<li>Nettoyer les scripts</li>
<li>Faire un joli README</li>
<li>❓Faire des notebooks</li>
</ul></li>
<li><p>Réussir à reproduire résultat de <span class="citation" data-cites="abramovStructureKnowsBest">Abramov et al. (<a href="#ref-abramovStructureKnowsBest" role="doc-biblioref">s.&nbsp;d.</a>)</span></p></li>
<li><p>Maitriser graphtools de Peixoto pour essayer dutiliser larbre taxonomique sur graphe de cooccurence inférer par SparCC</p></li>
<li><p>Maitriser SparCC</p></li>
<li><p>👶 (délégué à Mona) Clustering sur Doré :</p>
<ul>
<li>Ajouter Chao1 et 2, colonne par colonne (site par site), et faire indice moyen et la variance.</li>
</ul></li>
</ul>
<section id="inférence-et-microbes" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</h3>
<ul>
<li>✅ En préparation dun fichier (réu avec JBL à 10h45 le 06/02/2026). Possible en modifiant lbm.h et sbm.h dobtenir un modèle utilisant les covariables de groupes (de blocs ?). Car besoin de changer <code>membership.m_step()</code> pour mettre à jour <span class="math inline">\pmb\pi</span> et <span class="math inline">\pmb{\rho}</span> en utilisant les <span class="math inline">\pmb B^{\top}\pmb X</span> et en renvoyant lELBO adaptée.
<ul>
<li><p>😄 Avantage sinscrit directement dans blockmodels et permet davoir toutes les lois démissions déjà codées et compatibles !</p></li>
<li><p>😢 Besoin de réfléchir a une bonne implémentation.</p></li>
</ul></li>
</ul>
<section id="bibliographie-à-lire-à-faire" class="level4" data-number="1.1.1">
<h4 data-number="1.1.1" class="anchored" data-anchor-id="bibliographie-à-lire-à-faire"><span class="header-section-number">1.1.1</span> Bibliographie: à lire, à faire</h4>
<ul>
<li>Lire article multi-niveaux Saint-Clair</li>
<li>🆕 🔎 Trouver des papiers:
<ul>
<li>LBM Negative Binomial</li>
<li>Network inference through sample comparison</li>
</ul></li>
<li>Idée des groupes sur la base de distance phylogénétique:
<ul>
<li>En train de comprendre les distances que phyloseq permet de calculer sur notre exemple</li>
<li>En train de lire sur Principle coordinate analysis : https://openplantpathology.github.io/OPP_Workshop_Multivariate/2-MV_PCO.html</li>
<li>Parametric t-SNE pour avoir une unique représentation latente (inconvénient utilise du Deep Learning)</li>
<li>Lire Papier UniFrac</li>
</ul></li>
</ul>
</section>
<section id="écrire-et-faire-tourner" class="level4" data-number="1.1.2">
<h4 data-number="1.1.2" class="anchored" data-anchor-id="écrire-et-faire-tourner"><span class="header-section-number">1.1.2</span> Écrire et faire tourner</h4>
<ul>
<li>🆕 SparCC à différent niveaux</li>
<li>🆕⌛ Tree-PLN à différents niveaux</li>
</ul>
</section>
<section id="causalité" class="level4" data-number="1.1.3">
<h4 data-number="1.1.3" class="anchored" data-anchor-id="causalité"><span class="header-section-number">1.1.3</span> Causalité</h4>
<p>Plus sur le temps long, à regarder</p>
<ul>
<li>GT causalité</li>
<li>Daria Bystrova lire présentation <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span> (Meek rules, V-structure)</li>
</ul>
</section>
</section>
</section>
<section id="a-discuter" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="a-discuter"><span class="header-section-number">2</span> A discuter</h2>
<ul>
<li>🆕 Voir pour des Réseaux / GDR ou aller</li>
<li>🆕 Chercher des cours à suivre</li>
</ul>
</section>
<section id="biblio-à-faire" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="biblio-à-faire"><span class="header-section-number">3</span> Biblio à faire</h2>
<ul>
<li>Regarder Transport optimal graphes bipartite.</li>
</ul>
</section>
<section id="lectures-en-cours" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="lectures-en-cours"><span class="header-section-number">4</span> Lectures en cours 📚</h2>
<section id="hdr-vincent-brault" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="hdr-vincent-brault"><span class="header-section-number">4.1</span> HDR Vincent Brault</h3>
<ul>
<li>⌛ Chap 2 : Creuser lidé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</li>
<li>Chap 3</li>
</ul>
</section>
<section id="ot" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="ot"><span class="header-section-number">4.2</span> OT</h3>
<ul>
<li><span class="citation" data-cites="mazeletUnsupervisedLearningOptimal">Mazelet, Flamary, et Thirion (<a href="#ref-mazeletUnsupervisedLearningOptimal" role="doc-biblioref">s.&nbsp;d.</a>)</span> Intéressant pour le transport optimal entre graphes de tailles différentes | Regarder si regularization entropique ne marche pas bien pour le graphe.</li>
<li><span class="citation" data-cites="nennaLecture2Entropic">Nenna (<a href="#ref-nennaLecture2Entropic" role="doc-biblioref">s.&nbsp;d.b</a>)</span> Pour comprendre le problème dOT régularisé pour lentropie.</li>
<li><span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s.&nbsp;d.a</a>)</span></li>
</ul>
</section>
<section id="inférence-de-graphes" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="inférence-de-graphes"><span class="header-section-number">4.3</span> Inférence de graphes</h3>
<ul>
<li><p><span class="citation" data-cites="aitchisonStatisticalAnalysisCompositional1982a">Aitchison (<a href="#ref-aitchisonStatisticalAnalysisCompositional1982a" role="doc-biblioref">1982</a>)</span>, en cours</p></li>
<li><p>❗📖 <span class="citation" data-cites="payneFiniteMixturesMultivariate2023">Payne et al. (<a href="#ref-payneFiniteMixturesMultivariate2023" role="doc-biblioref">2023</a>)</span> sur MixMPLN</p></li>
</ul>
</section>
<section id="causalité-1" class="level3" data-number="4.4">
<h3 data-number="4.4" class="anchored" data-anchor-id="causalité-1"><span class="header-section-number">4.4</span> Causalité</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span></li>
</ul>
</section>
<section id="largest-gaps" class="level3" data-number="4.5">
<h3 data-number="4.5" class="anchored" data-anchor-id="largest-gaps"><span class="header-section-number">4.5</span> Largest Gaps</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="braultFastConsistentAlgorithm2023">Brault et Channarond (<a href="#ref-braultFastConsistentAlgorithm2023" role="doc-biblioref">2023</a>)</span></li>
<li>❗📖 <span class="citation" data-cites="channarondClassificationEstimationStochastic2012">Channarond, Daudin, et Robin (<a href="#ref-channarondClassificationEstimationStochastic2012" role="doc-biblioref">2012</a>)</span> le papier qui introduit le <em>Largest Gaps</em></li>
</ul>
</section>
</section>
<div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" role="doc-bibliography" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">Les références</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0" role="list">
<div id="ref-abramovStructureKnowsBest" class="csl-entry" role="listitem">
Abramov, Kesem, Barry Biton, Geut Galai, Rami Puzis, et Shai Pilosof. s.&nbsp;d. <span>«&nbsp;Structure Knows Best: Predicting Ecological Interactions Across Space Through Pairwise Integration of Latent Network Patterns&nbsp;»</span>.
</div>
<div id="ref-aitchisonStatisticalAnalysisCompositional1982a" class="csl-entry" role="listitem">
Aitchison, J. 1982. <span>«&nbsp;The <span>Statistical Analysis</span> of <span>Compositional Data</span>&nbsp;»</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 13977. <a href="https://www.jstor.org/stable/2345821">https://www.jstor.org/stable/2345821</a>.
</div>
<div id="ref-braultFastConsistentAlgorithm2023" class="csl-entry" role="listitem">
Brault, Vincent, et Antoine Channarond. 2023. <span>«&nbsp;Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span>&nbsp;»</span>. 9 mars 2023. <a href="https://doi.org/10.48550/arXiv.1610.09005">https://doi.org/10.48550/arXiv.1610.09005</a>.
</div>
<div id="ref-bystrovaCausalDiscovery" class="csl-entry" role="listitem">
Bystrova, Daria. s.&nbsp;d. <span>«&nbsp;Causal Discovery&nbsp;»</span>.
</div>
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>«&nbsp;Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees&nbsp;»</span>. <em>Electronic Journal of Statistics</em> 6 (janvier). <a href="https://doi.org/10.1214/12-ejs753">https://doi.org/10.1214/12-ejs753</a>.
</div>
<div id="ref-mazeletUnsupervisedLearningOptimal" class="csl-entry" role="listitem">
Mazelet, Sonia, Rémi Flamary, et Bertrand Thirion. s.&nbsp;d. <span>«&nbsp;Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs&nbsp;»</span>.
</div>
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
Nenna, Luca. s.&nbsp;d.a. <span>«&nbsp;Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual&nbsp;»</span>.
</div>
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
———. s.&nbsp;d.b. <span>«&nbsp;Lecture 2: <span>Entropic Optimal Transport</span>&nbsp;»</span>.
</div>
<div id="ref-payneFiniteMixturesMultivariate2023" class="csl-entry" role="listitem">
Payne, Andrea, Anjali Silva, Steven J. Rothstein, Paul D. McNicholas, et Sanjeena Subedi. 2023. <span>«&nbsp;Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span>&nbsp;»</span>. 13 novembre 2023. <a href="https://doi.org/10.48550/arXiv.2311.07762">https://doi.org/10.48550/arXiv.2311.07762</a>.
</div>
<div id="ref-peixotoHierarchicalBlockStructures2014" class="csl-entry" role="listitem">
Peixoto, Tiago P. 2014. <span>«&nbsp;Hierarchical <span>Block Structures</span> and <span>High-Resolution Model Selection</span> in <span>Large Networks</span>&nbsp;»</span>. <em>Physical Review X</em> 4 (1): 011047. <a href="https://doi.org/10.1103/PhysRevX.4.011047">https://doi.org/10.1103/PhysRevX.4.011047</a>.
</div>
</div></section></div></main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

853
suivi/2026-9/2026-9.html Normal file
View file

@ -0,0 +1,853 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.7.22">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Louis Lacoste">
<title>Bilan semaine 9 2026 : 23 février - 27 février Suivi de la thèse</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
/* CSS for citations */
div.csl-bib-body { }
div.csl-entry {
clear: both;
margin-bottom: 0em;
}
.hanging-indent div.csl-entry {
margin-left:2em;
text-indent:-2em;
}
div.csl-left-margin {
min-width:2em;
float:left;
}
div.csl-right-inline {
margin-left:2em;
padding-left:1em;
}
div.csl-indent {
margin-left: 2em;
}</style>
<script src="../../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../../site_libs/clipboard/clipboard.min.js"></script>
<script src="../../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../../site_libs/quarto-search/fuse.min.js"></script>
<script src="../../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../../">
<script src="../../site_libs/quarto-html/quarto.js" type="module"></script>
<script src="../../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
<script src="../../site_libs/quarto-html/popper.min.js"></script>
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-7b4406b7675125bc2ba204020e191172.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../../site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 50,
"keyboard-shortcut": [
"f",
"/",
"s"
],
"show-item-context": false,
"language": {
"search-no-results-text": "Pas de résultats",
"search-matching-documents-text": "documents trouvés",
"search-copy-link-title": "Copier le lien vers la recherche",
"search-hide-matches-text": "Cacher les correspondances additionnelles",
"search-more-match-text": "correspondance de plus dans ce document",
"search-more-matches-text": "correspondances de plus dans ce document",
"search-clear-button-title": "Effacer",
"search-text-placeholder": "",
"search-detached-cancel-button-title": "Annuler",
"search-submit-button-title": "Envoyer",
"search-label": "Recherche"
}
}</script>
<script>window.backupDefine = window.define; window.define = undefined;</script><script src="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}});
</script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css">
<script type="text/javascript">
const typesetMath = (el) => {
if (window.MathJax) {
// MathJax Typeset
window.MathJax.typeset([el]);
} else if (window.katex) {
// KaTeX Render
var mathElements = el.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
window.katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}
}
}
}
window.Quarto = {
typesetMath
};
</script>
</head>
<body class="nav-fixed quarto-light">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top quarto-banner">
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a class="navbar-brand" href="../../index.html">
<span class="navbar-title">Suivi de la thèse</span>
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Basculer la navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav navbar-nav-scroll me-auto">
<li class="nav-item">
<a class="nav-link" href="../../index.html"> <i class="bi bi-journals" role="img">
</i>
<span class="menu-text">Liste des semaines</span></a>
</li>
</ul>
<ul class="navbar-nav navbar-nav-scroll ms-auto">
<li class="nav-item compact">
<a class="nav-link" href="https://git.polarolouis.fr/polarolouis/these-recap-hebdo"> <i class="bi bi-git" role="img" aria-label="Dépôt Git du journal">
</i>
<span class="menu-text"></span></a>
</li>
</ul>
</div> <!-- /navcollapse -->
<div class="quarto-navbar-tools">
</div>
</div> <!-- /container-fluid -->
</nav>
</header>
<!-- content -->
<header id="title-block-header" class="quarto-title-block default page-columns page-full">
<div class="quarto-title-banner page-columns page-full">
<div class="quarto-title column-body">
<h1 class="title">Bilan semaine 9 2026 : 23 février - 27 février</h1>
<div class="quarto-categories">
<div class="quarto-category">colBiSBM</div>
<div class="quarto-category">inférence</div>
<div class="quarto-category">GNN</div>
</div>
</div>
</div>
<div class="quarto-title-meta-author">
<div class="quarto-title-meta-heading">Auteur·rice</div>
<div class="quarto-title-meta-heading">Affiliation</div>
<div class="quarto-title-meta-contents">
<p class="author">Louis Lacoste <a href="mailto:louis.lacoste@agroparistech.fr" class="quarto-title-author-email"><i class="bi bi-envelope"></i></a> <a href="https://orcid.org/0009-0004-0178-9821" class="quarto-title-author-orcid"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=="></a></p>
</div>
<div class="quarto-title-meta-contents">
<p class="affiliation">
MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
</p>
</div>
</div>
<div class="quarto-title-meta">
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">23 février 2026</p>
</div>
</div>
<div>
<div class="quarto-title-meta-heading">Modifié</div>
<div class="quarto-title-meta-contents">
<p class="date-modified">11 mai 2026</p>
</div>
</div>
</div>
</header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Sur cette page</h2>
<ul>
<li><a href="#todo-list" id="toc-todo-list" class="nav-link active" data-scroll-target="#todo-list"><span class="header-section-number">1</span> TODO List</a>
<ul class="collapse">
<li><a href="#inférence-et-microbes" id="toc-inférence-et-microbes" class="nav-link" data-scroll-target="#inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</a></li>
</ul></li>
<li><a href="#a-discuter" id="toc-a-discuter" class="nav-link" data-scroll-target="#a-discuter"><span class="header-section-number">2</span> A discuter</a></li>
<li><a href="#biblio-à-faire" id="toc-biblio-à-faire" class="nav-link" data-scroll-target="#biblio-à-faire"><span class="header-section-number">3</span> Biblio à faire</a></li>
<li><a href="#lectures-en-cours" id="toc-lectures-en-cours" class="nav-link" data-scroll-target="#lectures-en-cours"><span class="header-section-number">4</span> Lectures en cours 📚</a>
<ul class="collapse">
<li><a href="#hdr-vincent-brault" id="toc-hdr-vincent-brault" class="nav-link" data-scroll-target="#hdr-vincent-brault"><span class="header-section-number">4.1</span> HDR Vincent Brault</a></li>
<li><a href="#ot" id="toc-ot" class="nav-link" data-scroll-target="#ot"><span class="header-section-number">4.2</span> OT</a></li>
<li><a href="#inférence-de-graphes" id="toc-inférence-de-graphes" class="nav-link" data-scroll-target="#inférence-de-graphes"><span class="header-section-number">4.3</span> Inférence de graphes</a></li>
<li><a href="#causalité-1" id="toc-causalité-1" class="nav-link" data-scroll-target="#causalité-1"><span class="header-section-number">4.4</span> Causalité</a></li>
<li><a href="#largest-gaps" id="toc-largest-gaps" class="nav-link" data-scroll-target="#largest-gaps"><span class="header-section-number">4.5</span> Largest Gaps</a></li>
</ul></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
<section id="todo-list" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="todo-list"><span class="header-section-number">1</span> TODO List</h2>
<ul>
<li>Petites opérations sur les OTUs (regarder la matrice dans les yeux):
<ul>
<li>Ranger les OTUs par variances (i.e.&nbsp;<code>sd(OTU_j)</code>)
<ul>
<li>HMC sur-dispersés (au-dessus bissectrice)</li>
<li>Enterotype phyloseq sous-disp</li>
</ul></li>
<li>Regarder la proportion de 1. taxon rares, 2. zeros.</li>
<li>Faire des coupures selon niveaux taxonomiques et regarder si <span class="math inline">\mathbb{V}_{\text{intra}} \approx \mathbb{V}_{\text{inter}}</span></li>
<li><em>Bonus</em>: faire ça dans qmd et voir si forge permet gitlab pages</li>
</ul></li>
<li>✅ Avec blockmodels, codé un LBM-Séquentiel. <em>Des différences contrastées…</em>
<ul>
<li><a href="analysis_benchmark_lbm_seq.html">Lien vers lapplication du LBM séquentiel sur les données de Chaillou</a></li>
</ul></li>
<li>Relire <span class="citation" data-cites="peixotoHierarchicalBlockStructures2014">Peixoto (<a href="#ref-peixotoHierarchicalBlockStructures2014" role="doc-biblioref">2014</a>)</span>
<ul>
<li>Regarder les gens qui citent les travaux de Peixoto</li>
<li>Utiliser graphtools en initialisant la recherche Nested avec le partitionnement donné par larbre phylogénétique.</li>
</ul></li>
<li><strong>En cours</strong> Implémentation <code>blockmodels</code> LBM avec covariables sur proportions (voir <strong>?@eq-modele-covar-prop</strong>)</li>
</ul>
<div class="callout callout-style-default callout-note callout-titled" title="Idées">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Idées
</div>
</div>
<div class="callout-body-container callout-body">
<ul>
<li>Trouver manière de faire un compromis : <span class="math inline">\ell(Y,Z,W;\theta) - \lambda d(C(W),C_0)</span> avec <span class="math inline">C(W)</span> le clustering seulement sur la base de la structure LBM et <span class="math inline">C_0</span> le clustering de larbre. Problème <span class="math inline">d</span> est une distance entre partition, comment optimiser dessus ?</li>
<li>⌛ Mise à jour partielle des <span class="math inline">\tau</span> : ce qui pose soucis cest les gros calculs matriciels (cest vraiment vrai?). Donc sorte de “stochastic” VEM où on update seulement une partie des <span class="math inline">\tau</span> à chaque itération. Et échantillonnage stratifié selon larbre ?
<ul>
<li>⌛ Simulations avec <span class="math inline">n_2</span> croissant lancée sur Migale</li>
<li>Réimplementé VE Bernoulli dans colSBM pour Bipartite et début implémentation Stochastic VE. En fait le problème des calculs matriciels <span class="math inline">Y\times(\tau^{(1)})^{\top}</span> (<span class="math inline">n_2^2</span>) donc besoin de sous-échantillonner les noeuds de lautre dimension à mettre à jour.</li>
</ul></li>
</ul>
</div>
</div>
<ul>
<li><p>Clustering unipartite jai cassé une fonction de distance à vérifier et réparer</p></li>
<li><p>Codes pour le papier :</p>
<ul>
<li>Nettoyer les scripts</li>
<li>Faire un joli README</li>
<li>❓Faire des notebooks</li>
</ul></li>
<li><p>Réussir à reproduire résultat de <span class="citation" data-cites="abramovStructureKnowsBest">Abramov et al. (<a href="#ref-abramovStructureKnowsBest" role="doc-biblioref">s.&nbsp;d.</a>)</span></p></li>
<li><p>Maitriser graphtools de Peixoto pour essayer dutiliser larbre taxonomique sur graphe de cooccurence inférer par SparCC</p></li>
<li><p>Maitriser SparCC</p></li>
<li><p>👶 (délégué à Mona) Clustering sur Doré :</p>
<ul>
<li>Ajouter Chao1 et 2, colonne par colonne (site par site), et faire indice moyen et la variance.</li>
</ul></li>
</ul>
<section id="inférence-et-microbes" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="inférence-et-microbes"><span class="header-section-number">1.1</span> Inférence et microbes</h3>
<ul>
<li>⌛ (En cours) Possible en modifiant lbm.h et sbm.h dobtenir un modèle utilisant les covariables de groupes (de blocs ?). Car besoin de changer <code>membership.m_step()</code> pour mettre à jour <span class="math inline">\pmb\pi</span> et <span class="math inline">\pmb{\rho}</span> en utilisant les <span class="math inline">\pmb B^{\top}\pmb X</span> et en renvoyant lELBO adaptée.
<ul>
<li><p>😄 Avantage sinscrit directement dans blockmodels et permet davoir toutes les lois démissions déjà codées et compatibles !</p></li>
<li><p>😢 Besoin de réfléchir a une bonne implémentation.</p></li>
</ul></li>
</ul>
<p>Jai codé loptimisation et les transferts mais il faut que je vérifie que tout fonctionne</p>
<ul>
<li>✅ Appliqué multipartite sur <span class="math inline">\forall i, OTU_i \times Sample</span>: <img src="figs/Multipartite.svg" class="img-fluid" alt="Le plot des groupes trouvés par le multipartite (2 pour tous les OTUs et 4 pour les échantillons.)"></li>
</ul>
<section id="bibliographie-à-lire-à-faire" class="level4" data-number="1.1.1">
<h4 data-number="1.1.1" class="anchored" data-anchor-id="bibliographie-à-lire-à-faire"><span class="header-section-number">1.1.1</span> Bibliographie: à lire, à faire</h4>
<ul>
<li>Lire article multi-niveaux Saint-Clair</li>
<li>🆕 🔎 Trouver des papiers:
<ul>
<li>LBM Negative Binomial</li>
<li>Network inference through sample comparison</li>
</ul></li>
<li>Idée des groupes sur la base de distance phylogénétique:
<ul>
<li>En train de comprendre les distances que phyloseq permet de calculer sur notre exemple</li>
<li>En train de lire sur Principle coordinate analysis : https://openplantpathology.github.io/OPP_Workshop_Multivariate/2-MV_PCO.html</li>
<li>Parametric t-SNE pour avoir une unique représentation latente (inconvénient utilise du Deep Learning)</li>
<li>Lire Papier UniFrac</li>
</ul></li>
</ul>
</section>
<section id="écrire-et-faire-tourner" class="level4" data-number="1.1.2">
<h4 data-number="1.1.2" class="anchored" data-anchor-id="écrire-et-faire-tourner"><span class="header-section-number">1.1.2</span> Écrire et faire tourner</h4>
<ul>
<li>🆕 SparCC à différent niveaux</li>
<li>🆕⌛ Tree-PLN à différents niveaux</li>
</ul>
</section>
<section id="causalité" class="level4" data-number="1.1.3">
<h4 data-number="1.1.3" class="anchored" data-anchor-id="causalité"><span class="header-section-number">1.1.3</span> Causalité</h4>
<p>Plus sur le temps long, à regarder</p>
<ul>
<li>GT causalité</li>
<li>Daria Bystrova lire présentation <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span> (Meek rules, V-structure)</li>
</ul>
</section>
</section>
</section>
<section id="a-discuter" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="a-discuter"><span class="header-section-number">2</span> A discuter</h2>
<ul>
<li>🆕 Voir pour des Réseaux / GDR ou aller</li>
<li>🆕 Chercher des cours à suivre</li>
</ul>
</section>
<section id="biblio-à-faire" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="biblio-à-faire"><span class="header-section-number">3</span> Biblio à faire</h2>
<ul>
<li>Regarder Transport optimal graphes bipartite.</li>
</ul>
</section>
<section id="lectures-en-cours" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="lectures-en-cours"><span class="header-section-number">4</span> Lectures en cours 📚</h2>
<section id="hdr-vincent-brault" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="hdr-vincent-brault"><span class="header-section-number">4.1</span> HDR Vincent Brault</h3>
<ul>
<li>⌛ Chap 2 : Creuser lidé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</li>
<li>Chap 3</li>
</ul>
</section>
<section id="ot" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="ot"><span class="header-section-number">4.2</span> OT</h3>
<ul>
<li><span class="citation" data-cites="mazeletUnsupervisedLearningOptimal">Mazelet, Flamary, et Thirion (<a href="#ref-mazeletUnsupervisedLearningOptimal" role="doc-biblioref">s.&nbsp;d.</a>)</span> Intéressant pour le transport optimal entre graphes de tailles différentes | Regarder si regularization entropique ne marche pas bien pour le graphe.</li>
<li><span class="citation" data-cites="nennaLecture2Entropic">Nenna (<a href="#ref-nennaLecture2Entropic" role="doc-biblioref">s.&nbsp;d.b</a>)</span> Pour comprendre le problème dOT régularisé pour lentropie.</li>
<li><span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s.&nbsp;d.a</a>)</span></li>
</ul>
</section>
<section id="inférence-de-graphes" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="inférence-de-graphes"><span class="header-section-number">4.3</span> Inférence de graphes</h3>
<ul>
<li><p><span class="citation" data-cites="aitchisonStatisticalAnalysisCompositional1982a">Aitchison (<a href="#ref-aitchisonStatisticalAnalysisCompositional1982a" role="doc-biblioref">1982</a>)</span>, en cours</p></li>
<li><p>❗📖 <span class="citation" data-cites="payneFiniteMixturesMultivariate2023">Payne et al. (<a href="#ref-payneFiniteMixturesMultivariate2023" role="doc-biblioref">2023</a>)</span> sur MixMPLN</p></li>
</ul>
</section>
<section id="causalité-1" class="level3" data-number="4.4">
<h3 data-number="4.4" class="anchored" data-anchor-id="causalité-1"><span class="header-section-number">4.4</span> Causalité</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="bystrovaCausalDiscovery">Bystrova (<a href="#ref-bystrovaCausalDiscovery" role="doc-biblioref">s.&nbsp;d.</a>)</span></li>
</ul>
</section>
<section id="largest-gaps" class="level3" data-number="4.5">
<h3 data-number="4.5" class="anchored" data-anchor-id="largest-gaps"><span class="header-section-number">4.5</span> Largest Gaps</h3>
<ul>
<li>❗📖 <span class="citation" data-cites="braultFastConsistentAlgorithm2023">Brault et Channarond (<a href="#ref-braultFastConsistentAlgorithm2023" role="doc-biblioref">2023</a>)</span></li>
<li>❗📖 <span class="citation" data-cites="channarondClassificationEstimationStochastic2012">Channarond, Daudin, et Robin (<a href="#ref-channarondClassificationEstimationStochastic2012" role="doc-biblioref">2012</a>)</span> le papier qui introduit le <em>Largest Gaps</em></li>
</ul>
</section>
</section>
<div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" role="doc-bibliography" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">Les références</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0" role="list">
<div id="ref-abramovStructureKnowsBest" class="csl-entry" role="listitem">
Abramov, Kesem, Barry Biton, Geut Galai, Rami Puzis, et Shai Pilosof. s.&nbsp;d. <span>«&nbsp;Structure Knows Best: Predicting Ecological Interactions Across Space Through Pairwise Integration of Latent Network Patterns&nbsp;»</span>.
</div>
<div id="ref-aitchisonStatisticalAnalysisCompositional1982a" class="csl-entry" role="listitem">
Aitchison, J. 1982. <span>«&nbsp;The <span>Statistical Analysis</span> of <span>Compositional Data</span>&nbsp;»</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 13977. <a href="https://www.jstor.org/stable/2345821">https://www.jstor.org/stable/2345821</a>.
</div>
<div id="ref-braultFastConsistentAlgorithm2023" class="csl-entry" role="listitem">
Brault, Vincent, et Antoine Channarond. 2023. <span>«&nbsp;Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span>&nbsp;»</span>. 9 mars 2023. <a href="https://doi.org/10.48550/arXiv.1610.09005">https://doi.org/10.48550/arXiv.1610.09005</a>.
</div>
<div id="ref-bystrovaCausalDiscovery" class="csl-entry" role="listitem">
Bystrova, Daria. s.&nbsp;d. <span>«&nbsp;Causal Discovery&nbsp;»</span>.
</div>
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>«&nbsp;Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees&nbsp;»</span>. <em>Electronic Journal of Statistics</em> 6 (janvier). <a href="https://doi.org/10.1214/12-ejs753">https://doi.org/10.1214/12-ejs753</a>.
</div>
<div id="ref-mazeletUnsupervisedLearningOptimal" class="csl-entry" role="listitem">
Mazelet, Sonia, Rémi Flamary, et Bertrand Thirion. s.&nbsp;d. <span>«&nbsp;Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs&nbsp;»</span>.
</div>
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
Nenna, Luca. s.&nbsp;d.a. <span>«&nbsp;Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual&nbsp;»</span>.
</div>
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
———. s.&nbsp;d.b. <span>«&nbsp;Lecture 2: <span>Entropic Optimal Transport</span>&nbsp;»</span>.
</div>
<div id="ref-payneFiniteMixturesMultivariate2023" class="csl-entry" role="listitem">
Payne, Andrea, Anjali Silva, Steven J. Rothstein, Paul D. McNicholas, et Sanjeena Subedi. 2023. <span>«&nbsp;Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span>&nbsp;»</span>. 13 novembre 2023. <a href="https://doi.org/10.48550/arXiv.2311.07762">https://doi.org/10.48550/arXiv.2311.07762</a>.
</div>
<div id="ref-peixotoHierarchicalBlockStructures2014" class="csl-entry" role="listitem">
Peixoto, Tiago P. 2014. <span>«&nbsp;Hierarchical <span>Block Structures</span> and <span>High-Resolution Model Selection</span> in <span>Large Networks</span>&nbsp;»</span>. <em>Physical Review X</em> 4 (1): 011047. <a href="https://doi.org/10.1103/PhysRevX.4.011047">https://doi.org/10.1103/PhysRevX.4.011047</a>.
</div>
</div></section></div></main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 7.5 MiB

View file

@ -1,13 +0,0 @@
# options specified here will apply to all posts in this folder
# re-render posts only when a change to the source file is made ----
freeze: auto
author:
name: Louis Lacoste
email: louis.lacoste@agroparistech.fr
affiliation: MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
orcid: 0009-0004-0178-9821
# enable banner style title blocks ----
title-block-banner: true

View file

@ -1,18 +0,0 @@
---
title: "Bilan semaine MM YYYY : dd-dd mois"
format:
html:
embed-resources: true
---
## A faire
-
## J'ai fait
-
## A continuer
-

Binary file not shown.