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 |
128 changed files with 34554 additions and 7710 deletions
314
.gitignore
vendored
314
.gitignore
vendored
|
|
@ -1,314 +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/
|
||||
/.luarc.json
|
||||
1
.quarto/idx/index.qmd.json
Normal file
1
.quarto/idx/index.qmd.json
Normal file
File diff suppressed because one or more lines are too long
1
.quarto/idx/suivi/2025-13/2025-13.qmd.json
Normal file
1
.quarto/idx/suivi/2025-13/2025-13.qmd.json
Normal file
File diff suppressed because one or more lines are too long
1
.quarto/idx/suivi/2025-14/2025-14.qmd.json
Normal file
1
.quarto/idx/suivi/2025-14/2025-14.qmd.json
Normal file
File diff suppressed because one or more lines are too long
1
.quarto/idx/suivi/2025-15/2025-15.qmd.json
Normal file
1
.quarto/idx/suivi/2025-15/2025-15.qmd.json
Normal file
File diff suppressed because one or more lines are too long
1
.quarto/idx/suivi/2025-16/2025-16.qmd.json
Normal file
1
.quarto/idx/suivi/2025-16/2025-16.qmd.json
Normal file
File diff suppressed because one or more lines are too long
1
.quarto/idx/suivi/2025-17/2025-17.qmd.json
Normal file
1
.quarto/idx/suivi/2025-17/2025-17.qmd.json
Normal file
File diff suppressed because one or more lines are too long
1
.quarto/idx/template.qmd.json
Normal file
1
.quarto/idx/template.qmd.json
Normal file
File diff suppressed because one or more lines are too long
1
.quarto/xref/7687d49a
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
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
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,41 +0,0 @@
|
|||
clone:
|
||||
git:
|
||||
image: woodpeckerci/plugin-git
|
||||
branch: develop
|
||||
|
||||
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:
|
||||
- develop
|
||||
# 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 main "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, cron, manual]
|
||||
branch:
|
||||
- develop
|
||||
depends_on:
|
||||
- render-site
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
# these-recap-hebdo
|
||||
|
||||

|
||||
2
_freeze/site_libs/quarto-listing/list.min.js
vendored
2
_freeze/site_libs/quarto-listing/list.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
11
_macros.tex
11
_macros.tex
|
|
@ -1,11 +0,0 @@
|
|||
\newcommand{\ELBO}[2]{\mathcal{J}(#1,#2)}
|
||||
\newcommand{\R}{\mathcal{R}}
|
||||
\newcommand{\ELBORTheta}{\ELBO{\R}{\pmb{\theta}}}
|
||||
\newcommand{\Var}{\mathbb{V}}
|
||||
\newcommand{\Esp}{\mathbb{E}}
|
||||
\newcommand{\Prob}{\mathbb{P}}
|
||||
\newcommand{\calL}{\mathcal{L}}
|
||||
\newcommand{\Normal}{\mathcal{N}}
|
||||
\DeclareMathOperator{\ilr}{ilr}
|
||||
\DeclareMathOperator{\clr}{clr}
|
||||
\DeclareMathOperator{\Cat}{Cat}
|
||||
37
_quarto.yml
37
_quarto.yml
|
|
@ -1,37 +0,0 @@
|
|||
project:
|
||||
type: website
|
||||
output-dir: public
|
||||
|
||||
toc: true
|
||||
number-sections: true
|
||||
|
||||
website:
|
||||
title: "Suivi de la thèse"
|
||||
navbar:
|
||||
left:
|
||||
- icon: journals
|
||||
href: index.qmd
|
||||
text: "Liste des semaines"
|
||||
right:
|
||||
- icon: git
|
||||
href: https://git.polarolouis.fr/polarolouis/these-recap-hebdo
|
||||
aria-label: Dépôt Git du journal
|
||||
|
||||
lang: fr
|
||||
|
||||
date: last-modified
|
||||
date-modified: last-modified
|
||||
|
||||
author:
|
||||
name: Louis Lacoste
|
||||
email: louis.lacoste@agroparistech.fr
|
||||
affiliation: MIA Paris-Saclay, INRAE, AgroParisTech, Université Paris-Saclay
|
||||
orcid: 0009-0004-0178-9821
|
||||
github: Polarolouis
|
||||
|
||||
format:
|
||||
html:
|
||||
theme: yeti
|
||||
toc: true
|
||||
html-math-method: katex
|
||||
embed-resources: false
|
||||
1770
index.html
Normal file
1770
index.html
Normal file
File diff suppressed because it is too large
Load diff
28
index.qmd
28
index.qmd
|
|
@ -1,28 +0,0 @@
|
|||
---
|
||||
title: "Journal suivi de la thèse"
|
||||
listing:
|
||||
- id: journal-these
|
||||
contents: suivi
|
||||
type: default
|
||||
sort: "date desc"
|
||||
categories: true
|
||||
page-size: 5
|
||||
- id: knowledge-base
|
||||
contents: knowledge_base
|
||||
type: default
|
||||
sort: "date desc"
|
||||
categories: true
|
||||
---
|
||||
|
||||
::: {.callout-note icon="false" collapse="true"}
|
||||
## Agenda
|
||||
<iframe src="https://calendar.google.com/calendar/embed?height=400&wkst=2&ctz=Europe%2FParis&showPrint=0&mode=AGENDA&src=NTc4ZDI5ZGIwZmFiMGZjZjk1ZWM2NjQ4OWFjYTFmYzkxNzAyMGU2ODk1YjRmMTQ1NjA1YTRlMWU0MzU3N2FkOUBncm91cC5jYWxlbmRhci5nb29nbGUuY29t&color=%234285f4" style="border:solid 1px #777" width="100%" height="400" frameborder="0" scrolling="no"></iframe>
|
||||
:::
|
||||
|
||||
## Base de connaissances et trucs en vrac
|
||||
:::{#knowledge-base}
|
||||
:::
|
||||
|
||||
## Journaux
|
||||
:::{#journal-these}
|
||||
:::
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
categories: []
|
||||
date: last-modified
|
||||
date-modified: last-modified
|
||||
619
knowledge_base/colsbm_application_reseaux_et_agri.html
Normal file
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>
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
---
|
||||
title: "Pour application du modèle colBiSBM sur données interaction PP et pratiques agricoles"
|
||||
categories: [application, agricole, graphe, collection, lbm, sbm]
|
||||
---
|
||||
{{< include /_macros.tex >}}
|
||||
|
||||
# Idée de l'application
|
||||
|
||||
En discutant avec Alizée et grâce aux ressources de la [section "Liens" données par Jean](#liens) possible d'essayer de voir l'impact sur la structure des réseaux plantes-pollinisateurs des pratiques agricoles autour des espaces de pollinisation.
|
||||
|
||||
# Point à éclaircir
|
||||
|
||||
1. Quels réseaux plantes-pollinisateurs choisir, où les trouver ? Besoin de réseaux en France pour la facilité.
|
||||
2. Faut-il utiliser les covariables seulement de manière *post-hoc* pour corréler avec le *clustering* de réseaux obtenus ?
|
||||
3. Comment encoder les covariables ?
|
||||
- Est-ce que je les mets sous forme de pourcentage dans un *buffer* (quel rayon ?) comme Jean ? Alors problèmes inhérents aux données compositionnelles mais facilité d'exécution ?
|
||||
- Quelle distance considérer pour l'impact des pratiques agricoles, distance variables par pollinisateurs en soit ? Besoin de connaissances expertes.
|
||||
- Besoin d'homogénéiser les échelles ? Ou a minima d'en choisir une ou plusieurs à considérer pour les covariables ?
|
||||
- Gestion de gros tableaux de données pas simple.
|
||||
4. **Le temps ???**
|
||||
|
||||
# Liens
|
||||
|
||||
CORINE Land Cover et extraction en R
|
||||
Très gros grain :
|
||||
<https://fr.wikipedia.org/wiki/Corine_Land_Cover> et le package de Jean pour l'extraction des *buffers* de types d'utilisation des sols :
|
||||
<https://github.com/jean-cohen/corine.land.cover.landuse.extraction>
|
||||
|
||||
Les cartes de données :
|
||||
|
||||
- Carte du Bio et des types de cultures échelle parcelle : <https://www.agencebio.org/cartobio/>
|
||||
- Échelle code postal, achat de phytosanitaires : <https://ventes-produits-phytopharmaceutiques.eaufrance.fr/>
|
||||
- Thèse de Milena Cairo, classification des parcelles selon les pratiques en pesticides : <https://theses.hal.science/tel-05038286>
|
||||
- Recensement des parcelles et du type de culture : <https://cartes.gouv.fr/rechercher-une-donnee/dataset/IGNF_RPG?redirected_from=geoservices.ign.fr>
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
\documentclass{standalone}
|
||||
|
||||
\usepackage{tikz}
|
||||
|
||||
\usetikzlibrary{positioning,shapes.arrows, arrows.meta,shapes.geometric}
|
||||
\begin{document}
|
||||
\begin{tikzpicture}
|
||||
\tikzset{
|
||||
every path/.append style = {
|
||||
arrows = ->,
|
||||
> = stealth,
|
||||
},
|
||||
every node/.append style = {
|
||||
shape = circle,
|
||||
draw = black,
|
||||
minimum size=3em
|
||||
},
|
||||
latent/.style = {
|
||||
fill = lightgray
|
||||
},
|
||||
prior/.style = {
|
||||
fill = red
|
||||
},
|
||||
moral/.style = {
|
||||
dashed,
|
||||
> = {}, % remove arrow tip
|
||||
arrows = -, % ensure no arrows
|
||||
}
|
||||
}
|
||||
|
||||
\node (y) {$Y$};
|
||||
\node[latent] (z) [above left = of y] {$Z$};
|
||||
\node[latent] (w) [above right = of y] {$W$};
|
||||
|
||||
\node[latent] (P) [above = of z] {$P$};
|
||||
\node[prior] (sigma2) [above = of P] {$\sigma^2$};
|
||||
\node[prior] (rho) [above = of w] {$\rho_{1:R}$};
|
||||
\node[prior] (alpha) [below = of y] {$\pmb{\alpha}$};
|
||||
|
||||
\path (z) edge (y);
|
||||
\path (w) edge (y);
|
||||
\path (rho) edge (w);
|
||||
\path (alpha) edge (y);
|
||||
\path (P) edge (z);
|
||||
\path (sigma2) edge (P);
|
||||
|
||||
% moral
|
||||
\path[moral] (z) edge (alpha);
|
||||
\path[moral] (w) edge (alpha);
|
||||
\path[moral] (z) edge (w);
|
||||
|
||||
\end{tikzpicture}
|
||||
|
||||
\end{document}
|
||||
816
knowledge_base/projets-phylo.html
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>
|
||||
|
|
@ -1,178 +0,0 @@
|
|||
---
|
||||
title: "Idées autour de l'inclusion de la phylogénie"
|
||||
categories: [phylogénie, graphes, lbm, sbm]
|
||||
---
|
||||
{{< include /_macros.tex >}}
|
||||
|
||||
# Contexte de l'inclusion de la phylogénie dans l'estimation de la structure des interactions
|
||||
|
||||
Dans le 3e axe de ma thèse nous souhaitons inclure de l'information phylogénétique dans l'estimation de la structure des réseaux d'interaction microbiens.
|
||||
|
||||
1. Ces réseaux se présentent sous la forme de matrice des comptages hautement rectangulaire, c'est-à-dire avec un grand nombre de microorganismes et, en comparaison, peu d'échantillons (de sols, d'aliments, de patients...). Cette haute dimensionnalité met en échec les méthodes classiques non concues pour gérer autant de noeuds (SBM). Il s'agit donc d'un **premier enjeu**
|
||||
|
||||
2. Les données de comptages de ces matrices sont compositionnelles : la profondeur de séquençage (le nombre de séquences lues) étant finie, cela implique une dépendance entre les comptages observés. Si une séquence est surexprimée par rapport aux autres, alors que l'abondance réelle des autres n'a pas changée, les comptages observés des autres séquences vont diminuer. Voir [la note sur les données compositionnelles](#note-donnees-compo).
|
||||
|
||||
::: {#note-donnees-compo .callout-note title="Données compositionelles"}
|
||||
Soit $N$ la profondeur de séquençage, $\forall s \in \{1,\dots,s\}, n_s$ le nombre réel de fois où la séquence $s$ est présente, $t = \sum_s n_s$ la somme des séquences totale. Les comptages observés $o_s$ pour la séquence $s$ sont $o_s = \dfrac{n_s}{N}$, et on a $\sum_{s} o_s = \dfrac{1}{N} \sum_{s} n_s$ par construction.
|
||||
|
||||
Et donc à pour un $S$ quelconque on a $o_S = \dfrac{t}{N} - \sum_{s, s\neq S} o_s$ et donc une contrainte sur les $o_s$.
|
||||
:::
|
||||
|
||||
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).
|
||||
|
||||
## Formalisme commun
|
||||
|
||||
Dans la suite, nous considèrerons $\mathcal{T}$ l'arbre ayant $L$ niveaux, indexés de $l = 0,\dots,L$ avec $0$ la racine commune et $L$ les feuilles de l'arbre.
|
||||
|
||||
$Y$ la matrice de bi-adjacence encodant le graphe et modélisant les interactions, de taille $n_1\times n_2$.
|
||||
|
||||
$V, X$ les matrices de covariable sur les noeuds en ligne et en colonnes de $Y$. $V$ est de taille $n_1 \times d$ et $X$ est de taille $n_2 \times p$
|
||||
|
||||
# SBM (ou LBM) Séquentiel
|
||||
|
||||
## Formalisation de l'idée
|
||||
|
||||
Ici on utilise l'arbre phylogénétique afin d'initialiser l'EM variationnel du niveau suivant.
|
||||
|
||||
Concrètement, on ajuste un LBM au niveau $l$, sur la matrice de comptage aggrégées à ce niveau $Y^l$, ce qui donne des probabilités variationnelles $\pmb{\tau}^{1,l},\pmb{\tau}^{2,l}$ qui sont de tailles respectives $n_{1,l} \times Q_{l}$ et $n_{2,l} \times R_{l}$.
|
||||
|
||||
Puis pour tout individu $u\in \text{Child}(i)$, on initialise ses probas $\widetilde{\tau}^{1,l+1}_u = \tau^{1,l}_u + \varepsilon_{u}$, avec $\varepsilon_u \sim \mathcal{N}_{Q_l}(0,\sigma^2)$ et on renormalise $\tau^{1,l+1}_{u} = \dfrac{\widetilde{\tau}^{1,l+1}_u}{\sum_q \widetilde{\tau}^{1,l+1}_{u,q}}$. On ajoute une perturbation afin de ne pas rester bloqué sur le point fixe précédent et de pouvoir donc obtenir les $\tau^{1,l+1}$ à l'issue de l'optimisation.
|
||||
|
||||
## Limites de l'approche
|
||||
|
||||
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 $L$ niveaux, au mieux elle donne un point d'initialisation intelligent mais cela semble difficilement applicable à des données réelles.
|
||||
|
||||
|
||||
# SBM et LBM avec covariables sur les noeuds
|
||||
|
||||
Ce modèle visent à intégrer des covariables de noeuds comme modificateurs des probabilités *a priori* d'appartenance aux groupes.
|
||||
Pour la phylogénie, en passant par une MDS ou une autre méthode permettant à partir des distances phylogénétique d'obtenir des "positions" ou des covariables, cela permettrait d'injecter l'a priori phylogénétique dans l'estimation de la structure du réseau.
|
||||
|
||||
## Formalisation du modèle
|
||||
|
||||
Toujours modèle LBM mais avec probas d'appartenance pour les colonnes variables:
|
||||
|
||||
\begin{align*}
|
||||
Z_i &\sim \mathcal{M}(1; \pi_1, \dots, \pi_Q), \sum_{q=1}^{Q} \pi_q = 1\\
|
||||
W_j &\sim \mathcal{M}(1; \rho_1^j, \dots, \rho_R^j), \sum_{r=1}^{R} \rho_r^j = 1\\
|
||||
Y_{i,j}&\mid Z_i = q, W_j = r \sim \mathcal{F}(\alpha_{qr})
|
||||
\end{align*}
|
||||
|
||||
Voici pour les probas pour les individus en colonne de la matrice d'adjacence :
|
||||
\begin{align*}
|
||||
\pmb{\beta}_{r}& = \begin{pmatrix}
|
||||
\beta_{r,0}\\
|
||||
\vdots\\
|
||||
\beta_{r,p}
|
||||
\end{pmatrix}, & X_{j,\bullet} = \begin{pmatrix}
|
||||
1 = x_{0,j} & x_{1,j} & \dots & x_{p,j}
|
||||
\end{pmatrix}\\
|
||||
X_{j,\bullet} \pmb{\beta}_r& = \beta_{r,0} x_{0,j} + \beta_{r,1} x_{1,j} + \dots + \beta_{r,p} x_{p,j} & \approx \log(\rho_r^j) \\
|
||||
B & = \begin{pmatrix}
|
||||
\pmb{\beta}_1 \dots \pmb{\beta}_r \dots \pmb{\beta}_R
|
||||
\end{pmatrix} & X_{j,\bullet}B \approx \log(\pmb{\rho}^j) \\
|
||||
X B & \approx \log((\pmb{\rho}^j)_{j=1,\dots,n_2}) = \log(\pmb{\Rho})\\
|
||||
\end{align*}
|
||||
avec les $\beta, B$ qui désigne donc les coefficient de la combinaison linéaire et $X$ les covariables des individus (taille $n_2\times p$, $p$ covariables).
|
||||
|
||||
Et pour les probas en lignes du LBM :
|
||||
\begin{align*}
|
||||
\pmb{\gamma}_{q}& = \begin{pmatrix}
|
||||
\gamma_{q,0}\\
|
||||
\vdots\\
|
||||
\gamma_{q,d}
|
||||
\end{pmatrix}, & V_{i,\bullet} = \begin{pmatrix}
|
||||
1 = v_{0,i} & v_{1,i} & \dots & v_{d,i}
|
||||
\end{pmatrix}\\
|
||||
V_{i,\bullet} \pmb{\gamma}_q & = \gamma_{q,0} v_{0,i} + \gamma_{q,1} v_{1,i} + \dots + \gamma_{q,d} v_{d,i} & \approx \log(\pi_q^i) \\
|
||||
\Gamma & = \begin{pmatrix}
|
||||
\gamma_1 \dots \pmb{\gamma}_q \dots \pmb{\gamma}_Q
|
||||
\end{pmatrix} & V_{i,\bullet} \Gamma \approx \log(\pmb{\pi}^i) \\
|
||||
V \Gamma & \approx \log((\pmb{\pi}^i)_{i=1,\dots,n_1}) = \log(\pmb{\Pi})
|
||||
\end{align*}
|
||||
avec les $\gamma, G$ qui désigne donc les coefficient de la combinaison linéaire et $V$ les covariables des individus (taille $n_1\times d$, $d$ covariables).
|
||||
|
||||
## Preuve de l'identifiabilité
|
||||
Soient $B,B^{\prime}$ avec $B_{\bullet,R} = B^{\prime}_{\bullet,R} = \vec{0}_{p+1}$ et $X$ de rang plein tel que $X^{\top}X$ soit inversible.
|
||||
|
||||
\begin{align*}
|
||||
&\sigma(XB) = \sigma(XB^{\prime})\\
|
||||
&\implies \exists C = \begin{pmatrix}c_1 \\ \vdots \\ c_j \\ \vdots \\ c_{n_2}\end{pmatrix} \in \mathbb{R}^{n_2}, X B = X B^{\prime} + C \pmb{1}_{R}^{\top} \\
|
||||
&\implies \exists C \in \mathbb{R}^{n_2}, (X B)_{j,r} = (X B^{\prime})_{j,r} + (C \pmb{1}_{R}^{\top})_{j,r} \\
|
||||
&\implies \exists C \in \mathbb{R}^{n_2}, \forall r\in\{1\dots,R\}, \forall j\in\{1,\dots,n_2\}, \sum_{k=1}^{p+1} x_{j,k} \beta_{k,r} = \sum_{k=1}^{p+1} x_{j,k} \beta^{\prime}_{k,r} + c_j\\
|
||||
&\implies \exists C \in \mathbb{R}^{n_2}, \forall j\in\{1,\dots,n_2\}, \sum_{k=1}^{p+1} x_{j,k} \beta_{k,R} = \sum_{k=1}^{p+1} x_{j,k} \beta^{\prime}_{k,R} + c_j \\
|
||||
&\implies \exists C \in \mathbb{R}^{n_2}, \forall j\in\{1,\dots,n_2\}, \sum_{k=1}^{p+1} x_{j,k} \times 0 = \sum_{k=1}^{p+1} x_{j,k} \times 0 + c_j \\
|
||||
&\implies \exists C \in \mathbb{R}^{n_2}, \forall j\in\{1,\dots,n_2\}, 0 = 0 + c_j \implies c_j = 0 \\
|
||||
&\implies C = \begin{pmatrix} 0 \\ \vdots \\ 0 \end{pmatrix} \text{and thus}, XB = XB^{\prime} \\
|
||||
& \implies (X^{\top} X)^{-1}X^{\top} X B = (X^{\top} X)^{-1}X^{\top} X B^{\prime} \implies B=B^{\prime}
|
||||
\end{align*}
|
||||
|
||||
## Inférence
|
||||
|
||||
Inférence variationnelle donc $\ell(Y;\pmb{\theta}) \geq \mathcal{J}(\mathcal{R},\pmb{\theta})$ avec
|
||||
|
||||
$$
|
||||
\ELBORTheta = \sum_{i = 1}^{n_1}\sum_{j=1}^{n_2}\sum_{q \in \mathcal{Q}_1} \sum_{r \in \mathcal{Q}_2} \tau_{iq}^{1} \tau_{jr}^{2} \log f(Y_{ij}; \alpha_{qr})
|
||||
+ \sum_{i=1}^{n_1} \sum_{q \in \mathcal{Q}_1} \tau_{iq}^{1} \log \pi_{\color{black}q} + \sum_{j=1}^{n_2} \sum_{r \in \mathcal{Q}_2} \tau_{jr}^{2} \log \rho_{\color{black}r} \\
|
||||
- \sum_{i=1}^{n_1} \tau_{iq}^{1} \log \tau_{iq}^{1} - \sum_{j=1}^{n_2} \tau_{jr}^{2} \log \tau_{jr}^{2}
|
||||
$$
|
||||
|
||||
Avec $\rho_r^j = \frac{\exp{\beta_r X_j}}{\sum_{s=1}^{R} \exp{\beta_s X_j}} = \sigma(\pmb{\beta} \pmb{X})_{r,j}$, où $\sigma$ désigne le softmax. Et sous la contrainte d'[identifiabilité](#preuve-de-lidentifiabilité) que l'un des $(\beta_r)_{r=1,\dots,R}$ soit nul, ici $\beta_R = 0$.
|
||||
|
||||
La partie pertinente de l'ELBO devient:
|
||||
$$
|
||||
P((\beta_r)_{r=1,\dots,R}, (X_j)_{j=1,\dots,n_2}, (\tau_{jr})_{\substack{j=1,\dots,n_2\\r=1,\dots,R}} ) = \sum_{j=1}^{n_2} \sum_{r=1}^{R} [\tau_{jr} (\beta_r X_j - \log (\sum_{s=1}^{R} \exp{\beta_s X_j}))]
|
||||
$${#eq-modele-covar-prop}
|
||||
|
||||
Et on obtient la dérivée partielle par rapport à $\beta_t$ comme:
|
||||
\begin{align*}
|
||||
\dfrac{\partial P}{\partial \beta_t}&((\beta_r)_{r=1,\dots,R}, (X_j)_{j=1,\dots,n_2}, (\tau_{jr})_{\substack{j=1,\dots,n_2\\r=1,\dots,R}} ) = \sum_{j=1}^{n_2} \biggl[ \tau_{jt} X_j - \frac{X_j \exp{\beta_t X_j}}{\sum_{s=1}^{R} \exp{\beta_s X_j}} \biggr]\\
|
||||
& = \sum_{j=1}^{n_2} \biggl[\bigl(\tau_{jt} - \sigma(\pmb{\beta} \pmb{X})_{t,j}\bigr) X_j\biggr] = \sum_{j=1}^{n_2} \biggl[\bigl(\tau_{jt} - \rho_t^j \bigr) X_j\biggr]
|
||||
\end{align*}
|
||||
|
||||
## Implémentation
|
||||
|
||||
J'ai implémenté tout ça dans un *fork* de [blockmodels](https://github.com/GrossSBM/blockmodels). Ce fork est disponible [ici](https://github.com/Polarolouis/blockmodels) et **en cours de relecture par JBL**.
|
||||
|
||||
Pour les détails techniques, j'ai ré-écrit la gestion des *memberships* en R pour passer les covariables et coefficients nécessaires aux calculs. J'ai implémenté une descente de gradient en utilisant un algorithme de type BFGS pour l'optimisation des coefficients de la combinaison linéaire. Et enfin j'ai intégré plusieurs choses dans le package R [sbm](https://github.com/GrossSBM/sbm):
|
||||
|
||||
1. [La gestion des covariables de noeuds](https://github.com/GrossSBM/sbm/tree/nodescovariates)
|
||||
2. Le support des [valeurs manquantes](https://github.com/GrossSBM/sbm/tree/feat/NAsupport)
|
||||
|
||||
## La suite
|
||||
|
||||
Maintenant, Sophie et Pierre gèrent la rédaction de vignettes et de simulations autour de ces fonctionnalités.
|
||||
|
||||
Nous attendons de voir si l'on trouve un jeu de données adaptées pour cette méthode.
|
||||
|
||||
**Limites** : Ce modèle ne permet pas le passage à l'échelle pour les gros réseaux que représentent les matrices de comptage.
|
||||
|
||||
# LBM avec dépendance latente entre les probabilités *a priori*
|
||||
|
||||
## Formalisation du modèle
|
||||
|
||||
Pierre a proposé que l'on pose une structure latente sur les $\pmb{Z}$. C'est à dire
|
||||
\begin{align*}
|
||||
& P \sim \Normal_{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} \Cat_{K} ({\ilr}^{-1}(P_i) = \pi_{1:K}^{(i)}), \\
|
||||
\forall j \in \{1,\dots,n_2\}, & W_j \overset{iid}{\sim} \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*}
|
||||
avec $\Sigma$, la matrice de variance-covariance déterminée en fonction de l'apparentement (phylogénétique) des noeuds.
|
||||
|
||||

|
||||
|
||||
# Échantillonnage selon l'arbre
|
||||
|
||||
Afin d'affronter le coût computationnel que représente l'ajustement
|
||||
|
||||
# *Latent Position Model* (LPM) avec phylogénie des représentations latentes selon la phylogénie
|
||||
|
||||
## Classique
|
||||
|
||||
## *Deep* LPM
|
||||
|
||||
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.
|
||||
**Quel est le lien avec le VGAE ?**
|
||||
**Avantage de passage à l'échelle??**
|
||||
657
knowledge_base/vae_wasserstein_gromov.html
Normal file
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>
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
---
|
||||
title: "Variational Graph AutoEncoder with Wasserstein"
|
||||
categories: [convolution, machine learning, vae, graphes]
|
||||
---
|
||||
{{< include /_macros.tex >}}
|
||||
|
||||
Suite à la discussion avec Julian j'inscris ce que l'on s'est dit.
|
||||
|
||||
# Idée principale
|
||||
|
||||
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.
|
||||
|
||||
**Objectif** : apprendre un même encodeur et donc un espace latent structuré pour clusteriser une collection de réseaux sur la base de la structure.
|
||||
*Sous-objectif* : pouvoir prendre en compte des covariables (Fused Wasserstein ?).
|
||||
|
||||
Principe du VAE:
|
||||
|
||||
Soit $Y$ une matrice d'adjacence (ou de bi-adjacence pour les graphes bipartites), $X$ une matrice de covariables.
|
||||
|
||||
Soit $D_1$ la matrice des degrés en ligne, $D_2$ la matrice des degrés en colonne.
|
||||
|
||||
$\widetilde{Y} = D_1^{-1/2} Y D_2^{-1/2}$
|
||||
|
||||
**à compléter**
|
||||
|
||||
# Apprentissage contrastif
|
||||
|
||||
Puisque l'on voudrait marquer la séparation entre différentes structures de réseaux, on pourrait vouloir faire de l'[apprentissage contrastif pour V(G)AE](https://u9534056.medium.com/an-overview-of-contrastive-learning-fa520f5f2c23).
|
||||
|
||||
## Hypersphère méga cool
|
||||
|
||||
Il faut creuser : forcer les contraintes des *embeddings* à 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 :
|
||||
|
||||
- position latente bornée : stabilisation de l'apprentissage et évite l'explosion dans une ou plusieurs directions.
|
||||
- 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.
|
||||
|
||||
[Première source](https://www.envisioning.com/vocab/hyperspherical-representation-learning)
|
||||
|
||||
Le softmax est remplacée par la loi de von Mises-Fisher. D'après [Wikipédia](https://fr.wikipedia.org/wiki/Loi_de_von_Mises-Fisher#Relation_avec_la_loi_normale) équivalent de la loi normale multivariée à covariance isotrope restreinte à l'hypersphère unité.
|
||||
38
listings.json
Normal file
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
1073
search.json
Normal file
File diff suppressed because one or more lines are too long
12
site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css
vendored
Normal file
12
site_libs/bootstrap/bootstrap-c3e95e02e727cc1eb63534e29640e14d.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
2078
site_libs/bootstrap/bootstrap-icons.css
vendored
Normal file
2078
site_libs/bootstrap/bootstrap-icons.css
vendored
Normal file
File diff suppressed because it is too large
Load diff
BIN
site_libs/bootstrap/bootstrap-icons.woff
Normal file
BIN
site_libs/bootstrap/bootstrap-icons.woff
Normal file
Binary file not shown.
7
site_libs/bootstrap/bootstrap.min.js
vendored
Normal file
7
site_libs/bootstrap/bootstrap.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
site_libs/quarto-contrib/glightbox/glightbox.min.css
vendored
Normal file
1
site_libs/quarto-contrib/glightbox/glightbox.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
site_libs/quarto-contrib/glightbox/glightbox.min.js
vendored
Normal file
1
site_libs/quarto-contrib/glightbox/glightbox.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
26
site_libs/quarto-contrib/glightbox/lightbox.css
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
9
site_libs/quarto-html/anchor.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
6
site_libs/quarto-html/popper.min.js
vendored
Normal file
6
site_libs/quarto-html/popper.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -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
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
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
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-html/tippy.umd.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
site_libs/quarto-listing/list.min.js
vendored
Normal file
2
site_libs/quarto-listing/list.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -2,6 +2,8 @@ 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);
|
||||
|
|
@ -15,7 +17,9 @@ window["quarto-listing-loaded"] = () => {
|
|||
if (hash) {
|
||||
// If there is a category, switch to that
|
||||
if (hash.category) {
|
||||
activateCategory(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"]);
|
||||
|
|
@ -58,7 +62,10 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
|
|||
);
|
||||
|
||||
for (const categoryEl of categoryEls) {
|
||||
const category = categoryEl.getAttribute("data-category");
|
||||
// category needs to support non ASCII characters
|
||||
const category = decodeURIComponent(
|
||||
atob(categoryEl.getAttribute("data-category"))
|
||||
);
|
||||
categoryEl.onclick = () => {
|
||||
activateCategory(category);
|
||||
setCategoryHash(category);
|
||||
|
|
@ -208,7 +215,9 @@ function activateCategory(category) {
|
|||
|
||||
// Activate this category
|
||||
const categoryEl = window.document.querySelector(
|
||||
`.quarto-listing-category .category[data-category='${category}'`
|
||||
`.quarto-listing-category .category[data-category='${btoa(
|
||||
encodeURIComponent(category)
|
||||
)}']`
|
||||
);
|
||||
if (categoryEl) {
|
||||
categoryEl.classList.add("active");
|
||||
|
|
@ -231,7 +240,9 @@ function filterListingCategory(category) {
|
|||
list.filter(function (item) {
|
||||
const itemValues = item.values();
|
||||
if (itemValues.categories !== null) {
|
||||
const categories = itemValues.categories.split(",");
|
||||
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
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
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
3
site_libs/quarto-search/autocomplete.umd.js
Normal file
File diff suppressed because one or more lines are too long
9
site_libs/quarto-search/fuse.min.js
vendored
Normal file
9
site_libs/quarto-search/fuse.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1290
site_libs/quarto-search/quarto-search.js
Normal file
1290
site_libs/quarto-search/quarto-search.js
Normal file
File diff suppressed because it is too large
Load diff
755
suivi/2025-13/2025-13.html
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
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
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
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
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 281 KiB |
808
suivi/2025-17/2025-17.html
Normal file
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,125 +0,0 @@
|
|||
---
|
||||
title: "Bilan semaine 17 2025 : 24 avril - 25 avril"
|
||||
categories:
|
||||
- colBiSBM
|
||||
|
||||
date: 25 04 2025
|
||||
---
|
||||
|
||||
## 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
|
||||
|
||||

|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 264 KiB |
777
suivi/2025-18/2025-18.html
Normal file
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>
|
||||
|
|
@ -1,95 +0,0 @@
|
|||
---
|
||||
title: "Bilan semaine 18 2025 : 28 avril - 2 mai"
|
||||
categories: [colBiSBM, inférence]
|
||||
date: 2025 05 02
|
||||
---
|
||||
|
||||
## A faire
|
||||
|
||||
### Stratégie suite : Inférence
|
||||
|
||||
- Lire biblio fournie Julie, Inférence de réseaux : co-occurence
|
||||
|
||||
- Papier pour comprendre données
|
||||
|
||||
- pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU ...)
|
||||
|
||||
> Combine networks at different taxonomic levels
|
||||
|
||||
- Inférence + GREMLINS
|
||||
|
||||
### 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.
|
||||
|
||||
- Intégrer les retours de Sophie
|
||||
|
||||
### Simulations article
|
||||
|
||||
- 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*.
|
||||
Car densités déséquilibrées.
|
||||
|
||||

|
||||
|
||||
### 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
|
||||
|
||||
### JdS
|
||||
|
||||
- colDEM CSE
|
||||
|
||||
|
||||
### Clustering exhaustif Baldock
|
||||
|
||||
- Le clustering de toutes les 52 partitions s'est fait en 5h30 ! (Mémoïsation)
|
||||
|
||||
- Pour iid la meilleure partition avec $BICL=-9466.911$ contre $BICL_{algo} = -9466.873 \pm 0.02205$ trouvé avec l'algo
|
||||

|
||||
|
||||
- Pour $\pi\rho$ la meilleure partition avec $BICL = -9497.92$ contre $BICL_{algo} =-9497.92 \pm 0.00009$
|
||||

|
||||
|
||||
## 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
|
||||
|
||||
- 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
|
||||
|
||||
### 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 !
|
||||
|
||||
### Simulations article
|
||||
|
||||
- Relancer simulations de clustering avec $M = 30$ où $M_i = 10, \forall i$. 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 $M = 30$ avec $M_1 = M_2 = M_3 = 10$.
|
||||
856
suivi/2025-19/2025-19.html
Normal file
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>
|
||||
|
|
@ -1,156 +0,0 @@
|
|||
---
|
||||
title: "Bilan semaine 19 2025 : 5 mai - 9 mai"
|
||||
categories: [colBiSBM, inférence]
|
||||
date: 2025 05 09
|
||||
---
|
||||
|
||||
## TOP PRIORITÉ
|
||||
|
||||
- Débugguer les simulations :
|
||||
|
||||
- Clustering : Relancer simulations de clustering avec $M = 30$ où $M_i = 10, \forall i$. 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 $M = 30$ avec $M_1 = M_2 = M_3 = 10$. ~~-> BUG, dois creuser mais juste des problèmes techniques.~~
|
||||
Le bug venait probablement d'une inadéquation entre la version de *future* et *future.callr*, les résultats temporaires sont encourageant.
|
||||
|
||||
- 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.
|
||||
|
||||
### Applications
|
||||
|
||||
- Kmeans sur la densité des réseaux subdoré pour pré-partitionner et *clusteriser*.
|
||||
Car densités déséquilibrées.
|
||||
|
||||
:::{#ref-kmeans-vae}
|
||||
|
||||
- Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur l'espace latent
|
||||
J'ai commencé à regarder un peu
|
||||
|
||||
:::
|
||||
|
||||
### Présentations LSD, JdS et ML@Aussois
|
||||
|
||||
- ~~PRÉSENTATION JDS (LSD), durée introuvable, adapter en anglais les slides~~ et voir avec PB et SD.
|
||||
- Quel plan ?
|
||||
- Quels résultats ? Baldock, Traveset ... (sub-Doré)
|
||||
|
||||
|
||||
### Inférence et microbes
|
||||
|
||||
- Lire Papiers compositional data (Aitchison et al. intro)
|
||||
- Se renseigner techniques d'inférence de réseaux :
|
||||
- covariance (base corrélation et seuil)
|
||||
- GraphicalLASSO
|
||||
- Co-occurence
|
||||
- Lire article multi-niveaux Saint-Clair
|
||||
|
||||
## A discuter
|
||||
|
||||
- Voir pour TT période du 11 au 14 août
|
||||
- Voir pour date CSI car congés avec parents prévu du 29/08 au 12/09.
|
||||
|
||||
|
||||
## A faire
|
||||
|
||||
### Inférence
|
||||
|
||||
- Papier pour comprendre données
|
||||
- ~~Faust et al.~~
|
||||
- Abdill et al.
|
||||
- Bashan et al.
|
||||
|
||||
- pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU ...)
|
||||
|
||||
> Combine networks at different taxonomic levels
|
||||
|
||||
- Inférence + GREMLINS
|
||||
|
||||
### Rédaction article
|
||||
|
||||
- Relire intro St Clair
|
||||
- S'inspirer structure pour mon intro
|
||||
- Trouver biblio intro
|
||||
- Rédiger l'intro
|
||||
- Dire résultats nettement meilleurs et variabilités inférieures.
|
||||
|
||||
|
||||
## J'ai fait
|
||||
|
||||
### CSI (en attente contacts PB et SD)
|
||||
|
||||
- Est-ce à moi de contacter Saint-Clair et Sonia/Elisa ? *Pierre et Sophie gèrent*
|
||||
- Pierre Gérard a dit oui, il attend les détails
|
||||
- Quand : *fin juin début juillet*
|
||||
- Liste potentielle :
|
||||
- (Saint-Clair)
|
||||
- Mahendra
|
||||
- Elisa/Sonia
|
||||
- Pierre Gérard
|
||||
|
||||
### Finist'R
|
||||
|
||||
- S'inscrire
|
||||
|
||||
### ML at Aussois
|
||||
|
||||
- S'inscrire avec abstract court
|
||||
- Demander la bourse
|
||||
- Détails d'inscriptions : *Je demande une bourse et je m'inscris avec la demande de bourse, Pierre et Sophie font la lettre de recommendation*
|
||||
|
||||
### Présentation
|
||||
|
||||
- J'ai traduis en anglais ma présentation : [Lien](https://forgemia.inra.fr/louis.lacoste/presentation-colbisbm/-/raw/main/presentation.pdf?ref_type=heads)
|
||||
|
||||
## A continuer
|
||||
|
||||
### 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 !
|
||||
|
||||
### Axe inférence
|
||||
|
||||
- Lire biblio fournie Julie, Inférence de réseaux : co-occurence
|
||||
|
||||
> J'ai lu Faust et al.
|
||||
> Je lis Abdill et al.
|
||||
|
||||
## Repoussés ou abandonnés
|
||||
|
||||
- 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.
|
||||
|
||||
> Je n'arrive pas à comprendre les erreurs qui arrivent
|
||||
|
||||
- Lire Biological Networks - François Képès
|
||||
|
||||
- Regarder les applications pour les collections de réseaux recommender system *Pas pertinents et trop gros*
|
||||
|
||||
:::{#lst-reco-systems lst-cap="Recommender systems data"}
|
||||
Par exemple :
|
||||
|
||||
- [Liste de recommendation data](https://cseweb.ucsd.edu/~jmcauley/datasets.html)
|
||||
:::
|
||||
|
||||
|
||||
### Papier plus multi-applications
|
||||
- Données d'Elisa herbivore ?
|
||||
- Données urbanisations ?
|
||||
|
||||
### 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**.
|
||||
|
||||
### Simulations article
|
||||
|
||||
- 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.
|
||||
868
suivi/2025-20/2025-20.html
Normal file
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>
|
||||
|
|
@ -1,178 +0,0 @@
|
|||
---
|
||||
title: "Bilan semaine 20 2025 : 12 mai - 16 mai"
|
||||
categories: [colBiSBM, inférence, GNN]
|
||||
date: 2025 05 16
|
||||
---
|
||||
|
||||
## TOP PRIORITÉ
|
||||
|
||||
- Pour clustering de collections sur données réelles :
|
||||
- ~~Relâcher la pénalité pour les coupes pour proposer modèles.~~
|
||||
|
||||
→ L'intuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs $(Q_1,Q_2)$.
|
||||
- Faire le `hclust` avec diverses distances et voir si les coupes proposées diffèrent sensiblement
|
||||
- Si plusieurs clustering possibles les tester et sélectionner le
|
||||
meilleur
|
||||
- Ré-ajuster les bonnes partitions.
|
||||
- Données simulées tester diverses distances.
|
||||
|
||||
|
||||
- Dé-bugger les simulations :
|
||||
|
||||
- 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.
|
||||
|
||||
- Vérifier si problème de version tidyverse pour vapply sur l'**inférence**.
|
||||
|
||||
- Si problème de parallélisation vient de pb de version *future.callr* le signaler à MIGALE.
|
||||
|
||||
### Présentations LSD, JdS et ML@Aussois
|
||||
|
||||
- ~~PRÉSENTATION JDS (LSD), durée introuvable, adapter en anglais les slides~~ et voir avec PB et SD.
|
||||
- Quel plan ?
|
||||
- Quels résultats ? Baldock, Traveset ... (sub-Doré)
|
||||
- Pas la peine de préciser l'algo de clustering
|
||||
- Indiquer sur une slide le problème de support pour $\pi\rho$ à faire s'il y a
|
||||
le temps.
|
||||
- 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.
|
||||
|
||||
### Applications
|
||||
|
||||
- Kmeans sur la densité des réseaux subdoré pour pré-partitionner et *clusteriser*.
|
||||
Car densités déséquilibrées.
|
||||
|
||||
:::{#ref-kmeans-vae}
|
||||
|
||||
- Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur l'espace latent
|
||||
J'ai commencé à regarder un peu
|
||||
|
||||
:::
|
||||
|
||||
### Inférence et microbes
|
||||
|
||||
- Lancer *colBiSBM* sur $OTU\times Sample$
|
||||
- Se renseigner techniques d'inférence de réseaux :
|
||||
- covariance (base corrélation et seuil)
|
||||
- GraphicalLASSO
|
||||
- Co-occurence
|
||||
- Lancer *colSBM* sur $OTU\times OTU$
|
||||
- Creuser [TabNet](https://raw.githubusercontent.com/cregouby/R-toulouse-tabnet/main/Tabnet_RR2023_fr_pdf.pdf) de Christophe Regouby et les [exercices](https://github.com/cregouby/Tutoriel_torch)
|
||||
- Regarder **SPARTA** Rennes
|
||||
- Lire Papiers compositional data (Aitchison et al. intro)
|
||||
- Lire article multi-niveaux Saint-Clair
|
||||
|
||||
## A discuter
|
||||
|
||||
## A faire
|
||||
|
||||
### Inférence
|
||||
|
||||
- Papier pour comprendre données
|
||||
- ~~Faust et al.~~
|
||||
- Abdill et al.
|
||||
- Bashan et al.
|
||||
|
||||
- pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU ...)
|
||||
|
||||
> Combine networks at different taxonomic levels
|
||||
|
||||
- Inférence + GREMLINS
|
||||
|
||||
### Rédaction article
|
||||
|
||||
- Relire intro St Clair
|
||||
- S'inspirer structure pour mon intro
|
||||
- Trouver biblio intro
|
||||
- Rédiger l'intro
|
||||
- Dire résultats nettement meilleurs et variabilités inférieures.
|
||||
|
||||
|
||||
## J'ai fait
|
||||
|
||||
- Dé-bugger les simulations :
|
||||
|
||||
- Clustering : Relancer simulations de clustering avec $M = 30$ où $M_i = 10, \forall i$. 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 $M = 30$ avec $M_1 = M_2 = M_3 = 10$. ~~-> BUG, dois creuser mais juste des problèmes techniques.~~
|
||||
Le bug venait probablement d'une inadéquation entre la version de *future* et *future.callr*, les résultats temporaires sont encourageants.
|
||||
**J'ai mis les résultats dans l'article**.
|
||||
|
||||
### Présentations LSD, JdS et ML@Aussois
|
||||
|
||||
- ~~PRÉSENTATION JDS (LSD), durée introuvable, adapter en anglais les slides~~ et voir avec PB et SD.
|
||||
- Quel plan ?
|
||||
- Quels résultats ? Baldock, Traveset ... (sub-Doré)
|
||||
|
||||
- Mettre le détails des formules et des algos pour VE et sélection de modèle en
|
||||
annexe.
|
||||
- Préciser simplement que l'on utilise un algo VE et un critère type BIC.
|
||||
|
||||
### VGAE
|
||||
|
||||
- ~~Dé-bugger pourquoi `BipartiteInnerProductDecoder.forward() -> NaN`~~ ->
|
||||
**C'était parce que les features en entrée n'était pas normalisée par les
|
||||
couches de convolutions**. Les meilleurs résultats d'AUC et de précisions que
|
||||
j'obtiens par VGAE sont autour de 0.80.
|
||||
|
||||
### Inférence et microbes
|
||||
|
||||
- Human Gut Compendium télécharger et préparé les données. Mises au format
|
||||
`edgelist` et liste de matrices et extrait les infos supplémentaires.
|
||||
→ trop lourd en RAM pour tourner sur machine perso (optim colSBM...)
|
||||
## A continuer
|
||||
|
||||
### 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 !
|
||||
|
||||
### Axe inférence
|
||||
|
||||
- Lire biblio fournie Julie, Inférence de réseaux : co-occurence
|
||||
|
||||
> J'ai lu Faust et al.
|
||||
> Je lis Abdill et al.
|
||||
|
||||
## Repoussés ou abandonnés
|
||||
:::{.callout-note collapse="true"}
|
||||
## Déplier pour voir
|
||||
- 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.
|
||||
|
||||
> Je n'arrive pas à comprendre les erreurs qui arrivent
|
||||
|
||||
- Lire Biological Networks - François Képès
|
||||
|
||||
- Regarder les applications pour les collections de réseaux recommender system *Pas pertinents et trop gros*
|
||||
|
||||
:::{#lst-reco-systems lst-cap="Recommender systems data"}
|
||||
Par exemple :
|
||||
|
||||
- [Liste de recommendation data](https://cseweb.ucsd.edu/~jmcauley/datasets.html)
|
||||
:::
|
||||
|
||||
|
||||
### Papier plus multi-applications
|
||||
- Données d'Elisa herbivore ?
|
||||
- Données urbanisations ?
|
||||
|
||||
### 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**.
|
||||
|
||||
### Simulations article
|
||||
|
||||
- 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.
|
||||
:::
|
||||
845
suivi/2025-21/2025-21.html
Normal file
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>
|
||||
|
|
@ -1,154 +0,0 @@
|
|||
---
|
||||
title: "Bilan semaine 21 2025 : 26 mai - 30 mai"
|
||||
categories: [colBiSBM, inférence, GNN]
|
||||
date: 2025 05 23
|
||||
---
|
||||
|
||||
## TOP PRIORITÉ
|
||||
|
||||
- ✅ Corriger pour les simus dans l'article : écrire $N = \#\text{ de répétitions}$
|
||||
- Pour clustering de collections sur données réelles :
|
||||
→ L'intuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs $(Q_1,Q_2)$.
|
||||
- Faire le `hclust` avec diverses distances et voir si les coupes proposées diffèrent sensiblement
|
||||
- Si plusieurs clustering possibles les tester et sélectionner le
|
||||
meilleur
|
||||
- Ré-ajuster les bonnes partitions.
|
||||
- Idée de Sophie : alterner descendant et ascendant → prometteur aussi
|
||||
- Pour les deux propositions données simulées tester diverses distances.
|
||||
|
||||
|
||||
- Dé-bugger les simulations :
|
||||
|
||||
- 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.
|
||||
|
||||
- Vérifier si problème de version tidyverse pour vapply sur l'**inférence**.
|
||||
|
||||
- Si problème de parallélisation vient de pb de version *future.callr* le signaler à MIGALE.
|
||||
|
||||
### Présentations LSD, JdS et ML@Aussois
|
||||
|
||||
- ✅ 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
|
||||
- ✅ 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é)
|
||||
- ✅ Sur slide méthodes différencier métriques micro et macro et dire oralement que nous méso
|
||||
- ❎ Indiquer sur une slide le problème de support pour $\pi\rho$ à faire s'il y a
|
||||
le temps.
|
||||
- ✅ 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
|
||||
- ✅ Intégrer les retours de Sophie
|
||||
- Attente retours Pierre
|
||||
|
||||
### Applications
|
||||
|
||||
- Kmeans sur la densité des réseaux subdoré pour pré-partitionner et *clusteriser*.
|
||||
Car densités déséquilibrées.
|
||||
|
||||
:::{#ref-kmeans-vae}
|
||||
|
||||
- Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur l'espace latent
|
||||
J'ai commencé à regarder un peu
|
||||
|
||||
:::
|
||||
|
||||
- Comparer les perfs du VAE sur Baldock avec colBiSBM par exemple
|
||||
|
||||
### Inférence et microbes
|
||||
|
||||
- Lancer *colBiSBM* sur $OTU\times Sample$ → problème du chargement en mémoire des données à voir
|
||||
- Se renseigner techniques d'inférence de réseaux :
|
||||
- covariance (base corrélation et seuil)
|
||||
- GraphicalLASSO
|
||||
- Co-occurence
|
||||
- Lancer *colSBM* sur $OTU\times OTU$
|
||||
- Creuser [TabNet](https://raw.githubusercontent.com/cregouby/R-toulouse-tabnet/main/Tabnet_RR2023_fr_pdf.pdf) de Christophe Regouby et les [exercices](https://github.com/cregouby/Tutoriel_torch)
|
||||
- Regarder **SPARTA** Rennes
|
||||
- Lire Papiers compositional data (Aitchison et al. intro)
|
||||
- Lire article multi-niveaux Saint-Clair
|
||||
- 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)
|
||||
- Ecrire et étudier les modèles pour différents niveaux taxonomiques.
|
||||
\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*}
|
||||
|
||||
## A discuter
|
||||
|
||||
## A faire
|
||||
|
||||
### Inférence
|
||||
|
||||
- Papier pour comprendre données
|
||||
- ~~Faust et al.~~
|
||||
- Abdill et al.
|
||||
- Bashan et al.
|
||||
|
||||
- pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU ...)
|
||||
|
||||
> Combine networks at different taxonomic levels
|
||||
|
||||
- Inférence + GREMLINS
|
||||
|
||||
### Rédaction article
|
||||
|
||||
- Relire intro St Clair
|
||||
- S'inspirer structure pour mon intro
|
||||
- Trouver biblio intro
|
||||
- Rédiger l'intro
|
||||
- Dire résultats nettement meilleurs et variabilités inférieures.
|
||||
|
||||
## A continuer
|
||||
|
||||
### 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 !
|
||||
|
||||
### Axe inférence
|
||||
|
||||
- Lire biblio fournie Julie, Inférence de réseaux : co-occurence
|
||||
|
||||
> J'ai lu Faust et al.
|
||||
> Je lis Abdill et al.
|
||||
|
||||
## Repoussés ou abandonnés
|
||||
:::{.callout-note collapse="true"}
|
||||
## Déplier pour voir
|
||||
- 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.
|
||||
|
||||
> Je n'arrive pas à comprendre les erreurs qui arrivent
|
||||
|
||||
- Lire Biological Networks - François Képès
|
||||
|
||||
- Regarder les applications pour les collections de réseaux recommender system *Pas pertinents et trop gros*
|
||||
|
||||
:::{#lst-reco-systems lst-cap="Recommender systems data"}
|
||||
Par exemple :
|
||||
|
||||
- [Liste de recommendation data](https://cseweb.ucsd.edu/~jmcauley/datasets.html)
|
||||
:::
|
||||
|
||||
|
||||
### Papier plus multi-applications
|
||||
- Données d'Elisa herbivore ?
|
||||
- Données urbanisations ?
|
||||
|
||||
### 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**.
|
||||
|
||||
### Simulations article
|
||||
|
||||
- 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.
|
||||
:::
|
||||
838
suivi/2025-22/2025-22.html
Normal file
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>
|
||||
|
|
@ -1,146 +0,0 @@
|
|||
---
|
||||
title: "Bilan semaine 22 2025 : 26 mai - 30 mai"
|
||||
categories: [colBiSBM, inférence, GNN]
|
||||
date: 2025 05 28
|
||||
---
|
||||
|
||||
## TOP PRIORITÉ
|
||||
|
||||
- Pour clustering de collections sur données réelles :
|
||||
→ L'intuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs $(Q_1,Q_2)$.
|
||||
- Faire le `hclust` avec diverses distances et voir si les coupes proposées diffèrent sensiblement
|
||||
- Si plusieurs clustering possibles les tester et sélectionner le
|
||||
meilleur
|
||||
- Ré-ajuster les bonnes partitions.
|
||||
- Idée de Sophie : alterner descendant et ascendant → prometteur aussi
|
||||
- Pour les deux propositions données simulées tester diverses distances.
|
||||
|
||||
|
||||
- Dé-bugger les simulations :
|
||||
|
||||
- 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.
|
||||
|
||||
- Vérifier si problème de version tidyverse pour vapply sur l'**inférence**.
|
||||
|
||||
- Si problème de parallélisation vient de pb de version *future.callr* le signaler à MIGALE.
|
||||
|
||||
### Présentations LSD, JdS et ML@Aussois
|
||||
|
||||
- Attente retours Pierre
|
||||
|
||||
|
||||
### Applications
|
||||
|
||||
- Kmeans sur la densité des réseaux subdoré pour pré-partitionner et *clusteriser*.
|
||||
Car densités déséquilibrées.
|
||||
|
||||
:::{#ref-kmeans-vae}
|
||||
|
||||
- Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur l'espace latent
|
||||
J'ai commencé à regarder un peu
|
||||
|
||||
:::
|
||||
|
||||
- Comparer les perfs du VAE sur Baldock avec colBiSBM par exemple
|
||||
|
||||
### Inférence et microbes
|
||||
|
||||
- Lancer *colBiSBM* sur $OTU\times Sample$ → problème du chargement en mémoire des données à voir
|
||||
- Se renseigner techniques d'inférence de réseaux :
|
||||
- covariance (base corrélation et seuil)
|
||||
- GraphicalLASSO
|
||||
- Co-occurence
|
||||
- Lancer *colSBM* sur $OTU\times OTU$
|
||||
- Creuser [TabNet](https://raw.githubusercontent.com/cregouby/R-toulouse-tabnet/main/Tabnet_RR2023_fr_pdf.pdf) de Christophe Regouby et les [exercices](https://github.com/cregouby/Tutoriel_torch)
|
||||
- Regarder **SPARTA** Rennes
|
||||
- Lire Papiers compositional data (Aitchison et al. intro)
|
||||
- Lire article multi-niveaux Saint-Clair
|
||||
- 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)
|
||||
- Ecrire et étudier les modèles pour différents niveaux taxonomiques.
|
||||
\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*}
|
||||
|
||||
## A discuter
|
||||
|
||||
## A faire
|
||||
|
||||
### Inférence
|
||||
|
||||
- Papier pour comprendre données
|
||||
- ~~Faust et al.~~
|
||||
- Abdill et al.
|
||||
- Bashan et al.
|
||||
|
||||
- pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU ...)
|
||||
|
||||
> Combine networks at different taxonomic levels
|
||||
|
||||
- Inférence + GREMLINS
|
||||
|
||||
### Rédaction article
|
||||
|
||||
- Relire intro St Clair
|
||||
- S'inspirer structure pour mon intro
|
||||
- Trouver biblio intro
|
||||
- Rédiger l'intro
|
||||
- Dire résultats nettement meilleurs et variabilités inférieures.
|
||||
|
||||
|
||||
## A continuer
|
||||
|
||||
### 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 !
|
||||
|
||||
### Axe inférence
|
||||
|
||||
- Lire biblio fournie Julie, Inférence de réseaux : co-occurence
|
||||
|
||||
> J'ai lu Faust et al.
|
||||
> Je lis Abdill et al.
|
||||
|
||||
## Repoussés ou abandonnés
|
||||
:::{.callout-note collapse="true"}
|
||||
## Déplier pour voir
|
||||
- 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.
|
||||
|
||||
> Je n'arrive pas à comprendre les erreurs qui arrivent
|
||||
|
||||
- Lire Biological Networks - François Képès
|
||||
|
||||
- Regarder les applications pour les collections de réseaux recommender system *Pas pertinents et trop gros*
|
||||
|
||||
:::{#lst-reco-systems lst-cap="Recommender systems data"}
|
||||
Par exemple :
|
||||
|
||||
- [Liste de recommendation data](https://cseweb.ucsd.edu/~jmcauley/datasets.html)
|
||||
:::
|
||||
|
||||
|
||||
### Papier plus multi-applications
|
||||
- Données d'Elisa herbivore ?
|
||||
- Données urbanisations ?
|
||||
|
||||
### 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**.
|
||||
|
||||
### Simulations article
|
||||
|
||||
- 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.
|
||||
:::
|
||||
940
suivi/2025-24/2025-24.html
Normal file
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>
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
---
|
||||
title: "Bilan semaine 24 2025 : 10 juin - 13 juin"
|
||||
categories: [colBiSBM, inférence, GNN]
|
||||
date: 2025 06 13
|
||||
bibliography: references.bib
|
||||
---
|
||||
|
||||
## TODO List
|
||||
- ✅ Préparer la séance intro à Git pour le 13 juin. **La séance s'est très bien passée**
|
||||
- Pour clustering de collections sur données réelles :
|
||||
→ L'intuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs $(Q_1,Q_2)$.
|
||||
- Faire le `hclust` avec diverses distances et voir si les coupes proposées diffèrent sensiblement
|
||||
- Si plusieurs clustering possibles les tester et sélectionner le
|
||||
meilleur
|
||||
- Ré-ajuster les bonnes partitions.
|
||||
- ✅ C'est bon j'ai une fonction qui tourne, mais lentement ⌛
|
||||
- ⏳Simulations en train de tourner
|
||||
- ❗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 *iid*
|
||||
- ✅ 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.
|
||||
|
||||
|
||||
✅ 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é
|
||||
|
||||

|
||||
|
||||
:::{layout-ncol="2"}
|
||||

|
||||
|
||||

|
||||
:::
|
||||
|
||||
- Pour les deux propositions données simulées tester diverses distances.
|
||||
|
||||
|
||||
- Dé-bugger les simulations :
|
||||
|
||||
- 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.
|
||||
|
||||
- Vérifier si problème de version tidyverse pour vapply sur l'**inférence**.
|
||||
|
||||
- Si problème de parallélisation vient de pb de version *future.callr* le signaler à MIGALE.
|
||||
|
||||
- ✅ Réparé mauvais placement des légendes, des valeurs etc.
|
||||
|
||||
### Applications
|
||||
|
||||
- Kmeans sur la densité des réseaux subdoré pour pré-partitionner et *clusteriser*.
|
||||
Car densités déséquilibrées.
|
||||
|
||||
:::{#ref-kmeans-vae}
|
||||
|
||||
- Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur l'espace latent
|
||||
J'ai commencé à regarder un peu
|
||||
|
||||
:::
|
||||
|
||||
- Comparer les perfs du VAE sur Baldock avec colBiSBM par exemple
|
||||
|
||||
### Inférence et microbes
|
||||
|
||||
- Lancer *colBiSBM* sur $OTU\times Sample$ → problème du chargement en mémoire des données à voir
|
||||
- Se renseigner techniques d'inférence de réseaux :
|
||||
- covariance (base corrélation et seuil)
|
||||
- GraphicalLASSO
|
||||
- Co-occurence
|
||||
- Lancer *colSBM* sur $OTU\times OTU$
|
||||
- Creuser [TabNet](https://raw.githubusercontent.com/cregouby/R-toulouse-tabnet/main/Tabnet_RR2023_fr_pdf.pdf) de Christophe Regouby et les [exercices](https://github.com/cregouby/Tutoriel_torch)
|
||||
- Regarder **SPARTA** Rennes
|
||||
- Lire Papiers compositional data (Aitchison et al. intro)
|
||||
- Lire article multi-niveaux Saint-Clair
|
||||
- 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)
|
||||
- Ecrire et étudier les modèles pour différents niveaux taxonomiques.
|
||||
\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*}
|
||||
|
||||
## Lecture en cours
|
||||
|
||||
### OT
|
||||
- @mazeletUnsupervisedLearningOptimal Intéressant pour le transport optimal entre graphes de tailles différentes
|
||||
- @nennaLecture2Entropic Pour comprendre le problème d'OT régularisé pour l'entropie.
|
||||
|
||||
## A discuter
|
||||
|
||||
### Inférence
|
||||
|
||||
- Papier pour comprendre données
|
||||
- ~~Faust et al.~~
|
||||
- Abdill et al.
|
||||
- Bashan et al.
|
||||
|
||||
- pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU ...)
|
||||
|
||||
> Combine networks at different taxonomic levels
|
||||
|
||||
- Inférence + GREMLINS
|
||||
|
||||
### Rédaction article
|
||||
|
||||
- Relire intro St Clair
|
||||
- S'inspirer structure pour mon intro
|
||||
- Trouver biblio intro
|
||||
- Rédiger l'intro
|
||||
- Dire résultats nettement meilleurs et variabilités inférieures.
|
||||
|
||||
|
||||
## A continuer
|
||||
|
||||
### 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 !
|
||||
|
||||
### Axe inférence
|
||||
|
||||
- Lire biblio fournie Julie, Inférence de réseaux : co-occurence
|
||||
|
||||
> J'ai lu Faust et al.
|
||||
> Je lis Abdill et al.
|
||||
|
||||
## Repoussés ou abandonnés
|
||||
:::{.callout-note collapse="true"}
|
||||
## Déplier pour voir
|
||||
- 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.
|
||||
|
||||
> Je n'arrive pas à comprendre les erreurs qui arrivent
|
||||
|
||||
- Lire Biological Networks - François Képès
|
||||
|
||||
- Regarder les applications pour les collections de réseaux recommender system *Pas pertinents et trop gros*
|
||||
|
||||
:::{#lst-reco-systems lst-cap="Recommender systems data"}
|
||||
Par exemple :
|
||||
|
||||
- [Liste de recommendation data](https://cseweb.ucsd.edu/~jmcauley/datasets.html)
|
||||
:::
|
||||
|
||||
|
||||
### Papier plus multi-applications
|
||||
- Données d'Elisa herbivore ?
|
||||
- Données urbanisations ?
|
||||
|
||||
### 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**.
|
||||
|
||||
### Simulations article
|
||||
|
||||
- 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.
|
||||
:::
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
@article{mazeletUnsupervisedLearningOptimal,
|
||||
title = {Unsupervised {{Learning}} for {{Optimal Transport}} Plan Prediction between Unbalanced Graphs},
|
||||
author = {Mazelet, Sonia and Flamary, Rémi and Thirion, Bertrand},
|
||||
abstract = {Optimal transport between graphs, based on Gromov-Wasserstein and other extensions, is a powerful tool for comparing and aligning graph structures. However, solving the associated non-convex optimization problems is computationally expensive, which limits the scalability of these methods to large graphs. In this work, we present Unbalanced Learning of Optimal Transport (ULOT), a deep learning method that predicts optimal transport plans between two graphs. Our method is trained by minimizing the fused unbalanced Gromov-Wasserstein (FUGW) loss. We propose a novel neural architecture with cross-attention that is conditioned on the FUGW tradeoff hyperparameters. We evaluate ULOT on synthetic stochastic block model (SBM) graphs and on real cortical surface data obtained from fMRI. ULOT predicts transport plans with competitive loss up to two orders of magnitude faster than classical solvers. Furthermore, the predicted plan can be used as a warm start for classical solvers to accelerate their convergence. Finally, the predicted transport plan is fully differentiable with respect to the graph inputs and FUGW hyperparameters, enabling the optimization of functionals of the ULOT plan.},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-11T09:08:09.864Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/HPZEYMM9/Mazelet et al. - Unsupervised Learning for Optimal Transport plan prediction between unbalanced graphs.pdf}
|
||||
}
|
||||
|
||||
@article{nennaLecture2Entropic,
|
||||
title = {Lecture 2: {{Entropic Optimal Transport}}},
|
||||
author = {Nenna, Luca},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-11T16:06:28.547Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/WGFIISDB/Nenna - Lecture 2 Entropic Optimal Transport.pdf}
|
||||
}
|
||||
846
suivi/2025-25/2025-25.html
Normal file
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>
|
||||
|
|
@ -1,124 +0,0 @@
|
|||
---
|
||||
title: "Bilan semaine 25 2025 : 16 juin - 20 juin"
|
||||
categories: [colBiSBM, inférence, GNN]
|
||||
date: 2025 06 20
|
||||
bibliography: references.bib
|
||||
---
|
||||
|
||||
## TODO List
|
||||
|
||||
- Pour clustering de collections sur données réelles :
|
||||
→ L'intuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs $(Q_1,Q_2)$.
|
||||
- ✅ Si plusieurs clustering possibles les tester et sélectionner le
|
||||
meilleur
|
||||
- ✅ Ré-ajuster les bonnes partitions.
|
||||
- ❓Je n'arrive plus à reproduire le bug pour l'inférence...
|
||||
|
||||
- ✅ **Oui c'est bien le cas** Clustering descendant & ascendant : vérifier qu'au cours du temps le $BICL_{asc} \geq BICL_{desc}$
|
||||
|
||||
- Creuser et explorer avec easy16s !
|
||||
|
||||
- ✅ Comparer les perfs du VAE sur Baldock avec colBiSBM par exemple
|
||||
|
||||
<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>
|
||||
|
||||
- Dé-bugger les simulations :
|
||||
|
||||
- ⌛ 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.
|
||||
- ✅ **Non ça n'a pas l'air d'être ça**. Vérifier si problème de version tidyverse pour vapply sur l'**inférence**.
|
||||
- ⌛Bon le bug ne se reproduit plus... les jobs sont juste trop longs (> 120h) j'ai relancé, il ne reste que 182/972 conditions.
|
||||
|
||||
- ✅ **Il suffisait de faire la màj soit même...** Si problème de parallélisation vient de pb de version *future.callr* le signaler à MIGALE.
|
||||
|
||||
- Kmeans sur la densité des réseaux subdoré pour pré-partitionner et *clusteriser*.
|
||||
Car densités déséquilibrées.
|
||||
|
||||
:::{#ref-kmeans-vae}
|
||||
|
||||
- Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur l'espace latent
|
||||
J'ai commencé à regarder un peu
|
||||
|
||||
:::
|
||||
|
||||
### Inférence et microbes
|
||||
|
||||
- Lancer *colBiSBM* sur $OTU\times Sample$ → problème du chargement en mémoire des données à voir
|
||||
- Lancer *colSBM* sur $OTU\times OTU$
|
||||
- Creuser [TabNet](https://raw.githubusercontent.com/cregouby/R-toulouse-tabnet/main/Tabnet_RR2023_fr_pdf.pdf) de Christophe Regouby et les [exercices](https://github.com/cregouby/Tutoriel_torch)
|
||||
- Regarder **SPARTA** Rennes
|
||||
- Lire Papiers compositional data (Aitchison et al. intro)
|
||||
- Lire article multi-niveaux Saint-Clair
|
||||
- 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)
|
||||
- Ecrire et étudier les modèles pour différents niveaux taxonomiques.
|
||||
\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*}
|
||||
|
||||
## Lecture en cours
|
||||
|
||||
### OT
|
||||
- ⌛ @mazeletUnsupervisedLearningOptimal Intéressant pour le transport optimal entre graphes de tailles différentes
|
||||
- ⌛ @nennaLecture2Entropic Pour comprendre le problème d'OT régularisé pour l'entropie.
|
||||
- ⌛ @nennaLecture1Monge
|
||||
|
||||
### Inférence de graphes
|
||||
- ✅ @matchadoNetworkAnalysisMethods2021b ➡️ Nos données étant compositionnelles
|
||||
il faut utiliser:
|
||||
- CCLasso et SparCC
|
||||
- HARMONIES pour zéro inflation (Binomiale négative), COZINE centered log ratio transformation compositionnalité, zéro inflation et forte précision
|
||||
- MixMPLN pour générer K réseaux issus de K Poisson log Normal
|
||||
- mLDM peut enlever les arêtes indirectes.
|
||||
- NetComi agrège plusieurs méthodes tout en permettant l'analyse différentielle !
|
||||
|
||||
Si pas compositionnelles :
|
||||
|
||||
- Meta-Network pour arêtes indirectes et non linéaires
|
||||
- Environmentally-Driven Edge detection pour corriger les effets de l'environnement
|
||||
|
||||
|
||||
## A discuter
|
||||
|
||||
### Inférence
|
||||
|
||||
- pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU ...)
|
||||
|
||||
> Combine networks at different taxonomic levels
|
||||
|
||||
- Inférence + GREMLINS
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
@article{mazeletUnsupervisedLearningOptimal,
|
||||
title = {Unsupervised {{Learning}} for {{Optimal Transport}} Plan Prediction between Unbalanced Graphs},
|
||||
author = {Mazelet, Sonia and Flamary, Rémi and Thirion, Bertrand},
|
||||
abstract = {Optimal transport between graphs, based on Gromov-Wasserstein and other extensions, is a powerful tool for comparing and aligning graph structures. However, solving the associated non-convex optimization problems is computationally expensive, which limits the scalability of these methods to large graphs. In this work, we present Unbalanced Learning of Optimal Transport (ULOT), a deep learning method that predicts optimal transport plans between two graphs. Our method is trained by minimizing the fused unbalanced Gromov-Wasserstein (FUGW) loss. We propose a novel neural architecture with cross-attention that is conditioned on the FUGW tradeoff hyperparameters. We evaluate ULOT on synthetic stochastic block model (SBM) graphs and on real cortical surface data obtained from fMRI. ULOT predicts transport plans with competitive loss up to two orders of magnitude faster than classical solvers. Furthermore, the predicted plan can be used as a warm start for classical solvers to accelerate their convergence. Finally, the predicted transport plan is fully differentiable with respect to the graph inputs and FUGW hyperparameters, enabling the optimization of functionals of the ULOT plan.},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-11T09:08:09.864Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/HPZEYMM9/Mazelet et al. - Unsupervised Learning for Optimal Transport plan prediction between unbalanced graphs.pdf}
|
||||
}
|
||||
|
||||
@article{nennaLecture2Entropic,
|
||||
title = {Lecture 2: {{Entropic Optimal Transport}}},
|
||||
author = {Nenna, Luca},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-11T16:06:28.547Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/WGFIISDB/Nenna - Lecture 2 Entropic Optimal Transport.pdf}
|
||||
}
|
||||
|
||||
@article{nennaLecture1Monge,
|
||||
title = {Lecture 1 {{Monge}} and {{Kantorovich}} Problems: From Primal to Dual},
|
||||
author = {Nenna, Luca},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-13T09:24:13.832Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/7LVQPD6D/Nenna - Lecture 1 Monge and Kantorovich problems from primal to dual.pdf}
|
||||
}
|
||||
|
||||
@article{matchadoNetworkAnalysisMethods2021b,
|
||||
title = {Network Analysis Methods for Studying Microbial Communities: {{A}} Mini Review},
|
||||
shorttitle = {Network Analysis Methods for Studying Microbial Communities},
|
||||
author = {Matchado, Monica Steffi and Lauber, Michael and Reitmeier, Sandra and Kacprowski, Tim and Baumbach, Jan and Haller, Dirk and List, Markus},
|
||||
year = {2021},
|
||||
month = jan,
|
||||
journal = {Computational and Structural Biotechnology Journal},
|
||||
volume = {19},
|
||||
pages = {2687--2698},
|
||||
issn = {2001-0370},
|
||||
doi = {10.1016/j.csbj.2021.05.001},
|
||||
urldate = {2025-06-16},
|
||||
abstract = {Microorganisms including bacteria, fungi, viruses, protists and archaea live as communities in complex and contiguous environments. They engage in numerous inter- and intra- kingdom interactions which can be inferred from microbiome profiling data. In particular, network-based approaches have proven helpful in deciphering complex microbial interaction patterns. Here we give an overview of state-of-the-art methods to infer intra-kingdom interactions ranging from simple correlation- to complex conditional dependence-based methods. We highlight common biases encountered in microbial profiles and discuss mitigation strategies employed by different tools and their trade-off with increased computational complexity. Finally, we discuss current limitations that motivate further method development to infer inter-kingdom interactions and to robustly and comprehensively characterize microbial environments in the future.},
|
||||
keywords = {/unread,Microbial co-occurrence networks,Microbial interactions,Network analysis,Trans-kingdom interactions},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-16T16:18:09.496Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/ZCY74M2I/Matchado et al. - 2021 - Network analysis methods for studying microbial communities A mini review.pdf;/home/louis/snap/zotero-snap/common/Zotero/storage/BKZN3MI5/S2001037021001823.html}
|
||||
}
|
||||
811
suivi/2025-27/2025-27.html
Normal file
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>
|
||||
|
|
@ -1,109 +0,0 @@
|
|||
---
|
||||
title: "Bilan semaine 27 2025 : 30 juin - 4 juillet"
|
||||
categories: [colBiSBM, inférence, GNN]
|
||||
date: 2025-06-30
|
||||
date-modified: last-modified
|
||||
bibliography: references.bib
|
||||
---
|
||||
|
||||
## TODO List
|
||||
|
||||
- Pour clustering de collections sur données réelles :
|
||||
→ L'intuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs $(Q_1,Q_2)$.
|
||||
- ❓Je n'arrive plus à reproduire le bug pour l'inférence...
|
||||
- S'assurer que ça marche et relancer
|
||||
|
||||
- Creuser et explorer avec easy16s !
|
||||
|
||||
- ✅ Ajouter le tableau de comparaison du VGAE avec colBiSBM
|
||||
|
||||
- ⌛ **Calcul du score F1**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
|
||||
|
||||
- Regarder la liste des cours du MathSV et de l'Université Paris-Saclay.
|
||||
|
||||
- Dé-bugger les simulations :
|
||||
|
||||
- ⌛ 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.
|
||||
- ⌛Bon le bug ne se reproduit plus... les jobs sont juste trop longs (> 120h) j'ai relancé, il ne reste que 182/972 conditions.
|
||||
|
||||
- ⌛ **Plutôt regarder pour introduire un modèle $\delta$-colBiSBM**. Kmeans sur la densité des réseaux subdoré pour pré-partitionner et *clusteriser*.
|
||||
Car densités déséquilibrées.
|
||||
|
||||
:::{#ref-kmeans-vae}
|
||||
|
||||
- Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur l'espace latent
|
||||
J'ai commencé à regarder un peu
|
||||
|
||||
:::
|
||||
|
||||
### Inférence et microbes
|
||||
|
||||
- Lancer *colBiSBM* sur $OTU\times Sample$ → problème du chargement en mémoire des données à voir
|
||||
- Lancer *colSBM* sur $OTU\times OTU$
|
||||
- ✅ Creuser [TabNet](https://raw.githubusercontent.com/cregouby/R-toulouse-tabnet/main/Tabnet_RR2023_fr_pdf.pdf) de Christophe Regouby
|
||||
- TabNet pratiquer les [exercices](https://github.com/cregouby/Tutoriel_torch)
|
||||
- Regarder **SPARTA** Rennes
|
||||
- Lire Papiers compositional data (Aitchison et al. intro)
|
||||
- Lire article multi-niveaux Saint-Clair
|
||||
- Ecrire et étudier les modèles pour différents niveaux taxonomiques.
|
||||
\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*}
|
||||
|
||||
#### Causalité
|
||||
|
||||
Plus sur le temps long, à regarder
|
||||
|
||||
- GT causalité
|
||||
- Daria Bystrova lire présentation @bystrovaCausalDiscovery (Meek rules, V-structure)
|
||||
|
||||
## Lectures en cours 📚
|
||||
|
||||
### OT
|
||||
- ⌛ @mazeletUnsupervisedLearningOptimal Intéressant pour le transport optimal entre graphes de tailles différentes
|
||||
- ⌛ @nennaLecture2Entropic Pour comprendre le problème d'OT régularisé pour l'entropie.
|
||||
- ⌛ @nennaLecture1Monge
|
||||
|
||||
### Inférence de graphes
|
||||
|
||||
- ✅ @Morton2021.11.09.467939 VAE with Multinomial Logistic Normal distribution using Isometric Log Ratio tranform.
|
||||
Plus rapide que les autres méthodes et performances équivalentes
|
||||
|
||||
- ⌛ @aitchisonStatisticalAnalysisCompositional1982a
|
||||
|
||||
- ❗📖 @payneFiniteMixturesMultivariate2023 sur MixMPLN
|
||||
|
||||
### Causalité
|
||||
|
||||
- ❗📖 @bystrovaCausalDiscovery
|
||||
|
||||
## A discuter
|
||||
|
||||
### Congés P&S
|
||||
|
||||
- ✅ Quand est-ce qu'on ne se voit pas ? Et donc quand est-ce qu'on se voit après ?
|
||||
- ✅ Calendrier partagé
|
||||
|
||||
### Thèse
|
||||
|
||||
- ✅ Que prévoir pour le CSI
|
||||
- 👍 Un petit rapport
|
||||
- 👍 Une présentation
|
||||
|
||||
- 👨🏫 **Demander à Pierre** Comment valider les enseignements comme formations Adum ?
|
||||
|
||||
- ✅ Des recommandations de formations, voir les cours du MathSV
|
||||
|
||||
### Interprétation écologiques résultats de Baldock
|
||||
|
||||
- ⌛ Point avec Elisa, **oui on relance**
|
||||
|
||||
### Inférence
|
||||
|
||||
- pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU ...)
|
||||
|
||||
> Combine networks at different taxonomic levels
|
||||
|
||||
- Inférence + GREMLINS
|
||||
|
|
@ -1,93 +0,0 @@
|
|||
@article{mazeletUnsupervisedLearningOptimal,
|
||||
title = {Unsupervised {{Learning}} for {{Optimal Transport}} Plan Prediction between Unbalanced Graphs},
|
||||
author = {Mazelet, Sonia and Flamary, Rémi and Thirion, Bertrand},
|
||||
abstract = {Optimal transport between graphs, based on Gromov-Wasserstein and other extensions, is a powerful tool for comparing and aligning graph structures. However, solving the associated non-convex optimization problems is computationally expensive, which limits the scalability of these methods to large graphs. In this work, we present Unbalanced Learning of Optimal Transport (ULOT), a deep learning method that predicts optimal transport plans between two graphs. Our method is trained by minimizing the fused unbalanced Gromov-Wasserstein (FUGW) loss. We propose a novel neural architecture with cross-attention that is conditioned on the FUGW tradeoff hyperparameters. We evaluate ULOT on synthetic stochastic block model (SBM) graphs and on real cortical surface data obtained from fMRI. ULOT predicts transport plans with competitive loss up to two orders of magnitude faster than classical solvers. Furthermore, the predicted plan can be used as a warm start for classical solvers to accelerate their convergence. Finally, the predicted transport plan is fully differentiable with respect to the graph inputs and FUGW hyperparameters, enabling the optimization of functionals of the ULOT plan.},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-11T09:08:09.864Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/HPZEYMM9/Mazelet et al. - Unsupervised Learning for Optimal Transport plan prediction between unbalanced graphs.pdf}
|
||||
}
|
||||
|
||||
@article{nennaLecture2Entropic,
|
||||
title = {Lecture 2: {{Entropic Optimal Transport}}},
|
||||
author = {Nenna, Luca},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-11T16:06:28.547Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/WGFIISDB/Nenna - Lecture 2 Entropic Optimal Transport.pdf}
|
||||
}
|
||||
|
||||
@article{nennaLecture1Monge,
|
||||
title = {Lecture 1 {{Monge}} and {{Kantorovich}} Problems: From Primal to Dual},
|
||||
author = {Nenna, Luca},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-13T09:24:13.832Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/7LVQPD6D/Nenna - Lecture 1 Monge and Kantorovich problems from primal to dual.pdf}
|
||||
}
|
||||
|
||||
@article{Morton2021.11.09.467939,
|
||||
title = {Scalable Estimation of Microbial Co-Occurrence Networks with {{Variational Autoencoders}}},
|
||||
author = {Morton, James T. and Silverman, Justin and Tikhonov, Gleb and Lähdesmäki, Harri and Bonneau, Rich},
|
||||
date = {2021},
|
||||
journaltitle = {bioRxiv : the preprint server for biology},
|
||||
shortjournal = {bioRxiv},
|
||||
eprint = {https://www.biorxiv.org/content/early/2021/11/11/2021.11.09.467939.full.pdf},
|
||||
publisher = {Cold Spring Harbor Laboratory},
|
||||
doi = {10.1101/2021.11.09.467939},
|
||||
url = {https://www.biorxiv.org/content/early/2021/11/11/2021.11.09.467939},
|
||||
abstract = {Estimating microbe-microbe interactions is critical for understanding the ecological laws governing microbial communities. Rapidly decreasing sequencing costs have promised new opportunities to estimate microbe-microbe interactions across thousands of uncultured, unknown microbes. However, typical microbiome datasets are very high dimensional and accurate estimation of microbial correlations requires tens of thousands of samples, exceeding the computational capabilities of existing methodologies. Furthermore, the vast majority of microbiome studies collect compositional metagenomics data which enforces a negative bias when computing microbe-microbe correlations. The Multinomial Logistic Normal (MLN) distribution has been shown to be effective at inferring microbe-microbe correlations, however scalable Bayesian inference of these distributions has remained elusive. Here, we show that carefully constructed Variational Autoencoders (VAEs) augmented with the Isometric Log-ratio (ILR) transform can estimate low-rank MLN distributions thousands of times faster than existing methods. These VAEs can be trained on tens of thousands of samples, enabling co-occurrence inference across tens of thousands of microbes without regularization. The latent embedding distances computed from these VAEs are competitive with existing beta-diversity methods across a variety of mouse and human microbiome classification and regression tasks, with notable improvements on longitudinal studies.Competing Interest StatementThe authors have declared no competing interest.},
|
||||
elocation-id = {2021.11.09.467939},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-30T14:17:29.518Z}
|
||||
}
|
||||
@article{aitchisonStatisticalAnalysisCompositional1982a,
|
||||
title = {The {{Statistical Analysis}} of {{Compositional Data}}},
|
||||
author = {Aitchison, J.},
|
||||
date = {1982},
|
||||
journaltitle = {Journal of the Royal Statistical Society. Series B (Methodological)},
|
||||
volume = {44},
|
||||
number = {2},
|
||||
eprint = {2345821},
|
||||
eprinttype = {jstor},
|
||||
pages = {139--177},
|
||||
publisher = {[Royal Statistical Society, Oxford University Press]},
|
||||
issn = {0035-9246},
|
||||
url = {https://www.jstor.org/stable/2345821},
|
||||
urldate = {2025-05-07},
|
||||
abstract = {The simplex plays an important role as sample space in many practical situations where compositional data, in the form of proportions of some whole, require interpretation. It is argued that the statistical analysis of such data has proved difficult because of a lack both of concepts of independence and of rich enough parametric classes of distributions in the simplex. A variety of independence hypotheses are introduced and interrelated, and new classes of transformed-normal distributions in the simplex are provided as models within which the independence hypotheses can be tested through standard theory of parametric hypothesis testing. The new concepts and statistical methodology are illustrated by a number of applications.},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-05-07T07:43:38.485Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/S97URH4Y/Aitchison - 1982 - The Statistical Analysis of Compositional Data.pdf}
|
||||
}
|
||||
@online{payneFiniteMixturesMultivariate2023,
|
||||
title = {Finite {{Mixtures}} of {{Multivariate Poisson-Log Normal Factor Analyzers}} for {{Clustering Count Data}}},
|
||||
author = {Payne, Andrea and Silva, Anjali and Rothstein, Steven J. and McNicholas, Paul D. and Subedi, Sanjeena},
|
||||
date = {2023-11-13},
|
||||
eprint = {2311.07762},
|
||||
eprinttype = {arXiv},
|
||||
eprintclass = {stat},
|
||||
doi = {10.48550/arXiv.2311.07762},
|
||||
url = {http://arxiv.org/abs/2311.07762},
|
||||
urldate = {2025-07-02},
|
||||
abstract = {A mixture of multivariate Poisson-log normal factor analyzers is introduced by imposing constraints on the covariance matrix, which resulted in flexible models for clustering purposes. In particular, a class of eight parsimonious mixture models based on the mixtures of factor analyzers model are introduced. Variational Gaussian approximation is used for parameter estimation, and information criteria are used for model selection. The proposed models are explored in the context of clustering discrete data arising from RNA sequencing studies. Using real and simulated data, the models are shown to give favourable clustering performance. The GitHub R package for this work is available at https://github.com/anjalisilva/mixMPLNFA and is released under the open-source MIT license.},
|
||||
pubstate = {prepublished},
|
||||
keywords = {/unread,Statistics - Computation,Statistics - Machine Learning,Statistics - Methodology},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-02T09:31:47.579Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/BXVPEIDD/Payne et al. - 2023 - Finite Mixtures of Multivariate Poisson-Log Normal Factor Analyzers for Clustering Count Data.pdf;/home/louis/snap/zotero-snap/common/Zotero/storage/L5DAS5C2/2311.html}
|
||||
}
|
||||
@unpublished{bystrovaCausalDiscovery,
|
||||
title = {Causal Discovery},
|
||||
author = {Bystrova, Daria},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-02T09:34:39.476Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/NQE5DY92/Bystrova - Causal discovery.pdf}
|
||||
}
|
||||
862
suivi/2025-28/2025-28.html
Normal file
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>
|
||||
|
|
@ -1,141 +0,0 @@
|
|||
---
|
||||
title: "Bilan semaine 28 2025 : 07 juillet - 11 juillet"
|
||||
categories: [colBiSBM, inférence, GNN]
|
||||
date: 2025-07-07
|
||||
date-modified: 2025-07-11
|
||||
bibliography: references.bib
|
||||
---
|
||||
|
||||
## TODO List
|
||||
|
||||
- Pour clustering de collections sur données ~~réelles~~ :
|
||||
→ L'intuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs $(Q_1,Q_2)$.
|
||||
- ❓Je n'arrive plus à reproduire le bug pour l'inférence...
|
||||
- S'assurer que ça marche et relancer
|
||||
|
||||
- Creuser et explorer avec easy16s !
|
||||
|
||||
- ⌛ **Calcul du score F1**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
|
||||
- Ajouter au tableau comparatif sep BiSBM
|
||||
- Regarder les codes Mangal database pour $\delta$
|
||||
- ✅ Formules ci-dessous. Voir $\delta$ mais additif
|
||||
|
||||
:::{.callout-note}
|
||||
### $\delta$ additif Bernoulli
|
||||
En Bernoulli pas de forme analytique non plus :
|
||||
Pour $\alpha_{qr}$:
|
||||
$$ \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$$
|
||||
$$\Leftrightarrow \sum_m \frac{e^m_{qr}}{\alpha_{qr}} + \frac{1}{\alpha_{qr}+\delta_m-1} (n^m_{qr}-e^m_{qr}) = 0$$
|
||||
|
||||
Et pour $\delta_m$:
|
||||
$$ \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$$
|
||||
:::
|
||||
|
||||
:::{.callout-note}
|
||||
### $\delta$ additif Poisson
|
||||
Forme analytique mais risque de confusion ?
|
||||
$$\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}} $$
|
||||
|
||||
:::
|
||||
|
||||
- Attente retour Pierre pour faire d'autres clustering
|
||||
|
||||
- ✅ Implémenter décodeur Generalized Random Dot Product.
|
||||
|
||||
- ✅ Réimplémentation propre et évolutive du DeepBVGAE (suivi des guidelines PyTorch Geometric)
|
||||
|
||||
- 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 ?)
|
||||
|
||||
|
||||
- Dé-bugger les simulations :
|
||||
|
||||
- ✅ 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.
|
||||
- ⌛ **Plutôt regarder pour introduire un modèle $\delta$-colBiSBM**.
|
||||
- Ajouter le produit par $\delta$ là où nécessaire
|
||||
- Ajouter les modèles $\delta$, $\delta\pi, \dots$ et les blocs conditionnels
|
||||
- Ajouter les tests unitaires adéquats et les vérifier
|
||||
|
||||
- 🛑**D'abord je lis la biblio dessus** Regarder *Largest gap* sur réseaux Doré
|
||||
|
||||
- Essayer *clustering* sur `supinfo`
|
||||
|
||||
- Homogénéiser notations dans les supplementaries
|
||||
|
||||
:::{#ref-kmeans-vae}
|
||||
|
||||
- Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur l'espace latent
|
||||
J'ai commencé à regarder un peu
|
||||
|
||||
:::
|
||||
|
||||
### Inférence et microbes
|
||||
|
||||
- Lancer *colBiSBM* sur $OTU\times Sample$ → problème du chargement en mémoire des données à voir
|
||||
- Lancer *colSBM* sur $OTU\times OTU$
|
||||
- TabNet pratiquer les [exercices](https://github.com/cregouby/Tutoriel_torch)
|
||||
- Regarder **SPARTA** Rennes
|
||||
- Lire Papiers compositional data (Aitchison et al. intro)
|
||||
- Lire article multi-niveaux Saint-Clair
|
||||
- Ecrire et étudier les modèles pour différents niveaux taxonomiques.
|
||||
\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*}
|
||||
|
||||
#### Causalité
|
||||
|
||||
Plus sur le temps long, à regarder
|
||||
|
||||
- GT causalité
|
||||
- Daria Bystrova lire présentation @bystrovaCausalDiscovery (Meek rules, V-structure)
|
||||
|
||||
## Biblio à faire
|
||||
|
||||
- Regarder Transport optimal graphes bipartite.
|
||||
- HDR VB, chapitre de modèle à blocs latents, bcp travaillé sur bipartite
|
||||
OT, comparaison clustering, adaption ARI, *Largest Gap*
|
||||
|
||||
## Lectures en cours 📚
|
||||
|
||||
### OT
|
||||
- ⌛ @mazeletUnsupervisedLearningOptimal Intéressant pour le transport optimal entre graphes de tailles différentes | Regarder si regularization entropique ne marche pas bien pour le graphe.
|
||||
- ⌛ @nennaLecture2Entropic Pour comprendre le problème d'OT régularisé pour l'entropie.
|
||||
- ⌛ @nennaLecture1Monge
|
||||
|
||||
### Inférence de graphes
|
||||
|
||||
- ⌛ @aitchisonStatisticalAnalysisCompositional1982a, en cours
|
||||
|
||||
- ❗📖 @payneFiniteMixturesMultivariate2023 sur MixMPLN
|
||||
|
||||
### Causalité
|
||||
|
||||
- ❗📖 @bystrovaCausalDiscovery
|
||||
|
||||
### Largest Gaps
|
||||
|
||||
- ✅ @braultGeneralisationLalgorithmeLargest petit résumé de l'algo de @braultFastConsistentAlgorithm2023
|
||||
- ❗📖 @braultFastConsistentAlgorithm2023
|
||||
- ❗📖 @channarondClassificationEstimationStochastic2012 le papier qui introduit le *Largest Gaps*
|
||||
|
||||
## A discuter
|
||||
|
||||
### Congés P&S
|
||||
|
||||
### Thèse
|
||||
|
||||
- Faire préz CSI
|
||||
- Faire rapport CSI
|
||||
|
||||
### Interprétation écologiques résultats de Baldock
|
||||
|
||||
- ⌛ Point avec Elisa, **oui on relance**
|
||||
|
||||
### Inférence
|
||||
|
||||
- pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU ...)
|
||||
|
||||
> Combine networks at different taxonomic levels
|
||||
|
||||
- Inférence + GREMLINS
|
||||
|
|
@ -1,144 +0,0 @@
|
|||
@article{mazeletUnsupervisedLearningOptimal,
|
||||
title = {Unsupervised {{Learning}} for {{Optimal Transport}} Plan Prediction between Unbalanced Graphs},
|
||||
author = {Mazelet, Sonia and Flamary, Rémi and Thirion, Bertrand},
|
||||
abstract = {Optimal transport between graphs, based on Gromov-Wasserstein and other extensions, is a powerful tool for comparing and aligning graph structures. However, solving the associated non-convex optimization problems is computationally expensive, which limits the scalability of these methods to large graphs. In this work, we present Unbalanced Learning of Optimal Transport (ULOT), a deep learning method that predicts optimal transport plans between two graphs. Our method is trained by minimizing the fused unbalanced Gromov-Wasserstein (FUGW) loss. We propose a novel neural architecture with cross-attention that is conditioned on the FUGW tradeoff hyperparameters. We evaluate ULOT on synthetic stochastic block model (SBM) graphs and on real cortical surface data obtained from fMRI. ULOT predicts transport plans with competitive loss up to two orders of magnitude faster than classical solvers. Furthermore, the predicted plan can be used as a warm start for classical solvers to accelerate their convergence. Finally, the predicted transport plan is fully differentiable with respect to the graph inputs and FUGW hyperparameters, enabling the optimization of functionals of the ULOT plan.},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-11T09:08:09.864Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/HPZEYMM9/Mazelet et al. - Unsupervised Learning for Optimal Transport plan prediction between unbalanced graphs.pdf}
|
||||
}
|
||||
|
||||
@article{nennaLecture2Entropic,
|
||||
title = {Lecture 2: {{Entropic Optimal Transport}}},
|
||||
author = {Nenna, Luca},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-11T16:06:28.547Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/WGFIISDB/Nenna - Lecture 2 Entropic Optimal Transport.pdf}
|
||||
}
|
||||
|
||||
@article{nennaLecture1Monge,
|
||||
title = {Lecture 1 {{Monge}} and {{Kantorovich}} Problems: From Primal to Dual},
|
||||
author = {Nenna, Luca},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-13T09:24:13.832Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/7LVQPD6D/Nenna - Lecture 1 Monge and Kantorovich problems from primal to dual.pdf}
|
||||
}
|
||||
|
||||
@article{Morton2021.11.09.467939,
|
||||
title = {Scalable Estimation of Microbial Co-Occurrence Networks with {{Variational Autoencoders}}},
|
||||
author = {Morton, James T. and Silverman, Justin and Tikhonov, Gleb and Lähdesmäki, Harri and Bonneau, Rich},
|
||||
date = {2021},
|
||||
journaltitle = {bioRxiv : the preprint server for biology},
|
||||
shortjournal = {bioRxiv},
|
||||
eprint = {https://www.biorxiv.org/content/early/2021/11/11/2021.11.09.467939.full.pdf},
|
||||
publisher = {Cold Spring Harbor Laboratory},
|
||||
doi = {10.1101/2021.11.09.467939},
|
||||
url = {https://www.biorxiv.org/content/early/2021/11/11/2021.11.09.467939},
|
||||
abstract = {Estimating microbe-microbe interactions is critical for understanding the ecological laws governing microbial communities. Rapidly decreasing sequencing costs have promised new opportunities to estimate microbe-microbe interactions across thousands of uncultured, unknown microbes. However, typical microbiome datasets are very high dimensional and accurate estimation of microbial correlations requires tens of thousands of samples, exceeding the computational capabilities of existing methodologies. Furthermore, the vast majority of microbiome studies collect compositional metagenomics data which enforces a negative bias when computing microbe-microbe correlations. The Multinomial Logistic Normal (MLN) distribution has been shown to be effective at inferring microbe-microbe correlations, however scalable Bayesian inference of these distributions has remained elusive. Here, we show that carefully constructed Variational Autoencoders (VAEs) augmented with the Isometric Log-ratio (ILR) transform can estimate low-rank MLN distributions thousands of times faster than existing methods. These VAEs can be trained on tens of thousands of samples, enabling co-occurrence inference across tens of thousands of microbes without regularization. The latent embedding distances computed from these VAEs are competitive with existing beta-diversity methods across a variety of mouse and human microbiome classification and regression tasks, with notable improvements on longitudinal studies.Competing Interest StatementThe authors have declared no competing interest.},
|
||||
elocation-id = {2021.11.09.467939},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-30T14:17:29.518Z}
|
||||
}
|
||||
@article{aitchisonStatisticalAnalysisCompositional1982a,
|
||||
title = {The {{Statistical Analysis}} of {{Compositional Data}}},
|
||||
author = {Aitchison, J.},
|
||||
date = {1982},
|
||||
journaltitle = {Journal of the Royal Statistical Society. Series B (Methodological)},
|
||||
volume = {44},
|
||||
number = {2},
|
||||
eprint = {2345821},
|
||||
eprinttype = {jstor},
|
||||
pages = {139--177},
|
||||
publisher = {[Royal Statistical Society, Oxford University Press]},
|
||||
issn = {0035-9246},
|
||||
url = {https://www.jstor.org/stable/2345821},
|
||||
urldate = {2025-05-07},
|
||||
abstract = {The simplex plays an important role as sample space in many practical situations where compositional data, in the form of proportions of some whole, require interpretation. It is argued that the statistical analysis of such data has proved difficult because of a lack both of concepts of independence and of rich enough parametric classes of distributions in the simplex. A variety of independence hypotheses are introduced and interrelated, and new classes of transformed-normal distributions in the simplex are provided as models within which the independence hypotheses can be tested through standard theory of parametric hypothesis testing. The new concepts and statistical methodology are illustrated by a number of applications.},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-05-07T07:43:38.485Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/S97URH4Y/Aitchison - 1982 - The Statistical Analysis of Compositional Data.pdf}
|
||||
}
|
||||
@online{payneFiniteMixturesMultivariate2023,
|
||||
title = {Finite {{Mixtures}} of {{Multivariate Poisson-Log Normal Factor Analyzers}} for {{Clustering Count Data}}},
|
||||
author = {Payne, Andrea and Silva, Anjali and Rothstein, Steven J. and McNicholas, Paul D. and Subedi, Sanjeena},
|
||||
date = {2023-11-13},
|
||||
eprint = {2311.07762},
|
||||
eprinttype = {arXiv},
|
||||
eprintclass = {stat},
|
||||
doi = {10.48550/arXiv.2311.07762},
|
||||
url = {http://arxiv.org/abs/2311.07762},
|
||||
urldate = {2025-07-02},
|
||||
abstract = {A mixture of multivariate Poisson-log normal factor analyzers is introduced by imposing constraints on the covariance matrix, which resulted in flexible models for clustering purposes. In particular, a class of eight parsimonious mixture models based on the mixtures of factor analyzers model are introduced. Variational Gaussian approximation is used for parameter estimation, and information criteria are used for model selection. The proposed models are explored in the context of clustering discrete data arising from RNA sequencing studies. Using real and simulated data, the models are shown to give favourable clustering performance. The GitHub R package for this work is available at https://github.com/anjalisilva/mixMPLNFA and is released under the open-source MIT license.},
|
||||
pubstate = {prepublished},
|
||||
keywords = {/unread,Statistics - Computation,Statistics - Machine Learning,Statistics - Methodology},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-02T09:31:47.579Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/BXVPEIDD/Payne et al. - 2023 - Finite Mixtures of Multivariate Poisson-Log Normal Factor Analyzers for Clustering Count Data.pdf;/home/louis/snap/zotero-snap/common/Zotero/storage/L5DAS5C2/2311.html}
|
||||
}
|
||||
@unpublished{bystrovaCausalDiscovery,
|
||||
title = {Causal Discovery},
|
||||
author = {Bystrova, Daria},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-02T09:34:39.476Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/NQE5DY92/Bystrova - Causal discovery.pdf}
|
||||
}
|
||||
|
||||
@online{braultFastConsistentAlgorithm2023,
|
||||
title = {Fast and {{Consistent Algorithm}} for the {{Latent Block Model}}},
|
||||
author = {Brault, Vincent and Channarond, Antoine},
|
||||
date = {2023-03-09},
|
||||
eprint = {1610.09005},
|
||||
eprinttype = {arXiv},
|
||||
eprintclass = {math},
|
||||
doi = {10.48550/arXiv.1610.09005},
|
||||
url = {http://arxiv.org/abs/1610.09005},
|
||||
urldate = {2025-07-09},
|
||||
abstract = {The latent block model is used to simultaneously rank the rows and columns of a matrix to reveal a block structure. The algorithms used for estimation are often time consuming. However, recent work shows that the log-likelihood ratios are equivalent under the complete and observed (with unknown labels) models and the groups posterior distribution to converge as the size of the data increases to a Dirac mass located at the actual groups configuration. Based on these observations, the algorithm Largest Gaps is proposed in this paper to perform clustering using only the marginals of the matrix, when the number of blocks is very small with respect to the size of the whole matrix in the case of binary data. In addition, a model selection method is incorporated with a proof of its consistency. Thus, this paper shows that studying simplistic configurations (few blocks compared to the size of the matrix or very contrasting blocks) with complex algorithms is useless since the marginals already give very good parameter and classification estimates.},
|
||||
langid = {english},
|
||||
pubstate = {prepublished},
|
||||
keywords = {/unread,Mathematics - Statistics Theory,Statistics - Computation,Statistics - Statistics Theory},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-09T13:58:53.533Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/5LXC6Y68/Brault et Channarond - 2023 - Fast and Consistent Algorithm for the Latent Block Model.pdf}
|
||||
}
|
||||
|
||||
@article{braultGeneralisationLalgorithmeLargest,
|
||||
title = {Généralisation de l'algorithme Largest Gaps pour le modèle des blocs latents non-paramétrique},
|
||||
author = {Brault, Vincent and Channarond, Antoine and Robert, Valérie},
|
||||
abstract = {The latent block model assumes there exists a distribution for each crossing between an object cluster and a variable cluster of a data table ; the cells are supposed to be independent conditionally to the choice of these clusters. To estimate the model parameters, most of algorithms are time consuming. Brault and Channarond (2016) proposed to adapt the Largest Gaps algorithm which consists in using the margins. They thus obtained a procedure which estimates all the model parameters consistently but requires a large number of observations. In this talk, we will extend the procedure to the case of any distribution having a second order moment by using an EM algorithm estimation.},
|
||||
langid = {french},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-09T12:29:43.098Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/GIUNC4L3/Brault et al. - Généralisation de l'algorithme Largest Gaps pour le modèle des blocs latents non-paramétrique.pdf}
|
||||
}
|
||||
|
||||
@article{channarondClassificationEstimationStochastic2012,
|
||||
title = {Classification and Estimation in the {{Stochastic Blockmodel}} Based on the Empirical Degrees},
|
||||
author = {Channarond, Antoine and Daudin, Jean-Jacques and Robin, Stéphane},
|
||||
date = {2012-01-01},
|
||||
journaltitle = {Electronic Journal of Statistics},
|
||||
shortjournal = {Electron. J. Statist.},
|
||||
volume = {6},
|
||||
publisher = {Institute of Mathematical Statistics},
|
||||
issn = {1935-7524},
|
||||
doi = {10.1214/12-ejs753},
|
||||
url = {https://projecteuclid.org/journals/electronic-journal-of-statistics/volume-6/issue-none/Classification-and-estimation-in-the-Stochastic-Blockmodel-based-on-the/10.1214/12-EJS753.full},
|
||||
urldate = {2025-07-09},
|
||||
abstract = {The Stochastic Blockmodel [16] is a mixture model for heterogeneous network data. Unlike the usual statistical framework, new nodes give additional information about the previous ones in this model. Thereby the distribution of the degrees concentrates in points conditionally on the node class. We show under a mild assumption that classification, estimation and model selection can actually be achieved with no more than the empirical degree data. We provide an algorithm able to process very large networks and consistent estimators based on it. In particular, we prove a bound of the probability of misclassification of at least one node, including when the number of classes grows.},
|
||||
issue = {none},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-09T13:59:33.921Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/8TL8AJ2G/Channarond et al. - 2012 - Classification and estimation in the Stochastic Blockmodel based on the empirical degrees.pdf}
|
||||
}
|
||||
1771
suivi/2025-29/2025-29.html
Normal file
1771
suivi/2025-29/2025-29.html
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1,478 +0,0 @@
|
|||
---
|
||||
title: "Bilan semaine 29 2025 : 15 juillet - 18 juillet"
|
||||
categories: [colBiSBM, inférence, GNN]
|
||||
date: 2025-07-15
|
||||
date-modified: last-modified
|
||||
bibliography: references.bib
|
||||
---
|
||||
|
||||
## TODO List
|
||||
|
||||
- Pour clustering de collections sur données ~~réelles~~ :
|
||||
→ L'intuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs $(Q_1,Q_2)$.
|
||||
- ❓Je n'arrive plus à reproduire le bug pour l'inférence...
|
||||
- 😫 bug encore. S'assurer que ça marche et relancer
|
||||
|
||||
- ⌛ **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 :
|
||||
- Donner la matrice identité comme features
|
||||
- Corriger les degrés calculés.
|
||||
- ✅ Ajouter au tableau comparatif sep BiSBM
|
||||
|
||||
- Pour s'assurer que colBiSBM marche, il faut comparer avec une proportion de :
|
||||
- *Missing links*, ie des faux zéros
|
||||
- *NA* en *Missing at random (MAR)*
|
||||
|
||||
- Faible performances de l'inférence :
|
||||
- Vérifier que les conditions d'identifiabilité des modèles fautifs sont bien remplies.
|
||||
- Récupérer des jeux de paramètres et essayer de reproduire les résultats.
|
||||
|
||||
- Clustering sur Doré :
|
||||
- Désaggréger les réseaux et relancer le clustering sur certains auteurs.
|
||||
- Regarder pour les couples date+nom les études et le nombre de réseaux analysables (Possible demander à Élisa)
|
||||
- Clusteriser sur la base des noms et voir parmi les réseaux Européens (désagrégés ?)
|
||||
- Si M > 10, alors voir si je retrouve les mêmes résultats que dans les études.
|
||||
|
||||
<table>
|
||||
<caption>AUC values for colBiSBM, sep-BiSBM 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="3"><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;"> sep-BiSBM </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.841 </td>
|
||||
<td style="text-align:right;"> 0.824 </td>
|
||||
<td style="text-align:right;"> 1 </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:left;"> Edinburgh </td>
|
||||
<td style="text-align:right;"> 0.882 </td>
|
||||
<td style="text-align:right;"> 0.883 </td>
|
||||
<td style="text-align:right;"> 1 </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:left;"> Leeds </td>
|
||||
<td style="text-align:right;"> 0.873 </td>
|
||||
<td style="text-align:right;"> 0.852 </td>
|
||||
<td style="text-align:right;"> 1 </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:left;"> Reading </td>
|
||||
<td style="text-align:right;"> 0.845 </td>
|
||||
<td style="text-align:right;"> 0.837 </td>
|
||||
<td style="text-align:right;"> 1 </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
- Regarder les codes Mangal database pour $\delta$
|
||||
- Voir $\delta$ mais additif
|
||||
|
||||
:::{.callout-note}
|
||||
### $\delta$ additif Bernoulli
|
||||
En Bernoulli pas de forme analytique non plus :
|
||||
Pour $\alpha_{qr}$:
|
||||
$$ \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$$
|
||||
$$\Leftrightarrow \sum_m \frac{e^m_{qr}}{\alpha_{qr}} + \frac{1}{\alpha_{qr}+\delta_m-1} (n^m_{qr}-e^m_{qr}) = 0$$
|
||||
|
||||
Et pour $\delta_m$:
|
||||
$$ \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$$
|
||||
:::
|
||||
|
||||
:::{.callout-note}
|
||||
### $\delta$ additif Poisson
|
||||
Forme analytique mais risque de confusion ?
|
||||
$$\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}} $$
|
||||
|
||||
:::
|
||||
|
||||
- Attente retour Pierre pour faire d'autres clustering
|
||||
|
||||
- Regarder la liste des cours du MathSV et de l'Université Paris-Saclay.
|
||||
|
||||
- Inférence finie mais résultats pas fous:
|
||||
|
||||
<table class="table" style="font-size: 10px; margin-left: auto; margin-right: auto;">
|
||||
<caption style="font-size: initial !important;">The proportion of dataset where the correct number of blocks is selected.</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="empty-cells: hide;border-bottom:hidden;" colspan="1"></th>
|
||||
<th style="border-bottom:hidden;padding-bottom:0; padding-left:0px;padding-right:0px;text-align: center; " colspan="6"><div style="border-bottom: 1px solid #ddd; padding-bottom: 5px; ">iid</div></th>
|
||||
<th style="border-bottom:hidden;padding-bottom:0; padding-left:0px;padding-right:0px;text-align: center; " colspan="6"><div style="border-bottom: 1px solid #ddd; padding-bottom: 5px; ">$\pi$</div></th>
|
||||
<th style="border-bottom:hidden;padding-bottom:0; padding-left:0px;padding-right:0px;text-align: center; " colspan="6"><div style="border-bottom: 1px solid #ddd; padding-bottom: 5px; ">$\rho$</div></th>
|
||||
<th style="border-bottom:hidden;padding-bottom:0; padding-left:0px;padding-right:0px;text-align: center; " colspan="6"><div style="border-bottom: 1px solid #ddd; padding-bottom: 5px; ">$\pi\rho$</div></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="text-align:right;"> $\epsilon_{\alpha}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_1} \lt 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_1} = 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_1} \gt 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_2} \lt 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_2} = 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_2} \gt 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_1} \lt 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_1} = 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_1} \gt 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_2} \lt 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_2} = 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_2} \gt 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_1} \lt 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_1} = 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_1} \gt 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_2} \lt 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_2} = 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_2} \gt 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_1} \lt 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_1} = 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_1} \gt 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_2} \lt 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_2} = 4}$ </th>
|
||||
<th style="text-align:left;"> $\bm{1}_{\widehat{Q_2} \gt 4}$ </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align:right;"> 0.00 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:right;"> 0.03 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:right;"> 0.06 </td>
|
||||
<td style="text-align:left;"> 0.19 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0.81 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.24 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0.76 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.02 $\pm$ 0.01 </td>
|
||||
<td style="text-align:left;"> 0.33 $\pm$ 0.05 </td>
|
||||
<td style="text-align:left;"> 0.65 $\pm$ 0.05 </td>
|
||||
<td style="text-align:left;"> 0.26 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0.74 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.17 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0.83 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.02 $\pm$ 0.01 </td>
|
||||
<td style="text-align:left;"> 0.2 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0.78 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0.06 $\pm$ 0.02 </td>
|
||||
<td style="text-align:left;"> 0.87 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0.06 $\pm$ 0.02 </td>
|
||||
<td style="text-align:left;"> 0.01 $\pm$ 0.01 </td>
|
||||
<td style="text-align:left;"> 0.88 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0.11 $\pm$ 0.03 </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:right;"> 0.09 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.94 $\pm$ 0.02 </td>
|
||||
<td style="text-align:left;"> 0.06 $\pm$ 0.02 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.91 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0.09 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.1 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0.9 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.13 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0.87 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.87 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0.13 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.87 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0.13 $\pm$ 0.03 </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:right;"> 0.12 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.94 $\pm$ 0.02 </td>
|
||||
<td style="text-align:left;"> 0.06 $\pm$ 0.02 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.91 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0.09 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.26 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0.74 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.3 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0.7 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.84 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0.16 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.83 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0.17 $\pm$ 0.04 </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:right;"> 0.15 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.85 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0.15 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.86 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0.14 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.34 $\pm$ 0.05 </td>
|
||||
<td style="text-align:left;"> 0.66 $\pm$ 0.05 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.3 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0.7 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.81 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0.19 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.8 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0.2 $\pm$ 0.04 </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:right;"> 0.18 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.87 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0.13 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.84 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0.16 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.36 $\pm$ 0.05 </td>
|
||||
<td style="text-align:left;"> 0.64 $\pm$ 0.05 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.35 $\pm$ 0.05 </td>
|
||||
<td style="text-align:left;"> 0.65 $\pm$ 0.05 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.87 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0.13 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.82 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0.18 $\pm$ 0.04 </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:right;"> 0.21 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.92 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0.08 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.89 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0.11 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.4 $\pm$ 0.05 </td>
|
||||
<td style="text-align:left;"> 0.6 $\pm$ 0.05 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.39 $\pm$ 0.05 </td>
|
||||
<td style="text-align:left;"> 0.61 $\pm$ 0.05 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.84 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0.16 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.84 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0.16 $\pm$ 0.04 </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:right;"> 0.24 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.88 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0.12 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.85 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0.15 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.47 $\pm$ 0.05 </td>
|
||||
<td style="text-align:left;"> 0.53 $\pm$ 0.05 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 1 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.99 $\pm$ 0.01 </td>
|
||||
<td style="text-align:left;"> 0.01 $\pm$ 0.01 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.4 $\pm$ 0.05 </td>
|
||||
<td style="text-align:left;"> 0.6 $\pm$ 0.05 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.85 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0.15 $\pm$ 0.03 </td>
|
||||
<td style="text-align:left;"> 0 </td>
|
||||
<td style="text-align:left;"> 0.82 $\pm$ 0.04 </td>
|
||||
<td style="text-align:left;"> 0.18 $\pm$ 0.04 </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
- ⌛ **Plutôt regarder pour introduire un modèle $\delta$-colBiSBM**.
|
||||
- Ajouter le produit par $\delta$ là où nécessaire
|
||||
- Ajouter les modèles $\delta$, $\delta\pi, \dots$ et les blocs conditionnels
|
||||
- Ajouter les tests unitaires adéquats et les vérifier
|
||||
|
||||
- Regarder *Largest gap* sur réseaux Doré
|
||||
|
||||
- Essayer *clustering* sur `supinfo`
|
||||
|
||||
- Homogénéiser notations dans les supplementaries
|
||||
|
||||
:::{#ref-kmeans-vae}
|
||||
|
||||
- Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur l'espace latent
|
||||
J'ai commencé à regarder un peu
|
||||
|
||||
:::
|
||||
|
||||
- Creuser et explorer avec easy16s !
|
||||
|
||||
### Inférence et microbes
|
||||
|
||||
- Lancer *colBiSBM* sur $OTU\times Sample$ → problème du chargement en mémoire des données à voir
|
||||
- Lancer *colSBM* sur $OTU\times OTU$
|
||||
- TabNet pratiquer les [exercices](https://github.com/cregouby/Tutoriel_torch)
|
||||
- Regarder **SPARTA** Rennes
|
||||
- Lire Papiers compositional data (Aitchison et al. intro)
|
||||
- Lire article multi-niveaux Saint-Clair
|
||||
- Ecrire et étudier les modèles pour différents niveaux taxonomiques.
|
||||
\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*}
|
||||
|
||||
#### Causalité
|
||||
|
||||
Plus sur le temps long, à regarder
|
||||
|
||||
- GT causalité
|
||||
- Daria Bystrova lire présentation @bystrovaCausalDiscovery (Meek rules, V-structure)
|
||||
|
||||
## Biblio à faire
|
||||
|
||||
- Regarder Transport optimal graphes bipartite.
|
||||
- HDR VB, chapitre de modèle à blocs latents, bcp travaillé sur bipartite
|
||||
OT, comparaison clustering, adaption ARI, *Largest Gap*
|
||||
|
||||
## Lectures en cours 📚
|
||||
|
||||
### OT
|
||||
- ⌛ @mazeletUnsupervisedLearningOptimal Intéressant pour le transport optimal entre graphes de tailles différentes | Regarder si regularization entropique ne marche pas bien pour le graphe.
|
||||
- ⌛ @nennaLecture2Entropic Pour comprendre le problème d'OT régularisé pour l'entropie.
|
||||
- ⌛ @nennaLecture1Monge
|
||||
|
||||
### Inférence de graphes
|
||||
|
||||
- ⌛ @aitchisonStatisticalAnalysisCompositional1982a, en cours
|
||||
|
||||
- ❗📖 @payneFiniteMixturesMultivariate2023 sur MixMPLN
|
||||
|
||||
### Causalité
|
||||
|
||||
- ❗📖 @bystrovaCausalDiscovery
|
||||
|
||||
### Largest Gaps
|
||||
|
||||
- ❗📖 @braultFastConsistentAlgorithm2023
|
||||
- ❗📖 @channarondClassificationEstimationStochastic2012 le papier qui introduit le *Largest Gaps*
|
||||
|
||||
## A discuter
|
||||
|
||||
### Congés P&S
|
||||
|
||||
### Thèse
|
||||
|
||||
- Faire préz CSI
|
||||
- Faire rapport CSI
|
||||
|
||||
### Interprétation écologiques résultats de Baldock
|
||||
|
||||
- ⌛ Point avec Elisa, **oui on relance**
|
||||
|
||||
### Inférence
|
||||
|
||||
- pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU ...)
|
||||
|
||||
> Combine networks at different taxonomic levels
|
||||
|
||||
- Inférence + GREMLINS
|
||||
|
|
@ -1,144 +0,0 @@
|
|||
@article{mazeletUnsupervisedLearningOptimal,
|
||||
title = {Unsupervised {{Learning}} for {{Optimal Transport}} Plan Prediction between Unbalanced Graphs},
|
||||
author = {Mazelet, Sonia and Flamary, Rémi and Thirion, Bertrand},
|
||||
abstract = {Optimal transport between graphs, based on Gromov-Wasserstein and other extensions, is a powerful tool for comparing and aligning graph structures. However, solving the associated non-convex optimization problems is computationally expensive, which limits the scalability of these methods to large graphs. In this work, we present Unbalanced Learning of Optimal Transport (ULOT), a deep learning method that predicts optimal transport plans between two graphs. Our method is trained by minimizing the fused unbalanced Gromov-Wasserstein (FUGW) loss. We propose a novel neural architecture with cross-attention that is conditioned on the FUGW tradeoff hyperparameters. We evaluate ULOT on synthetic stochastic block model (SBM) graphs and on real cortical surface data obtained from fMRI. ULOT predicts transport plans with competitive loss up to two orders of magnitude faster than classical solvers. Furthermore, the predicted plan can be used as a warm start for classical solvers to accelerate their convergence. Finally, the predicted transport plan is fully differentiable with respect to the graph inputs and FUGW hyperparameters, enabling the optimization of functionals of the ULOT plan.},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-11T09:08:09.864Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/HPZEYMM9/Mazelet et al. - Unsupervised Learning for Optimal Transport plan prediction between unbalanced graphs.pdf}
|
||||
}
|
||||
|
||||
@article{nennaLecture2Entropic,
|
||||
title = {Lecture 2: {{Entropic Optimal Transport}}},
|
||||
author = {Nenna, Luca},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-11T16:06:28.547Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/WGFIISDB/Nenna - Lecture 2 Entropic Optimal Transport.pdf}
|
||||
}
|
||||
|
||||
@article{nennaLecture1Monge,
|
||||
title = {Lecture 1 {{Monge}} and {{Kantorovich}} Problems: From Primal to Dual},
|
||||
author = {Nenna, Luca},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-13T09:24:13.832Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/7LVQPD6D/Nenna - Lecture 1 Monge and Kantorovich problems from primal to dual.pdf}
|
||||
}
|
||||
|
||||
@article{Morton2021.11.09.467939,
|
||||
title = {Scalable Estimation of Microbial Co-Occurrence Networks with {{Variational Autoencoders}}},
|
||||
author = {Morton, James T. and Silverman, Justin and Tikhonov, Gleb and Lähdesmäki, Harri and Bonneau, Rich},
|
||||
date = {2021},
|
||||
journaltitle = {bioRxiv : the preprint server for biology},
|
||||
shortjournal = {bioRxiv},
|
||||
eprint = {https://www.biorxiv.org/content/early/2021/11/11/2021.11.09.467939.full.pdf},
|
||||
publisher = {Cold Spring Harbor Laboratory},
|
||||
doi = {10.1101/2021.11.09.467939},
|
||||
url = {https://www.biorxiv.org/content/early/2021/11/11/2021.11.09.467939},
|
||||
abstract = {Estimating microbe-microbe interactions is critical for understanding the ecological laws governing microbial communities. Rapidly decreasing sequencing costs have promised new opportunities to estimate microbe-microbe interactions across thousands of uncultured, unknown microbes. However, typical microbiome datasets are very high dimensional and accurate estimation of microbial correlations requires tens of thousands of samples, exceeding the computational capabilities of existing methodologies. Furthermore, the vast majority of microbiome studies collect compositional metagenomics data which enforces a negative bias when computing microbe-microbe correlations. The Multinomial Logistic Normal (MLN) distribution has been shown to be effective at inferring microbe-microbe correlations, however scalable Bayesian inference of these distributions has remained elusive. Here, we show that carefully constructed Variational Autoencoders (VAEs) augmented with the Isometric Log-ratio (ILR) transform can estimate low-rank MLN distributions thousands of times faster than existing methods. These VAEs can be trained on tens of thousands of samples, enabling co-occurrence inference across tens of thousands of microbes without regularization. The latent embedding distances computed from these VAEs are competitive with existing beta-diversity methods across a variety of mouse and human microbiome classification and regression tasks, with notable improvements on longitudinal studies.Competing Interest StatementThe authors have declared no competing interest.},
|
||||
elocation-id = {2021.11.09.467939},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-30T14:17:29.518Z}
|
||||
}
|
||||
@article{aitchisonStatisticalAnalysisCompositional1982a,
|
||||
title = {The {{Statistical Analysis}} of {{Compositional Data}}},
|
||||
author = {Aitchison, J.},
|
||||
date = {1982},
|
||||
journaltitle = {Journal of the Royal Statistical Society. Series B (Methodological)},
|
||||
volume = {44},
|
||||
number = {2},
|
||||
eprint = {2345821},
|
||||
eprinttype = {jstor},
|
||||
pages = {139--177},
|
||||
publisher = {[Royal Statistical Society, Oxford University Press]},
|
||||
issn = {0035-9246},
|
||||
url = {https://www.jstor.org/stable/2345821},
|
||||
urldate = {2025-05-07},
|
||||
abstract = {The simplex plays an important role as sample space in many practical situations where compositional data, in the form of proportions of some whole, require interpretation. It is argued that the statistical analysis of such data has proved difficult because of a lack both of concepts of independence and of rich enough parametric classes of distributions in the simplex. A variety of independence hypotheses are introduced and interrelated, and new classes of transformed-normal distributions in the simplex are provided as models within which the independence hypotheses can be tested through standard theory of parametric hypothesis testing. The new concepts and statistical methodology are illustrated by a number of applications.},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-05-07T07:43:38.485Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/S97URH4Y/Aitchison - 1982 - The Statistical Analysis of Compositional Data.pdf}
|
||||
}
|
||||
@online{payneFiniteMixturesMultivariate2023,
|
||||
title = {Finite {{Mixtures}} of {{Multivariate Poisson-Log Normal Factor Analyzers}} for {{Clustering Count Data}}},
|
||||
author = {Payne, Andrea and Silva, Anjali and Rothstein, Steven J. and McNicholas, Paul D. and Subedi, Sanjeena},
|
||||
date = {2023-11-13},
|
||||
eprint = {2311.07762},
|
||||
eprinttype = {arXiv},
|
||||
eprintclass = {stat},
|
||||
doi = {10.48550/arXiv.2311.07762},
|
||||
url = {http://arxiv.org/abs/2311.07762},
|
||||
urldate = {2025-07-02},
|
||||
abstract = {A mixture of multivariate Poisson-log normal factor analyzers is introduced by imposing constraints on the covariance matrix, which resulted in flexible models for clustering purposes. In particular, a class of eight parsimonious mixture models based on the mixtures of factor analyzers model are introduced. Variational Gaussian approximation is used for parameter estimation, and information criteria are used for model selection. The proposed models are explored in the context of clustering discrete data arising from RNA sequencing studies. Using real and simulated data, the models are shown to give favourable clustering performance. The GitHub R package for this work is available at https://github.com/anjalisilva/mixMPLNFA and is released under the open-source MIT license.},
|
||||
pubstate = {prepublished},
|
||||
keywords = {/unread,Statistics - Computation,Statistics - Machine Learning,Statistics - Methodology},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-02T09:31:47.579Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/BXVPEIDD/Payne et al. - 2023 - Finite Mixtures of Multivariate Poisson-Log Normal Factor Analyzers for Clustering Count Data.pdf;/home/louis/snap/zotero-snap/common/Zotero/storage/L5DAS5C2/2311.html}
|
||||
}
|
||||
@unpublished{bystrovaCausalDiscovery,
|
||||
title = {Causal Discovery},
|
||||
author = {Bystrova, Daria},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-02T09:34:39.476Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/NQE5DY92/Bystrova - Causal discovery.pdf}
|
||||
}
|
||||
|
||||
@online{braultFastConsistentAlgorithm2023,
|
||||
title = {Fast and {{Consistent Algorithm}} for the {{Latent Block Model}}},
|
||||
author = {Brault, Vincent and Channarond, Antoine},
|
||||
date = {2023-03-09},
|
||||
eprint = {1610.09005},
|
||||
eprinttype = {arXiv},
|
||||
eprintclass = {math},
|
||||
doi = {10.48550/arXiv.1610.09005},
|
||||
url = {http://arxiv.org/abs/1610.09005},
|
||||
urldate = {2025-07-09},
|
||||
abstract = {The latent block model is used to simultaneously rank the rows and columns of a matrix to reveal a block structure. The algorithms used for estimation are often time consuming. However, recent work shows that the log-likelihood ratios are equivalent under the complete and observed (with unknown labels) models and the groups posterior distribution to converge as the size of the data increases to a Dirac mass located at the actual groups configuration. Based on these observations, the algorithm Largest Gaps is proposed in this paper to perform clustering using only the marginals of the matrix, when the number of blocks is very small with respect to the size of the whole matrix in the case of binary data. In addition, a model selection method is incorporated with a proof of its consistency. Thus, this paper shows that studying simplistic configurations (few blocks compared to the size of the matrix or very contrasting blocks) with complex algorithms is useless since the marginals already give very good parameter and classification estimates.},
|
||||
langid = {english},
|
||||
pubstate = {prepublished},
|
||||
keywords = {/unread,Mathematics - Statistics Theory,Statistics - Computation,Statistics - Statistics Theory},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-09T13:58:53.533Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/5LXC6Y68/Brault et Channarond - 2023 - Fast and Consistent Algorithm for the Latent Block Model.pdf}
|
||||
}
|
||||
|
||||
@article{braultGeneralisationLalgorithmeLargest,
|
||||
title = {Généralisation de l'algorithme Largest Gaps pour le modèle des blocs latents non-paramétrique},
|
||||
author = {Brault, Vincent and Channarond, Antoine and Robert, Valérie},
|
||||
abstract = {The latent block model assumes there exists a distribution for each crossing between an object cluster and a variable cluster of a data table ; the cells are supposed to be independent conditionally to the choice of these clusters. To estimate the model parameters, most of algorithms are time consuming. Brault and Channarond (2016) proposed to adapt the Largest Gaps algorithm which consists in using the margins. They thus obtained a procedure which estimates all the model parameters consistently but requires a large number of observations. In this talk, we will extend the procedure to the case of any distribution having a second order moment by using an EM algorithm estimation.},
|
||||
langid = {french},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-09T12:29:43.098Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/GIUNC4L3/Brault et al. - Généralisation de l'algorithme Largest Gaps pour le modèle des blocs latents non-paramétrique.pdf}
|
||||
}
|
||||
|
||||
@article{channarondClassificationEstimationStochastic2012,
|
||||
title = {Classification and Estimation in the {{Stochastic Blockmodel}} Based on the Empirical Degrees},
|
||||
author = {Channarond, Antoine and Daudin, Jean-Jacques and Robin, Stéphane},
|
||||
date = {2012-01-01},
|
||||
journaltitle = {Electronic Journal of Statistics},
|
||||
shortjournal = {Electron. J. Statist.},
|
||||
volume = {6},
|
||||
publisher = {Institute of Mathematical Statistics},
|
||||
issn = {1935-7524},
|
||||
doi = {10.1214/12-ejs753},
|
||||
url = {https://projecteuclid.org/journals/electronic-journal-of-statistics/volume-6/issue-none/Classification-and-estimation-in-the-Stochastic-Blockmodel-based-on-the/10.1214/12-EJS753.full},
|
||||
urldate = {2025-07-09},
|
||||
abstract = {The Stochastic Blockmodel [16] is a mixture model for heterogeneous network data. Unlike the usual statistical framework, new nodes give additional information about the previous ones in this model. Thereby the distribution of the degrees concentrates in points conditionally on the node class. We show under a mild assumption that classification, estimation and model selection can actually be achieved with no more than the empirical degree data. We provide an algorithm able to process very large networks and consistent estimators based on it. In particular, we prove a bound of the probability of misclassification of at least one node, including when the number of classes grows.},
|
||||
issue = {none},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-09T13:59:33.921Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/8TL8AJ2G/Channarond et al. - 2012 - Classification and estimation in the Stochastic Blockmodel based on the empirical degrees.pdf}
|
||||
}
|
||||
924
suivi/2025-33/2025-33.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>
|
||||
|
|
@ -1,158 +0,0 @@
|
|||
---
|
||||
title: "Bilan semaine 33 2025 : 11 août - 15 août"
|
||||
categories: [colBiSBM, inférence, GNN]
|
||||
date: 2025-08-14
|
||||
date-modified: last-modified
|
||||
bibliography: references.bib
|
||||
---
|
||||
|
||||
## TODO List
|
||||
|
||||
- Pour clustering de collections sur données ~~réelles~~ :
|
||||
→ L'intuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs $(Q_1,Q_2)$.
|
||||
- ❓Je n'arrive plus à reproduire le bug pour l'inférence...
|
||||
- 😫 bug encore. S'assurer que ça marche et relancer
|
||||
|
||||
- ⌛ **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 :
|
||||
- Donner la matrice identité comme features
|
||||
- Corriger les degrés calculés.
|
||||
- ✅ Ajouter au tableau comparatif sep BiSBM
|
||||
|
||||
- ✅ Pour s'assurer que colBiSBM marche, il faut comparer avec une proportion de :
|
||||
- *Missing links*, ie des faux zéros
|
||||
- *NA* en *Missing at random (MAR)*
|
||||
|
||||

|
||||
|
||||
- Faible performances de l'inférence :
|
||||
- Vérifier que les conditions d'identifiabilité des modèles fautifs sont bien remplies.
|
||||
- Récupérer des jeux de paramètres et essayer de reproduire les résultats.
|
||||
|
||||
- Clustering sur Doré :
|
||||
- ✅ Désaggréger les réseaux et relancer le clustering sur certains auteurs.
|
||||
- Regarder pour les couples date+nom les études et le nombre de réseaux analysables (Possible demander à Élisa)
|
||||
- ⌛ Chamberlain et al semble intéressant à regarder !
|
||||
- Clusteriser sur la base des noms et voir parmi les réseaux Européens (désagrégés ?)
|
||||
- Si M > 10, alors voir si je retrouve les mêmes résultats que dans les études.
|
||||
|
||||
- Regarder les codes Mangal database pour $\delta$
|
||||
- Voir $\delta$ mais additif
|
||||
|
||||
:::{.callout-note}
|
||||
### $\delta$ additif Bernoulli
|
||||
En Bernoulli pas de forme analytique non plus :
|
||||
Pour $\alpha_{qr}$:
|
||||
$$ \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$$
|
||||
$$\Leftrightarrow \sum_m \frac{e^m_{qr}}{\alpha_{qr}} + \frac{1}{\alpha_{qr}+\delta_m-1} (n^m_{qr}-e^m_{qr}) = 0$$
|
||||
|
||||
Et pour $\delta_m$:
|
||||
$$ \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$$
|
||||
:::
|
||||
|
||||
:::{.callout-note}
|
||||
### $\delta$ additif Poisson
|
||||
Forme analytique mais risque de confusion ?
|
||||
$$\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}} $$
|
||||
|
||||
:::
|
||||
|
||||
- Regarder la liste des cours du MathSV et de l'Université Paris-Saclay.
|
||||
|
||||
- ⌛ **Plutôt regarder pour introduire un modèle $\delta$-colBiSBM**.
|
||||
- Ajouter le produit par $\delta$ là où nécessaire
|
||||
- Ajouter les modèles $\delta$, $\delta\pi, \dots$ et les blocs conditionnels
|
||||
- Ajouter les tests unitaires adéquats et les vérifier
|
||||
|
||||
- Regarder *Largest gap* sur réseaux Doré
|
||||
|
||||
- Essayer *clustering* sur `supinfo`
|
||||
|
||||
- Homogénéiser notations dans les supplementaries
|
||||
|
||||
:::{#ref-kmeans-vae}
|
||||
|
||||
- Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur l'espace latent
|
||||
J'ai commencé à regarder un peu
|
||||
|
||||
:::
|
||||
|
||||
|
||||
### Inférence et microbes
|
||||
|
||||
- ✅ Ouvert les donnés Compendium Europe avec easy16s, premières remarques : en dessous de famille peu d'information
|
||||
- easy16s : se renseigner sur
|
||||
- $\alpha$, $\beta$ diversité
|
||||
- Heatmap
|
||||
- Lancer *colBiSBM* sur $OTU\times Sample$ → problème du chargement en mémoire des données à voir
|
||||
- Lancer *colSBM* sur $OTU\times OTU$
|
||||
- TabNet pratiquer les [exercices](https://github.com/cregouby/Tutoriel_torch)
|
||||
- Regarder **SPARTA** Rennes
|
||||
- Lire Papiers compositional data (Aitchison et al. intro)
|
||||
- Lire article multi-niveaux Saint-Clair
|
||||
- Ecrire et étudier les modèles pour différents niveaux taxonomiques.
|
||||
\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*}
|
||||
|
||||
#### Causalité
|
||||
|
||||
Plus sur le temps long, à regarder
|
||||
|
||||
- GT causalité
|
||||
- Daria Bystrova lire présentation @bystrovaCausalDiscovery (Meek rules, V-structure)
|
||||
|
||||
## Biblio à faire
|
||||
|
||||
- Regarder Transport optimal graphes bipartite.
|
||||
|
||||
|
||||
## Lectures en cours 📚
|
||||
|
||||
### HDR Vincent Brault
|
||||
|
||||
- ✅ 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 *les modèles à var latentes et le transport optimal*. Le chap 4 a l'air intéressant notamment le **mélange de modèles de segmentation**.
|
||||
- ⌛ Chap 2 : Creuser l'idée de maximiser l'énergie libre, très intéressant regarder le critère CARI et lire Robert et al 2021. Actuellement p32 du manuscrit
|
||||
- Chap 3
|
||||
|
||||
### OT
|
||||
- ⌛ @mazeletUnsupervisedLearningOptimal Intéressant pour le transport optimal entre graphes de tailles différentes | Regarder si regularization entropique ne marche pas bien pour le graphe.
|
||||
- ⌛ @nennaLecture2Entropic Pour comprendre le problème d'OT régularisé pour l'entropie.
|
||||
- ⌛ @nennaLecture1Monge
|
||||
|
||||
### Inférence de graphes
|
||||
|
||||
- ⌛ @aitchisonStatisticalAnalysisCompositional1982a, en cours
|
||||
|
||||
- ❗📖 @payneFiniteMixturesMultivariate2023 sur MixMPLN
|
||||
|
||||
### Causalité
|
||||
|
||||
- ❗📖 @bystrovaCausalDiscovery
|
||||
|
||||
### Largest Gaps
|
||||
|
||||
- ❗📖 @braultFastConsistentAlgorithm2023
|
||||
- ❗📖 @channarondClassificationEstimationStochastic2012 le papier qui introduit le *Largest Gaps*
|
||||
|
||||
## A discuter
|
||||
|
||||
### Congés P&S
|
||||
|
||||
### Thèse
|
||||
|
||||
- Faire préz CSI
|
||||
- Faire rapport CSI
|
||||
|
||||
### Interprétation écologiques résultats de Baldock
|
||||
|
||||
- ⌛ Point avec Elisa, **oui on relance**
|
||||
|
||||
### Inférence
|
||||
|
||||
- pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU ...)
|
||||
|
||||
> Combine networks at different taxonomic levels
|
||||
|
||||
- Inférence + GREMLINS
|
||||
|
|
@ -1,144 +0,0 @@
|
|||
@article{mazeletUnsupervisedLearningOptimal,
|
||||
title = {Unsupervised {{Learning}} for {{Optimal Transport}} Plan Prediction between Unbalanced Graphs},
|
||||
author = {Mazelet, Sonia and Flamary, Rémi and Thirion, Bertrand},
|
||||
abstract = {Optimal transport between graphs, based on Gromov-Wasserstein and other extensions, is a powerful tool for comparing and aligning graph structures. However, solving the associated non-convex optimization problems is computationally expensive, which limits the scalability of these methods to large graphs. In this work, we present Unbalanced Learning of Optimal Transport (ULOT), a deep learning method that predicts optimal transport plans between two graphs. Our method is trained by minimizing the fused unbalanced Gromov-Wasserstein (FUGW) loss. We propose a novel neural architecture with cross-attention that is conditioned on the FUGW tradeoff hyperparameters. We evaluate ULOT on synthetic stochastic block model (SBM) graphs and on real cortical surface data obtained from fMRI. ULOT predicts transport plans with competitive loss up to two orders of magnitude faster than classical solvers. Furthermore, the predicted plan can be used as a warm start for classical solvers to accelerate their convergence. Finally, the predicted transport plan is fully differentiable with respect to the graph inputs and FUGW hyperparameters, enabling the optimization of functionals of the ULOT plan.},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-11T09:08:09.864Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/HPZEYMM9/Mazelet et al. - Unsupervised Learning for Optimal Transport plan prediction between unbalanced graphs.pdf}
|
||||
}
|
||||
|
||||
@article{nennaLecture2Entropic,
|
||||
title = {Lecture 2: {{Entropic Optimal Transport}}},
|
||||
author = {Nenna, Luca},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-11T16:06:28.547Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/WGFIISDB/Nenna - Lecture 2 Entropic Optimal Transport.pdf}
|
||||
}
|
||||
|
||||
@article{nennaLecture1Monge,
|
||||
title = {Lecture 1 {{Monge}} and {{Kantorovich}} Problems: From Primal to Dual},
|
||||
author = {Nenna, Luca},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-13T09:24:13.832Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/7LVQPD6D/Nenna - Lecture 1 Monge and Kantorovich problems from primal to dual.pdf}
|
||||
}
|
||||
|
||||
@article{Morton2021.11.09.467939,
|
||||
title = {Scalable Estimation of Microbial Co-Occurrence Networks with {{Variational Autoencoders}}},
|
||||
author = {Morton, James T. and Silverman, Justin and Tikhonov, Gleb and Lähdesmäki, Harri and Bonneau, Rich},
|
||||
date = {2021},
|
||||
journaltitle = {bioRxiv : the preprint server for biology},
|
||||
shortjournal = {bioRxiv},
|
||||
eprint = {https://www.biorxiv.org/content/early/2021/11/11/2021.11.09.467939.full.pdf},
|
||||
publisher = {Cold Spring Harbor Laboratory},
|
||||
doi = {10.1101/2021.11.09.467939},
|
||||
url = {https://www.biorxiv.org/content/early/2021/11/11/2021.11.09.467939},
|
||||
abstract = {Estimating microbe-microbe interactions is critical for understanding the ecological laws governing microbial communities. Rapidly decreasing sequencing costs have promised new opportunities to estimate microbe-microbe interactions across thousands of uncultured, unknown microbes. However, typical microbiome datasets are very high dimensional and accurate estimation of microbial correlations requires tens of thousands of samples, exceeding the computational capabilities of existing methodologies. Furthermore, the vast majority of microbiome studies collect compositional metagenomics data which enforces a negative bias when computing microbe-microbe correlations. The Multinomial Logistic Normal (MLN) distribution has been shown to be effective at inferring microbe-microbe correlations, however scalable Bayesian inference of these distributions has remained elusive. Here, we show that carefully constructed Variational Autoencoders (VAEs) augmented with the Isometric Log-ratio (ILR) transform can estimate low-rank MLN distributions thousands of times faster than existing methods. These VAEs can be trained on tens of thousands of samples, enabling co-occurrence inference across tens of thousands of microbes without regularization. The latent embedding distances computed from these VAEs are competitive with existing beta-diversity methods across a variety of mouse and human microbiome classification and regression tasks, with notable improvements on longitudinal studies.Competing Interest StatementThe authors have declared no competing interest.},
|
||||
elocation-id = {2021.11.09.467939},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-30T14:17:29.518Z}
|
||||
}
|
||||
@article{aitchisonStatisticalAnalysisCompositional1982a,
|
||||
title = {The {{Statistical Analysis}} of {{Compositional Data}}},
|
||||
author = {Aitchison, J.},
|
||||
date = {1982},
|
||||
journaltitle = {Journal of the Royal Statistical Society. Series B (Methodological)},
|
||||
volume = {44},
|
||||
number = {2},
|
||||
eprint = {2345821},
|
||||
eprinttype = {jstor},
|
||||
pages = {139--177},
|
||||
publisher = {[Royal Statistical Society, Oxford University Press]},
|
||||
issn = {0035-9246},
|
||||
url = {https://www.jstor.org/stable/2345821},
|
||||
urldate = {2025-05-07},
|
||||
abstract = {The simplex plays an important role as sample space in many practical situations where compositional data, in the form of proportions of some whole, require interpretation. It is argued that the statistical analysis of such data has proved difficult because of a lack both of concepts of independence and of rich enough parametric classes of distributions in the simplex. A variety of independence hypotheses are introduced and interrelated, and new classes of transformed-normal distributions in the simplex are provided as models within which the independence hypotheses can be tested through standard theory of parametric hypothesis testing. The new concepts and statistical methodology are illustrated by a number of applications.},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-05-07T07:43:38.485Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/S97URH4Y/Aitchison - 1982 - The Statistical Analysis of Compositional Data.pdf}
|
||||
}
|
||||
@online{payneFiniteMixturesMultivariate2023,
|
||||
title = {Finite {{Mixtures}} of {{Multivariate Poisson-Log Normal Factor Analyzers}} for {{Clustering Count Data}}},
|
||||
author = {Payne, Andrea and Silva, Anjali and Rothstein, Steven J. and McNicholas, Paul D. and Subedi, Sanjeena},
|
||||
date = {2023-11-13},
|
||||
eprint = {2311.07762},
|
||||
eprinttype = {arXiv},
|
||||
eprintclass = {stat},
|
||||
doi = {10.48550/arXiv.2311.07762},
|
||||
url = {http://arxiv.org/abs/2311.07762},
|
||||
urldate = {2025-07-02},
|
||||
abstract = {A mixture of multivariate Poisson-log normal factor analyzers is introduced by imposing constraints on the covariance matrix, which resulted in flexible models for clustering purposes. In particular, a class of eight parsimonious mixture models based on the mixtures of factor analyzers model are introduced. Variational Gaussian approximation is used for parameter estimation, and information criteria are used for model selection. The proposed models are explored in the context of clustering discrete data arising from RNA sequencing studies. Using real and simulated data, the models are shown to give favourable clustering performance. The GitHub R package for this work is available at https://github.com/anjalisilva/mixMPLNFA and is released under the open-source MIT license.},
|
||||
pubstate = {prepublished},
|
||||
keywords = {/unread,Statistics - Computation,Statistics - Machine Learning,Statistics - Methodology},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-02T09:31:47.579Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/BXVPEIDD/Payne et al. - 2023 - Finite Mixtures of Multivariate Poisson-Log Normal Factor Analyzers for Clustering Count Data.pdf;/home/louis/snap/zotero-snap/common/Zotero/storage/L5DAS5C2/2311.html}
|
||||
}
|
||||
@unpublished{bystrovaCausalDiscovery,
|
||||
title = {Causal Discovery},
|
||||
author = {Bystrova, Daria},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-02T09:34:39.476Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/NQE5DY92/Bystrova - Causal discovery.pdf}
|
||||
}
|
||||
|
||||
@online{braultFastConsistentAlgorithm2023,
|
||||
title = {Fast and {{Consistent Algorithm}} for the {{Latent Block Model}}},
|
||||
author = {Brault, Vincent and Channarond, Antoine},
|
||||
date = {2023-03-09},
|
||||
eprint = {1610.09005},
|
||||
eprinttype = {arXiv},
|
||||
eprintclass = {math},
|
||||
doi = {10.48550/arXiv.1610.09005},
|
||||
url = {http://arxiv.org/abs/1610.09005},
|
||||
urldate = {2025-07-09},
|
||||
abstract = {The latent block model is used to simultaneously rank the rows and columns of a matrix to reveal a block structure. The algorithms used for estimation are often time consuming. However, recent work shows that the log-likelihood ratios are equivalent under the complete and observed (with unknown labels) models and the groups posterior distribution to converge as the size of the data increases to a Dirac mass located at the actual groups configuration. Based on these observations, the algorithm Largest Gaps is proposed in this paper to perform clustering using only the marginals of the matrix, when the number of blocks is very small with respect to the size of the whole matrix in the case of binary data. In addition, a model selection method is incorporated with a proof of its consistency. Thus, this paper shows that studying simplistic configurations (few blocks compared to the size of the matrix or very contrasting blocks) with complex algorithms is useless since the marginals already give very good parameter and classification estimates.},
|
||||
langid = {english},
|
||||
pubstate = {prepublished},
|
||||
keywords = {/unread,Mathematics - Statistics Theory,Statistics - Computation,Statistics - Statistics Theory},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-09T13:58:53.533Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/5LXC6Y68/Brault et Channarond - 2023 - Fast and Consistent Algorithm for the Latent Block Model.pdf}
|
||||
}
|
||||
|
||||
@article{braultGeneralisationLalgorithmeLargest,
|
||||
title = {Généralisation de l'algorithme Largest Gaps pour le modèle des blocs latents non-paramétrique},
|
||||
author = {Brault, Vincent and Channarond, Antoine and Robert, Valérie},
|
||||
abstract = {The latent block model assumes there exists a distribution for each crossing between an object cluster and a variable cluster of a data table ; the cells are supposed to be independent conditionally to the choice of these clusters. To estimate the model parameters, most of algorithms are time consuming. Brault and Channarond (2016) proposed to adapt the Largest Gaps algorithm which consists in using the margins. They thus obtained a procedure which estimates all the model parameters consistently but requires a large number of observations. In this talk, we will extend the procedure to the case of any distribution having a second order moment by using an EM algorithm estimation.},
|
||||
langid = {french},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-09T12:29:43.098Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/GIUNC4L3/Brault et al. - Généralisation de l'algorithme Largest Gaps pour le modèle des blocs latents non-paramétrique.pdf}
|
||||
}
|
||||
|
||||
@article{channarondClassificationEstimationStochastic2012,
|
||||
title = {Classification and Estimation in the {{Stochastic Blockmodel}} Based on the Empirical Degrees},
|
||||
author = {Channarond, Antoine and Daudin, Jean-Jacques and Robin, Stéphane},
|
||||
date = {2012-01-01},
|
||||
journaltitle = {Electronic Journal of Statistics},
|
||||
shortjournal = {Electron. J. Statist.},
|
||||
volume = {6},
|
||||
publisher = {Institute of Mathematical Statistics},
|
||||
issn = {1935-7524},
|
||||
doi = {10.1214/12-ejs753},
|
||||
url = {https://projecteuclid.org/journals/electronic-journal-of-statistics/volume-6/issue-none/Classification-and-estimation-in-the-Stochastic-Blockmodel-based-on-the/10.1214/12-EJS753.full},
|
||||
urldate = {2025-07-09},
|
||||
abstract = {The Stochastic Blockmodel [16] is a mixture model for heterogeneous network data. Unlike the usual statistical framework, new nodes give additional information about the previous ones in this model. Thereby the distribution of the degrees concentrates in points conditionally on the node class. We show under a mild assumption that classification, estimation and model selection can actually be achieved with no more than the empirical degree data. We provide an algorithm able to process very large networks and consistent estimators based on it. In particular, we prove a bound of the probability of misclassification of at least one node, including when the number of classes grows.},
|
||||
issue = {none},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-09T13:59:33.921Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/8TL8AJ2G/Channarond et al. - 2012 - Classification and estimation in the Stochastic Blockmodel based on the empirical degrees.pdf}
|
||||
}
|
||||
873
suivi/2025-35/2025-35.html
Normal file
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>
|
||||
|
|
@ -1,147 +0,0 @@
|
|||
---
|
||||
title: "Bilan semaine 35 2025 : 25 août - 29 août"
|
||||
categories: [colBiSBM, inférence, GNN]
|
||||
date: 2025-08-29
|
||||
date-modified: last-modified
|
||||
bibliography: references.bib
|
||||
---
|
||||
|
||||
## TODO List
|
||||
|
||||
- Pour clustering de collections sur données ~~réelles~~ :
|
||||
→ L'intuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs $(Q_1,Q_2)$.
|
||||
- ❓Je n'arrive plus à reproduire le bug pour l'inférence...
|
||||
- 😫 bug encore. S'assurer que ça marche et relancer
|
||||
|
||||
- ⌛ 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 :
|
||||
- Donner la matrice identité comme features
|
||||
- Corriger les degrés calculés.
|
||||
|
||||
- Faible performances de l'inférence :
|
||||
- Vérifier que les conditions d'identifiabilité des modèles fautifs sont bien remplies.
|
||||
- Récupérer des jeux de paramètres et essayer de reproduire les résultats.
|
||||
|
||||
- Clustering sur Doré :
|
||||
- Regarder pour les couples date+nom les études et le nombre de réseaux analysables (Possible demander à Élisa)
|
||||
- ⌛ Chamberlain et al semble intéressant à regarder ! Voir le Rmarkdown
|
||||
- Clusteriser sur la base des noms et voir parmi les réseaux Européens (désagrégés ?)
|
||||
- Si M > 10, alors voir si je retrouve les mêmes résultats que dans les études.
|
||||
|
||||
- Regarder les codes Mangal database pour $\delta$
|
||||
- Voir $\delta$ mais additif
|
||||
|
||||
:::{.callout-note}
|
||||
### $\delta$ additif Bernoulli
|
||||
En Bernoulli pas de forme analytique non plus :
|
||||
Pour $\alpha_{qr}$:
|
||||
$$ \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$$
|
||||
$$\Leftrightarrow \sum_m \frac{e^m_{qr}}{\alpha_{qr}} + \frac{1}{\alpha_{qr}+\delta_m-1} (n^m_{qr}-e^m_{qr}) = 0$$
|
||||
|
||||
Et pour $\delta_m$:
|
||||
$$ \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$$
|
||||
:::
|
||||
|
||||
:::{.callout-note}
|
||||
### $\delta$ additif Poisson
|
||||
Forme analytique mais risque de confusion ?
|
||||
$$\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}} $$
|
||||
|
||||
:::
|
||||
|
||||
- Regarder la liste des cours du MathSV et de l'Université Paris-Saclay.
|
||||
|
||||
- ⌛ **Plutôt regarder pour introduire un modèle $\delta$-colBiSBM**.
|
||||
- Ajouter le produit par $\delta$ là où nécessaire
|
||||
- Ajouter les modèles $\delta$, $\delta\pi, \dots$ et les blocs conditionnels
|
||||
- Ajouter les tests unitaires adéquats et les vérifier
|
||||
|
||||
- Regarder *Largest gap* sur réseaux Doré
|
||||
|
||||
- Essayer *clustering* sur `supinfo`
|
||||
|
||||
- Homogénéiser notations dans les supplementaries
|
||||
|
||||
:::{#ref-kmeans-vae}
|
||||
|
||||
- Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur l'espace latent
|
||||
J'ai commencé à regarder un peu
|
||||
|
||||
:::
|
||||
|
||||
|
||||
### Inférence et microbes
|
||||
|
||||
- easy16s : se renseigner sur
|
||||
- $\alpha$, $\beta$ diversité
|
||||
- Heatmap
|
||||
- Voir avec Mahendra à l'occasion du CSI
|
||||
- Lancer *colBiSBM* sur $OTU\times Sample$ → problème du chargement en mémoire des données à voir
|
||||
- Lancer *colSBM* sur $OTU\times OTU$
|
||||
- TabNet pratiquer les [exercices](https://github.com/cregouby/Tutoriel_torch)
|
||||
- Regarder **SPARTA** Rennes
|
||||
- Lire Papiers compositional data (Aitchison et al. intro)
|
||||
- Lire article multi-niveaux Saint-Clair
|
||||
- Ecrire et étudier les modèles pour différents niveaux taxonomiques.
|
||||
\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*}
|
||||
|
||||
#### Causalité
|
||||
|
||||
Plus sur le temps long, à regarder
|
||||
|
||||
- GT causalité
|
||||
- Daria Bystrova lire présentation @bystrovaCausalDiscovery (Meek rules, V-structure)
|
||||
|
||||
## Biblio à faire
|
||||
|
||||
- Regarder Transport optimal graphes bipartite.
|
||||
|
||||
|
||||
## Lectures en cours 📚
|
||||
|
||||
### HDR Vincent Brault
|
||||
|
||||
- ⌛ Chap 2 : Creuser l'idée de maximiser l'énergie libre, très intéressant regarder le critère CARI et lire Robert et al 2021. Actuellement p32 du manuscrit
|
||||
- Chap 3
|
||||
|
||||
### OT
|
||||
- ⌛ @mazeletUnsupervisedLearningOptimal Intéressant pour le transport optimal entre graphes de tailles différentes | Regarder si regularization entropique ne marche pas bien pour le graphe.
|
||||
- ⌛ @nennaLecture2Entropic Pour comprendre le problème d'OT régularisé pour l'entropie.
|
||||
- ⌛ @nennaLecture1Monge
|
||||
|
||||
### Inférence de graphes
|
||||
|
||||
- ⌛ @aitchisonStatisticalAnalysisCompositional1982a, en cours
|
||||
|
||||
- ❗📖 @payneFiniteMixturesMultivariate2023 sur MixMPLN
|
||||
|
||||
### Causalité
|
||||
|
||||
- ❗📖 @bystrovaCausalDiscovery
|
||||
|
||||
### Largest Gaps
|
||||
|
||||
- ❗📖 @braultFastConsistentAlgorithm2023
|
||||
- ❗📖 @channarondClassificationEstimationStochastic2012 le papier qui introduit le *Largest Gaps*
|
||||
|
||||
## A discuter
|
||||
|
||||
### Congés P&S
|
||||
|
||||
### Thèse
|
||||
|
||||
- Faire préz CSI
|
||||
- Faire rapport CSI
|
||||
|
||||
|
||||
### Inférence
|
||||
|
||||
- pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU ...)
|
||||
|
||||
> Combine networks at different taxonomic levels
|
||||
|
||||
- Inférence + GREMLINS
|
||||
|
|
@ -1,144 +0,0 @@
|
|||
@article{mazeletUnsupervisedLearningOptimal,
|
||||
title = {Unsupervised {{Learning}} for {{Optimal Transport}} Plan Prediction between Unbalanced Graphs},
|
||||
author = {Mazelet, Sonia and Flamary, Rémi and Thirion, Bertrand},
|
||||
abstract = {Optimal transport between graphs, based on Gromov-Wasserstein and other extensions, is a powerful tool for comparing and aligning graph structures. However, solving the associated non-convex optimization problems is computationally expensive, which limits the scalability of these methods to large graphs. In this work, we present Unbalanced Learning of Optimal Transport (ULOT), a deep learning method that predicts optimal transport plans between two graphs. Our method is trained by minimizing the fused unbalanced Gromov-Wasserstein (FUGW) loss. We propose a novel neural architecture with cross-attention that is conditioned on the FUGW tradeoff hyperparameters. We evaluate ULOT on synthetic stochastic block model (SBM) graphs and on real cortical surface data obtained from fMRI. ULOT predicts transport plans with competitive loss up to two orders of magnitude faster than classical solvers. Furthermore, the predicted plan can be used as a warm start for classical solvers to accelerate their convergence. Finally, the predicted transport plan is fully differentiable with respect to the graph inputs and FUGW hyperparameters, enabling the optimization of functionals of the ULOT plan.},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-11T09:08:09.864Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/HPZEYMM9/Mazelet et al. - Unsupervised Learning for Optimal Transport plan prediction between unbalanced graphs.pdf}
|
||||
}
|
||||
|
||||
@article{nennaLecture2Entropic,
|
||||
title = {Lecture 2: {{Entropic Optimal Transport}}},
|
||||
author = {Nenna, Luca},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-11T16:06:28.547Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/WGFIISDB/Nenna - Lecture 2 Entropic Optimal Transport.pdf}
|
||||
}
|
||||
|
||||
@article{nennaLecture1Monge,
|
||||
title = {Lecture 1 {{Monge}} and {{Kantorovich}} Problems: From Primal to Dual},
|
||||
author = {Nenna, Luca},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-13T09:24:13.832Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/7LVQPD6D/Nenna - Lecture 1 Monge and Kantorovich problems from primal to dual.pdf}
|
||||
}
|
||||
|
||||
@article{Morton2021.11.09.467939,
|
||||
title = {Scalable Estimation of Microbial Co-Occurrence Networks with {{Variational Autoencoders}}},
|
||||
author = {Morton, James T. and Silverman, Justin and Tikhonov, Gleb and Lähdesmäki, Harri and Bonneau, Rich},
|
||||
date = {2021},
|
||||
journaltitle = {bioRxiv : the preprint server for biology},
|
||||
shortjournal = {bioRxiv},
|
||||
eprint = {https://www.biorxiv.org/content/early/2021/11/11/2021.11.09.467939.full.pdf},
|
||||
publisher = {Cold Spring Harbor Laboratory},
|
||||
doi = {10.1101/2021.11.09.467939},
|
||||
url = {https://www.biorxiv.org/content/early/2021/11/11/2021.11.09.467939},
|
||||
abstract = {Estimating microbe-microbe interactions is critical for understanding the ecological laws governing microbial communities. Rapidly decreasing sequencing costs have promised new opportunities to estimate microbe-microbe interactions across thousands of uncultured, unknown microbes. However, typical microbiome datasets are very high dimensional and accurate estimation of microbial correlations requires tens of thousands of samples, exceeding the computational capabilities of existing methodologies. Furthermore, the vast majority of microbiome studies collect compositional metagenomics data which enforces a negative bias when computing microbe-microbe correlations. The Multinomial Logistic Normal (MLN) distribution has been shown to be effective at inferring microbe-microbe correlations, however scalable Bayesian inference of these distributions has remained elusive. Here, we show that carefully constructed Variational Autoencoders (VAEs) augmented with the Isometric Log-ratio (ILR) transform can estimate low-rank MLN distributions thousands of times faster than existing methods. These VAEs can be trained on tens of thousands of samples, enabling co-occurrence inference across tens of thousands of microbes without regularization. The latent embedding distances computed from these VAEs are competitive with existing beta-diversity methods across a variety of mouse and human microbiome classification and regression tasks, with notable improvements on longitudinal studies.Competing Interest StatementThe authors have declared no competing interest.},
|
||||
elocation-id = {2021.11.09.467939},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-30T14:17:29.518Z}
|
||||
}
|
||||
@article{aitchisonStatisticalAnalysisCompositional1982a,
|
||||
title = {The {{Statistical Analysis}} of {{Compositional Data}}},
|
||||
author = {Aitchison, J.},
|
||||
date = {1982},
|
||||
journaltitle = {Journal of the Royal Statistical Society. Series B (Methodological)},
|
||||
volume = {44},
|
||||
number = {2},
|
||||
eprint = {2345821},
|
||||
eprinttype = {jstor},
|
||||
pages = {139--177},
|
||||
publisher = {[Royal Statistical Society, Oxford University Press]},
|
||||
issn = {0035-9246},
|
||||
url = {https://www.jstor.org/stable/2345821},
|
||||
urldate = {2025-05-07},
|
||||
abstract = {The simplex plays an important role as sample space in many practical situations where compositional data, in the form of proportions of some whole, require interpretation. It is argued that the statistical analysis of such data has proved difficult because of a lack both of concepts of independence and of rich enough parametric classes of distributions in the simplex. A variety of independence hypotheses are introduced and interrelated, and new classes of transformed-normal distributions in the simplex are provided as models within which the independence hypotheses can be tested through standard theory of parametric hypothesis testing. The new concepts and statistical methodology are illustrated by a number of applications.},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-05-07T07:43:38.485Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/S97URH4Y/Aitchison - 1982 - The Statistical Analysis of Compositional Data.pdf}
|
||||
}
|
||||
@online{payneFiniteMixturesMultivariate2023,
|
||||
title = {Finite {{Mixtures}} of {{Multivariate Poisson-Log Normal Factor Analyzers}} for {{Clustering Count Data}}},
|
||||
author = {Payne, Andrea and Silva, Anjali and Rothstein, Steven J. and McNicholas, Paul D. and Subedi, Sanjeena},
|
||||
date = {2023-11-13},
|
||||
eprint = {2311.07762},
|
||||
eprinttype = {arXiv},
|
||||
eprintclass = {stat},
|
||||
doi = {10.48550/arXiv.2311.07762},
|
||||
url = {http://arxiv.org/abs/2311.07762},
|
||||
urldate = {2025-07-02},
|
||||
abstract = {A mixture of multivariate Poisson-log normal factor analyzers is introduced by imposing constraints on the covariance matrix, which resulted in flexible models for clustering purposes. In particular, a class of eight parsimonious mixture models based on the mixtures of factor analyzers model are introduced. Variational Gaussian approximation is used for parameter estimation, and information criteria are used for model selection. The proposed models are explored in the context of clustering discrete data arising from RNA sequencing studies. Using real and simulated data, the models are shown to give favourable clustering performance. The GitHub R package for this work is available at https://github.com/anjalisilva/mixMPLNFA and is released under the open-source MIT license.},
|
||||
pubstate = {prepublished},
|
||||
keywords = {/unread,Statistics - Computation,Statistics - Machine Learning,Statistics - Methodology},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-02T09:31:47.579Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/BXVPEIDD/Payne et al. - 2023 - Finite Mixtures of Multivariate Poisson-Log Normal Factor Analyzers for Clustering Count Data.pdf;/home/louis/snap/zotero-snap/common/Zotero/storage/L5DAS5C2/2311.html}
|
||||
}
|
||||
@unpublished{bystrovaCausalDiscovery,
|
||||
title = {Causal Discovery},
|
||||
author = {Bystrova, Daria},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-02T09:34:39.476Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/NQE5DY92/Bystrova - Causal discovery.pdf}
|
||||
}
|
||||
|
||||
@online{braultFastConsistentAlgorithm2023,
|
||||
title = {Fast and {{Consistent Algorithm}} for the {{Latent Block Model}}},
|
||||
author = {Brault, Vincent and Channarond, Antoine},
|
||||
date = {2023-03-09},
|
||||
eprint = {1610.09005},
|
||||
eprinttype = {arXiv},
|
||||
eprintclass = {math},
|
||||
doi = {10.48550/arXiv.1610.09005},
|
||||
url = {http://arxiv.org/abs/1610.09005},
|
||||
urldate = {2025-07-09},
|
||||
abstract = {The latent block model is used to simultaneously rank the rows and columns of a matrix to reveal a block structure. The algorithms used for estimation are often time consuming. However, recent work shows that the log-likelihood ratios are equivalent under the complete and observed (with unknown labels) models and the groups posterior distribution to converge as the size of the data increases to a Dirac mass located at the actual groups configuration. Based on these observations, the algorithm Largest Gaps is proposed in this paper to perform clustering using only the marginals of the matrix, when the number of blocks is very small with respect to the size of the whole matrix in the case of binary data. In addition, a model selection method is incorporated with a proof of its consistency. Thus, this paper shows that studying simplistic configurations (few blocks compared to the size of the matrix or very contrasting blocks) with complex algorithms is useless since the marginals already give very good parameter and classification estimates.},
|
||||
langid = {english},
|
||||
pubstate = {prepublished},
|
||||
keywords = {/unread,Mathematics - Statistics Theory,Statistics - Computation,Statistics - Statistics Theory},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-09T13:58:53.533Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/5LXC6Y68/Brault et Channarond - 2023 - Fast and Consistent Algorithm for the Latent Block Model.pdf}
|
||||
}
|
||||
|
||||
@article{braultGeneralisationLalgorithmeLargest,
|
||||
title = {Généralisation de l'algorithme Largest Gaps pour le modèle des blocs latents non-paramétrique},
|
||||
author = {Brault, Vincent and Channarond, Antoine and Robert, Valérie},
|
||||
abstract = {The latent block model assumes there exists a distribution for each crossing between an object cluster and a variable cluster of a data table ; the cells are supposed to be independent conditionally to the choice of these clusters. To estimate the model parameters, most of algorithms are time consuming. Brault and Channarond (2016) proposed to adapt the Largest Gaps algorithm which consists in using the margins. They thus obtained a procedure which estimates all the model parameters consistently but requires a large number of observations. In this talk, we will extend the procedure to the case of any distribution having a second order moment by using an EM algorithm estimation.},
|
||||
langid = {french},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-09T12:29:43.098Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/GIUNC4L3/Brault et al. - Généralisation de l'algorithme Largest Gaps pour le modèle des blocs latents non-paramétrique.pdf}
|
||||
}
|
||||
|
||||
@article{channarondClassificationEstimationStochastic2012,
|
||||
title = {Classification and Estimation in the {{Stochastic Blockmodel}} Based on the Empirical Degrees},
|
||||
author = {Channarond, Antoine and Daudin, Jean-Jacques and Robin, Stéphane},
|
||||
date = {2012-01-01},
|
||||
journaltitle = {Electronic Journal of Statistics},
|
||||
shortjournal = {Electron. J. Statist.},
|
||||
volume = {6},
|
||||
publisher = {Institute of Mathematical Statistics},
|
||||
issn = {1935-7524},
|
||||
doi = {10.1214/12-ejs753},
|
||||
url = {https://projecteuclid.org/journals/electronic-journal-of-statistics/volume-6/issue-none/Classification-and-estimation-in-the-Stochastic-Blockmodel-based-on-the/10.1214/12-EJS753.full},
|
||||
urldate = {2025-07-09},
|
||||
abstract = {The Stochastic Blockmodel [16] is a mixture model for heterogeneous network data. Unlike the usual statistical framework, new nodes give additional information about the previous ones in this model. Thereby the distribution of the degrees concentrates in points conditionally on the node class. We show under a mild assumption that classification, estimation and model selection can actually be achieved with no more than the empirical degree data. We provide an algorithm able to process very large networks and consistent estimators based on it. In particular, we prove a bound of the probability of misclassification of at least one node, including when the number of classes grows.},
|
||||
issue = {none},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-09T13:59:33.921Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/8TL8AJ2G/Channarond et al. - 2012 - Classification and estimation in the Stochastic Blockmodel based on the empirical degrees.pdf}
|
||||
}
|
||||
869
suivi/2025-38/2025-38.html
Normal file
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>
|
||||
|
|
@ -1,144 +0,0 @@
|
|||
---
|
||||
title: "Bilan semaine 38 2025 : 15 septembre - 19 septembre"
|
||||
categories: [colBiSBM, inférence, GNN]
|
||||
date: 2025-09-19
|
||||
date-modified: last-modified
|
||||
bibliography: references.bib
|
||||
---
|
||||
|
||||
## TODO List
|
||||
|
||||
- Pour clustering de collections sur données ~~réelles~~ :
|
||||
→ L'intuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs $(Q_1,Q_2)$.
|
||||
- ❓Je n'arrive plus à reproduire le bug pour l'inférence...
|
||||
- 😫 bug encore. S'assurer que ça marche et relancer
|
||||
|
||||
- ⌛ 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 :
|
||||
- Donner la matrice identité comme features
|
||||
- Corriger les degrés calculés.
|
||||
|
||||
- ⚠️ Discuter intersection simulations
|
||||
- Clustering sur Doré :
|
||||
- Regarder pour les couples date+nom les études et le nombre de réseaux analysables (Possible demander à Élisa)
|
||||
- ⌛ Chamberlain et al semble intéressant à regarder ! Voir le Rmarkdown
|
||||
- Clusteriser sur la base des noms et voir parmi les réseaux Européens (désagrégés ?)
|
||||
- Si M > 10, alors voir si je retrouve les mêmes résultats que dans les études.
|
||||
|
||||
- Regarder les codes Mangal database pour $\delta$
|
||||
- Voir $\delta$ mais additif
|
||||
|
||||
:::{.callout-note}
|
||||
### $\delta$ additif Bernoulli
|
||||
En Bernoulli pas de forme analytique non plus :
|
||||
Pour $\alpha_{qr}$:
|
||||
$$ \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$$
|
||||
$$\Leftrightarrow \sum_m \frac{e^m_{qr}}{\alpha_{qr}} + \frac{1}{\alpha_{qr}+\delta_m-1} (n^m_{qr}-e^m_{qr}) = 0$$
|
||||
|
||||
Et pour $\delta_m$:
|
||||
$$ \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$$
|
||||
:::
|
||||
|
||||
:::{.callout-note}
|
||||
### $\delta$ additif Poisson
|
||||
Forme analytique mais risque de confusion ?
|
||||
$$\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}} $$
|
||||
|
||||
:::
|
||||
|
||||
- Regarder la liste des cours du MathSV et de l'Université Paris-Saclay.
|
||||
|
||||
- ⌛ **Plutôt regarder pour introduire un modèle $\delta$-colBiSBM**.
|
||||
- Ajouter le produit par $\delta$ là où nécessaire
|
||||
- Ajouter les modèles $\delta$, $\delta\pi, \dots$ et les blocs conditionnels
|
||||
- Ajouter les tests unitaires adéquats et les vérifier
|
||||
|
||||
- Regarder *Largest gap* sur réseaux Doré
|
||||
|
||||
- Essayer *clustering* sur `supinfo`
|
||||
|
||||
- Homogénéiser notations dans les supplementaries
|
||||
|
||||
:::{#ref-kmeans-vae}
|
||||
|
||||
- Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur l'espace latent
|
||||
J'ai commencé à regarder un peu
|
||||
|
||||
:::
|
||||
|
||||
|
||||
### Inférence et microbes
|
||||
|
||||
- easy16s : se renseigner sur
|
||||
- $\alpha$, $\beta$ diversité
|
||||
- Heatmap
|
||||
- Voir avec Mahendra à l'occasion du CSI
|
||||
- Lancer *colBiSBM* sur $OTU\times Sample$ → problème du chargement en mémoire des données à voir
|
||||
- Lancer *colSBM* sur $OTU\times OTU$
|
||||
- TabNet pratiquer les [exercices](https://github.com/cregouby/Tutoriel_torch)
|
||||
- Regarder **SPARTA** Rennes
|
||||
- Lire Papiers compositional data (Aitchison et al. intro)
|
||||
- Lire article multi-niveaux Saint-Clair
|
||||
- Ecrire et étudier les modèles pour différents niveaux taxonomiques.
|
||||
\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*}
|
||||
|
||||
#### Causalité
|
||||
|
||||
Plus sur le temps long, à regarder
|
||||
|
||||
- GT causalité
|
||||
- Daria Bystrova lire présentation @bystrovaCausalDiscovery (Meek rules, V-structure)
|
||||
|
||||
## Biblio à faire
|
||||
|
||||
- Regarder Transport optimal graphes bipartite.
|
||||
|
||||
|
||||
## Lectures en cours 📚
|
||||
|
||||
### HDR Vincent Brault
|
||||
|
||||
- ⌛ Chap 2 : Creuser l'idée de maximiser l'énergie libre, très intéressant regarder le critère CARI et lire Robert et al 2021. Actuellement p32 du manuscrit
|
||||
- Chap 3
|
||||
|
||||
### OT
|
||||
- ⌛ @mazeletUnsupervisedLearningOptimal Intéressant pour le transport optimal entre graphes de tailles différentes | Regarder si regularization entropique ne marche pas bien pour le graphe.
|
||||
- ⌛ @nennaLecture2Entropic Pour comprendre le problème d'OT régularisé pour l'entropie.
|
||||
- ⌛ @nennaLecture1Monge
|
||||
|
||||
### Inférence de graphes
|
||||
|
||||
- ⌛ @aitchisonStatisticalAnalysisCompositional1982a, en cours
|
||||
|
||||
- ❗📖 @payneFiniteMixturesMultivariate2023 sur MixMPLN
|
||||
|
||||
### Causalité
|
||||
|
||||
- ❗📖 @bystrovaCausalDiscovery
|
||||
|
||||
### Largest Gaps
|
||||
|
||||
- ❗📖 @braultFastConsistentAlgorithm2023
|
||||
- ❗📖 @channarondClassificationEstimationStochastic2012 le papier qui introduit le *Largest Gaps*
|
||||
|
||||
## A discuter
|
||||
|
||||
### Congés P&S
|
||||
|
||||
### Thèse
|
||||
|
||||
- Faire préz CSI
|
||||
- Faire rapport CSI
|
||||
|
||||
|
||||
### Inférence
|
||||
|
||||
- pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU ...)
|
||||
|
||||
> Combine networks at different taxonomic levels
|
||||
|
||||
- Inférence + GREMLINS
|
||||
|
|
@ -1,144 +0,0 @@
|
|||
@article{mazeletUnsupervisedLearningOptimal,
|
||||
title = {Unsupervised {{Learning}} for {{Optimal Transport}} Plan Prediction between Unbalanced Graphs},
|
||||
author = {Mazelet, Sonia and Flamary, Rémi and Thirion, Bertrand},
|
||||
abstract = {Optimal transport between graphs, based on Gromov-Wasserstein and other extensions, is a powerful tool for comparing and aligning graph structures. However, solving the associated non-convex optimization problems is computationally expensive, which limits the scalability of these methods to large graphs. In this work, we present Unbalanced Learning of Optimal Transport (ULOT), a deep learning method that predicts optimal transport plans between two graphs. Our method is trained by minimizing the fused unbalanced Gromov-Wasserstein (FUGW) loss. We propose a novel neural architecture with cross-attention that is conditioned on the FUGW tradeoff hyperparameters. We evaluate ULOT on synthetic stochastic block model (SBM) graphs and on real cortical surface data obtained from fMRI. ULOT predicts transport plans with competitive loss up to two orders of magnitude faster than classical solvers. Furthermore, the predicted plan can be used as a warm start for classical solvers to accelerate their convergence. Finally, the predicted transport plan is fully differentiable with respect to the graph inputs and FUGW hyperparameters, enabling the optimization of functionals of the ULOT plan.},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-11T09:08:09.864Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/HPZEYMM9/Mazelet et al. - Unsupervised Learning for Optimal Transport plan prediction between unbalanced graphs.pdf}
|
||||
}
|
||||
|
||||
@article{nennaLecture2Entropic,
|
||||
title = {Lecture 2: {{Entropic Optimal Transport}}},
|
||||
author = {Nenna, Luca},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-11T16:06:28.547Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/WGFIISDB/Nenna - Lecture 2 Entropic Optimal Transport.pdf}
|
||||
}
|
||||
|
||||
@article{nennaLecture1Monge,
|
||||
title = {Lecture 1 {{Monge}} and {{Kantorovich}} Problems: From Primal to Dual},
|
||||
author = {Nenna, Luca},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-13T09:24:13.832Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/7LVQPD6D/Nenna - Lecture 1 Monge and Kantorovich problems from primal to dual.pdf}
|
||||
}
|
||||
|
||||
@article{Morton2021.11.09.467939,
|
||||
title = {Scalable Estimation of Microbial Co-Occurrence Networks with {{Variational Autoencoders}}},
|
||||
author = {Morton, James T. and Silverman, Justin and Tikhonov, Gleb and Lähdesmäki, Harri and Bonneau, Rich},
|
||||
date = {2021},
|
||||
journaltitle = {bioRxiv : the preprint server for biology},
|
||||
shortjournal = {bioRxiv},
|
||||
eprint = {https://www.biorxiv.org/content/early/2021/11/11/2021.11.09.467939.full.pdf},
|
||||
publisher = {Cold Spring Harbor Laboratory},
|
||||
doi = {10.1101/2021.11.09.467939},
|
||||
url = {https://www.biorxiv.org/content/early/2021/11/11/2021.11.09.467939},
|
||||
abstract = {Estimating microbe-microbe interactions is critical for understanding the ecological laws governing microbial communities. Rapidly decreasing sequencing costs have promised new opportunities to estimate microbe-microbe interactions across thousands of uncultured, unknown microbes. However, typical microbiome datasets are very high dimensional and accurate estimation of microbial correlations requires tens of thousands of samples, exceeding the computational capabilities of existing methodologies. Furthermore, the vast majority of microbiome studies collect compositional metagenomics data which enforces a negative bias when computing microbe-microbe correlations. The Multinomial Logistic Normal (MLN) distribution has been shown to be effective at inferring microbe-microbe correlations, however scalable Bayesian inference of these distributions has remained elusive. Here, we show that carefully constructed Variational Autoencoders (VAEs) augmented with the Isometric Log-ratio (ILR) transform can estimate low-rank MLN distributions thousands of times faster than existing methods. These VAEs can be trained on tens of thousands of samples, enabling co-occurrence inference across tens of thousands of microbes without regularization. The latent embedding distances computed from these VAEs are competitive with existing beta-diversity methods across a variety of mouse and human microbiome classification and regression tasks, with notable improvements on longitudinal studies.Competing Interest StatementThe authors have declared no competing interest.},
|
||||
elocation-id = {2021.11.09.467939},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-30T14:17:29.518Z}
|
||||
}
|
||||
@article{aitchisonStatisticalAnalysisCompositional1982a,
|
||||
title = {The {{Statistical Analysis}} of {{Compositional Data}}},
|
||||
author = {Aitchison, J.},
|
||||
date = {1982},
|
||||
journaltitle = {Journal of the Royal Statistical Society. Series B (Methodological)},
|
||||
volume = {44},
|
||||
number = {2},
|
||||
eprint = {2345821},
|
||||
eprinttype = {jstor},
|
||||
pages = {139--177},
|
||||
publisher = {[Royal Statistical Society, Oxford University Press]},
|
||||
issn = {0035-9246},
|
||||
url = {https://www.jstor.org/stable/2345821},
|
||||
urldate = {2025-05-07},
|
||||
abstract = {The simplex plays an important role as sample space in many practical situations where compositional data, in the form of proportions of some whole, require interpretation. It is argued that the statistical analysis of such data has proved difficult because of a lack both of concepts of independence and of rich enough parametric classes of distributions in the simplex. A variety of independence hypotheses are introduced and interrelated, and new classes of transformed-normal distributions in the simplex are provided as models within which the independence hypotheses can be tested through standard theory of parametric hypothesis testing. The new concepts and statistical methodology are illustrated by a number of applications.},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-05-07T07:43:38.485Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/S97URH4Y/Aitchison - 1982 - The Statistical Analysis of Compositional Data.pdf}
|
||||
}
|
||||
@online{payneFiniteMixturesMultivariate2023,
|
||||
title = {Finite {{Mixtures}} of {{Multivariate Poisson-Log Normal Factor Analyzers}} for {{Clustering Count Data}}},
|
||||
author = {Payne, Andrea and Silva, Anjali and Rothstein, Steven J. and McNicholas, Paul D. and Subedi, Sanjeena},
|
||||
date = {2023-11-13},
|
||||
eprint = {2311.07762},
|
||||
eprinttype = {arXiv},
|
||||
eprintclass = {stat},
|
||||
doi = {10.48550/arXiv.2311.07762},
|
||||
url = {http://arxiv.org/abs/2311.07762},
|
||||
urldate = {2025-07-02},
|
||||
abstract = {A mixture of multivariate Poisson-log normal factor analyzers is introduced by imposing constraints on the covariance matrix, which resulted in flexible models for clustering purposes. In particular, a class of eight parsimonious mixture models based on the mixtures of factor analyzers model are introduced. Variational Gaussian approximation is used for parameter estimation, and information criteria are used for model selection. The proposed models are explored in the context of clustering discrete data arising from RNA sequencing studies. Using real and simulated data, the models are shown to give favourable clustering performance. The GitHub R package for this work is available at https://github.com/anjalisilva/mixMPLNFA and is released under the open-source MIT license.},
|
||||
pubstate = {prepublished},
|
||||
keywords = {/unread,Statistics - Computation,Statistics - Machine Learning,Statistics - Methodology},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-02T09:31:47.579Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/BXVPEIDD/Payne et al. - 2023 - Finite Mixtures of Multivariate Poisson-Log Normal Factor Analyzers for Clustering Count Data.pdf;/home/louis/snap/zotero-snap/common/Zotero/storage/L5DAS5C2/2311.html}
|
||||
}
|
||||
@unpublished{bystrovaCausalDiscovery,
|
||||
title = {Causal Discovery},
|
||||
author = {Bystrova, Daria},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-02T09:34:39.476Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/NQE5DY92/Bystrova - Causal discovery.pdf}
|
||||
}
|
||||
|
||||
@online{braultFastConsistentAlgorithm2023,
|
||||
title = {Fast and {{Consistent Algorithm}} for the {{Latent Block Model}}},
|
||||
author = {Brault, Vincent and Channarond, Antoine},
|
||||
date = {2023-03-09},
|
||||
eprint = {1610.09005},
|
||||
eprinttype = {arXiv},
|
||||
eprintclass = {math},
|
||||
doi = {10.48550/arXiv.1610.09005},
|
||||
url = {http://arxiv.org/abs/1610.09005},
|
||||
urldate = {2025-07-09},
|
||||
abstract = {The latent block model is used to simultaneously rank the rows and columns of a matrix to reveal a block structure. The algorithms used for estimation are often time consuming. However, recent work shows that the log-likelihood ratios are equivalent under the complete and observed (with unknown labels) models and the groups posterior distribution to converge as the size of the data increases to a Dirac mass located at the actual groups configuration. Based on these observations, the algorithm Largest Gaps is proposed in this paper to perform clustering using only the marginals of the matrix, when the number of blocks is very small with respect to the size of the whole matrix in the case of binary data. In addition, a model selection method is incorporated with a proof of its consistency. Thus, this paper shows that studying simplistic configurations (few blocks compared to the size of the matrix or very contrasting blocks) with complex algorithms is useless since the marginals already give very good parameter and classification estimates.},
|
||||
langid = {english},
|
||||
pubstate = {prepublished},
|
||||
keywords = {/unread,Mathematics - Statistics Theory,Statistics - Computation,Statistics - Statistics Theory},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-09T13:58:53.533Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/5LXC6Y68/Brault et Channarond - 2023 - Fast and Consistent Algorithm for the Latent Block Model.pdf}
|
||||
}
|
||||
|
||||
@article{braultGeneralisationLalgorithmeLargest,
|
||||
title = {Généralisation de l'algorithme Largest Gaps pour le modèle des blocs latents non-paramétrique},
|
||||
author = {Brault, Vincent and Channarond, Antoine and Robert, Valérie},
|
||||
abstract = {The latent block model assumes there exists a distribution for each crossing between an object cluster and a variable cluster of a data table ; the cells are supposed to be independent conditionally to the choice of these clusters. To estimate the model parameters, most of algorithms are time consuming. Brault and Channarond (2016) proposed to adapt the Largest Gaps algorithm which consists in using the margins. They thus obtained a procedure which estimates all the model parameters consistently but requires a large number of observations. In this talk, we will extend the procedure to the case of any distribution having a second order moment by using an EM algorithm estimation.},
|
||||
langid = {french},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-09T12:29:43.098Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/GIUNC4L3/Brault et al. - Généralisation de l'algorithme Largest Gaps pour le modèle des blocs latents non-paramétrique.pdf}
|
||||
}
|
||||
|
||||
@article{channarondClassificationEstimationStochastic2012,
|
||||
title = {Classification and Estimation in the {{Stochastic Blockmodel}} Based on the Empirical Degrees},
|
||||
author = {Channarond, Antoine and Daudin, Jean-Jacques and Robin, Stéphane},
|
||||
date = {2012-01-01},
|
||||
journaltitle = {Electronic Journal of Statistics},
|
||||
shortjournal = {Electron. J. Statist.},
|
||||
volume = {6},
|
||||
publisher = {Institute of Mathematical Statistics},
|
||||
issn = {1935-7524},
|
||||
doi = {10.1214/12-ejs753},
|
||||
url = {https://projecteuclid.org/journals/electronic-journal-of-statistics/volume-6/issue-none/Classification-and-estimation-in-the-Stochastic-Blockmodel-based-on-the/10.1214/12-EJS753.full},
|
||||
urldate = {2025-07-09},
|
||||
abstract = {The Stochastic Blockmodel [16] is a mixture model for heterogeneous network data. Unlike the usual statistical framework, new nodes give additional information about the previous ones in this model. Thereby the distribution of the degrees concentrates in points conditionally on the node class. We show under a mild assumption that classification, estimation and model selection can actually be achieved with no more than the empirical degree data. We provide an algorithm able to process very large networks and consistent estimators based on it. In particular, we prove a bound of the probability of misclassification of at least one node, including when the number of classes grows.},
|
||||
issue = {none},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-09T13:59:33.921Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/8TL8AJ2G/Channarond et al. - 2012 - Classification and estimation in the Stochastic Blockmodel based on the empirical degrees.pdf}
|
||||
}
|
||||
889
suivi/2025-43/2025-43.html
Normal file
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>
|
||||
|
|
@ -1,168 +0,0 @@
|
|||
---
|
||||
title: "Bilan semaine 43 2025 : 20 octobre - 24 octobre"
|
||||
categories: [colBiSBM, inférence, GNN]
|
||||
date: 2025 10 20
|
||||
date-modified: last-modified
|
||||
bibliography: references.bib
|
||||
---
|
||||
|
||||
## TODO List
|
||||
|
||||
- Finir le papier :
|
||||
- Re-structurer le plan, mon plan, Donnet et Barbillon, échelle méso et comparaison inter réseau et noeuds non partagés.
|
||||
- ✅ Écrire en annexe le BIC-L, faire attention à ajouter l'entropie à la toute fin en mentionnant
|
||||
- ⌛ 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).
|
||||
- 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
|
||||
- Remplacer *Information tranfer on simu* par Network partitioning.
|
||||
- ⌛ Écrire le poster avec un titre aguicheur "Are my pollinators your pollinators: ...":
|
||||
Commencé contenu à déterminer avec Pierre et Sophie
|
||||
|
||||
- Maitriser graphtools de Peixoto pour essayer d'utiliser l'arbre taxonomique sur graphe de cooccurence inférer par SparCC
|
||||
|
||||
- Maitriser SparCC
|
||||
|
||||
- Faire LBM sur niveau taxonomique grossier, initialiser avec le résultat pour un niveau plus fin et ainsi de suite.
|
||||
|
||||
- Clustering unipartite j'ai cassé une fonction de distance à vérifier et réparer
|
||||
|
||||
<!-- - 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> -->
|
||||
|
||||
- Pour clustering de collections sur données ~~réelles~~ :
|
||||
→ L'intuition de Pierre semble être confirmé, les dissimilarités semblent arrêter de varier sensiblement pour de grandes valeurs $(Q_1,Q_2)$.
|
||||
- ❓Je n'arrive plus à reproduire le bug pour l'inférence...
|
||||
- 😫 bug encore. S'assurer que ça marche et relancer
|
||||
|
||||
- ⌛ 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 :
|
||||
- Donner la matrice identité comme features
|
||||
- Corriger les degrés calculés.
|
||||
|
||||
- ⚠️ Discuter intersection simulations
|
||||
- Clustering sur Doré :
|
||||
- Regarder pour les couples date+nom les études et le nombre de réseaux analysables (Possible demander à Élisa)
|
||||
- ⌛ Chamberlain et al semble intéressant à regarder ! Voir le Rmarkdown
|
||||
- Clusteriser sur la base des noms et voir parmi les réseaux Européens (désagrégés ?)
|
||||
- Si M > 10, alors voir si je retrouve les mêmes résultats que dans les études.
|
||||
|
||||
- Regarder les codes Mangal database pour $\delta$
|
||||
- Voir $\delta$ mais additif
|
||||
|
||||
:::{.callout-note}
|
||||
### $\delta$ additif Bernoulli
|
||||
En Bernoulli pas de forme analytique non plus :
|
||||
Pour $\alpha_{qr}$:
|
||||
$$ \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$$
|
||||
$$\Leftrightarrow \sum_m \frac{e^m_{qr}}{\alpha_{qr}} + \frac{1}{\alpha_{qr}+\delta_m-1} (n^m_{qr}-e^m_{qr}) = 0$$
|
||||
|
||||
Et pour $\delta_m$:
|
||||
$$ \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$$
|
||||
:::
|
||||
|
||||
:::{.callout-note}
|
||||
### $\delta$ additif Poisson
|
||||
Forme analytique mais risque de confusion ?
|
||||
$$\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}} $$
|
||||
|
||||
:::
|
||||
|
||||
- Regarder la liste des cours du MathSV et de l'Université Paris-Saclay.
|
||||
|
||||
- ⌛ **Plutôt regarder pour introduire un modèle $\delta$-colBiSBM**.
|
||||
- Ajouter le produit par $\delta$ là où nécessaire
|
||||
- Ajouter les modèles $\delta$, $\delta\pi, \dots$ et les blocs conditionnels
|
||||
- Ajouter les tests unitaires adéquats et les vérifier
|
||||
|
||||
- Regarder *Largest gap* sur réseaux Doré
|
||||
|
||||
- Essayer *clustering* sur `supinfo`
|
||||
|
||||
- Homogénéiser notations dans les supplementaries
|
||||
|
||||
:::{#ref-kmeans-vae}
|
||||
|
||||
- Faire GNN-VAE Doré et sub-Doré avec kmeans et clustering sur l'espace latent
|
||||
J'ai commencé à regarder un peu
|
||||
|
||||
:::
|
||||
|
||||
|
||||
### Inférence et microbes
|
||||
|
||||
- easy16s : se renseigner sur
|
||||
- $\alpha$, $\beta$ diversité
|
||||
- Heatmap
|
||||
- Voir avec Mahendra à l'occasion du CSI
|
||||
- Lancer *colBiSBM* sur $OTU\times Sample$ → problème du chargement en mémoire des données à voir
|
||||
- Lancer *colSBM* sur $OTU\times OTU$
|
||||
- TabNet pratiquer les [exercices](https://github.com/cregouby/Tutoriel_torch)
|
||||
- Regarder **SPARTA** Rennes
|
||||
- Lire Papiers compositional data (Aitchison et al. intro)
|
||||
- Lire article multi-niveaux Saint-Clair
|
||||
- Ecrire et étudier les modèles pour différents niveaux taxonomiques.
|
||||
\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*}
|
||||
|
||||
#### Causalité
|
||||
|
||||
Plus sur le temps long, à regarder
|
||||
|
||||
- GT causalité
|
||||
- Daria Bystrova lire présentation @bystrovaCausalDiscovery (Meek rules, V-structure)
|
||||
|
||||
## Biblio à faire
|
||||
|
||||
- Regarder Transport optimal graphes bipartite.
|
||||
|
||||
|
||||
## Lectures en cours 📚
|
||||
|
||||
### HDR Vincent Brault
|
||||
|
||||
- ⌛ Chap 2 : Creuser l'idée de maximiser l'énergie libre, très intéressant regarder le critère CARI et lire Robert et al 2021. Actuellement p32 du manuscrit
|
||||
- Chap 3
|
||||
|
||||
### OT
|
||||
- ⌛ @mazeletUnsupervisedLearningOptimal Intéressant pour le transport optimal entre graphes de tailles différentes | Regarder si regularization entropique ne marche pas bien pour le graphe.
|
||||
- ⌛ @nennaLecture2Entropic Pour comprendre le problème d'OT régularisé pour l'entropie.
|
||||
- ⌛ @nennaLecture1Monge
|
||||
|
||||
### Inférence de graphes
|
||||
|
||||
- ⌛ @aitchisonStatisticalAnalysisCompositional1982a, en cours
|
||||
|
||||
- ❗📖 @payneFiniteMixturesMultivariate2023 sur MixMPLN
|
||||
|
||||
### Causalité
|
||||
|
||||
- ❗📖 @bystrovaCausalDiscovery
|
||||
|
||||
### Largest Gaps
|
||||
|
||||
- ❗📖 @braultFastConsistentAlgorithm2023
|
||||
- ❗📖 @channarondClassificationEstimationStochastic2012 le papier qui introduit le *Largest Gaps*
|
||||
|
||||
## A discuter
|
||||
|
||||
### Congés P&S
|
||||
|
||||
### Thèse
|
||||
|
||||
- Faire préz CSI
|
||||
- Faire rapport CSI
|
||||
|
||||
|
||||
### Inférence
|
||||
|
||||
- pbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU ...)
|
||||
|
||||
> Combine networks at different taxonomic levels
|
||||
|
||||
- Inférence + GREMLINS
|
||||
|
|
@ -1,144 +0,0 @@
|
|||
@article{mazeletUnsupervisedLearningOptimal,
|
||||
title = {Unsupervised {{Learning}} for {{Optimal Transport}} Plan Prediction between Unbalanced Graphs},
|
||||
author = {Mazelet, Sonia and Flamary, Rémi and Thirion, Bertrand},
|
||||
abstract = {Optimal transport between graphs, based on Gromov-Wasserstein and other extensions, is a powerful tool for comparing and aligning graph structures. However, solving the associated non-convex optimization problems is computationally expensive, which limits the scalability of these methods to large graphs. In this work, we present Unbalanced Learning of Optimal Transport (ULOT), a deep learning method that predicts optimal transport plans between two graphs. Our method is trained by minimizing the fused unbalanced Gromov-Wasserstein (FUGW) loss. We propose a novel neural architecture with cross-attention that is conditioned on the FUGW tradeoff hyperparameters. We evaluate ULOT on synthetic stochastic block model (SBM) graphs and on real cortical surface data obtained from fMRI. ULOT predicts transport plans with competitive loss up to two orders of magnitude faster than classical solvers. Furthermore, the predicted plan can be used as a warm start for classical solvers to accelerate their convergence. Finally, the predicted transport plan is fully differentiable with respect to the graph inputs and FUGW hyperparameters, enabling the optimization of functionals of the ULOT plan.},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-11T09:08:09.864Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/HPZEYMM9/Mazelet et al. - Unsupervised Learning for Optimal Transport plan prediction between unbalanced graphs.pdf}
|
||||
}
|
||||
|
||||
@article{nennaLecture2Entropic,
|
||||
title = {Lecture 2: {{Entropic Optimal Transport}}},
|
||||
author = {Nenna, Luca},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-11T16:06:28.547Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/WGFIISDB/Nenna - Lecture 2 Entropic Optimal Transport.pdf}
|
||||
}
|
||||
|
||||
@article{nennaLecture1Monge,
|
||||
title = {Lecture 1 {{Monge}} and {{Kantorovich}} Problems: From Primal to Dual},
|
||||
author = {Nenna, Luca},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-13T09:24:13.832Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/7LVQPD6D/Nenna - Lecture 1 Monge and Kantorovich problems from primal to dual.pdf}
|
||||
}
|
||||
|
||||
@article{Morton2021.11.09.467939,
|
||||
title = {Scalable Estimation of Microbial Co-Occurrence Networks with {{Variational Autoencoders}}},
|
||||
author = {Morton, James T. and Silverman, Justin and Tikhonov, Gleb and Lähdesmäki, Harri and Bonneau, Rich},
|
||||
date = {2021},
|
||||
journaltitle = {bioRxiv : the preprint server for biology},
|
||||
shortjournal = {bioRxiv},
|
||||
eprint = {https://www.biorxiv.org/content/early/2021/11/11/2021.11.09.467939.full.pdf},
|
||||
publisher = {Cold Spring Harbor Laboratory},
|
||||
doi = {10.1101/2021.11.09.467939},
|
||||
url = {https://www.biorxiv.org/content/early/2021/11/11/2021.11.09.467939},
|
||||
abstract = {Estimating microbe-microbe interactions is critical for understanding the ecological laws governing microbial communities. Rapidly decreasing sequencing costs have promised new opportunities to estimate microbe-microbe interactions across thousands of uncultured, unknown microbes. However, typical microbiome datasets are very high dimensional and accurate estimation of microbial correlations requires tens of thousands of samples, exceeding the computational capabilities of existing methodologies. Furthermore, the vast majority of microbiome studies collect compositional metagenomics data which enforces a negative bias when computing microbe-microbe correlations. The Multinomial Logistic Normal (MLN) distribution has been shown to be effective at inferring microbe-microbe correlations, however scalable Bayesian inference of these distributions has remained elusive. Here, we show that carefully constructed Variational Autoencoders (VAEs) augmented with the Isometric Log-ratio (ILR) transform can estimate low-rank MLN distributions thousands of times faster than existing methods. These VAEs can be trained on tens of thousands of samples, enabling co-occurrence inference across tens of thousands of microbes without regularization. The latent embedding distances computed from these VAEs are competitive with existing beta-diversity methods across a variety of mouse and human microbiome classification and regression tasks, with notable improvements on longitudinal studies.Competing Interest StatementThe authors have declared no competing interest.},
|
||||
elocation-id = {2021.11.09.467939},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-06-30T14:17:29.518Z}
|
||||
}
|
||||
@article{aitchisonStatisticalAnalysisCompositional1982a,
|
||||
title = {The {{Statistical Analysis}} of {{Compositional Data}}},
|
||||
author = {Aitchison, J.},
|
||||
date = {1982},
|
||||
journaltitle = {Journal of the Royal Statistical Society. Series B (Methodological)},
|
||||
volume = {44},
|
||||
number = {2},
|
||||
eprint = {2345821},
|
||||
eprinttype = {jstor},
|
||||
pages = {139--177},
|
||||
publisher = {[Royal Statistical Society, Oxford University Press]},
|
||||
issn = {0035-9246},
|
||||
url = {https://www.jstor.org/stable/2345821},
|
||||
urldate = {2025-05-07},
|
||||
abstract = {The simplex plays an important role as sample space in many practical situations where compositional data, in the form of proportions of some whole, require interpretation. It is argued that the statistical analysis of such data has proved difficult because of a lack both of concepts of independence and of rich enough parametric classes of distributions in the simplex. A variety of independence hypotheses are introduced and interrelated, and new classes of transformed-normal distributions in the simplex are provided as models within which the independence hypotheses can be tested through standard theory of parametric hypothesis testing. The new concepts and statistical methodology are illustrated by a number of applications.},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-05-07T07:43:38.485Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/S97URH4Y/Aitchison - 1982 - The Statistical Analysis of Compositional Data.pdf}
|
||||
}
|
||||
@online{payneFiniteMixturesMultivariate2023,
|
||||
title = {Finite {{Mixtures}} of {{Multivariate Poisson-Log Normal Factor Analyzers}} for {{Clustering Count Data}}},
|
||||
author = {Payne, Andrea and Silva, Anjali and Rothstein, Steven J. and McNicholas, Paul D. and Subedi, Sanjeena},
|
||||
date = {2023-11-13},
|
||||
eprint = {2311.07762},
|
||||
eprinttype = {arXiv},
|
||||
eprintclass = {stat},
|
||||
doi = {10.48550/arXiv.2311.07762},
|
||||
url = {http://arxiv.org/abs/2311.07762},
|
||||
urldate = {2025-07-02},
|
||||
abstract = {A mixture of multivariate Poisson-log normal factor analyzers is introduced by imposing constraints on the covariance matrix, which resulted in flexible models for clustering purposes. In particular, a class of eight parsimonious mixture models based on the mixtures of factor analyzers model are introduced. Variational Gaussian approximation is used for parameter estimation, and information criteria are used for model selection. The proposed models are explored in the context of clustering discrete data arising from RNA sequencing studies. Using real and simulated data, the models are shown to give favourable clustering performance. The GitHub R package for this work is available at https://github.com/anjalisilva/mixMPLNFA and is released under the open-source MIT license.},
|
||||
pubstate = {prepublished},
|
||||
keywords = {/unread,Statistics - Computation,Statistics - Machine Learning,Statistics - Methodology},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-02T09:31:47.579Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/BXVPEIDD/Payne et al. - 2023 - Finite Mixtures of Multivariate Poisson-Log Normal Factor Analyzers for Clustering Count Data.pdf;/home/louis/snap/zotero-snap/common/Zotero/storage/L5DAS5C2/2311.html}
|
||||
}
|
||||
@unpublished{bystrovaCausalDiscovery,
|
||||
title = {Causal Discovery},
|
||||
author = {Bystrova, Daria},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-02T09:34:39.476Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/NQE5DY92/Bystrova - Causal discovery.pdf}
|
||||
}
|
||||
|
||||
@online{braultFastConsistentAlgorithm2023,
|
||||
title = {Fast and {{Consistent Algorithm}} for the {{Latent Block Model}}},
|
||||
author = {Brault, Vincent and Channarond, Antoine},
|
||||
date = {2023-03-09},
|
||||
eprint = {1610.09005},
|
||||
eprinttype = {arXiv},
|
||||
eprintclass = {math},
|
||||
doi = {10.48550/arXiv.1610.09005},
|
||||
url = {http://arxiv.org/abs/1610.09005},
|
||||
urldate = {2025-07-09},
|
||||
abstract = {The latent block model is used to simultaneously rank the rows and columns of a matrix to reveal a block structure. The algorithms used for estimation are often time consuming. However, recent work shows that the log-likelihood ratios are equivalent under the complete and observed (with unknown labels) models and the groups posterior distribution to converge as the size of the data increases to a Dirac mass located at the actual groups configuration. Based on these observations, the algorithm Largest Gaps is proposed in this paper to perform clustering using only the marginals of the matrix, when the number of blocks is very small with respect to the size of the whole matrix in the case of binary data. In addition, a model selection method is incorporated with a proof of its consistency. Thus, this paper shows that studying simplistic configurations (few blocks compared to the size of the matrix or very contrasting blocks) with complex algorithms is useless since the marginals already give very good parameter and classification estimates.},
|
||||
langid = {english},
|
||||
pubstate = {prepublished},
|
||||
keywords = {/unread,Mathematics - Statistics Theory,Statistics - Computation,Statistics - Statistics Theory},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-09T13:58:53.533Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/5LXC6Y68/Brault et Channarond - 2023 - Fast and Consistent Algorithm for the Latent Block Model.pdf}
|
||||
}
|
||||
|
||||
@article{braultGeneralisationLalgorithmeLargest,
|
||||
title = {Généralisation de l'algorithme Largest Gaps pour le modèle des blocs latents non-paramétrique},
|
||||
author = {Brault, Vincent and Channarond, Antoine and Robert, Valérie},
|
||||
abstract = {The latent block model assumes there exists a distribution for each crossing between an object cluster and a variable cluster of a data table ; the cells are supposed to be independent conditionally to the choice of these clusters. To estimate the model parameters, most of algorithms are time consuming. Brault and Channarond (2016) proposed to adapt the Largest Gaps algorithm which consists in using the margins. They thus obtained a procedure which estimates all the model parameters consistently but requires a large number of observations. In this talk, we will extend the procedure to the case of any distribution having a second order moment by using an EM algorithm estimation.},
|
||||
langid = {french},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-09T12:29:43.098Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/GIUNC4L3/Brault et al. - Généralisation de l'algorithme Largest Gaps pour le modèle des blocs latents non-paramétrique.pdf}
|
||||
}
|
||||
|
||||
@article{channarondClassificationEstimationStochastic2012,
|
||||
title = {Classification and Estimation in the {{Stochastic Blockmodel}} Based on the Empirical Degrees},
|
||||
author = {Channarond, Antoine and Daudin, Jean-Jacques and Robin, Stéphane},
|
||||
date = {2012-01-01},
|
||||
journaltitle = {Electronic Journal of Statistics},
|
||||
shortjournal = {Electron. J. Statist.},
|
||||
volume = {6},
|
||||
publisher = {Institute of Mathematical Statistics},
|
||||
issn = {1935-7524},
|
||||
doi = {10.1214/12-ejs753},
|
||||
url = {https://projecteuclid.org/journals/electronic-journal-of-statistics/volume-6/issue-none/Classification-and-estimation-in-the-Stochastic-Blockmodel-based-on-the/10.1214/12-EJS753.full},
|
||||
urldate = {2025-07-09},
|
||||
abstract = {The Stochastic Blockmodel [16] is a mixture model for heterogeneous network data. Unlike the usual statistical framework, new nodes give additional information about the previous ones in this model. Thereby the distribution of the degrees concentrates in points conditionally on the node class. We show under a mild assumption that classification, estimation and model selection can actually be achieved with no more than the empirical degree data. We provide an algorithm able to process very large networks and consistent estimators based on it. In particular, we prove a bound of the probability of misclassification of at least one node, including when the number of classes grows.},
|
||||
issue = {none},
|
||||
langid = {english},
|
||||
keywords = {/unread},
|
||||
annotation = {Read\_Status: New\\
|
||||
Read\_Status\_Date: 2025-07-09T13:59:33.921Z},
|
||||
file = {/home/louis/snap/zotero-snap/common/Zotero/storage/8TL8AJ2G/Channarond et al. - 2012 - Classification and estimation in the Stochastic Blockmodel based on the empirical degrees.pdf}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue