Deploy site [CI SKIP]

This commit is contained in:
Woodpecker CI 2025-04-28 09:45:57 +00:00
parent 2f46340a47
commit da4f0cc8f2
6 changed files with 796 additions and 23 deletions

View file

@ -180,7 +180,7 @@ window.Quarto = {
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<h5 class="quarto-listing-category-title">Catégories</h5><div class="quarto-listing-category category-default"><div class="category" data-category="">Tous <span class="quarto-category-count">(5)</span></div><div class="category" data-category="Y29sQmlTQk0=">colBiSBM <span class="quarto-category-count">(5)</span></div></div></div>
<h5 class="quarto-listing-category-title">Catégories</h5><div class="quarto-listing-category category-default"><div class="category" data-category="">Tous <span class="quarto-category-count">(6)</span></div><div class="category" data-category="Y29sQmlTQk0=">colBiSBM <span class="quarto-category-count">(6)</span></div><div class="category" data-category="aW5mJUMzJUE5cmVuY2U=">inférence <span class="quarto-category-count">(1)</span></div></div></div>
<!-- main -->
<main class="content" id="quarto-document-content">
@ -210,7 +210,7 @@ window.Quarto = {
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">25 avril 2025</p>
<p class="date">28 avril 2025</p>
</div>
</div>
@ -228,7 +228,7 @@ window.Quarto = {
<div class="quarto-listing quarto-listing-container-default" id="listing-listing">
<div class="list quarto-listing-default">
<div class="quarto-post image-right" data-index="0" data-categories="Y29sQmlTQk0=" data-listing-date-sort="1745592308000" data-listing-file-modified-sort="1745592308224" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="4" data-listing-word-count-sort="714">
<div class="quarto-post image-right" data-index="0" data-categories="Y29sQmlTQk0=" data-listing-date-sort="1745833520000" data-listing-file-modified-sort="1745833520126" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="4" data-listing-word-count-sort="714">
<div class="thumbnail"><a href="./suivi/2025-17/2025-17.html" class="no-external">
<p class="card-img-top"><img src="suivi/2025-17/figs/density-subdore.png" class="thumbnail-image card-img"/></p>
@ -250,7 +250,7 @@ Relire intro St Clair
<div class="metadata">
<a href="./suivi/2025-17/2025-17.html" class="no-external">
<div class="listing-date">
25 avr. 2025
28 avr. 2025
</div>
<div class="listing-author">
Louis Lacoste
@ -258,7 +258,39 @@ Louis Lacoste
</a>
</div>
</div>
<div class="quarto-post image-right" data-index="1" data-categories="Y29sQmlTQk0=" data-listing-date-sort="1744934400000" data-listing-file-modified-sort="1745592308222" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="2" data-listing-word-count-sort="352">
<div class="quarto-post image-right" data-index="1" data-categories="Y29sQmlTQk0lMkNpbmYlQzMlQTlyZW5jZQ==" data-listing-date-sort="1745833520000" data-listing-file-modified-sort="1745833520135" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="3" data-listing-word-count-sort="456">
<div class="thumbnail"><a href="./suivi/2025-18/2025-18.html" class="no-external">
<p class="card-img-top"><img src="suivi/2025-18/figs/density-subdore.png" class="thumbnail-image card-img"/></p>
</a></div>
<div class="body">
<h3 class="no-anchor listing-title">
<a href="./suivi/2025-18/2025-18.html" class="no-external">Bilan semaine 18 2025 : 28 avril - 2 mai</a>
</h3>
<div class="listing-categories">
<div class="listing-category" onclick="window.quartoListingCategory('Y29sQmlTQk0='); return false;">colBiSBM</div>
<div class="listing-category" onclick="window.quartoListingCategory('aW5mJUMzJUE5cmVuY2U='); return false;">inférence</div>
</div>
<div class="delink listing-description"><a href="./suivi/2025-18/2025-18.html" class="no-external">
Lire biblio fournie Julie, Inférence de réseaux : co-occurence
</a></div>
</div>
<div class="metadata">
<a href="./suivi/2025-18/2025-18.html" class="no-external">
<div class="listing-date">
28 avr. 2025
</div>
<div class="listing-author">
Louis Lacoste
</div>
</a>
</div>
</div>
<div class="quarto-post image-right" data-index="2" data-categories="Y29sQmlTQk0=" data-listing-date-sort="1744934400000" data-listing-file-modified-sort="1745833520124" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="2" data-listing-word-count-sort="352">
<div class="thumbnail"><a href="./suivi/2025-16/2025-16.html" class="no-external">
<div class="listing-item-img-placeholder card-img-top" >&nbsp;</div>
@ -288,7 +320,7 @@ Louis Lacoste
</a>
</div>
</div>
<div class="quarto-post image-right" data-index="2" data-categories="Y29sQmlTQk0=" data-listing-date-sort="1743724800000" data-listing-file-modified-sort="1745592308220" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="2" data-listing-word-count-sort="353">
<div class="quarto-post image-right" data-index="3" data-categories="Y29sQmlTQk0=" data-listing-date-sort="1743724800000" data-listing-file-modified-sort="1745833520123" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="2" data-listing-word-count-sort="353">
<div class="thumbnail"><a href="./suivi/2025-15/2025-15.html" class="no-external">
<p class="card-img-top"><img src="suivi/2025-15/figs/alluvial-clusterings.png" class="thumbnail-image card-img"/></p>
@ -318,7 +350,7 @@ Louis Lacoste
</a>
</div>
</div>
<div class="quarto-post image-right" data-index="3" data-categories="Y29sQmlTQk0=" data-listing-date-sort="1743120000000" data-listing-file-modified-sort="1745592308220" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="3" data-listing-word-count-sort="413">
<div class="quarto-post image-right" data-index="4" data-categories="Y29sQmlTQk0=" data-listing-date-sort="1743120000000" data-listing-file-modified-sort="1745833520122" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="3" data-listing-word-count-sort="413">
<div class="thumbnail"><a href="./suivi/2025-14/2025-14.html" class="no-external">
<div class="listing-item-img-placeholder card-img-top" >&nbsp;</div>
@ -348,7 +380,7 @@ Louis Lacoste
</a>
</div>
</div>
<div class="quarto-post image-right" data-index="4" data-categories="Y29sQmlTQk0=" data-listing-date-sort="1742169600000" data-listing-file-modified-sort="1745592308213" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="3" data-listing-word-count-sort="426">
<div class="quarto-post image-right" data-index="5" data-categories="Y29sQmlTQk0=" data-listing-date-sort="1742169600000" data-listing-file-modified-sort="1745833520116" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="3" data-listing-word-count-sort="426">
<div class="thumbnail"><a href="./suivi/2025-13/2025-13.html" class="no-external">
<p class="card-img-top"><img src="suivi/2025-13/figs/baldock_meso_iid.png" class="thumbnail-image card-img"/></p>

View file

@ -3,6 +3,7 @@
"listing": "/index.html",
"items": [
"/suivi/2025-17/2025-17.html",
"/suivi/2025-18/2025-18.html",
"/suivi/2025-16/2025-16.html",
"/suivi/2025-15/2025-15.html",
"/suivi/2025-14/2025-14.html",

View file

@ -55,20 +55,6 @@
"section": "A continuer",
"text": "A continuer\n\nRé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 &lt; \\epsilon_{max} prélever dans la liste des indices afin davoir des perturbations emboitées. Il faut que jajoute un mécanisme pour reprendre des conditions qui ont plantés et que je skip dans le future_lapply les conditions déjà traitées (pour avoir la même seed quand je vais exécuter le code). Implémenté les missing steps en attente des résultats MIGALE.\nJai lancé le clustering iid ascendant sur données sub-Doré. en attente des résultats MIGALE"
},
{
"objectID": "suivi/2025-13/2025-13.html",
"href": "suivi/2025-13/2025-13.html",
"title": "Bilan semaine 13 2025 : 17-21 mars",
"section": "",
"text": "Cette semaine jai :\n\nFini dintégrer à colSBM tous les changements (clustering dérecursifier pour uni et bipartites& cli …) et contacter Saint-Clair pour passer colSBM sous GrossSBM.\nRelancer et obtenus les résultats pour le clustering sur les réseaux Baldock\n\n\n\n\nBaldock iid\n\n\n\n\n\nBaldock pi\n\n\n\n\n\nBaldock rho\n\n\n\n\n\nBaldock pirho\n\n\n\nRelancer et obtenus les résultats pour les simus ajoutant du bruits sur les structures et liens\n\nPour noisy \\alpha:\n\nPlan 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},~\n \\rho_1 = \\begin{pmatrix}0.4, 0.3, 0.2, 0.1\\end{pmatrix},~\n \\alpha_1 = \\begin{pmatrix}\n 0.85& 0.4& 0.2& 0.15\\\\\n 0.6& 0.2& 0.15& 0.15\\\\\n 0.2& 0.15& 0.15& 0.7\n \\end{pmatrix}\n \\pi_2 = (0.5, 0.3, 0.2),~\n \\rho_2 = (0.45, 0.3, 0.25),~\n \\alpha_2 = \\begin{pmatrix}\n 0.65& 0.15& 0.15\\\\\n 0.15& 0.8& 0.15\\\\\n 0.15& 0.15& 0.4\n \\end{pmatrix}\n\\epsilon \\in (0, 0.01, \\dots 0.05) qui est lécart-type dune \\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)\nRésultats : \n\nPour noisy links:\n\nPlan de simu M = 30, n_r = n_c = 120. \\pi_1 = \\begin{pmatrix} 0.5, 0.3, 0.2\\end{pmatrix},~\n \\rho_1 = \\begin{pmatrix}0.4, 0.3, 0.2, 0.1\\end{pmatrix},~\n \\alpha_1 = \\begin{pmatrix}\n 0.85& 0.4& 0.2& 0.05\\\\\n 0.6& 0.2& 0.05& 0.05\\\\\n 0.2& 0.05& 0.05& 0.7\n \\end{pmatrix}\n \\pi_2 = (0.5, 0.3, 0.2),~\n \\rho_2 = (0.45, 0.3, 0.25),~\n \\alpha_2 = \\begin{pmatrix}\n 0.65& 0.05& 0.05\\\\\n 0.05& 0.8& 0.05\\\\\n 0.05& 0.05& 0.4\n \\end{pmatrix}\n\\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 -&gt; 0, 0 -&gt; 1)\n\n\n\n\n\n\n\n\n\nClear links\n\n\n\n\n\n\n\nNoisy links\n\n\n\n\n\n\nFigure 1\n\n\n\n\nRelancer simulations robustesse aux NAs\nChanger les plots résultats NAs pour faire sous-plots comparant sep vs model."
},
{
"objectID": "index.html",
"href": "index.html",
"title": "Journal suivi de la thèse",
"section": "",
"text": "Bilan semaine 17 2025 : 24 avril - 25 avril\n\n\n\ncolBiSBM\n\n\n\n\n\n\n\n\n\n25 avr. 2025\n\n\nLouis Lacoste\n\n\n\n\n\n\n\n\n\n\n\n\nBilan semaine 16 2025\n\n\n\ncolBiSBM\n\n\n\n\n\n\n\n\n\n18 avr. 2025\n\n\nLouis Lacoste\n\n\n\n\n\n\n\n\n\n\n\n\nBilan semaine 15 2025 : 31 mars-4 avril\n\n\n\ncolBiSBM\n\n\n\n\n\n\n\n\n\n4 avr. 2025\n\n\nLouis Lacoste\n\n\n\n\n\n\n\n\n\n\n\n\nBilan semaine 14 2025 : 24-28 mars\n\n\n\ncolBiSBM\n\n\n\n\n\n\n\n\n\n28 mars 2025\n\n\nLouis Lacoste\n\n\n\n\n\n\n\n\n\n\n\n\nBilan semaine 13 2025 : 17-21 mars\n\n\n\ncolBiSBM\n\n\n\n\n\n\n\n\n\n17 mars 2025\n\n\nLouis Lacoste\n\n\n\n\n\nAucun article correspondant"
},
{
"objectID": "suivi/2025-17/2025-17.html",
"href": "suivi/2025-17/2025-17.html",
@ -97,6 +83,48 @@
"section": "A continuer",
"text": "A continuer\n\nRé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 &lt; \\epsilon_{max} prélever dans la liste des indices afin davoir des perturbations emboitées. Il faut que jajoute un mécanisme pour reprendre des conditions qui ont plantés et que je skip dans le future_lapply les conditions déjà traitées (pour avoir la même seed quand je vais exécuter le code). Implémenté les missing steps en attente des résultats MIGALE.\nLire Biological Networks - François Képès\nJai esquissé des bouts dintro\nRelancer simus dinférence avec n = 240 pour voir si la qualité augmenter (se rassurer). En fait on est déjà à 240, jai relancé avec M = 4 au lieu de M = 2. En attente résultats MIGALE\n\n\nCorrection méthodo\n\nIdée Pierre : Regarder la contribution au BICL de la collection des réseaux et comparer au sep BICL pour essayer de repérer les outliers. En regardant la vbound (pas la pénalité) de chaque réseau dans le joint vs sa vbound dans le sep -&gt; Résultats : pas de différences majeures entre les réseaux avec le rapport vbound_joint/vbound_sep, les outliers ne sont pas marqués.\nRegarder si plutôt que k médioid possible meilleurs résultats avec dautres distances hclust avec min, max etc… -&gt; Lalgo PAM donne des clusters équilibrés sans séparer les outliers Je regarde avec plutôt des hclust avec métrique single pour séparer les outliers.\nVoir si in fine possible de repérer des outliers à partir de ces nouvelles métriques\nRegarder la répartition de densité dans les réseaux sub-doré -&gt; déséquilibrée\n\n\nEn faisant des clusterings par densité on constate qu'avec un modèle iid pour des réseaux dont la densité est entre :\n- 0 et 0.05 : Baldock et Souza tout le monde se retrouvait ensemble avec *Partitioning around medoids*\n\n\nApplications\n\nIdée Sophie: Regarder clustering de données plantes-pollinisateur selon gradient durbanisation\n\n\nSophie a fait une appli qui marche bien et va dans le sens de lanalyse faite (à savoir pas deffet du gradien durbanisation). À continuer pour lintégrer dans larticle !\n\n\n\nLancer clustering auteur par auteur du sub-Doré : 5 collections différentes dans lidée.\nUne 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.\n\nBaldock\n\n\n\nAlluvial Baldock\n\n\n\n\nGibson\n\n\n\nAlluvial Gibson\n\n\n\n\nSouza\n\n\n\nAlluvial Souza\n\n\n\n\nTraveset\n\n\n\nAlluvial Traveset\n\n\n\n\nTrojelsgaard\n\n\n\nAlluvial Trojelgaard"
},
{
"objectID": "index.html",
"href": "index.html",
"title": "Journal suivi de la thèse",
"section": "",
"text": "Bilan semaine 17 2025 : 24 avril - 25 avril\n\n\n\ncolBiSBM\n\n\n\n\n\n\n\n\n\n28 avr. 2025\n\n\nLouis Lacoste\n\n\n\n\n\n\n\n\n\n\n\n\nBilan semaine 18 2025 : 28 avril - 2 mai\n\n\n\ncolBiSBM\n\ninférence\n\n\n\n\n\n\n\n\n\n28 avr. 2025\n\n\nLouis Lacoste\n\n\n\n\n\n\n\n\n\n\n\n\nBilan semaine 16 2025\n\n\n\ncolBiSBM\n\n\n\n\n\n\n\n\n\n18 avr. 2025\n\n\nLouis Lacoste\n\n\n\n\n\n\n\n\n\n\n\n\nBilan semaine 15 2025 : 31 mars-4 avril\n\n\n\ncolBiSBM\n\n\n\n\n\n\n\n\n\n4 avr. 2025\n\n\nLouis Lacoste\n\n\n\n\n\n\n\n\n\n\n\n\nBilan semaine 14 2025 : 24-28 mars\n\n\n\ncolBiSBM\n\n\n\n\n\n\n\n\n\n28 mars 2025\n\n\nLouis Lacoste\n\n\n\n\n\n\n\n\n\n\n\n\nBilan semaine 13 2025 : 17-21 mars\n\n\n\ncolBiSBM\n\n\n\n\n\n\n\n\n\n17 mars 2025\n\n\nLouis Lacoste\n\n\n\n\n\nAucun article correspondant"
},
{
"objectID": "suivi/2025-13/2025-13.html",
"href": "suivi/2025-13/2025-13.html",
"title": "Bilan semaine 13 2025 : 17-21 mars",
"section": "",
"text": "Cette semaine jai :\n\nFini dintégrer à colSBM tous les changements (clustering dérecursifier pour uni et bipartites& cli …) et contacter Saint-Clair pour passer colSBM sous GrossSBM.\nRelancer et obtenus les résultats pour le clustering sur les réseaux Baldock\n\n\n\n\nBaldock iid\n\n\n\n\n\nBaldock pi\n\n\n\n\n\nBaldock rho\n\n\n\n\n\nBaldock pirho\n\n\n\nRelancer et obtenus les résultats pour les simus ajoutant du bruits sur les structures et liens\n\nPour noisy \\alpha:\n\nPlan 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},~\n \\rho_1 = \\begin{pmatrix}0.4, 0.3, 0.2, 0.1\\end{pmatrix},~\n \\alpha_1 = \\begin{pmatrix}\n 0.85& 0.4& 0.2& 0.15\\\\\n 0.6& 0.2& 0.15& 0.15\\\\\n 0.2& 0.15& 0.15& 0.7\n \\end{pmatrix}\n \\pi_2 = (0.5, 0.3, 0.2),~\n \\rho_2 = (0.45, 0.3, 0.25),~\n \\alpha_2 = \\begin{pmatrix}\n 0.65& 0.15& 0.15\\\\\n 0.15& 0.8& 0.15\\\\\n 0.15& 0.15& 0.4\n \\end{pmatrix}\n\\epsilon \\in (0, 0.01, \\dots 0.05) qui est lécart-type dune \\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)\nRésultats : \n\nPour noisy links:\n\nPlan de simu M = 30, n_r = n_c = 120. \\pi_1 = \\begin{pmatrix} 0.5, 0.3, 0.2\\end{pmatrix},~\n \\rho_1 = \\begin{pmatrix}0.4, 0.3, 0.2, 0.1\\end{pmatrix},~\n \\alpha_1 = \\begin{pmatrix}\n 0.85& 0.4& 0.2& 0.05\\\\\n 0.6& 0.2& 0.05& 0.05\\\\\n 0.2& 0.05& 0.05& 0.7\n \\end{pmatrix}\n \\pi_2 = (0.5, 0.3, 0.2),~\n \\rho_2 = (0.45, 0.3, 0.25),~\n \\alpha_2 = \\begin{pmatrix}\n 0.65& 0.05& 0.05\\\\\n 0.05& 0.8& 0.05\\\\\n 0.05& 0.05& 0.4\n \\end{pmatrix}\n\\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 -&gt; 0, 0 -&gt; 1)\n\n\n\n\n\n\n\n\n\nClear links\n\n\n\n\n\n\n\nNoisy links\n\n\n\n\n\n\nFigure 1\n\n\n\n\nRelancer simulations robustesse aux NAs\nChanger les plots résultats NAs pour faire sous-plots comparant sep vs model."
},
{
"objectID": "suivi/2025-18/2025-18.html",
"href": "suivi/2025-18/2025-18.html",
"title": "Bilan semaine 18 2025 : 28 avril - 2 mai",
"section": "",
"text": "colDEM CSE\n\n\n\n\n\nLire biblio fournie Julie, Inférence de réseaux : co-occurence\nPapier pour comprendre données\npbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU …)\n\n\nCombine networks at different taxonomic levels\n\n\nInférence + GREMLINS\n\n\n\n\n\nRelire intro St Clair\nSinspirer structure pour mon intro\nTrouver biblio intro\nRédiger lintro\nRegarder les applications pour les collections de réseaux recommender system\nLire les papiers de Baldock Traveset Souza Cordeniz Trojelsgaard et Gibson\nDire résultats nettement meilleurs et variabilités inférieures.\nIntégrer les retours de Sophie\n\n\n\n\n\nRelancer simus clustering avec VEM steps = 10 000 et plus nombreux init pour spectral\nAjouter 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.\nComparer sur clustering unipartite avec versions symétriser des par blocs des matrices dadjacences.\nCorriger structure de simus :\n\nPour noisy \\alpha :\n\nLogit pour envoyer la gaussienne vers (0,1)\nBeta contrainte dans (0,1)\n\nPour 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 &lt; \\epsilon_{max} prélever dans la liste des indices afin davoir des perturbations emboitées.\n\n\n\n\n\n\nKmeans sur la densité des réseaux subdoré pour pré-partitionner et clusteriser. Car densités déséquilibrées.\n\n\n\n\n\n\nCréer des vignettes illustrant par exemple des cas de simulations. Possible de mettre lexemple dapplication de Sophie sur les réseaux avec gradient durbanisation."
},
{
"objectID": "suivi/2025-18/2025-18.html#a-faire",
"href": "suivi/2025-18/2025-18.html#a-faire",
"title": "Bilan semaine 18 2025 : 28 avril - 2 mai",
"section": "",
"text": "colDEM CSE\n\n\n\n\n\nLire biblio fournie Julie, Inférence de réseaux : co-occurence\nPapier pour comprendre données\npbs : variance, bcp de zero, covariables, offset et taxonomie (Reseaux arretes differents niveaux : Genre, OTU …)\n\n\nCombine networks at different taxonomic levels\n\n\nInférence + GREMLINS\n\n\n\n\n\nRelire intro St Clair\nSinspirer structure pour mon intro\nTrouver biblio intro\nRédiger lintro\nRegarder les applications pour les collections de réseaux recommender system\nLire les papiers de Baldock Traveset Souza Cordeniz Trojelsgaard et Gibson\nDire résultats nettement meilleurs et variabilités inférieures.\nIntégrer les retours de Sophie\n\n\n\n\n\nRelancer simus clustering avec VEM steps = 10 000 et plus nombreux init pour spectral\nAjouter 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.\nComparer sur clustering unipartite avec versions symétriser des par blocs des matrices dadjacences.\nCorriger structure de simus :\n\nPour noisy \\alpha :\n\nLogit pour envoyer la gaussienne vers (0,1)\nBeta contrainte dans (0,1)\n\nPour 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 &lt; \\epsilon_{max} prélever dans la liste des indices afin davoir des perturbations emboitées.\n\n\n\n\n\n\nKmeans sur la densité des réseaux subdoré pour pré-partitionner et clusteriser. Car densités déséquilibrées.\n\n\n\n\n\n\nCréer des vignettes illustrant par exemple des cas de simulations. Possible de mettre lexemple dapplication de Sophie sur les réseaux avec gradient durbanisation."
},
{
"objectID": "suivi/2025-18/2025-18.html#jai-fait",
"href": "suivi/2025-18/2025-18.html#jai-fait",
"title": "Bilan semaine 18 2025 : 28 avril - 2 mai",
"section": "Jai fait",
"text": "Jai fait"
},
{
"objectID": "suivi/2025-18/2025-18.html#a-continuer",
"href": "suivi/2025-18/2025-18.html#a-continuer",
"title": "Bilan semaine 18 2025 : 28 avril - 2 mai",
"section": "A continuer",
"text": "A continuer\n\nRé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 &lt; \\epsilon_{max} prélever dans la liste des indices afin davoir des perturbations emboitées. Il faut que jajoute un mécanisme pour reprendre des conditions qui ont plantés et que je skip dans le future_lapply les conditions déjà traitées (pour avoir la même seed quand je vais exécuter le code). Implémenté les missing steps en attente des résultats MIGALE.\nLire Biological Networks - François Képès\nRelancer simus dinférence avec n = 240 pour voir si la qualité augmenter (se rassurer). En fait on est déjà à 240, jai relancé avec M = 4 au lieu de M = 2. En attente résultats MIGALE\n\n\nApplications\n\nIdée Sophie: Regarder clustering de données plantes-pollinisateur selon gradient durbanisation\n\n\nSophie a fait une appli qui marche bien et va dans le sens de lanalyse faite (à savoir pas deffet du gradien durbanisation). À continuer pour lintégrer dans larticle !"
},
{
"objectID": "suivi/2025-14/2025-14.html",
"href": "suivi/2025-14/2025-14.html",

View file

@ -174,7 +174,7 @@ window.Quarto = {
<div>
<div class="quarto-title-meta-heading">Date de publication</div>
<div class="quarto-title-meta-contents">
<p class="date">25 avril 2025</p>
<p class="date">28 avril 2025</p>
</div>
</div>

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

@ -0,0 +1,712 @@
<!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-b7709e3ceabf99e2647fc5ea1b9a158c.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">
<span class="menu-text">Liste des semaines</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">28 avril 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="#a-faire" id="toc-a-faire" class="nav-link active" data-scroll-target="#a-faire">A faire</a>
<ul class="collapse">
<li><a href="#jds" id="toc-jds" class="nav-link" data-scroll-target="#jds">JdS</a></li>
<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">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">Rédaction article</a></li>
<li><a href="#simulations-article" id="toc-simulations-article" class="nav-link" data-scroll-target="#simulations-article">Simulations article</a></li>
<li><a href="#applications" id="toc-applications" class="nav-link" data-scroll-target="#applications">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">Autour de larticle et du package</a></li>
</ul></li>
<li><a href="#jai-fait" id="toc-jai-fait" class="nav-link" data-scroll-target="#jai-fait">Jai fait</a></li>
<li><a href="#a-continuer" id="toc-a-continuer" class="nav-link" data-scroll-target="#a-continuer">A continuer</a>
<ul class="collapse">
<li><a href="#applications-1" id="toc-applications-1" class="nav-link" data-scroll-target="#applications-1">Applications</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">
<h2 class="anchored" data-anchor-id="a-faire">A faire</h2>
<section id="jds" class="level3">
<h3 class="anchored" data-anchor-id="jds">JdS</h3>
<ul>
<li>colDEM CSE</li>
</ul>
</section>
<section id="stratégie-suite-inférence" class="level3">
<h3 class="anchored" data-anchor-id="stratégie-suite-inférence">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">
<h3 class="anchored" data-anchor-id="rédaction-article">Rédaction article</h3>
<ul>
<li><p>Relire intro St Clair</p></li>
<li><p>Sinspirer structure pour mon intro</p></li>
<li><p>Trouver biblio intro</p></li>
<li><p>Rédiger lintro</p></li>
<li><p>Regarder les applications pour les collections de réseaux recommender system</p></li>
<li><p>Lire les papiers de Baldock Traveset Souza Cordeniz Trojelsgaard et Gibson</p></li>
<li><p>Dire résultats nettement meilleurs et variabilités inférieures.</p></li>
<li><p>Intégrer les retours de Sophie</p></li>
</ul>
</section>
<section id="simulations-article" class="level3">
<h3 class="anchored" data-anchor-id="simulations-article">Simulations article</h3>
<ul>
<li><p>Relancer simus clustering avec VEM steps = 10 000 et plus nombreux init pour spectral</p></li>
<li><p>Ajouter simu clustering métriques nb sous-collections obtenues. Vérifier les résultats obtenus si ARI = 0. Et augmenter la taille <span class="math inline">M = 30</span> avec <span class="math inline">M_1 = M_2 = M_3 = 10</span>.</p></li>
<li><p>Comparer sur clustering unipartite avec versions symétriser des par blocs des matrices dadjacences.</p></li>
<li><p>Corriger structure de simus :</p>
<ul>
<li>Pour noisy <span class="math inline">\alpha</span> :
<ul>
<li>Logit pour envoyer la gaussienne vers (0,1)</li>
<li>Beta contrainte dans (0,1)</li>
</ul></li>
<li>Pour noisy links : Générer <code>nb_clustering</code> collections de taille M puis prélever <span class="math inline">\epsilon_{max}n_r n_c</span> liens à inverser puis pour les <span class="math inline">\epsilon &lt; \epsilon_{max}</span> prélever dans la liste des indices afin davoir des perturbations emboitées.</li>
</ul></li>
</ul>
</section>
<section id="applications" class="level3">
<h3 class="anchored" data-anchor-id="applications">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><img src="figs/density-subdore.png" class="img-fluid"></p>
</section>
<section id="autour-de-larticle-et-du-package" class="level3">
<h3 class="anchored" data-anchor-id="autour-de-larticle-et-du-package">Autour de larticle et du package</h3>
<ul>
<li>Créer des vignettes illustrant par exemple des cas de simulations. <strong>Possible de mettre lexemple dapplication de Sophie sur les réseaux avec gradient durbanisation</strong>.</li>
</ul>
</section>
</section>
<section id="jai-fait" class="level2">
<h2 class="anchored" data-anchor-id="jai-fait">Jai fait</h2>
</section>
<section id="a-continuer" class="level2">
<h2 class="anchored" data-anchor-id="a-continuer">A continuer</h2>
<ul>
<li><p>Résultats simus NA <strong>Erreur pour certaines conditions</strong> : Pour NA robustness générer <code>nb_rep</code> collections de taille <span class="math inline">M=2</span> et prélever <span class="math inline">\epsilon_{max}n_r n_c</span> liens à retirer puis pour les <span class="math inline">\epsilon &lt; \epsilon_{max}</span> prélever dans la liste des indices afin davoir des perturbations emboitées. Il faut que jajoute un mécanisme pour reprendre des conditions qui ont plantés et que je skip dans le future_lapply les conditions déjà traitées (pour avoir la même seed quand je vais exécuter le code). Implémenté les missing steps <em>en attente des résultats MIGALE</em>.</p></li>
<li><p>Lire Biological Networks - François Képès</p></li>
<li><p>Relancer simus dinférence avec n = 240 pour voir si la qualité augmenter (se rassurer). En fait on est déjà à 240, jai relancé avec M = 4 au lieu de M = 2. En attente résultats MIGALE</p></li>
</ul>
<section id="applications-1" class="level3">
<h3 class="anchored" data-anchor-id="applications-1">Applications</h3>
<ul>
<li>Idée Sophie: Regarder clustering de données plantes-pollinisateur selon gradient durbanisation</li>
</ul>
<blockquote class="blockquote">
<p>Sophie a fait une appli qui marche bien et va dans le sens de lanalyse faite (à savoir pas deffet du gradien durbanisation). À continuer pour lintégrer dans larticle !</p>
</blockquote>
</section>
</section>
</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copié");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copié");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const xrefs = window.document.querySelectorAll('a.quarto-xref');
const processXRef = (id, note) => {
// Strip column container classes
const stripColumnClz = (el) => {
el.classList.remove("page-full", "page-columns");
if (el.children) {
for (const child of el.children) {
stripColumnClz(child);
}
}
}
stripColumnClz(note)
if (id === null || id.startsWith('sec-')) {
// Special case sections, only their first couple elements
const container = document.createElement("div");
if (note.children && note.children.length > 2) {
container.appendChild(note.children[0].cloneNode(true));
for (let i = 1; i < note.children.length; i++) {
const child = note.children[i];
if (child.tagName === "P" && child.innerText === "") {
continue;
} else {
container.appendChild(child.cloneNode(true));
break;
}
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(container);
}
return container.innerHTML
} else {
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
return note.innerHTML;
}
} else {
// Remove any anchor links if they are present
const anchorLink = note.querySelector('a.anchorjs-link');
if (anchorLink) {
anchorLink.remove();
}
if (window.Quarto?.typesetMath) {
window.Quarto.typesetMath(note);
}
if (note.classList.contains("callout")) {
return note.outerHTML;
} else {
return note.innerHTML;
}
}
}
for (var i=0; i<xrefs.length; i++) {
const xref = xrefs[i];
tippyHover(xref, undefined, function(instance) {
instance.disable();
let url = xref.getAttribute('href');
let hash = undefined;
if (url.startsWith('#')) {
hash = url;
} else {
try { hash = new URL(url).hash; } catch {}
}
if (hash) {
const id = hash.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note !== null) {
try {
const html = processXRef(id, note.cloneNode(true));
instance.setContent(html);
} finally {
instance.enable();
instance.show();
}
} else {
// See if we can fetch this
fetch(url.split('#')[0])
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.getElementById(id);
if (note !== null) {
const html = processXRef(id, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
} else {
// See if we can fetch a full url (with no hash to target)
// This is a special case and we should probably do some content thinning / targeting
fetch(url)
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const htmlDoc = parser.parseFromString(html, "text/html");
const note = htmlDoc.querySelector('main.content');
if (note !== null) {
// This should only happen for chapter cross references
// (since there is no id in the URL)
// remove the first header
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
note.children[0].remove();
}
const html = processXRef(null, note);
instance.setContent(html);
}
}).finally(() => {
instance.enable();
instance.show();
});
}
}, function(instance) {
});
}
let selectedAnnoteEl;
const selectorForAnnotation = ( cell, annotation) => {
let cellAttr = 'data-code-cell="' + cell + '"';
let lineAttr = 'data-code-annotation="' + annotation + '"';
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
return selector;
}
const selectCodeLines = (annoteEl) => {
const doc = window.document;
const targetCell = annoteEl.getAttribute("data-target-cell");
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
const lineIds = lines.map((line) => {
return targetCell + "-" + line;
})
let top = null;
let height = null;
let parent = null;
if (lineIds.length > 0) {
//compute the position of the single el (top and bottom and make a div)
const el = window.document.getElementById(lineIds[0]);
top = el.offsetTop;
height = el.offsetHeight;
parent = el.parentElement.parentElement;
if (lineIds.length > 1) {
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
height = bottom - top;
}
if (top !== null && height !== null && parent !== null) {
// cook up a div (if necessary) and position it
let div = window.document.getElementById("code-annotation-line-highlight");
if (div === null) {
div = window.document.createElement("div");
div.setAttribute("id", "code-annotation-line-highlight");
div.style.position = 'absolute';
parent.appendChild(div);
}
div.style.top = top - 2 + "px";
div.style.height = height + 4 + "px";
div.style.left = 0;
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
if (gutterDiv === null) {
gutterDiv = window.document.createElement("div");
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
gutterDiv.style.position = 'absolute';
const codeCell = window.document.getElementById(targetCell);
const gutter = codeCell.querySelector('.code-annotation-gutter');
gutter.appendChild(gutterDiv);
}
gutterDiv.style.top = top - 2 + "px";
gutterDiv.style.height = height + 4 + "px";
}
selectedAnnoteEl = annoteEl;
}
};
const unselectCodeLines = () => {
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
elementsIds.forEach((elId) => {
const div = window.document.getElementById(elId);
if (div) {
div.remove();
}
});
selectedAnnoteEl = undefined;
};
// Handle positioning of the toggle
window.addEventListener(
"resize",
throttle(() => {
elRect = undefined;
if (selectedAnnoteEl) {
selectCodeLines(selectedAnnoteEl);
}
}, 10)
);
function throttle(fn, ms) {
let throttle = false;
let timer;
return (...args) => {
if(!throttle) { // first call gets through
fn.apply(this, args);
throttle = true;
} else { // all the others get throttled
if(timer) clearTimeout(timer); // cancel #2
timer = setTimeout(() => {
fn.apply(this, args);
timer = throttle = false;
}, ms);
}
};
}
// Attach click handler to the DT
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
for (const annoteDlNode of annoteDls) {
annoteDlNode.addEventListener('click', (event) => {
const clickedEl = event.target;
if (clickedEl !== selectedAnnoteEl) {
unselectCodeLines();
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
if (activeEl) {
activeEl.classList.remove('code-annotation-active');
}
selectCodeLines(clickedEl);
clickedEl.classList.add('code-annotation-active');
} else {
// Unselect the line
unselectCodeLines();
clickedEl.classList.remove('code-annotation-active');
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB