1<!DOCTYPE html> 2<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head> 3 4<meta charset="utf-8"> 5<meta name="generator" content="quarto-1.5.57"> 6 7<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> 8 9<meta name="author" content="Thomas Nagler"> 10<meta name="description" content="List of papers with links to preprints and published versions."> 11 12<title>Publications â Thomas Nagler</title> 13<style> 14code{white-space: pre-wrap;} 15span.smallcaps{font-variant: small-caps;} 16div.columns{display: flex; gap: min(4vw, 1.5em);} 17div.column{flex: auto; overflow-x: auto;} 18div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} 19ul.task-list{list-style: none;} 20ul.task-list li input[type="checkbox"] { 21 width: 0.8em; 22 margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */ 23 vertical-align: middle; 24} 25</style> 26 27
28<script src="site_libs/quarto-nav/quarto-nav.js"></script>
vendor: 1 bytes, line 28
28
29<script src="site_libs/quarto-nav/headroom.min.js"></script>
vendor: 1 bytes, line 29
29
30<script src="site_libs/clipboard/clipboard.min.js"></script>
vendor: 1 bytes, line 30
30
31<script src="site_libs/quarto-html/quarto.js"></script>
vendor: 1 bytes, line 31
31
32<script src="site_libs/quarto-html/popper.min.js"></script>
vendor: 1 bytes, line 32
32
33<script src="site_libs/quarto-html/tippy.umd.min.js"></script>
vendor: 1 bytes, line 33
33
34<script src="site_libs/quarto-html/anchor.min.js"></script>
34 35<link href="site_libs/quarto-html/tippy.css" rel="stylesheet"> 36<link href="site_libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" class="quarto-color-scheme" id="quarto-text-highlighting-styles"> 37<link href="site_libs/quarto-html/quarto-syntax-highlighting-dark.css" rel="prefetch" class="quarto-color-scheme quarto-color-alternate" id="quarto-text-highlighting-styles">
38<script src="site_libs/bootstrap/bootstrap.min.js"></script>
38 39<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet"> 40<link href="site_libs/bootstrap/bootstrap.min.css" rel="stylesheet" class="quarto-color-scheme" id="quarto-bootstrap" data-mode="light"> 41<link href="site_libs/bootstrap/bootstrap-dark.min.css" rel="prefetch" class="quarto-color-scheme quarto-color-alternate" id="quarto-bootstrap" data-mode="dark">
42<script id="quarto-search-options" type="application/json">{ 43 "language": { 44 "search-no-results-text": "No results", 45 "search-matching-documents-text": "matching documents", 46 "search-copy-link-title": "Copy link to search", 47 "search-hide-matches-text": "Hide additional matches", 48 "search-more-match-text": "more match in this document", 49 "search-more-matches-text": "more matches in this document", 50 "search-clear-button-title": "Clear", 51 "search-text-placeholder": "", 52 "search-detached-cancel-button-title": "Cancel", 53 "search-submit-button-title": "Submit", 54 "search-label": "Search" 55 } 56}</script>
vendor: 1 bytes, line 56
56
57<script async="" src="https://www.googletagmanager.com/gtag/js?id="></script>
57 58
59<script type="text/javascript"> 60 61window.dataLayer = window.dataLayer || []; 62function gtag(){dataLayer.push(arguments);} 63gtag('js', new Date()); 64gtag('config', '', { 'anonymize_ip': true}); 65</script>
65 66 67<!-- 68Load Academicons v1: https://jpswalsh.github.io/academicons/ 69--> 70<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/jpswalsh/academicons@1/css/academicons.min.css"> 71 72<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css"> 73 74 75<!--- 76The following code are needed to show dimension citation and altmetrics. 77https://api.altmetric.com/embeds.html 78https://badge.dimensions.ai/ 79---> 80
81<script type="text/javascript" src="https://d1bxh8uas1mnw7.cloudfront.net/assets/embed.js"></script>
81 82
83<script async="" src="https://badge.dimensions.ai/badge.js" charset="utf-8"></script>
83 84
85<script type="text/javascript" src="//cdn.plu.mx/widget-popup.js"></script>
85 86 87 88<link rel="stylesheet" href="styles.css"> 89<link rel="stylesheet" href="custom.css"> 90<meta property="og:title" content="Publications â Thomas Nagler"> 91<meta property="og:description" content="Personal website of Thomas Nagler"> 92<meta property="og:image" content="https://quarto.org/quarto.png"> 93<meta property="og:site_name" content="Thomas Nagler"> 94<meta name="twitter:title" content="Publications â Thomas Nagler"> 95<meta name="twitter:description" content="Personal website of Thomas Nagler"> 96<meta name="twitter:image" content="https://quarto.org/quarto.png"> 97<meta name="twitter:card" content="summary_large_image"> 98</head> 99 100<body class="nav-fixed"> 101 102<div id="quarto-search-results"></div> 103 <header id="quarto-header" class="headroom fixed-top quarto-banner"> 104 <nav class="navbar navbar-expand-lg " data-bs-theme="dark"> 105 <div class="navbar-container container-fluid"> 106 <div class="navbar-brand-container mx-auto"> 107 <a class="navbar-brand" href="./index.html"> 108 <span class="navbar-title">Thomas Nagler</span> 109 </a> 110 </div> 111 <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }"> 112 <span class="navbar-toggler-icon"></span> 113</button> 114 <div class="collapse navbar-collapse" id="navbarCollapse"> 115 <ul class="navbar-nav navbar-nav-scroll me-auto"> 116 <li class="nav-item"> 117 <a class="nav-link" href="./index.html"> 118<span class="menu-text">About</span></a> 119 </li> 120 <li class="nav-item"> 121 <a class="nav-link active" href="./publications.html" aria-current="page"> 122<span class="menu-text">Publications</span></a> 123 </li> 124 <li class="nav-item"> 125 <a class="nav-link" href="./software.html"> 126<span class="menu-text">Software</span></a> 127 </li> 128 <li class="nav-item"> 129 <a class="nav-link" href="./teaching.html"> 130<span class="menu-text">Teaching</span></a> 131 </li> 132 <li class="nav-item"> 133 <a class="nav-link" href="./people.html"> 134<span class="menu-text">Team</span></a> 135 </li> 136</ul> 137 </div> <!-- /navcollapse --> 138 <div class="quarto-navbar-tools"> 139 <a href="" class="quarto-color-scheme-toggle quarto-navigation-tool px-1" onclick="window.quartoToggleColorScheme(); return false;" title="Toggle dark mode"><i class="bi"></i></a> 140</div> 141 </div> <!-- /container-fluid --> 142 </nav> 143</header> 144<!-- content --> 145<header id="title-block-header" class="quarto-title-block default page-columns page-full"> 146 <div class="quarto-title-banner page-columns page-full"> 147 <div class="quarto-title column-body"> 148 <h1 class="title">Publications</h1> 149 </div> 150 </div> 151 152 153 <div class="quarto-title-meta"> 154 155 156 157 158 </div> 159 160 161 </header><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar"> 162<!-- sidebar --> 163<!-- margin-sidebar --> 164 <div id="quarto-margin-sidebar" class="sidebar margin-sidebar"> 165 <nav id="TOC" role="doc-toc" class="toc-active"> 166 <h2 id="toc-title">On this page</h2> 167 168 <ul> 169 <li><a href="#preprints" id="toc-preprints" class="nav-link active" data-scroll-target="#preprints">Preprints</a></li> 170 <li><a href="#section" id="toc-section" class="nav-link" data-scroll-target="#section">2026</a></li> 171 <li><a href="#section-1" id="toc-section-1" class="nav-link" data-scroll-target="#section-1">2025</a></li> 172 <li><a href="#section-2" id="toc-section-2" class="nav-link" data-scroll-target="#section-2">2024</a></li> 173 <li><a href="#section-3" id="toc-section-3" class="nav-link" data-scroll-target="#section-3">2023</a></li> 174 <li><a href="#section-4" id="toc-section-4" class="nav-link" data-scroll-target="#section-4">2022</a></li> 175 <li><a href="#section-5" id="toc-section-5" class="nav-link" data-scroll-target="#section-5">2021</a></li> 176 <li><a href="#section-6" id="toc-section-6" class="nav-link" data-scroll-target="#section-6">2020</a></li> 177 <li><a href="#section-7" id="toc-section-7" class="nav-link" data-scroll-target="#section-7">2019</a></li> 178 <li><a href="#section-8" id="toc-section-8" class="nav-link" data-scroll-target="#section-8">2018</a></li> 179 <li><a href="#section-9" id="toc-section-9" class="nav-link" data-scroll-target="#section-9">2017</a></li> 180 <li><a href="#section-10" id="toc-section-10" class="nav-link" data-scroll-target="#section-10">2016</a></li> 181 <li><a href="#section-11" id="toc-section-11" class="nav-link" data-scroll-target="#section-11">2014</a></li> 182 </ul> 183</nav> 184 </div> 185<!-- main --> 186<main class="content quarto-banner-title-block" id="quarto-document-content"> 187 188 189 190 191 192<section id="preprints" class="level3"> 193<h3 class="anchored" data-anchor-id="preprints">Preprints</h3> 194<center> 195<hr style="width:100%"> 196</center> 197<p>Brock and Nagler. <strong>Fast rates for nonstationary weighted risk minimization</strong>. <a href="https://arxiv.org/abs/2602.05742">[pdf]</a></p> 198<p>Gauss and Nagler. <strong>Properties of stepwise parameter estimation in high-dimensional vine copulas.</strong> <a href="https://arxiv.org/abs/2511.17291">[pdf]</a></p> 199<p>Palm and Nagler. <strong>Uniform central limit theorems for non-stationary processes via relative weak convergence.</strong> <a href="http://arxiv.org/abs/2505.02197">[pdf]</a></p> 200<p>Gauss and Nagler. <strong>Asymptotics for estimating a diverging number of parametersâwith and without sparsity.</strong> <a href="https://arxiv.org/abs/2411.17395">[pdf]</a></p> 201<p>Nagler and Rügamer. <strong>Uncertainty quantification for prior-data fitted networks using martingale posteriors.</strong> <a href="https://arxiv.org/abs/2505.11325">[pdf]</a></p> 202<p>Vatter and Nagler. <strong>Throwing vines at the wall: structure learning via random search.</strong> <a href="https://arxiv.org/abs/2510.20035">[pdf]</a></p> 203</section> 204<section id="section" class="level3"> 205<h3 class="anchored" data-anchor-id="section">2026</h3> 206<center> 207<hr style="width:100%"> 208</center> 209<p>Nagler, Kurowicka, Cooke, Joe. <strong>Statistical Dependence Modeling: Festschrift in Honor of Claudia Czado</strong>, Springer <a href="Statistical Dependence Modeling: Festschrift in Honor of Claudia Czado*">[doi]</a></p> 210<p>Nagler and Langer. <strong>Optimal neural network approximation of smooth compositional functions on sets with low intrinsic dimension.</strong> <em>The 39th Annual Conference on Learning Theory (COLT)</em> <a href="https://arxiv.org/abs/2602.03539">[pdf]</a></p> 211<p>Min, Li, Nagler, and Li. <strong>
211Mortality forecasting under climate risk: a stochastic approach with distributed lag nonlinear models.</strong> <em>Journal of the Royal Statistical Society Series A: Statistics in Society (to appear)</em> <a href="https://arxiv.org/abs/2506.00561">[pdf]</a> <a href="https://academic.oup.com/jrsssa/advance-article/doi/10.1093/jrsssa/qnag082/8724052">[doi]</a></p> 212<p>Nagler, Brock, and Palm. <strong>Online bootstrap inference for the trend of nonstationary time series.</strong> <em>The 42nd Conference on Uncertainty in Artificial Intelligence (UAI)</em> <a href="https://arxiv.org/abs/2602.23911">[pdf]</a></p> 213<p>Nagler, Claeskens, and Gijbels. <strong>On dimension reduction in conditional dependence models.</strong> In: <em>Statistical Dependence Modeling: Festschrift in Honor of Claudia Czado</em> <a href="http://arxiv.org/abs/2505.01052">[pdf]</a> <a href="https://link.springer.com/chapter/10.1007/978-3-032-14252-8_8">[doi]</a></p> 214<p>Li, Nagler, and Czado. <strong>Modeling cold-related excess deaths via stationary vine copulas.</strong> <em>Scandinavian Actuarial Journal (to appear)</em> <a href="files/static/Modelling_cold_related_excess_deaths_by_major_causes_via_stationary_vine_copulas.pdf">[pdf]</a> <a href="https://www.tandfonline.com/doi/full/10.1080/03461238.2026.2650321">[doi]</a></p> 215</section> 216<section id="section-1" class="level3"> 217<h3 class="anchored" data-anchor-id="section-1">2025</h3> 218<center> 219<hr style="width:100%"> 220</center> 221<p>Funk, Ludwig, Kuechenhoff, and Nagler. <strong>Towards more realistic climate model outputs: A multivariate bias correction based on zero-inflated vine copulas.</strong> <em>Journal of the Royal Statistical Society, Series C (Applied Statistics)</em> <a href="https://doi.org/10.1093/jrsssc/qlaf044">[doi]</a> <a href="https://arxiv.org/abs/2410.15931">[pdf]</a></p> 222<p>Arpogaus, Kneib, Nagler, and Rügamer. <strong>Hybrid Bernstein normalizing flows for flexible multivariate density regression with interpretable marginals.</strong> <em>The 41st Conference on Uncertainty in Artificial Intelligence (UAI)</em> <a href="https://arxiv.org/abs/2505.14164">[pdf]</a></p> 223<p>Schulte, Rügamer, and Nagler. <strong>Adjustment for confounding using pre-trained representations.</strong> <em>The 42nd International Conference on Machine Learning (ICML)</em> <a href="https://arxiv.org/abs/2506.14329">[pdf]</a></p> 224<p>Nagler. <strong>Simplified vine copula models: state of science and affairs.</strong> <em>Risk Sciences 1, 100022</em> <a href="https://doi.org/10.1016/j.risk.2025.100022">[doi]</a> <a href="https://arxiv.org/abs/2410.16806">[pdf]</a></p> 225<p>Schulz-Kümpel, Fischer, Hornung, Boulesteix, Nagler, and Bischl. <strong>Constructing confidence intervals for âtheâ Generalization Error â a comprehensive benchmark study.</strong> <em>Data-centric Machine Learning Research (DMLR)</em> 2(6):1-73, 2025. <a href="https://arxiv.org/abs/2409.18836">[pdf]</a></p> 226<p>Cheng, Vatter, Nagler, and Chen. <strong>Vine copulas as differentiable computational graphs.</strong> <em>Technical report</em>. <a href="https://arxiv.org/abs/2506.13318">[pdf]</a></p> 227</section> 228<section id="section-2" class="level3"> 229<h3 class="anchored" data-anchor-id="section-2">2024</h3> 230<center> 231<hr style="width:100%"> 232</center> 233<p>Herbinger, Wright, Nagler, Bischl, and Casalicchio. <strong>Decomposing global feature effects based on feature interactions.</strong> <em>Journal of Machine Learning Research, 25(381):1â65.</em> <a href="https://jmlr.org/papers/v25/23-0699.html">[doi]</a></p> 234<p>Nagler, Schneider, Bischl, and Feurer. <strong>Reshuffling resampling splits can improve generalization of hyperparameter optimization.</strong> <em>Thirty-Eighth Annual Conference on Neural Information Processing Systems (NeurIPS)</em> <a href="https://arxiv.org/abs/2405.15393">[pdf]</a></p> 235<p>Koshil, Nagler, Feurer, and Eggensperger. <strong>Towards localization via data embedding for TabPFN.</strong> <em>3rd Table Representation Learning Workshop at NeurIPS</em> <a href="https://openreview.net/pdf?id=LFyQyV5HxQ">[pdf]</a></p> 236<p>Palm and Nagler. <strong>An online bootstrap for time series.</strong> <em>The 27th International Conference on Artificial Intelligence and Statistics (AISTATS)</em> <a href="https://arxiv.org/abs/2310.19683">[pdf]</a> <a href="https://proceedings.mlr.press/v238/palm24a.html">[doi]</a></p> 237<p>Rügamer, Kolb, Weber, Kook, and Nagler. <strong>Generalizing orthogonalization for models with non-linearities.</strong> <em>The 41st International Conference on Machine Learning (ICML)</em>. <a href="https://arxiv.org/abs/2405.02475">[pdf]</a></p> 238<p>Sale, Hofman, Löhr, Wimmer, Nagler, and Hüllermeier. <strong>Label-wise aleatoric and epistemic uncertainty quantification.</strong> <em>The 40th Conference on Uncertainty in Artificial Intelligence (UAI)</em> <a href="http://arxiv.org/abs/2406.02354">[pdf]</a></p> 239<p>Rundel, Kobialka, von Crailsheim, Feurer, Nagler, and Rügamer. <strong>Interpretable machine learning for TabPFN.</strong> <em>The 2nd World Conference on eXplainable Artificial Intelligence (XAI)</em> <a href="https://arxiv.org/abs/2403.10923">[pdf]</a> <a href="https://link.springer.com/chapter/10.1007/978-3-031-63797-1_23">[doi]</a></p> 240</section> 241<section id="section-3" class="level3"> 242<h3 class="anchored" data-anchor-id="section-3">2023</h3> 243<center> 244<hr style="width:100%"> 245</center> 246<p>Nagler and Vatter. <strong>Solving estimating equations with copulas.</strong> <em>Journal of the American Statistical Association</em> 119(546), 1168â1180. <a href="http://arxiv.org/abs/1801.10576">[pdf]</a> <a href="https://www.tandfonline.com/doi/full/10.1080/01621459.2023.2177545">[doi]</a></p> 247<p>Nagler. <strong>Statistical foundations of prior-data fitted networks.</strong> <em>The 40th International Conference on Machine Learning (ICML), PMLR 202:25660-25676, 2023.</em> <a href="https://arxiv.org/abs/2305.11097">[pdf]</a> <a href="https://proceedings.mlr.press/v202/nagler23a.html">[doi]</a></p> 248<p>Rodemann, Goschenhofer, Dorigatti, Nagler, and Augustin. <strong>Approximately Bayes-Optimal Pseudo Label Selection.</strong> <em>The 39th Conference on Uncertainty in Artificial Intelligence (UAI)</em> <a href="https://proceedings.mlr.press/v216/rodemann23a/rodemann23a.pdf">[pdf]</a> <a href="https://proceedings.mlr.press/v216/rodemann23a">[doi]</a></p> 249<p>Zwep, Guo, Nagler, Knibbe, Meulman, and van Hasselt. <strong>Virtual Patient Simulation Using Copula Modeling.</strong> <em>Clinical Pharmacology & Therapeutics.</em> <a href="https://ascpt.onlinelibrary.wiley.com/doi/epdf/10.1002/cpt.3099">[pdf]</a> <a href="https://doi.org/10.1002/cpt.3099">[doi]</a></p> 250<p>Sale, Hofman, Wimmer, Hüllermeier, and Nagler. <strong>Second-Order Uncertainty Quantification: Variance-Based Measures.</strong> <em>Research report</em> <a href="https://arxiv.org/abs/2401.00276">[pdf]</a></p> 251</section> 252<section id="section-4" class="level3"> 253<h3 class="anchored" data-anchor-id="section-4">2022</h3> 254<center> 255<hr style="width:100%"> 256</center> 257<p>Nagler, Krüger, and Min. <strong>Stationary vine copula models for multivariate time series.</strong> <em>Journal of Econometrics, 227(2):305-324</em> <a href="https://www.sciencedirect.com/science/article/pii/S0304407621003043">[doi]</a> <a href="https://www.sciencedirect.com/science/article/pii/S0304407621003043/pdfft?md5=e36d67f4b050cf9813f5fdbe51578b08&pid=1-s2.0-S0304407621003043-main.pdf">[pdf]</a> <a href="https://ars.els-cdn.com/content/image/1-s2.0-S0304407621003043-mmc1.pdf">[suppl.]</a></p> 258<p>Czado and Nagler. <strong>Vine copula based modeling.</strong> <em>Annual Review of Statistics and Its Application 9, pp. 453-477</em> <a href="http://www.annualreviews.org/eprint/DMMEJGSBDRJ8NQIM3CVY/full/10.1146/annurev-statistics-040220-101153">[doi]</a> <a href="files/static/vine-arisa.pdf">[pdf]</a></p> 259<p>Czado, Bax, Sahin, Nagler, Min, and Paterlini. <strong>Vine copula based dependence modeling in sustainable finance.</strong> <em>The Journal of Finance and Data Science, 8:309.-330</em> <a href="https://doi.org/10.1016/j.jfds.2022.11.003">[doi]</a> <a href="https://reader.elsevier.com/reader/sd/pii/S2405918822000162?token=E8BFC7734FEAFD473AB3B49A88D7AEE3AC94D5D7446909CF12D61785
259F5DFB6F1A4479A2D3786AA7A5A8EB2C209E8B574&originRegion=eu-west-1&originCreation=20221117161144">[pdf]</a></p> 260<p>Lotto, Nagler, and Radic. <strong>Modeling Stochastic Data Using Copulas For Application in Validation of Autonomous Driving.</strong> <em>Electronics, 11(24):4154</em> <a href="https://www.mdpi.com/2079-9292/11/24/4154">[doi]</a> <a href="https://www.mdpi.com/2079-9292/11/24/4154/pdf">[pdf]</a></p> 261<p>Nguyen-Huy, Kath, Nagler, Khaung, Aung, Mushtaq, Marcussen, and Stone. <strong>A satellite-based Standardized Antecedent Precipitation Index (SAPI) for mapping extreme rainfall risk in Myanmar.</strong> <em>Remote Sensing Applications: Society and Environment</em>, 26 <a href="https://doi.org/10.1016/j.rsase.2022.100733">[doi]</a> <a href="https://pure.tudelft.nl/ws/files/117912721/1_s2.0_S2352938522000416_main.pdf">[pdf]</a></p> 262</section> 263<section id="section-5" class="level3"> 264<h3 class="anchored" data-anchor-id="section-5">2021</h3> 265<center> 266<hr style="width:100%"> 267</center> 268<p>Meyer, Nagler, and Hogan. <strong>Copula-based synthetic data augmentation for machine learning emulators.</strong> <em>Geoscientific Model Development 14(8):5205â5215</em> <a href="https://gmd.copernicus.org/articles/14/5205/2021/">[doi]</a> <a href="https://arxiv.org/abs/2012.09037">[pdf]</a></p> 269<p>Aas, Nagler, Jullum, and Løland. <strong>Explaining predictive models using Shapley values and non-parametric vine copulas.</strong> <em>Dependence Modeling, 9:62â81</em> <a href="https://doi.org/10.1515/demo-2021-0103">[doi]</a> <a href="https://doi.org/10.1515/demo-2021-0103">[pdf]</a></p> 270<p>Nagler. <strong>R-friendly multi-threading in C++.</strong> <em>Journal of Statistical Software, 97(c1)</em> <a href="https://www.jstatsoft.org/article/view/v097c01">[doi]</a> <a href="https://www.jstatsoft.org/article/view/v097c01">[pdf]</a></p> 271<p>Meyer and Nagler. <strong>Synthia: multidimensional synthetic data generation in Python.</strong> <em>Journal of Open Source Software, 6(65), 2863</em> <a href="https://joss.theoj.org/papers/10.21105/joss.02863">[doi]</a> <a href="https://joss.theoj.org/papers/10.21105/joss.02863">[pdf]</a></p> 272</section> 273<section id="section-6" class="level3"> 274<h3 class="anchored" data-anchor-id="section-6">2020</h3> 275<center> 276<hr style="width:100%"> 277</center> 278<p>Vio, Nagler, and Andreani. <strong>Modeling high-dimensional dependence among astronomical data.</strong> <em>Astronomy & Astrophysics, 642, A156</em> <a href="https://www.aanda.org/articles/aa/abs/2020/10/aa38585-20/aa38585-20.html">[doi]</a> <a href="https://www.aanda.org/articles/aa/pdf/2020/10/aa38585-20.pdf">[pdf]</a></p> 279<p>Eggersmann, Baumeister, Kumbringk, Mayr, Schmoeckel, Thaler, Dannecker, Jeschke, Nagler, Mahner, Sharaf, and Gallwas. <strong>Oropharyngeal HPV Detection Techniques in HPV-associated Head and Neck Cancer Patients.</strong> <em>Anticancer Research, 40(4):2117-2123</em> <a href="https://www.ncbi.nlm.nih.gov/pubmed/32234904?dopt=Abstract">[doi]</a></p> 280</section> 281<section id="section-7" class="level3"> 282<h3 class="anchored" data-anchor-id="section-7">2019</h3> 283<center> 284<hr style="width:100%"> 285</center> 286<p>Nagler, Bumann, and Czado. <strong>Model selection for sparse high-dimensional vine copulas with application to portfolio risk.</strong> <em>Journal of Multivariate Analysis, 172: 180-192</em> <a href="https://doi.org/10.1016/j.jmva.2019.03.004">[doi]</a> <a href="https://arxiv.org/abs/1801.09739">[pdf]</a></p> 287<p>Jäger, Nagler, Czado, and McCall. <strong>A statistical simulation method for joint time series of non-stationary hourly wave parameters.</strong> <em>Coastal Engineering, 146: 14-31</em> <a href="https://www.sciencedirect.com/science/article/pii/S0378383918301777">[doi]</a> <a href="http://arxiv.org/abs/1810.12389">[pdf]</a></p> 288</section> 289<section id="section-8" class="level3"> 290<h3 class="anchored" data-anchor-id="section-8">2018</h3> 291<center> 292<hr style="width:100%"> 293</center> 294<p>Urbano and Nagler. <strong>Stochastic simulation of test collections: evaluation scores.</strong> <em>The 41st International ACM SIGIR Conference on Research & Development in Information Retrieval, p.
294695-704</em> <a href="https://dl.acm.org/citation.cfm?doid=3209978.3210043">[doi]</a> <a href="http://julian-urbano.info/files/publications/065-stochastic-simulation-test-collections-evaluation-scores.pdf">[pdf]</a></p> 295<p>Vatter and Nagler. <strong>Generalized additive models for pair-copula constructions.</strong> <em>Journal of Computational and Graphical Statistics, 27(4): 715-727</em> <a href="https://www.tandfonline.com/doi/full/10.1080/10618600.2018.1451338">[doi]</a> <a href="https://arxiv.org/abs/1608.01593">[pdf]</a></p> 296<p>Nagler. <strong>A generic approach to nonparametric function estimation with mixed data.</strong> <em>Statistics & Probability Letters, 137:326â330</em> <a href="https://www.sciencedirect.com/science/article/pii/S0167715218300853">[doi]</a> <a href="https://arxiv.org/abs/1704.07457">[pdf]</a></p> 297<p>Nagler. <strong>Asymptotic analysis of the jittering kernel density estimator.</strong> <em>Mathematical Methods of Statistics, 27(1): 32-46</em> <a href="https://link.springer.com/article/10.3103/S1066530718010027">[doi]</a> <a href="https://arxiv.org/abs/1705.05431">[pdf]</a></p> 298<p>Nagler. <strong>kdecopula: An R package for the kernel estimation of copula densities.</strong> <em>Journal of Statistical Software, 48(7)</em> <a href="https://www.jstatsoft.org/article/view/v084i07">[doi]</a> <a href="hhttps://www.jstatsoft.org/index.php/jss/article/view/v084i07/1211">[pdf]</a></p> 299<p>Höhndorf, Nagler, Koppitz, Czado, and Holzapfel. <strong>Statistical dependence analyses of operational flight data used for landing reconstruction enhancement.</strong> <em>The 22nd Air Transport Research Society World Conference</em> (ATRS 2018) <a href="https://arxiv.org/pdf/2206.09809.pdf">[pdf]</a></p> 300<p>Czado, Müller, and Nagler. <strong>Dependence modelling in ultra high dimensions with vine copulas.</strong> Book chapter in <em>High Performance Computing in Science and Engineering - on the Tier-2 System CoolMUC; Garching/Munich 2018</em> <a href="https://mediatum.ub.tum.de/doc/1439506/1439506.pdf">[pdf]</a></p> 301<p>Möller, Spazzini, Kraus, Nagler, and Czado. <strong>Vine copula based post-processing of ensemble forecasts for temperature.</strong> <em>Research report</em> <a href="http://arxiv.org/abs/1811.02255">[pdf]</a></p> 302<p>Schallhorn, Kraus, Nagler, and Czado. <strong>D-vine quantile regression with discrete variables.</strong> <em>Research report</em> <a href="http://arxiv.org/abs/1705.08310">[pdf]</a></p> 303<p>Nagler. <strong>Nonparametric estimation in simplified vine copula models.</strong> <em>PhD thesis, Technical University of Munich</em> <a href="http://mediatum.ub.tum.de/node?id=1447138">[pdf]</a></p> 304</section> 305<section id="section-9" class="level3"> 306<h3 class="anchored" data-anchor-id="section-9">2017</h3> 307<center> 308<hr style="width:100%"> 309</center> 310<p>Nagler, Schellhase, and Czado. <strong>Nonparametric estimation of simplified vine copula models: comparison of methods.</strong> <em>Dependence Modeling, 5:99-120</em> <a href="https://www.degruyter.com/view/j/demo.2017.5.issue-1/demo-2017-0007/demo-2017-0007.xml">[doi]</a> <a href="https://www.degruyter.com/document/doi/10.1515/demo-2017-0007/pdf">[pdf]</a></p> 311<p>Nagler. <strong>Comment on âA coupled stochastic rainfall-evapotranspiration model for hydrological impact analysisâ by Minh Tu Pham et al.</strong> <em>Interactive comment on Hydrol. Earth Syst. Sci. Discuss.</em> <a href="http://www.hydrol-earth-syst-sci-discuss.net/hess-2017-161/hess-2017-161-RC1.pdf">[doi]</a> <a href="http://www.hydrol-earth-syst-sci-discuss.net/hess-2017-161/hess-2017-161-RC1-supplement.pdf">[pdf]</a></p> 312<p>Kreuzer, Nagler, and Czado. <strong>Heavy tailed spatial autocorrelation models.</strong> <em>Research report</em> <a href="https://arxiv.org/abs/1707.03165">[pdf]</a></p> 313</section> 314<section id="section-10" class="level3"> 315<h3 class="anchored" data-anchor-id="section-10">2016</h3> 316<center> 317<hr style="width:100%"> 318</center> 319<p>Nagler and Czado. <strong>Evading the curse of dimensionality in nonparametric density estimation with simplified vine copulas.</strong> <em>Journal of Multivariate Analysis, 151:69-89</em> <a href="http://www.sciencedirect.com/science/article/pii/S0047259X16300471">[doi]</a> <a href="https://arxiv.org/abs/1503.03305">[pdf]</a></p> 320</section> 321<section id="section-11" class="level3"> 322<h3 class="anchored" data-anchor-id="section-11">2014</h3> 323<center> 324<hr style="width:100%"> 325</center> 326<p>Nagler. <strong>Kernel methods for vine copula estimation.</strong> <em>Masterâs thesis, Technical University of Munich</em> <a href="https://mediatum.ub.tum.de/node?id=1231221">[pdf]</a></p> 327<!--Include social share buttons--> 328<!-- {{< include /files/includes/_socialshare.qmd >}} --> 329 330 331</section> 332 333</main> <!-- /main -->
334<script id="quarto-html-after-body" type="application/javascript"> 335window.document.addEventListener("DOMContentLoaded", function (event) { 336 const toggleBodyColorMode = (bsSheetEl) => { 337 const mode = bsSheetEl.getAttribute("data-mode"); 338 const bodyEl = window.document.querySelector("body"); 339 if (mode === "dark") { 340 bodyEl.classList.add("quarto-dark"); 341 bodyEl.classList.remove("quarto-light"); 342 } else { 343 bodyEl.classList.add("quarto-light"); 344 bodyEl.classList.remove("quarto-dark"); 345 } 346 } 347 const toggleBodyColorPrimary = () => { 348 const bsSheetEl = window.document.querySelector("link#quarto-bootstrap"); 349 if (bsSheetEl) { 350 toggleBodyColorMode(bsSheetEl); 351 } 352 } 353 toggleBodyColorPrimary(); 354 const disableStylesheet = (stylesheets) => { 355 for (let i=0; i < stylesheets.length; i++) { 356 const stylesheet = stylesheets[i]; 357 stylesheet.rel = 'prefetch'; 358 } 359 } 360 const enableStylesheet = (stylesheets) => { 361 for (let i=0; i < stylesheets.length; i++) { 362 const stylesheet = stylesheets[i]; 363 stylesheet.rel = 'stylesheet'; 364 } 365 } 366 const manageTransitions = (selector, allowTransitions) => { 367 const els = window.document.querySelectorAll(selector); 368 for (let i=0; i < els.length; i++) { 369 const el = els[i]; 370 if (allowTransitions) { 371 el.classList.remove('notransition'); 372 } else { 373 el.classList.add('notransition'); 374 } 375 } 376 } 377 const toggleGiscusIfUsed = (isAlternate, darkModeDefault) => { 378 const baseTheme = document.querySelector('#giscus-base-theme')?.value ?? 'light'; 379 const alternateTheme = document.querySelector('#giscus-alt-theme')?.value ?? 'dark'; 380 let newTheme = ''; 381 if(darkModeDefault) { 382 newTheme = isAlternate ? baseTheme : alternateTheme; 383 } else { 384 newTheme = isAlternate ? alternateTheme : baseTheme; 385 } 386 const changeGiscusTheme = () => { 387 // From: https://github.com/giscus/giscus/issues/336 388 const sendMessage = (message) => { 389 const iframe = document.querySelector('iframe.giscus-frame'); 390 if (!iframe) return; 391 iframe.contentWindow.postMessage({ giscus: message }, 'https://giscus.app'); 392 } 393 sendMessage({ 394 setConfig: { 395 theme: newTheme 396 } 397 }); 398 } 399 const isGiscussLoaded = window.document.querySelector('iframe.giscus-frame') !== null; 400 if (isGiscussLoaded) { 401 changeGiscusTheme(); 402 } 403 } 404 const toggleColorMode = (alternate) => { 405 // Switch the stylesheets 406 const alternateStylesheets = window.document.querySelectorAll('link.quarto-color-scheme.quarto-color-alternate'); 407 manageTransitions('#quarto-margin-sidebar .nav-link', false); 408 if (alternate) { 409 enableStylesheet(alternateStylesheets); 410 for (const sheetNode of alternateStylesheets) { 411 if (sheetNode.id === "quarto-bootstrap") { 412 toggleBodyColorMode(sheetNode); 413 } 414 } 415 } else { 416 disableStylesheet(alternateStylesheets); 417 toggleBodyColorPrimary(); 418 } 419 manageTransitions('#quarto-margin-sidebar .nav-link', true); 420 // Switch the toggles 421 const toggles = window.document.querySelectorAll('.quarto-color-scheme-toggle'); 422 for (let i=0; i < toggles.length; i++) { 423 const toggle = toggles[i]; 424 if (toggle) { 425 if (alternate) { 426 toggle.classList.add("alternate"); 427 } else { 428 toggle.classList.remove("alternate"); 429 } 430 } 431 } 432 // Hack to workaround the fact that safari doesn't 433 // properly recolor the scrollbar when toggling (#1455) 434 if (navigator.userAgent.indexOf('Safari') > 0 && navigator.userAgent.indexOf('Chrome') == -1) { 435 manageTransitions("body", false); 436 window.scrollTo(0, 1); 437 setTimeout(() => { 438 window.scrollTo(0, 0); 439 manageTransitions("body", true); 440 }, 40); 441 } 442 } 443 const isFileUrl = () => { 444 return window.location.protocol === 'file:'; 445 } 446 const hasAlternateSentinel = () => { 447 let styleSentinel = getColorSchemeSentinel(); 448 if (styleSentinel !== null) { 449 return styleSentinel === "alternate"; 450 } else { 451 return false;
452 } 453 } 454 const setStyleSentinel = (alternate) => { 455 const value = alternate ? "alternate" : "default"; 456 if (!isFileUrl()) { 457 window.localStorage.setItem("quarto-color-scheme", value); 458 } else { 459 localAlternateSentinel = value; 460 } 461 } 462 const getColorSchemeSentinel = () => { 463 if (!isFileUrl()) { 464 const storageValue = window.localStorage.getItem("quarto-color-scheme"); 465 return storageValue != null ? storageValue : localAlternateSentinel; 466 } else { 467 return localAlternateSentinel; 468 } 469 } 470 const darkModeDefault = false; 471 let localAlternateSentinel = darkModeDefault ? 'alternate' : 'default'; 472 // Dark / light mode switch 473 window.quartoToggleColorScheme = () => { 474 // Read the current dark / light value 475 let toAlternate = !hasAlternateSentinel(); 476 toggleColorMode(toAlternate); 477 setStyleSentinel(toAlternate); 478 toggleGiscusIfUsed(toAlternate, darkModeDefault); 479 }; 480 // Ensure there is a toggle, if there isn't float one in the top right 481 if (window.document.querySelector('.quarto-color-scheme-toggle') === null) { 482 const a = window.document.createElement('a'); 483 a.classList.add('top-right'); 484 a.classList.add('quarto-color-scheme-toggle'); 485 a.href = ""; 486 a.onclick = function() { try { window.quartoToggleColorScheme(); } catch {} return false; }; 487 const i = window.document.createElement("i"); 488 i.classList.add('bi'); 489 a.appendChild(i); 490 window.document.body.appendChild(a); 491 } 492 // Switch to dark mode if need be 493 if (hasAlternateSentinel()) { 494 toggleColorMode(true); 495 } else { 496 toggleColorMode(false); 497 } 498 const icon = "î§"; 499 const anchorJS = new window.AnchorJS(); 500 anchorJS.options = { 501 placement: 'right', 502 icon: icon 503 }; 504 anchorJS.add('.anchored'); 505 const isCodeAnnotation = (el) => { 506 for (const clz of el.classList) { 507 if (clz.startsWith('code-annotation-')) { 508 return true; 509 } 510 } 511 return false; 512 } 513 const onCopySuccess = function(e) { 514 // button target 515 const button = e.trigger; 516 // don't keep focus 517 button.blur(); 518 // flash "checked" 519 button.classList.add('code-copy-button-checked'); 520 var currentTitle = button.getAttribute("title"); 521 button.setAttribute("title", "Copied!"); 522 let tooltip; 523 if (window.bootstrap) { 524 button.setAttribute("data-bs-toggle", "tooltip"); 525 button.setAttribute("data-bs-placement", "left"); 526 button.setAttribute("data-bs-title", "Copied!"); 527 tooltip = new bootstrap.Tooltip(button, 528 { trigger: "manual", 529 customClass: "code-copy-button-tooltip", 530 offset: [0, -8]}); 531 tooltip.show(); 532 } 533 setTimeout(function() { 534 if (tooltip) { 535 tooltip.hide(); 536 button.removeAttribute("data-bs-title"); 537 button.removeAttribute("data-bs-toggle"); 538 button.removeAttribute("data-bs-placement"); 539 } 540 button.setAttribute("title", currentTitle); 541 button.classList.remove('code-copy-button-checked'); 542 }, 1000); 543 // clear code selection 544 e.clearSelection(); 545 } 546 const getTextToCopy = function(trigger) { 547 const codeEl = trigger.previousElementSibling.cloneNode(true); 548 for (const childEl of codeEl.children) { 549 if (isCodeAnnotation(childEl)) { 550 childEl.remove(); 551 } 552 } 553 return codeEl.innerText; 554 } 555 const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', { 556 text: getTextToCopy 557 }); 558 clipboard.on('success', onCopySuccess); 559 if (window.document.getElementById('quarto-embedded-source-code-modal')) { 560 // For code content inside modals, clipBoardJS needs to be initialized with a container option 561 // TODO: Check when it could be a function (https://github.com/zenorocha/clipboard.js/issues/860) 562 const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', { 563 text: getTextToCopy, 564 container: window.document.getElementById('quarto-embedded-source-code-modal') 565 }); 566 clipboardModal.on('success', onCopySuccess); 567 } 568 var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//); 569 var mailtoRegex = new RegExp(/^mailto:/); 570 var filterRegex = new RegExp("^(?:http:|https:)\/\/drganghe\.github\.io\/custom"); 571 var isInternal = (href) => { 572 return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href); 573 } 574 // Inspect non-navigation links and adorn them if external 575 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)'); 576 for (var i=0; i<links.length; i++) { 577 const link = links[i]; 578 if (!isInternal(link.href)) { 579 // undo the damage that might have been done by quarto-nav.js in the case of 580 // links that we want to consider external 581 if (link.dataset.originalHref !== undefined) { 582 link.href = link.dataset.originalHref; 583 } 584 // target, if specified 585 link.setAttribute("target", "_blank"); 586 if (link.getAttribute("rel") === null) { 587 link.setAttribute("rel", "noopener"); 588 } 589 } 590 } 591 function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) { 592 const config = { 593 allowHTML: true, 594 maxWidth: 500, 595 delay: 100,
596 arrow: false, 597 appendTo: function(el) { 598 return el.parentElement; 599 }, 600 interactive: true, 601 interactiveBorder: 10, 602 theme: 'quarto', 603 placement: 'bottom-start', 604 }; 605 if (contentFn) { 606 config.content = contentFn; 607 } 608 if (onTriggerFn) { 609 config.onTrigger = onTriggerFn; 610 } 611 if (onUntriggerFn) { 612 config.onUntrigger = onUntriggerFn; 613 } 614 window.tippy(el, config); 615 } 616 const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]'); 617 for (var i=0; i<noterefs.length; i++) { 618 const ref = noterefs[i]; 619 tippyHover(ref, function() { 620 // use id or data attribute instead here 621 let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href'); 622 try { href = new URL(href).hash; } catch {} 623 const id = href.replace(/^#\/?/, ""); 624 const note = window.document.getElementById(id); 625 if (note) { 626 return note.innerHTML; 627 } else { 628 return ""; 629 } 630 }); 631 } 632 const xrefs = window.document.querySelectorAll('a.quarto-xref'); 633 const processXRef = (id, note) => { 634 // Strip column container classes 635 const stripColumnClz = (el) => { 636 el.classList.remove("page-full", "page-columns"); 637 if (el.children) { 638 for (const child of el.children) { 639 stripColumnClz(child); 640 } 641 } 642 } 643 stripColumnClz(note) 644 if (id === null || id.startsWith('sec-')) { 645 // Special case sections, only their first couple elements 646 const container = document.createElement("div"); 647 if (note.children && note.children.length > 2) { 648 container.appendChild(note.children[0].cloneNode(true)); 649 for (let i = 1; i < note.children.length; i++) { 650 const child = note.children[i]; 651 if (child.tagName === "P" && child.innerText === "") { 652 continue; 653 } else { 654 container.appendChild(child.cloneNode(true)); 655 break; 656 } 657 } 658 if (window.Quarto?.typesetMath) { 659 window.Quarto.typesetMath(container); 660 } 661 return container.innerHTML 662 } else { 663 if (window.Quarto?.typesetMath) { 664 window.Quarto.typesetMath(note); 665 } 666 return note.innerHTML; 667 } 668 } else { 669 // Remove any anchor links if they are present 670 const anchorLink = note.querySelector('a.anchorjs-link'); 671 if (anchorLink) { 672 anchorLink.remove(); 673 } 674 if (window.Quarto?.typesetMath) { 675 window.Quarto.typesetMath(note); 676 } 677 // TODO in 1.5, we should make sure this works without a callout special case 678 if (note.classList.contains("callout")) { 679 return note.outerHTML; 680 } else { 681 return note.innerHTML; 682 } 683 } 684 } 685 for (var i=0; i<xrefs.length; i++) { 686 const xref = xrefs[i]; 687 tippyHover(xref, undefined, function(instance) { 688 instance.disable(); 689 let url = xref.getAttribute('href'); 690 let hash = undefined; 691 if (url.startsWith('#')) { 692 hash = url; 693 } else { 694 try { hash = new URL(url).hash; } catch {} 695 } 696 if (hash) { 697 const id = hash.replace(/^#\/?/, ""); 698 const note = window.document.getElementById(id); 699 if (note !== null) { 700 try { 701 const html = processXRef(id, note.cloneNode(true)); 702 instance.setContent(html); 703 } finally { 704 instance.enable(); 705 instance.show(); 706 } 707 } else { 708 // See if we can fetch this 709 fetch(url.split('#')[0]) 710 .then(res => res.text()) 711 .then(html => { 712 const parser = new DOMParser(); 713 const htmlDoc = parser.parseFromString(html, "text/html"); 714 const note = htmlDoc.getElementById(id); 715 if (note !== null) { 716 const html = processXRef(id, note); 717 instance.setContent(html); 718 } 719 }).finally(() => { 720 instance.enable(); 721 instance.show(); 722 }); 723 } 724 } else { 725 // See if we can fetch a full url (with no hash to target)
726 // This is a special case and we should probably do some content thinning / targeting 727 fetch(url) 728 .then(res => res.text()) 729 .then(html => { 730 const parser = new DOMParser(); 731 const htmlDoc = parser.parseFromString(html, "text/html"); 732 const note = htmlDoc.querySelector('main.content'); 733 if (note !== null) { 734 // This should only happen for chapter cross references 735 // (since there is no id in the URL) 736 // remove the first header 737 if (note.children.length > 0 && note.children[0].tagName === "HEADER") { 738 note.children[0].remove(); 739 } 740 const html = processXRef(null, note); 741 instance.setContent(html); 742 } 743 }).finally(() => { 744 instance.enable(); 745 instance.show(); 746 }); 747 } 748 }, function(instance) { 749 }); 750 } 751 let selectedAnnoteEl; 752 const selectorForAnnotation = ( cell, annotation) => { 753 let cellAttr = 'data-code-cell="' + cell + '"'; 754 let lineAttr = 'data-code-annotation="' + annotation + '"'; 755 const selector = 'span[' + cellAttr + '][' + lineAttr + ']'; 756 return selector; 757 } 758 const selectCodeLines = (annoteEl) => { 759 const doc = window.document; 760 const targetCell = annoteEl.getAttribute("data-target-cell"); 761 const targetAnnotation = annoteEl.getAttribute("data-target-annotation"); 762 const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation)); 763 const lines = annoteSpan.getAttribute("data-code-lines").split(","); 764 const lineIds = lines.map((line) => { 765 return targetCell + "-" + line; 766 }) 767 let top = null; 768 let height = null; 769 let parent = null; 770 if (lineIds.length > 0) { 771 //compute the position of the single el (top and bottom and make a div) 772 const el = window.document.getElementById(lineIds[0]); 773 top = el.offsetTop; 774 height = el.offsetHeight; 775 parent = el.parentElement.parentElement; 776 if (lineIds.length > 1) { 777 const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]); 778 const bottom = lastEl.offsetTop + lastEl.offsetHeight; 779 height = bottom - top; 780 } 781 if (top !== null && height !== null && parent !== null) { 782 // cook up a div (if necessary) and position it 783 let div = window.document.getElementById("code-annotation-line-highlight"); 784 if (div === null) { 785 div = window.document.createElement("div"); 786 div.setAttribute("id", "code-annotation-line-highlight"); 787 div.style.position = 'absolute'; 788 parent.appendChild(div); 789 } 790 div.style.top = top - 2 + "px"; 791 div.style.height = height + 4 + "px"; 792 div.style.left = 0; 793 let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter"); 794 if (gutterDiv === null) { 795 gutterDiv = window.document.createElement("div"); 796 gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter"); 797 gutterDiv.style.position = 'absolute'; 798 const codeCell = window.document.getElementById(targetCell); 799 const gutter = codeCell.querySelector('.code-annotation-gutter'); 800 gutter.appendChild(gutterDiv); 801 } 802 gutterDiv.style.top = top - 2 + "px"; 803 gutterDiv.style.height = height + 4 + "px"; 804 } 805 selectedAnnoteEl = annoteEl; 806 } 807 }; 808 const unselectCodeLines = () => { 809 const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"]; 810 elementsIds.forEach((elId) => { 811 const div = window.document.getElementById(elId); 812 if (div) { 813 div.remove(); 814 } 815 }); 816 selectedAnnoteEl = undefined; 817 }; 818 // Handle positioning of the toggle 819 window.addEventListener( 820 "resize", 821 throttle(() => { 822 elRect = undefined; 823 if (selectedAnnoteEl) { 824 selectCodeLines(selectedAnnoteEl); 825 } 826 }, 10) 827 ); 828 function throttle(fn, ms) { 829 let throttle = false;
830 let timer; 831 return (...args) => { 832 if(!throttle) { // first call gets through 833 fn.apply(this, args); 834 throttle = true; 835 } else { // all the others get throttled 836 if(timer) clearTimeout(timer); // cancel #2 837 timer = setTimeout(() => { 838 fn.apply(this, args); 839 timer = throttle = false; 840 }, ms); 841 } 842 }; 843 } 844 // Attach click handler to the DT 845 const annoteDls = window.document.querySelectorAll('dt[data-target-cell]'); 846 for (const annoteDlNode of annoteDls) { 847 annoteDlNode.addEventListener('click', (event) => { 848 const clickedEl = event.target; 849 if (clickedEl !== selectedAnnoteEl) { 850 unselectCodeLines(); 851 const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active'); 852 if (activeEl) { 853 activeEl.classList.remove('code-annotation-active'); 854 } 855 selectCodeLines(clickedEl); 856 clickedEl.classList.add('code-annotation-active'); 857 } else { 858 // Unselect the line 859 unselectCodeLines(); 860 clickedEl.classList.remove('code-annotation-active'); 861 } 862 }); 863 } 864 const findCites = (el) => { 865 const parentEl = el.parentElement; 866 if (parentEl) { 867 const cites = parentEl.dataset.cites; 868 if (cites) { 869 return { 870 el, 871 cites: cites.split(' ') 872 }; 873 } else { 874 return findCites(el.parentElement) 875 } 876 } else { 877 return undefined; 878 } 879 }; 880 var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]'); 881 for (var i=0; i<bibliorefs.length; i++) { 882 const ref = bibliorefs[i]; 883 const citeInfo = findCites(ref); 884 if (citeInfo) { 885 tippyHover(citeInfo.el, function() { 886 var popup = window.document.createElement('div'); 887 citeInfo.cites.forEach(function(cite) { 888 var citeDiv = window.document.createElement('div'); 889 citeDiv.classList.add('hanging-indent'); 890 citeDiv.classList.add('csl-entry'); 891 var biblioDiv = window.document.getElementById('ref-' + cite); 892 if (biblioDiv) { 893 citeDiv.innerHTML = biblioDiv.innerHTML; 894 } 895 popup.appendChild(citeDiv); 896 }); 897 return popup.innerHTML; 898 }); 899 } 900 } 901}); 902</script>
902 903</div> <!-- /content --> 904<footer class="footer"> 905 <div class="nav-footer"> 906 <div class="nav-footer-left"> 907<a href="http://www.tnagler.com">Thomas Nagler</a> ©
908<script>document.write(new Date().getFullYear())</script>
908 909</div> 910 <div class="nav-footer-center"> 911 912 </div> 913 <div class="nav-footer-right"> 914 915 </div> 916 </div> 917</footer> 918 919 920 921 922</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.