PageSourceSearch

https://tnagler.github.io/publications.html

html tnagler.github.io collected 2026-10-03 10:05:18 UTC 48,684 bytes, 922 lines download raw bytes

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 &amp; 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&amp;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.&nbsp;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&amp;originRegion=eu-west-1&amp;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 &amp; 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 &amp; Development in Information Retrieval, p.&nbsp;
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 &amp; 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      &nbsp;
912    </div>
913    <div class="nav-footer-right">
914      &nbsp;
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.