Compare commits
114 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
120d21f130 | ||
|
|
2f556f6fe1 | ||
|
|
f12588f4d2 | ||
|
|
5b5d39da2d | ||
|
|
32ccb7055d | ||
|
|
ea4f9bcd03 | ||
|
|
41c7079b92 | ||
|
|
b7c8b6db31 | ||
|
|
e1bef8ea0f | ||
|
|
ba50688bbd | ||
|
|
f1715913e8 | ||
|
|
3b51459895 | ||
|
|
5ba620c54f | ||
|
|
77a3bce877 | ||
|
|
13f64dc4df | ||
|
|
0a63bac6cd | ||
|
|
05aabe5915 | ||
|
|
cdcc0053f0 | ||
|
|
30a7994937 | ||
|
|
2b1e513c24 | ||
|
|
a0d27d274f | ||
|
|
be8b7e6a76 | ||
|
|
90876ae635 | ||
|
|
7240db7a8d | ||
|
|
e700209ae9 | ||
|
|
2c898f3815 | ||
|
|
96cee4873d | ||
|
|
b329863b8e | ||
|
|
e2e602331e | ||
|
|
f2c45b93e8 | ||
|
|
0290fe9868 | ||
|
|
b2d7f84a37 | ||
|
|
d3124fa6b0 | ||
|
|
e588dbc6a6 | ||
|
|
f91f514a95 | ||
|
|
bbffe1866a | ||
|
|
b26d746b21 | ||
|
|
9931a7f299 | ||
|
|
74109f6e63 | ||
|
|
dbf5f0907e | ||
|
|
aebc4827cf | ||
|
|
52aa0ca800 | ||
|
|
9988159cf9 | ||
|
|
1de58727e6 | ||
|
|
99515c3795 | ||
|
|
e2fc054d7c | ||
|
|
f394182f1d | ||
|
|
406386cf8d | ||
|
|
6d0f268c44 | ||
|
|
14efc0c365 | ||
|
|
05165e22eb | ||
|
|
fb8d94f8aa | ||
|
|
829d088cac | ||
|
|
34e0f75ae2 | ||
|
|
ff54224343 | ||
|
|
f57528273e | ||
|
|
92f2894cb2 | ||
|
|
49f9028f8f | ||
|
|
b05fe8ed21 | ||
|
|
3017bae46f | ||
|
|
1ef89d24bc | ||
|
|
14268939eb | ||
|
|
aa5eb9f5c4 | ||
|
|
1352ed702b | ||
|
|
89b69d6fbc | ||
|
|
55c4f140cd | ||
|
|
b3ee78c516 | ||
|
|
acbeac250e | ||
|
|
fe0a5952c0 | ||
|
|
47ba05e76a | ||
|
|
6942120797 | ||
|
|
92a8e43495 | ||
|
|
31e1bad768 | ||
|
|
83aa3832d8 | ||
|
|
b02a099e77 | ||
|
|
a9e70c7998 | ||
|
|
3a73847d28 | ||
|
|
54c236b087 | ||
|
|
402b27422a | ||
|
|
86f52bbafa | ||
|
|
f30a6294ca | ||
|
|
b12db41c26 | ||
|
|
458f968887 | ||
|
|
e309f629fa | ||
|
|
ada794c469 | ||
|
|
f500dd8f72 | ||
|
|
aac8a1c0fa | ||
|
|
ef3698b1a1 | ||
|
|
478e4af316 | ||
|
|
6ddceb36d8 | ||
|
|
e84727e11f | ||
|
|
f53b721b15 | ||
|
|
df60a5345a | ||
|
|
404f5d256f | ||
|
|
d90430b26f | ||
|
|
716d4236e4 | ||
|
|
6f0d8fa8bc | ||
|
|
d47e828a40 | ||
|
|
ffe561fc72 | ||
|
|
940a4871af | ||
|
|
da4f0cc8f2 | ||
|
|
2f46340a47 | ||
|
|
5cd886f907 | ||
|
|
1e1cfc4d72 | ||
|
|
175e3cf9b8 | ||
|
|
c43c305595 | ||
|
|
e3bf3dfdb9 | ||
|
|
331e5fc1dd | ||
|
|
ded6265fe2 | ||
|
|
fb89522ffd | ||
|
|
80e9df2168 | ||
|
|
a8043b97a3 | ||
|
|
76d8bc6991 | ||
|
|
d1f9411c01 |
313
.gitignore
vendored
|
|
@ -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/
|
|
||||||
1
.quarto/idx/index.qmd.json
Normal file
1
.quarto/idx/suivi/2025-13/2025-13.qmd.json
Normal file
1
.quarto/idx/suivi/2025-14/2025-14.qmd.json
Normal file
1
.quarto/idx/suivi/2025-15/2025-15.qmd.json
Normal file
1
.quarto/idx/suivi/2025-16/2025-16.qmd.json
Normal file
1
.quarto/idx/suivi/2025-17/2025-17.qmd.json
Normal file
1
.quarto/idx/template.qmd.json
Normal file
1
.quarto/xref/7687d49a
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"entries":[],"headings":["a-faire","jai-fait","a-continuer"]}
|
||||||
8
.quarto/xref/INDEX
Normal 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
|
|
@ -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":[]}
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
# these-recap-hebdo
|
|
||||||
|
|
||||||
25
_quarto.yml
|
|
@ -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
|
|
@ -1,8 +0,0 @@
|
||||||
---
|
|
||||||
title: "Journal suivi de la thèse"
|
|
||||||
listing:
|
|
||||||
contents: suivi
|
|
||||||
type: default
|
|
||||||
sort: "date desc"
|
|
||||||
categories: true
|
|
||||||
---
|
|
||||||
619
knowledge_base/colsbm_application_reseaux_et_agri.html
Normal 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 l’application</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 l’application</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 d’essayer de voir l’impact 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é d’exécution ?</li>
|
||||||
|
<li>Quelle distance considérer pour l’impact des pratiques agricoles, distance variables par pollinisateurs en soit ? Besoin de connaissances expertes.</li>
|
||||||
|
<li>Besoin d’homogénéiser les échelles ? Ou a minima d’en 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 l’extraction des <em>buffers</em> de types d’utilisation 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>
|
||||||
BIN
knowledge_base/figs/projets-phylo/dag-simple.pdf
Normal file
816
knowledge_base/projets-phylo.html
Normal 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 l’inclusion 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 l’inclusion de la phylogénie dans l’estimation 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 l’idé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 l’approche</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 l’identifiabilité</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 l’arbre</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 l’inclusion 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 l’inclusion de la phylogénie dans l’estimation de la structure des interactions</h1>
|
||||||
|
<p>Dans le 3e axe de ma thèse nous souhaitons inclure de l’information phylogénétique dans l’estimation de la structure des réseaux d’interaction microbiens.</p>
|
||||||
|
<ol type="1">
|
||||||
|
<li><p>Ces réseaux se présentent sous la forme de matrice des comptages hautement rectangulaire, c’est-à-dire avec un grand nombre de microorganismes et, en comparaison, peu d’échantillons (de sols, d’aliments, de patients…). Cette haute dimensionnalité met en échec les méthodes classiques non concues pour gérer autant de noeuds (SBM). Il s’agit donc d’un <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 l’abondance réelle des autres n’a 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, l’arbre phylogénétique peut ne pas être directement accessible, ou bien être dominé par un certain clade. Il peut aussi exploser en nombre d’individu à 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> l’arbre 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 l’arbre.</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 l’idée</h2>
|
||||||
|
<p>Ici on utilise l’arbre phylogénétique afin d’initialiser l’EM 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> à l’issue de l’optimisation.</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 l’approche</h2>
|
||||||
|
<p>Le passage d’information selon l’arbre nous semble intuitivement être une bonne approche et les résultats que nous avons obtenues indique qu’un peu d’information semble passer mais il faut aller profondément dans l’arbre et alors on rencontre le problème du coût computationnel. En effet cette méthode ne diminue pas le coût en calcul puisqu’elle calcule un LBM à chacun des <span class="math inline">L</span> niveaux, au mieux elle donne un point d’initialisation 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> d’appartenance aux groupes. Pour la phylogénie, en passant par une MDS ou une autre méthode permettant à partir des distances phylogénétique d’obtenir des “positions” ou des covariables, cela permettrait d’injecter l’a priori phylogénétique dans l’estimation de la structure du réseau.</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 d’appartenance pour les colonnes variables:</p>
|
||||||
|
<p><span class="math display">\begin{align*}
|
||||||
|
Z_i &\sim \mathcal{M}(1; \pi_1, \dots, \pi_Q), \sum_{q=1}^{Q} \pi_q = 1\\
|
||||||
|
W_j &\sim \mathcal{M}(1; \rho_1^j, \dots, \rho_R^j), \sum_{r=1}^{R} \rho_r^j = 1\\
|
||||||
|
Y_{i,j}&\mid Z_i = q, W_j = r \sim \mathcal{F}(\alpha_{qr})
|
||||||
|
\end{align*}</span></p>
|
||||||
|
<p>Voici pour les probas pour les individus en colonne de la matrice d’adjacence : <span class="math display">\begin{align*}
|
||||||
|
\pmb{\beta}_{r}& = \begin{pmatrix}
|
||||||
|
\beta_{r,0}\\
|
||||||
|
\vdots\\
|
||||||
|
\beta_{r,p}
|
||||||
|
\end{pmatrix}, & X_{j,\bullet} = \begin{pmatrix}
|
||||||
|
1 = x_{0,j} & x_{1,j} & \dots & x_{p,j}
|
||||||
|
\end{pmatrix}\\
|
||||||
|
X_{j,\bullet} \pmb{\beta}_r& = \beta_{r,0} x_{0,j} + \beta_{r,1} x_{1,j} + \dots + \beta_{r,p} x_{p,j} & \approx \log(\rho_r^j) \\
|
||||||
|
B & = \begin{pmatrix}
|
||||||
|
\pmb{\beta}_1 \dots \pmb{\beta}_r \dots \pmb{\beta}_R
|
||||||
|
\end{pmatrix} & X_{j,\bullet}B \approx \log(\pmb{\rho}^j) \\
|
||||||
|
X B & \approx \log((\pmb{\rho}^j)_{j=1,\dots,n_2}) = \log(\pmb{\Rho})\\
|
||||||
|
\end{align*}</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}& = \begin{pmatrix}
|
||||||
|
\gamma_{q,0}\\
|
||||||
|
\vdots\\
|
||||||
|
\gamma_{q,d}
|
||||||
|
\end{pmatrix}, & V_{i,\bullet} = \begin{pmatrix}
|
||||||
|
1 = v_{0,i} & v_{1,i} & \dots & v_{d,i}
|
||||||
|
\end{pmatrix}\\
|
||||||
|
V_{i,\bullet} \pmb{\gamma}_q & = \gamma_{q,0} v_{0,i} + \gamma_{q,1} v_{1,i} + \dots + \gamma_{q,d} v_{d,i} & \approx \log(\pi_q^i) \\
|
||||||
|
\Gamma & = \begin{pmatrix}
|
||||||
|
\gamma_1 \dots \pmb{\gamma}_q \dots \pmb{\gamma}_Q
|
||||||
|
\end{pmatrix} & V_{i,\bullet} \Gamma \approx \log(\pmb{\pi}^i) \\
|
||||||
|
V \Gamma & \approx \log((\pmb{\pi}^i)_{i=1,\dots,n_1}) = \log(\pmb{\Pi})
|
||||||
|
\end{align*}</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 l’identifiabilité</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*}
|
||||||
|
&\sigma(XB) = \sigma(XB^{\prime})\\
|
||||||
|
&\implies \exists C = \begin{pmatrix}c_1 \\ \vdots \\ c_j \\ \vdots \\ c_{n_2}\end{pmatrix} \in \mathbb{R}^{n_2}, X B = X B^{\prime} + C \pmb{1}_{R}^{\top} \\
|
||||||
|
&\implies \exists C \in \mathbb{R}^{n_2}, (X B)_{j,r} = (X B^{\prime})_{j,r} + (C \pmb{1}_{R}^{\top})_{j,r} \\
|
||||||
|
&\implies \exists C \in \mathbb{R}^{n_2}, \forall r\in\{1\dots,R\}, \forall j\in\{1,\dots,n_2\}, \sum_{k=1}^{p+1} x_{j,k} \beta_{k,r} = \sum_{k=1}^{p+1} x_{j,k} \beta^{\prime}_{k,r} + c_j\\
|
||||||
|
&\implies \exists C \in \mathbb{R}^{n_2}, \forall j\in\{1,\dots,n_2\}, \sum_{k=1}^{p+1} x_{j,k} \beta_{k,R} = \sum_{k=1}^{p+1} x_{j,k} \beta^{\prime}_{k,R} + c_j \\
|
||||||
|
&\implies \exists C \in \mathbb{R}^{n_2}, \forall j\in\{1,\dots,n_2\}, \sum_{k=1}^{p+1} x_{j,k} \times 0 = \sum_{k=1}^{p+1} x_{j,k} \times 0 + c_j \\
|
||||||
|
&\implies \exists C \in \mathbb{R}^{n_2}, \forall j\in\{1,\dots,n_2\}, 0 = 0 + c_j \implies c_j = 0 \\
|
||||||
|
&\implies C = \begin{pmatrix} 0 \\ \vdots \\ 0 \end{pmatrix} \text{and thus}, XB = XB^{\prime} \\
|
||||||
|
& \implies (X^{\top} X)^{-1}X^{\top} X B = (X^{\top} X)^{-1}X^{\top} X B^{\prime} \implies B=B^{\prime}
|
||||||
|
\end{align*}</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 l’un 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 l’ELBO 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}&((\beta_r)_{r=1,\dots,R}, (X_j)_{j=1,\dots,n_2}, (\tau_{jr})_{\substack{j=1,\dots,n_2\\r=1,\dots,R}} ) = \sum_{j=1}^{n_2} \biggl[ \tau_{jt} X_j - \frac{X_j \exp{\beta_t X_j}}{\sum_{s=1}^{R} \exp{\beta_s X_j}} \biggr]\\
|
||||||
|
& = \sum_{j=1}^{n_2} \biggl[\bigl(\tau_{jt} - \sigma(\pmb{\beta} \pmb{X})_{t,j}\bigr) X_j\biggr] = \sum_{j=1}^{n_2} \biggl[\bigl(\tau_{jt} - \rho_t^j \bigr) X_j\biggr]
|
||||||
|
\end{align*}</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>J’ai 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, j’ai ré-écrit la gestion des <em>memberships</em> en R pour passer les covariables et coefficients nécessaires aux calculs. J’ai implémenté une descente de gradient en utilisant un algorithme de type BFGS pour l’optimisation des coefficients de la combinaison linéaire. Et enfin j’ai intégré plusieurs choses dans le package R <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 l’on 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 l’on pose une structure latente sur les <span class="math inline">\pmb{Z}</span>. C’est à dire <span class="math display">\begin{align*}
|
||||||
|
& 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\}, & 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\}, & 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\}, & 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 l’apparentement (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 l’arbre</h1>
|
||||||
|
<p>Afin d’affronter le coût computationnel que représente l’ajustement</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é d’utilisé 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>
|
||||||
657
knowledge_base/vae_wasserstein_gromov.html
Normal 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 j’inscris ce que l’on s’est 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 d’apprendre une représentation latente des noeuds d’un 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 d’adjacence (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 l’on 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 d’une hypersphère car, d’après Julian et la littérature, par rapport à un espace euclidien cela permet d’avoir :</p>
|
||||||
|
<ul>
|
||||||
|
<li>position latente bornée : stabilisation de l’apprentissage et évite l’explosion dans une ou plusieurs directions.</li>
|
||||||
|
<li>couverture “uniforme” de la sphère : tendance à faciliter l’apprentissage contrastif, avec l’idé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. D’aprè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 à l’hypersphè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
|
|
@ -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
12
site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css
vendored
Normal file
2078
site_libs/bootstrap/bootstrap-icons.css
vendored
Normal file
BIN
site_libs/bootstrap/bootstrap-icons.woff
Normal file
7
site_libs/bootstrap/bootstrap.min.js
vendored
Normal file
7
site_libs/clipboard/clipboard.min.js
vendored
Normal file
1
site_libs/quarto-contrib/glightbox/glightbox.min.css
vendored
Normal file
1
site_libs/quarto-contrib/glightbox/glightbox.min.js
vendored
Normal file
26
site_libs/quarto-contrib/glightbox/lightbox.css
Normal 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
6
site_libs/quarto-html/popper.min.js
vendored
Normal 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 */
|
||||||
845
site_libs/quarto-html/quarto.js
Normal 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);
|
||||||
|
}
|
||||||
95
site_libs/quarto-html/tabsets/tabsets.js
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
1
site_libs/quarto-html/tippy.css
Normal 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}
|
||||||
2
site_libs/quarto-html/tippy.umd.min.js
vendored
Normal file
2
site_libs/quarto-listing/list.min.js
vendored
Normal file
254
site_libs/quarto-listing/quarto-listing.js
Normal 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
|
|
@ -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});
|
||||||
325
site_libs/quarto-nav/quarto-nav.js
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
3
site_libs/quarto-search/autocomplete.umd.js
Normal file
9
site_libs/quarto-search/fuse.min.js
vendored
Normal file
1290
site_libs/quarto-search/quarto-search.js
Normal file
755
suivi/2025-13/2025-13.html
Normal 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 j’ai :</p>
|
||||||
|
<ul>
|
||||||
|
<li>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.</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& 0.4& 0.2& 0.15\\
|
||||||
|
0.6& 0.2& 0.15& 0.15\\
|
||||||
|
0.2& 0.15& 0.15& 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& 0.15& 0.15\\
|
||||||
|
0.15& 0.8& 0.15\\
|
||||||
|
0.15& 0.15& 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 d’une <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& 0.4& 0.2& 0.05\\
|
||||||
|
0.6& 0.2& 0.05& 0.05\\
|
||||||
|
0.2& 0.05& 0.05& 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& 0.05& 0.05\\
|
||||||
|
0.05& 0.8& 0.05\\
|
||||||
|
0.05& 0.05& 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 -> 0, 0 -> 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 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>
|
||||||
|
|
@ -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
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

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

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

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
:::
|
|
||||||
|
|
||||||
- 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
|
|
@ -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> J’ai 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>S’inspirer structure pour mon intro</p></li>
|
||||||
|
<li><p>Trouver biblio intro</p></li>
|
||||||
|
<li><p>Rédiger l’intro</p></li>
|
||||||
|
<li><p>Agrandir la collection d’application, 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 l’intro 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 < \epsilon_{max}</span> prélever dans la liste des indices afin d’avoir des perturbations emboitées.</li>
|
||||||
|
</ul></li>
|
||||||
|
<li><p>Rédiger et modifier les cadres de simulations dans le papier pour qu’ils 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> J’ai 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 > 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 d’application, 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 < \epsilon_{max}</span> 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 <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>
|
||||||
|
|
@ -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
|
|
@ -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> J’ai 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>S’inspirer structure pour mon intro</p></li>
|
||||||
|
<li><p>Trouver biblio intro</p></li>
|
||||||
|
<li><p>Rédiger l’intro</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 < \epsilon_{max}</span> prélever dans la liste des indices afin d’avoir 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 qu’ils 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 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</p>
|
||||||
|
</blockquote>
|
||||||
|
<ul>
|
||||||
|
<li>Idée Sophie: Regarder clustering de données plantes-pollinisateur selon gradient d’urbanisation</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> J’ai 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 l’intro 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 < \epsilon_{max}</span> 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 <em>en attente des résultats MIGALE</em>.</p></li>
|
||||||
|
<li><p>J’ai 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>
|
||||||
|
|
@ -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
|
|
||||||

|
|
||||||
|
|
||||||
|
|
||||||
- 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
|
|
@ -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> J’ai 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>S’inspirer structure pour mon intro</p></li>
|
||||||
|
<li><p>Trouver biblio intro</p></li>
|
||||||
|
<li><p>Rédiger l’intro</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 < \epsilon_{max}</span> prélever dans la liste des indices afin d’avoir des perturbations emboitées.</li>
|
||||||
|
</ul></li>
|
||||||
|
<li><p>Idée Sophie: Regarder clustering de données plantes-pollinisateur selon gradient d’urbanisation</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> J’ai fait</h2>
|
||||||
|
<ul>
|
||||||
|
<li><p>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…</p></li>
|
||||||
|
<li><p>Rédiger et modifier les cadres de simulations dans le papier pour qu’ils 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 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</p>
|
||||||
|
</blockquote>
|
||||||
|
<ul>
|
||||||
|
<li>Comment faire pour l’inscription 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 < \epsilon_{max}</span> 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 <em>en attente des résultats MIGALE</em>.</p></li>
|
||||||
|
<li><p>Lire Biological Networks - François Képès</p></li>
|
||||||
|
<li><p>J’ai esquissé des bouts d’intro</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>
|
||||||
|
|
@ -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
|
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 281 KiB |
808
suivi/2025-17/2025-17.html
Normal 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 l’article 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> J’ai 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 l’idé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>S’inspirer structure pour mon intro</p></li>
|
||||||
|
<li><p>Trouver biblio intro</p></li>
|
||||||
|
<li><p>Rédiger l’intro</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 d’adjacences.</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 < \epsilon_{max}</span> prélever dans la liste des indices afin d’avoir 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 l’article et du package</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Créer des vignettes illustrant par exemple des cas de simulations. <strong>Possible de mettre l’exemple d’application de Sophie sur les réseaux avec gradient d’urbanisation</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> J’ai fait</h2>
|
||||||
|
<ul>
|
||||||
|
<li><p>Créer un README descriptif du dépôt des codes pour l’article.</p></li>
|
||||||
|
<li><p>Remonter figure sélection de modèle dans le corps de l’article</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 l’argument 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 < \epsilon_{max}</span> 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 <em>en attente des résultats MIGALE</em>.</p></li>
|
||||||
|
<li><p>Lire Biological Networks - François Képès</p></li>
|
||||||
|
<li><p>J’ai esquissé des bouts d’intro</p></li>
|
||||||
|
<li><p>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</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 -> 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 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.</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é -> 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 d’urbanisation</li>
|
||||||
|
</ul>
|
||||||
|
<blockquote class="blockquote">
|
||||||
|
<p>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 !</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 l’idé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>
|
||||||
|
|
@ -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
|
|
||||||
|
|
||||||

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

|
|
||||||
|
|
||||||
#### Gibson
|
|
||||||

|
|
||||||
|
|
||||||
|
|
||||||
#### Souza
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
#### Traveset
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
#### Trojelsgaard
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 264 KiB |
777
suivi/2025-18/2025-18.html
Normal 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 l’article 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> J’ai 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>S’inspirer structure pour mon intro</p></li>
|
||||||
|
<li><p>Trouver biblio intro</p></li>
|
||||||
|
<li><p>Rédiger l’intro</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 d’adjacences.</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 < \epsilon_{max}</span> prélever dans la liste des indices afin d’avoir 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 l’article et du package</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Créer des vignettes illustrant par exemple des cas de simulations. <strong>Possible de mettre l’exemple d’application de Sophie sur les réseaux avec gradient d’urbanisation</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> J’ai 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 s’est 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 l’algo <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 < \epsilon_{max}</span> 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 <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 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</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 d’urbanisation</li>
|
||||||
|
</ul>
|
||||||
|
<blockquote class="blockquote">
|
||||||
|
<p>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 !</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> où <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>
|
||||||
BIN
suivi/2025-18/figs/density-subdore.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
403
suivi/2025-18/figs/partition-iid.svg
Normal 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 |
272
suivi/2025-18/figs/partition-pirho.svg
Normal 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
|
|
@ -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> J’ai 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> Finist’R</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 l’article 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> où <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>-> BUG, dois creuser mais juste des problèmes techniques.</del> Le bug venait probablement d’une 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 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 -> BUG, dois creuser mais juste des problèmes techniques -> Visiblement il y a d’autres 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 l’espace latent J’ai 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 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. intro)</li>
|
||||||
|
<li>Se renseigner techniques d’infé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>S’inspirer structure pour mon intro</li>
|
||||||
|
<li>Trouver biblio intro</li>
|
||||||
|
<li>Rédiger l’intro</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> J’ai 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> Finist’R</h3>
|
||||||
|
<ul>
|
||||||
|
<li>S’inscrire</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>S’inscrire avec abstract court</li>
|
||||||
|
<li>Demander la bourse</li>
|
||||||
|
<li>Détails d’inscriptions : <em>Je demande une bourse et je m’inscris 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>J’ai 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 d’urbanisation</li>
|
||||||
|
</ul>
|
||||||
|
<blockquote class="blockquote">
|
||||||
|
<p>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 !</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>J’ai lu Faust et al. 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 < \epsilon_{max}</span> 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.</li>
|
||||||
|
</ul>
|
||||||
|
<blockquote class="blockquote">
|
||||||
|
<p>Je n’arrive 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 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 d’Elisa 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 l’article et du package</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Créer des vignettes illustrant par exemple des cas de simulations. <strong>Possible de mettre l’exemple d’application de Sophie sur les réseaux avec gradient d’urbanisation</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 d’adjacences.</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 < \epsilon_{max}</span> prélever dans la liste des indices afin d’avoir 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
|
|
@ -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> J’ai 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>→ L’intuition 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 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 -> BUG, dois creuser mais juste des problèmes techniques -> Visiblement il y a d’autres 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 l’algo de clustering</li>
|
||||||
|
<li>Indiquer sur une slide le problème de support pour <span class="math inline">\pi\rho</span> à faire s’il 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 d’appartenance 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 l’espace latent J’ai 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 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 d’infé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. 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>S’inspirer structure pour mon intro</li>
|
||||||
|
<li>Trouver biblio intro</li>
|
||||||
|
<li>Rédiger l’intro</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> J’ai 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> où <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>-> BUG, dois creuser mais juste des problèmes techniques.</del> Le bug venait probablement d’une inadéquation entre la version de <em>future</em> et <em>future.callr</em>, les résultats temporaires sont encourageants. <strong>J’ai mis les résultats dans l’article</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 l’on 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() -> NaN</code></del> -> <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 d’AUC et de précisions que j’obtiens 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 d’urbanisation</li>
|
||||||
|
</ul>
|
||||||
|
<blockquote class="blockquote">
|
||||||
|
<p>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 !</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>J’ai lu Faust et al. 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 < \epsilon_{max}</span> 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.</li>
|
||||||
|
</ul>
|
||||||
|
<blockquote class="blockquote">
|
||||||
|
<p>Je n’arrive 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 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 d’Elisa 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 l’article et du package</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Créer des vignettes illustrant par exemple des cas de simulations. <strong>Possible de mettre l’exemple d’application de Sophie sur les réseaux avec gradient d’urbanisation</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 d’adjacences.</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 < \epsilon_{max}</span> prélever dans la liste des indices afin d’avoir 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
|
|
@ -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 l’article : é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>
|
||||||
|
→ L’intuition 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 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 -> BUG, dois creuser mais juste des problèmes techniques -> Visiblement il y a d’autres 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 l’oral 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 s’il 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 d’appartenance 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 l’espace latent J’ai 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 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 d’infé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. intro)</li>
|
||||||
|
<li>Lire article multi-niveaux Saint-Clair</li>
|
||||||
|
<li>Demander à JA si elle connaît des réseaux d’interactions connus par les experts (idée d’inté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 &~N^1_i \subseteq N^2_i \subseteq N^3_i & \text{Taxonomie}\\
|
||||||
|
Z^0_i \overset{?}{=} & Z^1_i \overset{?}{=} Z^2_i \overset{?}{=} Z^3_i & \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>S’inspirer structure pour mon intro</li>
|
||||||
|
<li>Trouver biblio intro</li>
|
||||||
|
<li>Rédiger l’intro</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 d’urbanisation</li>
|
||||||
|
</ul>
|
||||||
|
<blockquote class="blockquote">
|
||||||
|
<p>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 !</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>J’ai lu Faust et al. 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 < \epsilon_{max}</span> 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.</li>
|
||||||
|
</ul>
|
||||||
|
<blockquote class="blockquote">
|
||||||
|
<p>Je n’arrive 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 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 d’Elisa 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 l’article et du package</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Créer des vignettes illustrant par exemple des cas de simulations. <strong>Possible de mettre l’exemple d’application de Sophie sur les réseaux avec gradient d’urbanisation</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 d’adjacences.</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 < \epsilon_{max}</span> prélever dans la liste des indices afin d’avoir 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
|
|
@ -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>
|
||||||
|
→ L’intuition 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 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 -> BUG, dois creuser mais juste des problèmes techniques -> Visiblement il y a d’autres 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 l’espace latent J’ai 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 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 d’infé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. intro)</li>
|
||||||
|
<li>Lire article multi-niveaux Saint-Clair</li>
|
||||||
|
<li>Demander à JA si elle connaît des réseaux d’interactions connus par les experts (idée d’inté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 &~N^1_i \subseteq N^2_i \subseteq N^3_i & \text{Taxonomie}\\
|
||||||
|
Z^0_i \overset{?}{=} & Z^1_i \overset{?}{=} Z^2_i \overset{?}{=} Z^3_i & \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>S’inspirer structure pour mon intro</li>
|
||||||
|
<li>Trouver biblio intro</li>
|
||||||
|
<li>Rédiger l’intro</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 d’urbanisation</li>
|
||||||
|
</ul>
|
||||||
|
<blockquote class="blockquote">
|
||||||
|
<p>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 !</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>J’ai lu Faust et al. 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 < \epsilon_{max}</span> 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.</li>
|
||||||
|
</ul>
|
||||||
|
<blockquote class="blockquote">
|
||||||
|
<p>Je n’arrive 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 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 d’Elisa 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 l’article et du package</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Créer des vignettes illustrant par exemple des cas de simulations. <strong>Possible de mettre l’exemple d’application de Sophie sur les réseaux avec gradient d’urbanisation</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 d’adjacences.</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 < \epsilon_{max}</span> prélever dans la liste des indices afin d’avoir 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
|
|
@ -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 s’est très bien passée</strong></li>
|
||||||
|
<li>Pour clustering de collections sur données réelles :<br>
|
||||||
|
→ L’intuition 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>✅ C’est bon j’ai une fonction qui tourne, mais lentement ⌛</li>
|
||||||
|
<li>⏳Simulations en train de tourner</li>
|
||||||
|
<li>❗L’approche que j’ai en mettant la pénalité à 0 peut favoriser de séparer trop les réseaux et donc il faudrait refusionner. ➡️ mais le d&a ne fonctionne qu’en <em>iid</em></li>
|
||||||
|
</ul></li>
|
||||||
|
<li>✅ Idée de Sophie : alterner descendant et ascendant → prometteur aussi. J’ai 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 d’inférence. j’ai 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 d’arrêt quand le BICL n’augmentait 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&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&ascendante"><img src="figs/ari-clustering-desc&asc9.png" class="img-fluid figure-img" alt="9 réseaux - ARI pour le clustering avec modèles iid, procédure descendante et descendante&ascendante"></a></p>
|
||||||
|
<figcaption>9 réseaux - ARI pour le clustering avec modèles iid, procédure descendante et descendante&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&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&ascendante"><img src="figs/ari-clustering-desc&asc30.png" class="img-fluid figure-img" alt="30 réseaux - ARI pour le clustering avec modèles iid, procédure descendante et descendante&ascendante"></a></p>
|
||||||
|
<figcaption>30 réseaux - ARI pour le clustering avec modèles iid, procédure descendante et descendante&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 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 -> BUG, dois creuser mais juste des problèmes techniques -> Visiblement il y a d’autres 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 l’espace latent J’ai 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 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 d’infé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. intro)</li>
|
||||||
|
<li>Lire article multi-niveaux Saint-Clair</li>
|
||||||
|
<li>Demander à JA si elle connaît des réseaux d’interactions connus par les experts (idée d’inté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 &~N^1_i \subseteq N^2_i \subseteq N^3_i & \text{Taxonomie}\\
|
||||||
|
Z^0_i \overset{?}{=} & Z^1_i \overset{?}{=} Z^2_i \overset{?}{=} Z^3_i & \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. 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. d.</a>)</span> Pour comprendre le problème d’OT régularisé pour l’entropie.</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>S’inspirer structure pour mon intro</li>
|
||||||
|
<li>Trouver biblio intro</li>
|
||||||
|
<li>Rédiger l’intro</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 d’urbanisation</li>
|
||||||
|
</ul>
|
||||||
|
<blockquote class="blockquote">
|
||||||
|
<p>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 !</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>J’ai lu Faust et al. 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 < \epsilon_{max}</span> 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.</li>
|
||||||
|
</ul>
|
||||||
|
<blockquote class="blockquote">
|
||||||
|
<p>Je n’arrive 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 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 d’Elisa 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 l’article et du package</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Créer des vignettes illustrant par exemple des cas de simulations. <strong>Possible de mettre l’exemple d’application de Sophie sur les réseaux avec gradient d’urbanisation</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 d’adjacences.</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 < \epsilon_{max}</span> prélever dans la liste des indices afin d’avoir 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. d. <span>« Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
|
||||||
|
Nenna, Luca. s. d. <span>« Lecture 2: <span>Entropic Optimal Transport</span> »</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>
|
||||||
BIN
suivi/2025-24/figs/ari-clustering-desc&asc30.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
suivi/2025-24/figs/ari-clustering-desc&asc9.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
suivi/2025-24/figs/nbcollections-clustering-descending.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
846
suivi/2025-25/2025-25.html
Normal 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>
|
||||||
|
→ L’intuition 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 n’arrive plus à reproduire le bug pour l’inférence…</li>
|
||||||
|
</ul></li>
|
||||||
|
<li><p>✅ <strong>Oui c’est bien le cas</strong> Clustering descendant & ascendant : vérifier qu’au 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 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 -> BUG, dois creuser mais juste des problèmes techniques -> Visiblement il y a d’autres problèmes que juste le plan de parallélisation.
|
||||||
|
<ul>
|
||||||
|
<li>✅ <strong>Non ça n’a pas l’air 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 (> 120h) j’ai 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 l’espace latent J’ai 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 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. intro)</li>
|
||||||
|
<li>Lire article multi-niveaux Saint-Clair</li>
|
||||||
|
<li>Demander à JA si elle connaît des réseaux d’interactions connus par les experts (idée d’inté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 &~N^1_i \subseteq N^2_i \subseteq N^3_i & \text{Taxonomie}\\
|
||||||
|
Z^0_i \overset{?}{=} & Z^1_i \overset{?}{=} Z^2_i \overset{?}{=} Z^3_i & \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. 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. d.b</a>)</span> Pour comprendre le problème d’OT régularisé pour l’entropie.</li>
|
||||||
|
<li>⌛ <span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s. 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 l’analyse 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 l’environnement</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>« Network Analysis Methods for Studying Microbial Communities: <span>A</span> Mini Review »</span>. <em>Computational and Structural Biotechnology Journal</em> 19 (janvier): 2687‑98. <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. d. <span>« Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
|
||||||
|
Nenna, Luca. s. d.a. <span>« Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
|
||||||
|
———. s. d.b. <span>« Lecture 2: <span>Entropic Optimal Transport</span> »</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
|
|
@ -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&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>
|
||||||
|
→ L’intuition 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 n’arrive plus à reproduire le bug pour l’inférence…</li>
|
||||||
|
<li>S’assurer 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 j’entraî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 l’Université Paris-Saclay.</p></li>
|
||||||
|
<li><p>Dé-bugger les simulations :</p>
|
||||||
|
<ul>
|
||||||
|
<li>⌛ Inférence : 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 -> BUG, dois creuser mais juste des problèmes techniques -> Visiblement il y a d’autres problèmes que juste le plan de parallélisation.
|
||||||
|
<ul>
|
||||||
|
<li>⌛Bon le bug ne se reproduit plus… les jobs sont juste trop longs (> 120h) j’ai 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 l’espace latent J’ai 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 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. 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 &~N^1_i \subseteq N^2_i \subseteq N^3_i & \text{Taxonomie}\\
|
||||||
|
Z^0_i \overset{?}{=} & Z^1_i \overset{?}{=} Z^2_i \overset{?}{=} Z^3_i & \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. 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. 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. d.b</a>)</span> Pour comprendre le problème d’OT régularisé pour l’entropie.</li>
|
||||||
|
<li>⌛ <span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s. 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. 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&S</h3>
|
||||||
|
<ul>
|
||||||
|
<li>✅ Quand est-ce qu’on ne se voit pas ? Et donc quand est-ce qu’on 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>« The <span>Statistical Analysis</span> of <span>Compositional Data</span> »</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 139‑77. <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. d. <span>« Causal Discovery »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-mazeletUnsupervisedLearningOptimal" class="csl-entry" role="listitem">
|
||||||
|
Mazelet, Sonia, Rémi Flamary, et Bertrand Thirion. s. d. <span>« Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs »</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>« Scalable Estimation of Microbial Co-Occurrence Networks with <span>Variational Autoencoders</span> »</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. d.a. <span>« Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
|
||||||
|
———. s. d.b. <span>« Lecture 2: <span>Entropic Optimal Transport</span> »</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>« Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span> »</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
|
|
@ -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&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>
|
||||||
|
→ L’intuition 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 n’arrive plus à reproduire le bug pour l’inférence…</li>
|
||||||
|
<li>S’assurer 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 j’entraî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 d’autres 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 n’y 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 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 -> BUG, dois creuser mais juste des problèmes techniques -> Visiblement il y a d’autres 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>D’abord 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 l’espace latent J’ai 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 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. 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 &~N^1_i \subseteq N^2_i \subseteq N^3_i & \text{Taxonomie}\\
|
||||||
|
Z^0_i \overset{?}{=} & Z^1_i \overset{?}{=} Z^2_i \overset{?}{=} Z^3_i & \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. 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. 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. d.b</a>)</span> Pour comprendre le problème d’OT régularisé pour l’entropie.</li>
|
||||||
|
<li>⌛ <span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s. 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. 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. d.</a>)</span> petit résumé de l’algo 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&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>« The <span>Statistical Analysis</span> of <span>Compositional Data</span> »</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 139‑77. <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>« Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span> »</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. d. <span>« Généralisation de l’algorithme Largest Gaps pour le modèle des blocs latents non-paramétrique »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-bystrovaCausalDiscovery" class="csl-entry" role="listitem">
|
||||||
|
Bystrova, Daria. s. d. <span>« Causal Discovery »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
|
||||||
|
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>« Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees »</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. d. <span>« Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
|
||||||
|
Nenna, Luca. s. d.a. <span>« Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
|
||||||
|
———. s. d.b. <span>« Lecture 2: <span>Entropic Optimal Transport</span> »</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>« Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span> »</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
924
suivi/2025-33/2025-33.html
Normal 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&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>
|
||||||
|
→ L’intuition 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 n’arrive plus à reproduire le bug pour l’inférence…</li>
|
||||||
|
<li>😫 bug encore. S’assurer 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 j’entraî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 s’assurer 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 l’inférence :</p>
|
||||||
|
<ul>
|
||||||
|
<li>Vérifier que les conditions d’identifiabilité 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 > 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 l’Université 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 l’espace latent J’ai 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 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 d’information</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. 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 &~N^1_i \subseteq N^2_i \subseteq N^3_i & \text{Taxonomie}\\
|
||||||
|
Z^0_i \overset{?}{=} & Z^1_i \overset{?}{=} Z^2_i \overset{?}{=} Z^3_i & \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. 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 l’application 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 l’air intéressant notamment le <strong>mélange de modèles de segmentation</strong>.</li>
|
||||||
|
<li>⌛ Chap 2 : Creuser l’idée de maximiser l’énergie libre, très intéressant regarder le critère CARI et lire Robert et al 2021. Actuellement p32 du manuscrit</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. 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. d.b</a>)</span> Pour comprendre le problème d’OT régularisé pour l’entropie.</li>
|
||||||
|
<li>⌛ <span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s. 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. 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&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>« The <span>Statistical Analysis</span> of <span>Compositional Data</span> »</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 139‑77. <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>« Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span> »</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. d. <span>« Causal Discovery »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
|
||||||
|
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>« Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees »</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. d. <span>« Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
|
||||||
|
Nenna, Luca. s. d.a. <span>« Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
|
||||||
|
———. s. d.b. <span>« Lecture 2: <span>Entropic Optimal Transport</span> »</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>« Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span> »</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>
|
||||||
BIN
suivi/2025-33/figs/auc-model.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
873
suivi/2025-35/2025-35.html
Normal 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&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>
|
||||||
|
→ L’intuition 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 n’arrive plus à reproduire le bug pour l’inférence…</li>
|
||||||
|
<li>😫 bug encore. S’assurer que ça marche et relancer</li>
|
||||||
|
</ul></li>
|
||||||
|
<li>⌛ A Roscoff avec Julie et Pierre nous avons constaté que c’était l’extraction des dyades pour le calcul des métriques qui était incorrecte. Maintenant c’est 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 j’entraî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 l’inférence :
|
||||||
|
<ul>
|
||||||
|
<li>Vérifier que les conditions d’identifiabilité 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 > 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 l’Université 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 l’espace latent J’ai 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 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 à l’occasion 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. 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 &~N^1_i \subseteq N^2_i \subseteq N^3_i & \text{Taxonomie}\\
|
||||||
|
Z^0_i \overset{?}{=} & Z^1_i \overset{?}{=} Z^2_i \overset{?}{=} Z^3_i & \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. 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 l’idée de maximiser l’énergie libre, très intéressant regarder le critère CARI et lire Robert et al 2021. Actuellement p32 du manuscrit</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. 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. d.b</a>)</span> Pour comprendre le problème d’OT régularisé pour l’entropie.</li>
|
||||||
|
<li>⌛ <span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s. 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. 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&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>« The <span>Statistical Analysis</span> of <span>Compositional Data</span> »</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 139‑77. <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>« Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span> »</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. d. <span>« Causal Discovery »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
|
||||||
|
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>« Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees »</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. d. <span>« Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
|
||||||
|
Nenna, Luca. s. d.a. <span>« Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
|
||||||
|
———. s. d.b. <span>« Lecture 2: <span>Entropic Optimal Transport</span> »</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>« Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span> »</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
|
|
@ -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&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>
|
||||||
|
→ L’intuition 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 n’arrive plus à reproduire le bug pour l’inférence…</li>
|
||||||
|
<li>😫 bug encore. S’assurer que ça marche et relancer</li>
|
||||||
|
</ul></li>
|
||||||
|
<li>⌛ A Roscoff avec Julie et Pierre nous avons constaté que c’était l’extraction des dyades pour le calcul des métriques qui était incorrecte. Maintenant c’est 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 j’entraî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 > 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 l’Université 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 l’espace latent J’ai 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 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 à l’occasion 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. 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 &~N^1_i \subseteq N^2_i \subseteq N^3_i & \text{Taxonomie}\\
|
||||||
|
Z^0_i \overset{?}{=} & Z^1_i \overset{?}{=} Z^2_i \overset{?}{=} Z^3_i & \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. 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 l’idée de maximiser l’énergie libre, très intéressant regarder le critère CARI et lire Robert et al 2021. Actuellement p32 du manuscrit</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. 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. d.b</a>)</span> Pour comprendre le problème d’OT régularisé pour l’entropie.</li>
|
||||||
|
<li>⌛ <span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s. 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. 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&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>« The <span>Statistical Analysis</span> of <span>Compositional Data</span> »</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 139‑77. <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>« Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span> »</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. d. <span>« Causal Discovery »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
|
||||||
|
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>« Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees »</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. d. <span>« Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
|
||||||
|
Nenna, Luca. s. d.a. <span>« Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
|
||||||
|
———. s. d.b. <span>« Lecture 2: <span>Entropic Optimal Transport</span> »</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>« Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span> »</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
|
|
@ -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&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 l’entropie à la toute fin en mentionnant</li>
|
||||||
|
<li>⌛ Fusionner VGAE et information transfer (missing links seulement) donc refaire tourner sur même données qu’en 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 d’utiliser l’arbre 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 j’ai 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>
|
||||||
|
→ L’intuition 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 n’arrive plus à reproduire le bug pour l’inférence…</li>
|
||||||
|
<li>😫 bug encore. S’assurer que ça marche et relancer</li>
|
||||||
|
</ul></li>
|
||||||
|
<li>⌛ A Roscoff avec Julie et Pierre nous avons constaté que c’était l’extraction des dyades pour le calcul des métriques qui était incorrecte. Maintenant c’est 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 j’entraî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 > 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 l’Université 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 l’espace latent J’ai 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 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 à l’occasion 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. 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 &~N^1_i \subseteq N^2_i \subseteq N^3_i & \text{Taxonomie}\\
|
||||||
|
Z^0_i \overset{?}{=} & Z^1_i \overset{?}{=} Z^2_i \overset{?}{=} Z^3_i & \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. 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 l’idée de maximiser l’énergie libre, très intéressant regarder le critère CARI et lire Robert et al 2021. Actuellement p32 du manuscrit</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. 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. d.b</a>)</span> Pour comprendre le problème d’OT régularisé pour l’entropie.</li>
|
||||||
|
<li>⌛ <span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s. 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. 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&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>« The <span>Statistical Analysis</span> of <span>Compositional Data</span> »</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 139‑77. <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>« Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span> »</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. d. <span>« Causal Discovery »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
|
||||||
|
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>« Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees »</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. d. <span>« Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
|
||||||
|
Nenna, Luca. s. d.a. <span>« Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
|
||||||
|
———. s. d.b. <span>« Lecture 2: <span>Entropic Optimal Transport</span> »</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>« Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span> »</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
|
|
@ -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 l’ordre 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 qu’en 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 d’utiliser l’arbre 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 j’ai 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>
|
||||||
|
→ L’intuition 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 > 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 d’aggré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. 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 l’idée de maximiser l’énergie libre, très intéressant regarder le critère CARI et lire Robert et al 2021. Actuellement p32 du manuscrit</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. 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. d.b</a>)</span> Pour comprendre le problème d’OT régularisé pour l’entropie.</li>
|
||||||
|
<li>⌛ <span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s. 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. 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>« The <span>Statistical Analysis</span> of <span>Compositional Data</span> »</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 139‑77. <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>« Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span> »</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. d. <span>« Causal Discovery »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
|
||||||
|
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>« Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees »</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. d. <span>« Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
|
||||||
|
Nenna, Luca. s. d.a. <span>« Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
|
||||||
|
———. s. d.b. <span>« Lecture 2: <span>Entropic Optimal Transport</span> »</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>« Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span> »</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
|
|
@ -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 l’ordre des modèles préférés et vérifier mais BICLsep < BICL pirho < 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 d’utiliser l’arbre 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 j’ai 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>
|
||||||
|
→ L’intuition 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 > 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 d’aggré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. 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 l’idée de maximiser l’énergie libre, très intéressant regarder le critère CARI et lire Robert et al 2021. Actuellement p32 du manuscrit</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. 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. d.b</a>)</span> Pour comprendre le problème d’OT régularisé pour l’entropie.</li>
|
||||||
|
<li>⌛ <span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s. 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. 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>« The <span>Statistical Analysis</span> of <span>Compositional Data</span> »</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 139‑77. <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>« Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span> »</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. d. <span>« Causal Discovery »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
|
||||||
|
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>« Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees »</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. d. <span>« Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
|
||||||
|
Nenna, Luca. s. d.a. <span>« Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
|
||||||
|
———. s. d.b. <span>« Lecture 2: <span>Entropic Optimal Transport</span> »</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>« Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span> »</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
|
|
@ -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 L’ENTROPIE 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. d.</a>)</span></p></li>
|
||||||
|
<li><p>Maitriser graphtools de Peixoto pour essayer d’utiliser l’arbre 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 j’ai 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>
|
||||||
|
→ L’intuition 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 > 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 d’appartenances aux groupes</h4>
|
||||||
|
<p>Toujours modèle LBM mais avec probas d’appartenance pour les colonnes variables:</p>
|
||||||
|
<p><span class="math display">\begin{align*}
|
||||||
|
Z_i &\sim \mathcal{M}(1; \pi_1, \dots, \pi_Q), \sum_{q=1}^{Q} \pi_q = 1\\
|
||||||
|
W_j &\sim \mathcal{M}(1; \rho_1^j, \dots, \rho_R^j), \sum_{r=1}^{R} \rho_r^j = 1\\
|
||||||
|
Y_{i,j}&\mid Z_i = q, W_j = r \sim \mathcal{F}(\alpha_{qr})
|
||||||
|
\end{align*}</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 l’ELBO 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}&((\beta_r)_{r=1,\dots,R}, (X_j)_{j=1,\dots,n_2}, (\tau_{jr})_{\substack{j=1,\dots,n_2\\r=1,\dots,R}} ) = \sum_{j=1}^{n_2} \biggl[ \tau_{jt} X_j - \frac{X_j}{1+\sum_{s=1}^{R-1} \exp{\beta_s X_j}} \biggr]\\
|
||||||
|
& = \sum_{j=1}^{n_2} \biggl[\bigl(\tau_{jt} - \frac{1}{1+\sum_{s=1}^{R-1} \beta_s X_j} \bigr) X_j\biggr] = \sum_{j=1}^{n_2} \biggl[\bigl(\tau_{jt} - \rho_R^j \bigr) X_j\biggr]
|
||||||
|
\end{align*}</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 l’exponentielle 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 l’un 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 l’ELBO 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}&((\beta_r)_{r=1,\dots,R}, (X_j)_{j=1,\dots,n_2}, (\tau_{jr})_{\substack{j=1,\dots,n_2\\r=1,\dots,R}} ) = \sum_{j=1}^{n_2} \biggl[ \tau_{jt} X_j - \frac{X_j \exp{\beta_t X_j}}{\sum_{s=1}^{R} \exp{\beta_s X_j}} \biggr]\\
|
||||||
|
& = \sum_{j=1}^{n_2} \biggl[\bigl(\tau_{jt} - \sigma(\pmb{\beta} \pmb{X})_{t,j}\bigr) X_j\biggr] = \sum_{j=1}^{n_2} \biggl[\bigl(\tau_{jt} - \rho_t^j \bigr) X_j\biggr]
|
||||||
|
\end{align*}</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 d’aggré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. 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 l’idée de maximiser l’énergie libre, très intéressant regarder le critère CARI et lire Robert et al 2021. Actuellement p32 du manuscrit</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. 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. d.b</a>)</span> Pour comprendre le problème d’OT régularisé pour l’entropie.</li>
|
||||||
|
<li>⌛ <span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s. 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. 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. d. <span>« Structure Knows Best: Predicting Ecological Interactions Across Space Through Pairwise Integration of Latent Network Patterns »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-aitchisonStatisticalAnalysisCompositional1982a" class="csl-entry" role="listitem">
|
||||||
|
Aitchison, J. 1982. <span>« The <span>Statistical Analysis</span> of <span>Compositional Data</span> »</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 139‑77. <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>« Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span> »</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. d. <span>« Causal Discovery »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
|
||||||
|
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>« Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees »</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. d. <span>« Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
|
||||||
|
Nenna, Luca. s. d.a. <span>« Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
|
||||||
|
———. s. d.b. <span>« Lecture 2: <span>Entropic Optimal Transport</span> »</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>« Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span> »</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
BIN
suivi/2025-51/figs/tendance_temps.png
Normal file
|
After Width: | Height: | Size: 212 KiB |
906
suivi/2026-12/2026-12.html
Normal 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 l’accompagner 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 don’t(?)”</li>
|
||||||
|
</ul></li>
|
||||||
|
<li>Finir implémentation dans sbm de blockmodels avec covariables sur les noeuds</li>
|
||||||
|
<li>Bricoler une pipeline sbm |> nnet::multinom comme performance de référence pour l’introduction de covariables</li>
|
||||||
|
<li>Comprendre pourquoi l’idé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 c’est galère (#OTU>>#Sample, dépendance par la phylogénie …)</li>
|
||||||
|
<li>Motivation du co-clustering (LBM), trouver des groupes d’échantillons et d’OTUs qui exhibent des comportement différents (pathologies, sols particuliers, échantillon alimentaire avec une flore d’intérêt …)</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 l’arbre phylogénétique
|
||||||
|
<ul>
|
||||||
|
<li>Idées: faciliter l’exploration du paysage de l’ELBO en se plaçant dans une région de paramètres qui a du sens phylo et donc en sortir indiquerait un signal dans les données.</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 l’arbre). Mais aussi modèle plus large pour prendre en compte diverses situations (trouver des exemples d’autres 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> (j’aimerai pouvoir dire le jour de ma présentation que c’est dispo sur la version de développement, il va falloir charbonner de mon côté).</li>
|
||||||
|
<li>Théoriquement: on a l’identifiabilité (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 l’arbre 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 L’ORIGINE DE L’IDEE), 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 qu’on 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 d’avoir dans une même lignée phylogénétique des individus qui se spécialisent voire qui développent une convergence évolutive et acquièrent des traits phénotypiques qui ressemblent à d’autres familles. Dans ce cas, le <span class="math inline">\delta_{l,i}</span> rapprochent le <span class="math inline">\gamma_{l,i}</span> d’un <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 n’y ai pas encore touché.</li>
|
||||||
|
</ul></li>
|
||||||
|
<li>Utiliser les Hierarchical SBM et LBM de Peixoto dans son package <code>graphtools</code> pour initialiser l’arbre liant les couches avec l’arbre 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. <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 l’arbre 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 l’arbre. 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 c’est les gros calculs matriciels (c’est 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 l’arbre ?
|
||||||
|
<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 l’autre dimension à mettre à jour.</li>
|
||||||
|
</ul></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<ul>
|
||||||
|
<li><p>Clustering unipartite j’ai 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. d.</a>)</span></p></li>
|
||||||
|
<li><p>Maitriser graphtools de Peixoto pour essayer d’utiliser l’arbre 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 d’obtenir 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 l’ELBO adaptée.
|
||||||
|
<ul>
|
||||||
|
<li><p>😄 Avantage s’inscrit directement dans blockmodels et permet d’avoir 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>J’ai codé l’optimisation 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. 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 l’idée de maximiser l’énergie libre, très intéressant regarder le critère CARI et lire Robert et al 2021. Actuellement p32 du manuscrit</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. 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. d.b</a>)</span> Pour comprendre le problème d’OT régularisé pour l’entropie.</li>
|
||||||
|
<li>⌛ <span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s. 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. 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. d. <span>« Structure Knows Best: Predicting Ecological Interactions Across Space Through Pairwise Integration of Latent Network Patterns »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-aitchisonStatisticalAnalysisCompositional1982a" class="csl-entry" role="listitem">
|
||||||
|
Aitchison, J. 1982. <span>« The <span>Statistical Analysis</span> of <span>Compositional Data</span> »</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 139‑77. <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>« Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span> »</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. d. <span>« Causal Discovery »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
|
||||||
|
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>« Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees »</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. d. <span>« Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
|
||||||
|
Nenna, Luca. s. d.a. <span>« Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
|
||||||
|
———. s. d.b. <span>« Lecture 2: <span>Entropic Optimal Transport</span> »</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>« Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span> »</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>« Hierarchical <span>Block Structures</span> and <span>High-Resolution Model Selection</span> in <span>Large Networks</span> »</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
|
|
@ -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. <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 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 l’arbre. 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 c’est les gros calculs matriciels (c’est 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 l’arbre ?
|
||||||
|
<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 l’autre dimension à mettre à jour.</li>
|
||||||
|
</ul></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<ul>
|
||||||
|
<li><p>Clustering unipartite j’ai 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. d.</a>)</span></p></li>
|
||||||
|
<li><p>Maitriser graphtools de Peixoto pour essayer d’utiliser l’arbre 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 d’un fichier (réu avec JBL à 10h45 le 06/02/2026). Possible en modifiant lbm.h et sbm.h d’obtenir un modèle utilisant les covariables de groupes (de blocs ?). Car besoin de changer <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 l’ELBO adaptée.
|
||||||
|
<ul>
|
||||||
|
<li><p>😄 Avantage s’inscrit directement dans blockmodels et permet d’avoir 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 d’appartenances aux groupes</h4>
|
||||||
|
<p><span class="math display">\begin{align*}
|
||||||
|
\pmb{\beta}_{r}& = \begin{pmatrix}
|
||||||
|
\beta_{r,0}\\
|
||||||
|
\vdots\\
|
||||||
|
\beta_{r,p}
|
||||||
|
\end{pmatrix}, & X_{:,j} = \begin{pmatrix}
|
||||||
|
1\\
|
||||||
|
x_{1}\\
|
||||||
|
\vdots\\
|
||||||
|
x_p
|
||||||
|
\end{pmatrix}\\
|
||||||
|
\pmb{\beta}_r^{\top} X_{:,j}& = \beta_{r,0} + \beta_{r,1} x_{1} + \dots + \beta_{r,p} x_p & \approx \log(\rho_r^j) \\
|
||||||
|
\pmb{B} & = \begin{pmatrix}
|
||||||
|
\pmb{\beta}_1 \dots \pmb{\beta}_r \dots \pmb{\beta}_R
|
||||||
|
\end{pmatrix} & \pmb{B}^{\top} X_{:,j} \approx \log(\pmb{\rho}^j) \\
|
||||||
|
\pmb{B}^{\top} \pmb{X} & \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}& = \begin{pmatrix}
|
||||||
|
\gamma_{q,0}\\
|
||||||
|
\vdots\\
|
||||||
|
\gamma_{q,d}
|
||||||
|
\end{pmatrix}, & V_{:,i} = \begin{pmatrix}
|
||||||
|
1\\
|
||||||
|
v_{1}\\
|
||||||
|
\vdots\\
|
||||||
|
v_d
|
||||||
|
\end{pmatrix}\\
|
||||||
|
\pmb{\gamma}_q^{\top} V_{:,i}& = \gamma_{q,0} + \gamma_{q,1} x_{1} + \dots + \gamma_{q,p} x_p & \approx \log(\pi_q^i) \\
|
||||||
|
\pmb{\Gamma} & = \begin{pmatrix}
|
||||||
|
\pmb{\gamma}_1 \dots \pmb{\gamma}_q \dots \pmb{\gamma}_Q
|
||||||
|
\end{pmatrix} & \pmb{\Gamma}^{\top} V_{:,i} \approx \log(\pmb{\pi}^i) \\
|
||||||
|
\pmb{\Gamma}^{\top} \pmb{X} & \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 l’identifiabilité (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 qu’il 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*}
|
||||||
|
& \sigma(B^{\top}X) = \sigma({B^{\prime}}^{\top}X)\\
|
||||||
|
& \iff \exists C \in \mathbb{R}^{n_2}, B^{\top} X = {B^{\prime}}^{\top} X + \pmb{1}_R C^{\top}\\
|
||||||
|
& \iff \exists C \in \mathbb{R}^{n_2}, B^{\top} X - \pmb{1}_R C^{\top} = {B^{\prime}}^{\top} X\\
|
||||||
|
& \iff \exists C \in \mathbb{R}^{n_2}, (B^{\top} X - \pmb{1}_R C^{\top}) X^{\top} = {B^{\prime}}^{\top} X X^{\top}\\
|
||||||
|
& \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 d’appartenance pour les colonnes variables:</p>
|
||||||
|
<p><span class="math display">\begin{align*}
|
||||||
|
Z_i &\sim \mathcal{M}(1; \pi_1, \dots, \pi_Q), \sum_{q=1}^{Q} \pi_q = 1\\
|
||||||
|
W_j &\sim \mathcal{M}(1; \rho_1^j, \dots, \rho_R^j), \sum_{r=1}^{R} \rho_r^j = 1\\
|
||||||
|
Y_{i,j}&\mid Z_i = q, W_j = r \sim \mathcal{F}(\alpha_{qr})
|
||||||
|
\end{align*}</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 l’un 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 l’ELBO 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}&((\beta_r)_{r=1,\dots,R}, (X_j)_{j=1,\dots,n_2}, (\tau_{jr})_{\substack{j=1,\dots,n_2\\r=1,\dots,R}} ) = \sum_{j=1}^{n_2} \biggl[ \tau_{jt} X_j - \frac{X_j \exp{\beta_t X_j}}{\sum_{s=1}^{R} \exp{\beta_s X_j}} \biggr]\\
|
||||||
|
& = \sum_{j=1}^{n_2} \biggl[\bigl(\tau_{jt} - \sigma(\pmb{\beta} \pmb{X})_{t,j}\bigr) X_j\biggr] = \sum_{j=1}^{n_2} \biggl[\bigl(\tau_{jt} - \rho_t^j \bigr) X_j\biggr]
|
||||||
|
\end{align*}</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 d’aggré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. 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 l’idée de maximiser l’énergie libre, très intéressant regarder le critère CARI et lire Robert et al 2021. Actuellement p32 du manuscrit</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. 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. d.b</a>)</span> Pour comprendre le problème d’OT régularisé pour l’entropie.</li>
|
||||||
|
<li>⌛ <span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s. 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. 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. d. <span>« Structure Knows Best: Predicting Ecological Interactions Across Space Through Pairwise Integration of Latent Network Patterns »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-aitchisonStatisticalAnalysisCompositional1982a" class="csl-entry" role="listitem">
|
||||||
|
Aitchison, J. 1982. <span>« The <span>Statistical Analysis</span> of <span>Compositional Data</span> »</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 139‑77. <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>« Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span> »</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. d. <span>« Causal Discovery »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
|
||||||
|
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>« Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees »</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. d. <span>« Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
|
||||||
|
Nenna, Luca. s. d.a. <span>« Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
|
||||||
|
———. s. d.b. <span>« Lecture 2: <span>Entropic Optimal Transport</span> »</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>« Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span> »</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>« Hierarchical <span>Block Structures</span> and <span>High-Resolution Model Selection</span> in <span>Large Networks</span> »</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
|
|
@ -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. <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 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 l’arbre. 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 c’est les gros calculs matriciels (c’est 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 l’arbre ?
|
||||||
|
<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 l’autre dimension à mettre à jour.</li>
|
||||||
|
</ul></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<ul>
|
||||||
|
<li><p>Clustering unipartite j’ai 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. d.</a>)</span></p></li>
|
||||||
|
<li><p>Maitriser graphtools de Peixoto pour essayer d’utiliser l’arbre 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 d’un fichier (réu avec JBL à 10h45 le 06/02/2026). Possible en modifiant lbm.h et sbm.h d’obtenir un modèle utilisant les covariables de groupes (de blocs ?). Car besoin de changer <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 l’ELBO adaptée.
|
||||||
|
<ul>
|
||||||
|
<li><p>😄 Avantage s’inscrit directement dans blockmodels et permet d’avoir 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 d’appartenances aux groupes</h4>
|
||||||
|
<p><span class="math display">\begin{align*}
|
||||||
|
\pmb{\beta}_{r}& = \begin{pmatrix}
|
||||||
|
\beta_{r,0}\\
|
||||||
|
\vdots\\
|
||||||
|
\beta_{r,p}
|
||||||
|
\end{pmatrix}, & X_{j,\bullet} = \begin{pmatrix}
|
||||||
|
1 = x_{0,j} & x_{1,j} & \dots & x_{p,j}
|
||||||
|
\end{pmatrix}\\
|
||||||
|
X_{j,\bullet} \pmb{\beta}_r& = \beta_{r,0} x_{0,j} + \beta_{r,1} x_{1,j} + \dots + \beta_{r,p} x_{p,j} & \approx \log(\rho_r^j) \\
|
||||||
|
B & = \begin{pmatrix}
|
||||||
|
\pmb{\beta}_1 \dots \pmb{\beta}_r \dots \pmb{\beta}_R
|
||||||
|
\end{pmatrix} & X_{j,\bullet}B \approx \log(\pmb{\rho}^j) \\
|
||||||
|
X B & \approx \log((\pmb{\rho}^j)_{j=1,\dots,n_2}) = \log(\pmb{\Rho})\\
|
||||||
|
\end{align*}</span> Et pour les probas en lignes du LBM <span class="math display">\begin{align*}
|
||||||
|
\pmb{\gamma}_{q}& = \begin{pmatrix}
|
||||||
|
\gamma_{q,0}\\
|
||||||
|
\vdots\\
|
||||||
|
\gamma_{q,d}
|
||||||
|
\end{pmatrix}, & V_{i,\bullet} = \begin{pmatrix}
|
||||||
|
1 = v_{0,i} & v_{1,i} & \dots & v_{d,i}
|
||||||
|
\end{pmatrix}\\
|
||||||
|
V_{i,\bullet} \pmb{\gamma}_q & = \gamma_{q,0} v_{0,i} + \gamma_{q,1} v_{1,i} + \dots + \gamma_{q,d} v_{d,i} & \approx \log(\pi_q^i) \\
|
||||||
|
\Gamma & = \begin{pmatrix}
|
||||||
|
\gamma_1 \dots \pmb{\gamma}_q \dots \pmb{\gamma}_Q
|
||||||
|
\end{pmatrix} & V_{i,\bullet} \Gamma \approx \log(\pmb{\pi}^i) \\
|
||||||
|
V \Gamma & \approx \log((\pmb{\pi}^i)_{i=1,\dots,n_1}) = \log(\pmb{\Pi})
|
||||||
|
|
||||||
|
|
||||||
|
\end{align*}</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 l’identifiabilité</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*}
|
||||||
|
&\sigma(XB) = \sigma(XB^{\prime})\\
|
||||||
|
&\implies \exists C = \begin{pmatrix}c_1 \\ \vdots \\ c_j \\ \vdots \\ c_{n_2}\end{pmatrix} \in \mathbb{R}^{n_2}, X B = X B^{\prime} + C \pmb{1}_{R}^{\top} \\
|
||||||
|
&\implies \exists C \in \mathbb{R}^{n_2}, (X B)_{j,r} = (X B^{\prime})_{j,r} + (C \pmb{1}_{R}^{\top})_{j,r} \\
|
||||||
|
&\implies \exists C \in \mathbb{R}^{n_2}, \forall r\in\{1\dots,R\}, \forall j\in\{1,\dots,n_2\}, \sum_{k=1}^{p+1} x_{j,k} \beta_{k,r} = \sum_{k=1}^{p+1} x_{j,k} \beta^{\prime}_{k,r} + c_j\\
|
||||||
|
&\implies \exists C \in \mathbb{R}^{n_2}, \forall j\in\{1,\dots,n_2\}, \sum_{k=1}^{p+1} x_{j,k} \beta_{k,R} = \sum_{k=1}^{p+1} x_{j,k} \beta^{\prime}_{k,R} + c_j \\
|
||||||
|
&\implies \exists C \in \mathbb{R}^{n_2}, \forall j\in\{1,\dots,n_2\}, \sum_{k=1}^{p+1} x_{j,k} \times 0 = \sum_{k=1}^{p+1} x_{j,k} \times 0 + c_j \\
|
||||||
|
&\implies \exists C \in \mathbb{R}^{n_2}, \forall j\in\{1,\dots,n_2\}, 0 = 0 + c_j \implies c_j = 0 \\
|
||||||
|
&\implies C = \begin{pmatrix} 0 \\ \vdots \\ 0 \end{pmatrix} \text{and thus}, XB = XB^{\prime} \\
|
||||||
|
& \implies (X^{\top} X)^{-1}X^{\top} X B = (X^{\top} X)^{-1}X^{\top} X B^{\prime} \implies B=B^{\prime}
|
||||||
|
\end{align*}</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 d’appartenance pour les colonnes variables:</p>
|
||||||
|
<p><span class="math display">\begin{align*}
|
||||||
|
Z_i &\sim \mathcal{M}(1; \pi_1, \dots, \pi_Q), \sum_{q=1}^{Q} \pi_q = 1\\
|
||||||
|
W_j &\sim \mathcal{M}(1; \rho_1^j, \dots, \rho_R^j), \sum_{r=1}^{R} \rho_r^j = 1\\
|
||||||
|
Y_{i,j}&\mid Z_i = q, W_j = r \sim \mathcal{F}(\alpha_{qr})
|
||||||
|
\end{align*}</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 l’un 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 l’ELBO 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}&((\beta_r)_{r=1,\dots,R}, (X_j)_{j=1,\dots,n_2}, (\tau_{jr})_{\substack{j=1,\dots,n_2\\r=1,\dots,R}} ) = \sum_{j=1}^{n_2} \biggl[ \tau_{jt} X_j - \frac{X_j \exp{\beta_t X_j}}{\sum_{s=1}^{R} \exp{\beta_s X_j}} \biggr]\\
|
||||||
|
& = \sum_{j=1}^{n_2} \biggl[\bigl(\tau_{jt} - \sigma(\pmb{\beta} \pmb{X})_{t,j}\bigr) X_j\biggr] = \sum_{j=1}^{n_2} \biggl[\bigl(\tau_{jt} - \rho_t^j \bigr) X_j\biggr]
|
||||||
|
\end{align*}</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 d’aggré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. 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 l’idée de maximiser l’énergie libre, très intéressant regarder le critère CARI et lire Robert et al 2021. Actuellement p32 du manuscrit</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. 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. d.b</a>)</span> Pour comprendre le problème d’OT régularisé pour l’entropie.</li>
|
||||||
|
<li>⌛ <span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s. 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. 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. d. <span>« Structure Knows Best: Predicting Ecological Interactions Across Space Through Pairwise Integration of Latent Network Patterns »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-aitchisonStatisticalAnalysisCompositional1982a" class="csl-entry" role="listitem">
|
||||||
|
Aitchison, J. 1982. <span>« The <span>Statistical Analysis</span> of <span>Compositional Data</span> »</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 139‑77. <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>« Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span> »</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. d. <span>« Causal Discovery »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
|
||||||
|
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>« Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees »</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. d. <span>« Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
|
||||||
|
Nenna, Luca. s. d.a. <span>« Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
|
||||||
|
———. s. d.b. <span>« Lecture 2: <span>Entropic Optimal Transport</span> »</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>« Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span> »</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>« Hierarchical <span>Block Structures</span> and <span>High-Resolution Model Selection</span> in <span>Large Networks</span> »</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
|
|
@ -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. <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 l’arbre. 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 c’est les gros calculs matriciels (c’est 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 l’arbre ?
|
||||||
|
<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 l’autre dimension à mettre à jour.</li>
|
||||||
|
</ul></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<ul>
|
||||||
|
<li><p>Clustering unipartite j’ai 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. d.</a>)</span></p></li>
|
||||||
|
<li><p>Maitriser graphtools de Peixoto pour essayer d’utiliser l’arbre 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 d’un fichier (réu avec JBL à 10h45 le 06/02/2026). Possible en modifiant lbm.h et sbm.h d’obtenir un modèle utilisant les covariables de groupes (de blocs ?). Car besoin de changer <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 l’ELBO adaptée.
|
||||||
|
<ul>
|
||||||
|
<li><p>😄 Avantage s’inscrit directement dans blockmodels et permet d’avoir 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. 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 l’idée de maximiser l’énergie libre, très intéressant regarder le critère CARI et lire Robert et al 2021. Actuellement p32 du manuscrit</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. 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. d.b</a>)</span> Pour comprendre le problème d’OT régularisé pour l’entropie.</li>
|
||||||
|
<li>⌛ <span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s. 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. 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. d. <span>« Structure Knows Best: Predicting Ecological Interactions Across Space Through Pairwise Integration of Latent Network Patterns »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-aitchisonStatisticalAnalysisCompositional1982a" class="csl-entry" role="listitem">
|
||||||
|
Aitchison, J. 1982. <span>« The <span>Statistical Analysis</span> of <span>Compositional Data</span> »</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 139‑77. <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>« Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span> »</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. d. <span>« Causal Discovery »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
|
||||||
|
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>« Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees »</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. d. <span>« Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
|
||||||
|
Nenna, Luca. s. d.a. <span>« Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
|
||||||
|
———. s. d.b. <span>« Lecture 2: <span>Entropic Optimal Transport</span> »</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>« Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span> »</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>« Hierarchical <span>Block Structures</span> and <span>High-Resolution Model Selection</span> in <span>Large Networks</span> »</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
|
|
@ -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. <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 l’application 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 l’arbre 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 l’arbre. 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 c’est les gros calculs matriciels (c’est 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 l’arbre ?
|
||||||
|
<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 l’autre dimension à mettre à jour.</li>
|
||||||
|
</ul></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<ul>
|
||||||
|
<li><p>Clustering unipartite j’ai 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. d.</a>)</span></p></li>
|
||||||
|
<li><p>Maitriser graphtools de Peixoto pour essayer d’utiliser l’arbre 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 d’obtenir 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 l’ELBO adaptée.
|
||||||
|
<ul>
|
||||||
|
<li><p>😄 Avantage s’inscrit directement dans blockmodels et permet d’avoir 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>J’ai codé l’optimisation 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. 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 l’idée de maximiser l’énergie libre, très intéressant regarder le critère CARI et lire Robert et al 2021. Actuellement p32 du manuscrit</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. 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. d.b</a>)</span> Pour comprendre le problème d’OT régularisé pour l’entropie.</li>
|
||||||
|
<li>⌛ <span class="citation" data-cites="nennaLecture1Monge">Nenna (<a href="#ref-nennaLecture1Monge" role="doc-biblioref">s. 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. 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. d. <span>« Structure Knows Best: Predicting Ecological Interactions Across Space Through Pairwise Integration of Latent Network Patterns »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-aitchisonStatisticalAnalysisCompositional1982a" class="csl-entry" role="listitem">
|
||||||
|
Aitchison, J. 1982. <span>« The <span>Statistical Analysis</span> of <span>Compositional Data</span> »</span>. <em>Journal of the Royal Statistical Society. Series B (Methodological)</em> 44 (2): 139‑77. <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>« Fast and <span>Consistent Algorithm</span> for the <span>Latent Block Model</span> »</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. d. <span>« Causal Discovery »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-channarondClassificationEstimationStochastic2012" class="csl-entry" role="listitem">
|
||||||
|
Channarond, Antoine, Jean-Jacques Daudin, et Stéphane Robin. 2012. <span>« Classification and Estimation in the <span>Stochastic Blockmodel</span> Based on the Empirical Degrees »</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. d. <span>« Unsupervised <span>Learning</span> for <span>Optimal Transport</span> Plan Prediction Between Unbalanced Graphs »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture1Monge" class="csl-entry" role="listitem">
|
||||||
|
Nenna, Luca. s. d.a. <span>« Lecture 1 <span>Monge</span> and <span>Kantorovich</span> Problems: From Primal to Dual »</span>.
|
||||||
|
</div>
|
||||||
|
<div id="ref-nennaLecture2Entropic" class="csl-entry" role="listitem">
|
||||||
|
———. s. d.b. <span>« Lecture 2: <span>Entropic Optimal Transport</span> »</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>« Finite <span>Mixtures</span> of <span>Multivariate Poisson-Log Normal Factor Analyzers</span> for <span>Clustering Count Data</span> »</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>« Hierarchical <span>Block Structures</span> and <span>High-Resolution Model Selection</span> in <span>Large Networks</span> »</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>
|
||||||
4083
suivi/2026-9/analysis_benchmark_lbm_seq.html
Normal file
50783
suivi/2026-9/figs/Multipartite.svg
Normal file
|
After Width: | Height: | Size: 7.5 MiB |
|
|
@ -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
|
|
||||||
18
template.qmd
|
|
@ -1,18 +0,0 @@
|
||||||
---
|
|
||||||
title: "Bilan semaine MM YYYY : dd-dd mois"
|
|
||||||
format:
|
|
||||||
html:
|
|
||||||
embed-resources: true
|
|
||||||
---
|
|
||||||
|
|
||||||
## A faire
|
|
||||||
|
|
||||||
-
|
|
||||||
|
|
||||||
## J'ai fait
|
|
||||||
|
|
||||||
-
|
|
||||||
|
|
||||||
## A continuer
|
|
||||||
|
|
||||||
-
|
|
||||||