Zipeng365's picture
Publish DeTime static documentation mirror
ae97a0a verified
Raw
History Blame Contribute Delete
27.5 kB
<!DOCTYPE html>
<html lang="en" data-bs-theme="light">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="Zipeng Wu">
<link rel="canonical" href="https://systems-mechanobiology.github.io/DeTime/tutorials/visual-comparison/">
<link rel="shortcut icon" href="../../img/favicon.ico">
<title>Visual tutorial: compare methods on the same series - DeTime</title>
<link href="../../css/bootstrap.min.css" rel="stylesheet">
<link href="../../css/fontawesome.min.css" rel="stylesheet">
<link href="../../css/brands.min.css" rel="stylesheet">
<link href="../../css/solid.min.css" rel="stylesheet">
<link href="../../css/v4-font-face.min.css" rel="stylesheet">
<link href="../../css/base.css" rel="stylesheet">
<link id="hljs-light" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" >
<link id="hljs-dark" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github-dark.min.css" disabled>
<link href="../../stylesheets/brand.css" rel="stylesheet">
<link href="../../stylesheets/extra.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script>
<meta name="robots" content="index, follow, max-image-preview:large">
<meta name="keywords" content="DeTime, detime, de-time, time series decomposition, Python time series, SSA, MSSA, VMD, STL, decomposition software">
<meta property="og:site_name" content="DeTime">
<meta property="og:type" content="website">
<meta property="og:title" content="DeTime - workflow-oriented time-series decomposition for Python">
<meta property="og:description" content="DeTime is a Python and CLI toolkit for reproducible time-series decomposition across SSA, MSSA, VMD, STL, EMD, wavelet, and native C++ backed methods.">
<meta property="og:url" content="https://systems-mechanobiology.github.io/DeTime/">
<meta property="og:image" content="https://systems-mechanobiology.github.io/DeTime/assets/brand/detime-title-card.svg">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="DeTime - time-series decomposition for Python">
<meta name="twitter:description" content="Workflow-oriented Python and CLI software for reproducible trend, oscillation, residual, and component decomposition.">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "WebSite",
"@id": "https://systems-mechanobiology.github.io/DeTime/#website",
"name": "DeTime",
"alternateName": ["detime", "de-time", "De-Time"],
"url": "https://systems-mechanobiology.github.io/DeTime/",
"description": "DeTime documentation for workflow-oriented time-series decomposition software.",
"inLanguage": "en"
},
{
"@type": "SoftwareSourceCode",
"@id": "https://systems-mechanobiology.github.io/DeTime/#software",
"name": "DeTime",
"alternateName": ["detime", "de-time", "De-Time"],
"description": "Python and CLI toolkit for reproducible time-series decomposition with native C++ backed SSA, MSSA, VMD, STD, STDR, MA baseline, and Gabor clustering paths.",
"codeRepository": "https://github.com/systems-mechanobiology/DeTime",
"url": "https://systems-mechanobiology.github.io/DeTime/",
"programmingLanguage": ["Python", "C++"],
"applicationCategory": "Scientific software",
"keywords": "DeTime, time-series decomposition, Python, SSA, MSSA, VMD, STL, EMD, wavelet, native C++",
"author": {
"@type": "Person",
"name": "Zipeng Wu"
}
}
]
}
</script>
<link rel="stylesheet" href="../../stylesheets/extra.css?v=7">
</head>
<body>
<div class="navbar fixed-top navbar-expand-lg navbar-dark bg-primary">
<div class="container">
<a class="navbar-brand" href="../..">DeTime</a>
<!-- Expander button -->
<button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbar-collapse" aria-controls="navbar-collapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<!-- Expanded navigation -->
<div id="navbar-collapse" class="navbar-collapse collapse">
<!-- Main navigation -->
<ul class="nav navbar-nav">
<li class="nav-item">
<a href="../.." class="nav-link">Home</a>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">Start</a>
<ul class="dropdown-menu">
<li>
<a href="../../install/" class="dropdown-item">Install</a>
</li>
<li>
<a href="../../quickstart/" class="dropdown-item">Quickstart</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">Methods</a>
<ul class="dropdown-menu">
<li>
<a href="../../methods/" class="dropdown-item">Methods & Chooser</a>
</li>
<li>
<a href="../../method-matrix/" class="dropdown-item">Method Matrix</a>
</li>
<li>
<a href="../../method-references/" class="dropdown-item">Method References</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">Workflows</a>
<ul class="dropdown-menu">
<li>
<a href="../../notebook-gallery/" class="dropdown-item">Notebook Gallery</a>
</li>
<li>
<a href="../univariate/" class="dropdown-item">Univariate Tutorial</a>
</li>
<li>
<a href="../multivariate/" class="dropdown-item">Multivariate Tutorial</a>
</li>
<li>
<a href="../cli-and-profiling/" class="dropdown-item">CLI Guide</a>
</li>
<li class="dropdown-submenu">
<a href="#" class="dropdown-item">Quant Trading Tutorial</a>
<ul class="dropdown-menu">
<li>
<a href="../quant-trading/" class="dropdown-item">Overview</a>
</li>
<li>
<a href="../quant-trading/notebooks/" class="dropdown-item">Tutorial Notebooks</a>
</li>
<li>
<a href="../quant-trading/notebooks/00_decomposition_first_quant_trading_roadmap/" class="dropdown-item">Tutorial 00 Roadmap</a>
</li>
<li class="dropdown-submenu">
<a href="#" class="dropdown-item">Strategy Lab</a>
<ul class="dropdown-menu">
<li>
<a href="../quant-trading/two-strategy-families/" class="dropdown-item">Two Strategy Families</a>
</li>
<li>
<a href="../quant-trading/notebooks/01_detime_trend_following_strategy_lab/" class="dropdown-item">01 Trend-Following Lab</a>
</li>
<li>
<a href="../quant-trading/notebooks/02_detime_oscillation_reversion_strategy_lab/" class="dropdown-item">02 Oscillation-Reversion Lab</a>
</li>
</ul>
</li>
<li class="dropdown-submenu">
<a href="#" class="dropdown-item">Strategy Expansion</a>
<ul class="dropdown-menu">
<li>
<a href="../quant-trading/method-specific-strategy-expansion/" class="dropdown-item">Method-Specific Strategy Expansion</a>
</li>
<li>
<a href="../quant-trading/notebooks/03_detime_method_specific_strategy_variants/" class="dropdown-item">03 Method-Specific Variants</a>
</li>
<li>
<a href="../quant-trading/notebooks/04_detime_component_pair_trading_cointegration/" class="dropdown-item">04 Component Pair Trading</a>
</li>
</ul>
</li>
<li class="dropdown-submenu">
<a href="#" class="dropdown-item">Tutorial Sequence</a>
<ul class="dropdown-menu">
<li>
<a href="../quant-trading/notebooks/01_market_data_and_decomposition_feature_factory/" class="dropdown-item">01 Real Market Data and Feature Factory</a>
</li>
<li>
<a href="../quant-trading/notebooks/02_decomposition_aware_moving_average_macd/" class="dropdown-item">02 Decomposition-aware MA and MACD</a>
</li>
<li>
<a href="../quant-trading/notebooks/03_residual_mean_reversion_rsi_bollinger/" class="dropdown-item">03 Residual Mean Reversion</a>
</li>
<li>
<a href="../quant-trading/notebooks/04_turtle_donchian_breakout_volume_confirmation/" class="dropdown-item">04 Donchian Breakout</a>
</li>
<li>
<a href="../quant-trading/notebooks/05_pairs_spread_decomposition_stat_arb/" class="dropdown-item">05 Pair-Spread Stat-Arb</a>
</li>
<li>
<a href="../quant-trading/notebooks/06_cross_sectional_rotation_portfolio/" class="dropdown-item">06 Cross-Sectional Rotation</a>
</li>
</ul>
</li>
<li class="dropdown-submenu">
<a href="#" class="dropdown-item">Native SSA Replay</a>
<ul class="dropdown-menu">
<li>
<a href="../quant-trading/notebooks/07_native_ssa_high_return_low_drawdown_tutorial/" class="dropdown-item">07 Native SSA High-Return / Low-Drawdown</a>
</li>
</ul>
</li>
<li>
<a href="../quant-trading/data/" class="dropdown-item">Real Data and Universes</a>
</li>
<li>
<a href="../quant-trading/strategy-map/" class="dropdown-item">Strategy Map</a>
</li>
<li>
<a href="../quant-trading/backtesting-frameworks/" class="dropdown-item">Backtesting Frameworks</a>
</li>
<li>
<a href="../quant-trading/walkforward/" class="dropdown-item">Walk-Forward Validation</a>
</li>
</ul>
</li>
<li class="dropdown-submenu">
<a href="#" class="dropdown-item">Hot Trend Lab</a>
<ul class="dropdown-menu">
<li>
<a href="../hot-trend-lab/" class="dropdown-item">Overview</a>
</li>
<li>
<a href="../hot-trend-lab/notebooks/" class="dropdown-item">Rendered Notebooks</a>
</li>
<li>
<a href="../hot-trend-lab/notebooks/00_hot_trend_lab_overview/" class="dropdown-item">00 Column Overview</a>
</li>
<li>
<a href="../hot-trend-lab/notebooks/01_arxiv_category_pulse/" class="dropdown-item">01 arXiv Category Pulse</a>
</li>
<li>
<a href="../hot-trend-lab/notebooks/02_arxiv_agent_research_pulse/" class="dropdown-item">02 arXiv Agent Research Pulse</a>
</li>
<li>
<a href="../hot-trend-lab/notebooks/03_huggingface_open_model_pulse/" class="dropdown-item">03 Hugging Face Open-Model Pulse</a>
</li>
<li>
<a href="../hot-trend-lab/notebooks/04_github_ai_agent_star_velocity/" class="dropdown-item">04 GitHub Star Velocity</a>
</li>
<li>
<a href="../hot-trend-lab/notebooks/05_wikipedia_attention_hype_decay/" class="dropdown-item">05 Wikipedia Attention Decay</a>
</li>
<li>
<a href="../hot-trend-lab/notebooks/06_crypto_stablecoin_liquidity_pulse/" class="dropdown-item">06 Crypto Stablecoin Liquidity</a>
</li>
<li>
<a href="../hot-trend-lab/notebooks/07_ai_infrastructure_market_pulse/" class="dropdown-item">07 AI Infrastructure Market Pulse</a>
</li>
<li>
<a href="../hot-trend-lab/data-sources/" class="dropdown-item">Real Data Sources</a>
</li>
<li>
<a href="../hot-trend-lab/arxiv-research-pulse/" class="dropdown-item">arXiv Research Pulse</a>
</li>
<li>
<a href="../hot-trend-lab/open-model-and-developer-attention/" class="dropdown-item">Open Models and Developer Attention</a>
</li>
<li>
<a href="../hot-trend-lab/wiki-market-crypto-attention/" class="dropdown-item">Public Attention, Markets, and Crypto</a>
</li>
<li>
<a href="../hot-trend-lab/release-calendar/" class="dropdown-item">Release Calendar</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">Gallery</a>
<ul class="dropdown-menu">
<li>
<a href="../../gallery/ssa/" class="dropdown-item">SSA</a>
</li>
<li>
<a href="../../gallery/std/" class="dropdown-item">STD</a>
</li>
<li>
<a href="../../gallery/stdr/" class="dropdown-item">STDR</a>
</li>
<li>
<a href="../../gallery/mssa/" class="dropdown-item">MSSA</a>
</li>
<li>
<a href="../../gallery/stl/" class="dropdown-item">STL</a>
</li>
<li>
<a href="../../gallery/mstl/" class="dropdown-item">MSTL</a>
</li>
<li>
<a href="../../gallery/robust-stl/" class="dropdown-item">ROBUST_STL</a>
</li>
<li>
<a href="../../gallery/emd/" class="dropdown-item">EMD</a>
</li>
<li>
<a href="../../gallery/ceemdan/" class="dropdown-item">CEEMDAN</a>
</li>
<li>
<a href="../../gallery/vmd/" class="dropdown-item">VMD</a>
</li>
<li>
<a href="../../gallery/wavelet/" class="dropdown-item">WAVELET</a>
</li>
<li>
<a href="../../gallery/ma-baseline/" class="dropdown-item">MA_BASELINE</a>
</li>
<li>
<a href="../../gallery/mvmd/" class="dropdown-item">MVMD</a>
</li>
<li>
<a href="../../gallery/memd/" class="dropdown-item">MEMD</a>
</li>
<li>
<a href="../../gallery/gabor-cluster/" class="dropdown-item">GABOR_CLUSTER</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">Reference</a>
<ul class="dropdown-menu">
<li>
<a href="../../api/" class="dropdown-item">API Overview</a>
</li>
<li>
<a href="../../config-reference/" class="dropdown-item">Config Reference</a>
</li>
<li>
<a href="../../machine-api/" class="dropdown-item">Machine API</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">Project</a>
<ul class="dropdown-menu">
<li>
<a href="../../comparisons/" class="dropdown-item">Compare Alternatives</a>
</li>
<li>
<a href="../../reproducibility/" class="dropdown-item">Reproducibility</a>
</li>
<li>
<a href="../../architecture/" class="dropdown-item">Architecture</a>
</li>
<li>
<a href="../../migration/" class="dropdown-item">Migration from `tsdecomp`</a>
</li>
<li>
<a href="../../contributing/" class="dropdown-item">Contributing</a>
</li>
<li>
<a href="../../citation/" class="dropdown-item">Citation / Release Notes</a>
</li>
</ul>
</li>
</ul>
<ul class="nav navbar-nav ms-md-auto">
<li class="nav-item">
<a href="#" class="nav-link" data-bs-toggle="modal" data-bs-target="#mkdocs_search_modal">
<i class="fa fa-search"></i> Search
</a>
</li>
<li class="nav-item">
<a href="https://github.com/systems-mechanobiology/DeTime" class="nav-link">systems-mechanobiology/DeTime</a>
</li>
</ul>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-3"><div class="navbar-expand-md bs-sidebar hidden-print affix" role="complementary">
<div class="navbar-header">
<button type="button" class="navbar-toggler collapsed" data-bs-toggle="collapse" data-bs-target="#toc-collapse" title="Table of Contents">
<span class="fa fa-angle-down"></span>
</button>
</div>
<div id="toc-collapse" class="navbar-collapse collapse card bg-body-tertiary">
<ul class="nav flex-column">
<li class="nav-item" data-bs-level="1"><a href="#visual-tutorial-compare-methods-on-the-same-series" class="nav-link">Visual tutorial: compare methods on the same series</a>
<ul class="nav flex-column">
<li class="nav-item" data-bs-level="2"><a href="#goal" class="nav-link">Goal</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="2"><a href="#script" class="nav-link">Script</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="2"><a href="#output-files" class="nav-link">Output files</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="2"><a href="#how-to-read-the-figures" class="nav-link">How to read the figures</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="2"><a href="#suggested-experimental-pattern" class="nav-link">Suggested experimental pattern</a>
<ul class="nav flex-column">
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div></div>
<div class="col-md-9" role="main">
<h1 id="visual-tutorial-compare-methods-on-the-same-series">Visual tutorial: compare methods on the same series</h1>
<p>This tutorial is for the question: "which decomposition is behaving
qualitatively better on this signal?"</p>
<h2 id="goal">Goal</h2>
<p>Run several methods on the same series and compare:</p>
<ul>
<li>their full decomposition panels,</li>
<li>their trend estimates,</li>
<li>their seasonal estimates.</li>
</ul>
<h2 id="script">Script</h2>
<p>POSIX shell:</p>
<pre><code class="language-bash">PYTHONPATH=src python examples/visual_method_comparison.py \
--out-dir out/visual_method_comparison
</code></pre>
<p>PowerShell:</p>
<pre><code class="language-powershell">$env:PYTHONPATH='src'
python examples/visual_method_comparison.py --out-dir out/visual_method_comparison
</code></pre>
<p>This script compares:</p>
<ul>
<li><code>STD</code></li>
<li><code>STDR</code></li>
<li><code>SSA</code></li>
<li><code>STL</code></li>
</ul>
<p>Published raw stdout:</p>
<ul>
<li><a href="../../assets/generated/tutorials/visual-comparison/run_stdout.txt">run_stdout.txt</a></li>
</ul>
<h2 id="output-files">Output files</h2>
<p>The script writes:</p>
<ul>
<li><code>out/visual_method_comparison/method_grid.png</code></li>
<li><code>out/visual_method_comparison/trend_overlay.png</code></li>
<li><code>out/visual_method_comparison/season_overlay.png</code></li>
<li><code>out/visual_method_comparison/comparison_summary.csv</code></li>
</ul>
<p>Published experiment record:</p>
<ul>
<li><a href="../../assets/generated/tutorials/visual-comparison/comparison_summary.csv">comparison_summary.csv</a></li>
</ul>
<p>Published summary from the current docs build:</p>
<table>
<thead>
<tr>
<th>Method</th>
<th>Backend</th>
<th style="text-align: right;">Trend std</th>
<th style="text-align: right;">Seasonal std</th>
<th style="text-align: right;">Residual RMS</th>
<th style="text-align: right;">Reconstruction error</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>STD</code></td>
<td><code>native</code></td>
<td style="text-align: right;">1.0123</td>
<td style="text-align: right;">0.6723</td>
<td style="text-align: right;">0.0000</td>
<td style="text-align: right;">0.0000</td>
</tr>
<tr>
<td><code>STDR</code></td>
<td><code>native</code></td>
<td style="text-align: right;">1.0123</td>
<td style="text-align: right;">0.6723</td>
<td style="text-align: right;">0.0056</td>
<td style="text-align: right;">0.0000</td>
</tr>
<tr>
<td><code>SSA</code></td>
<td><code>native</code></td>
<td style="text-align: right;">1.0129</td>
<td style="text-align: right;">0.7052</td>
<td style="text-align: right;">0.1766</td>
<td style="text-align: right;">0.0000</td>
</tr>
<tr>
<td><code>STL</code></td>
<td><code>python</code></td>
<td style="text-align: right;">1.0149</td>
<td style="text-align: right;">0.7289</td>
<td style="text-align: right;">0.0012</td>
<td style="text-align: right;">0.0000</td>
</tr>
</tbody>
</table>
<p>Published example outputs:</p>
<p><img alt="Method grid" src="../../assets/generated/tutorials/visual-comparison/method_grid.png" /></p>
<p><img alt="Trend overlay" src="../../assets/generated/tutorials/visual-comparison/trend_overlay.png" /></p>
<p><img alt="Season overlay" src="../../assets/generated/tutorials/visual-comparison/season_overlay.png" /></p>
<h2 id="how-to-read-the-figures">How to read the figures</h2>
<p>These values come from one actual local run of the published script. The table
is useful because it keeps the figure interpretation grounded in recorded
numbers rather than only visual preference.</p>
<p><code>method_grid.png</code> is the broadest comparison:</p>
<ul>
<li>each row is one method,</li>
<li>columns show original, trend, season, and residual,</li>
<li>use it to see where one method is over-smoothing or leaking seasonality into
the trend.</li>
</ul>
<p><code>trend_overlay.png</code> is the fastest high-level diagnostic:</p>
<ul>
<li>if one method has a much more jagged trend than the others, it is probably
retaining seasonal energy in the trend,</li>
<li>if one method is too flat, it may be over-suppressing meaningful drift.</li>
</ul>
<p><code>season_overlay.png</code> helps you judge:</p>
<ul>
<li>amplitude consistency,</li>
<li>phase alignment,</li>
<li>whether a method is inventing oscillation where the others agree there is
little structure.</li>
</ul>
<h2 id="suggested-experimental-pattern">Suggested experimental pattern</h2>
<p>Use this workflow when choosing defaults:</p>
<ol>
<li>Start with 3 to 4 methods, not 10.</li>
<li>Inspect trend overlay first.</li>
<li>Inspect residual structure next.</li>
<li>Only then decide which method deserves benchmarking on a larger sweep.</li>
</ol>
<p>This prevents spending hours benchmarking methods that already look wrong by
inspection.</p></div>
</div>
</div>
<footer class="col-md-12">
<hr>
<p>Documentation built with <a href="https://www.mkdocs.org/">MkDocs</a>.</p>
</footer>
<script src="../../js/bootstrap.bundle.min.js"></script>
<script>
var base_url = "../..",
shortcuts = {"help": 191, "next": 78, "previous": 80, "search": 83};
</script>
<script src="../../js/base.js"></script>
<script src="../../search/main.js"></script>
<div class="modal" id="mkdocs_search_modal" tabindex="-1" role="dialog" aria-labelledby="searchModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="searchModalLabel">Search</h4>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<p>From here you can search these documents. Enter your search terms below.</p>
<form>
<div class="form-group">
<input type="search" class="form-control" placeholder="Search..." id="mkdocs-search-query" title="Type search term here">
</div>
</form>
<div id="mkdocs-search-results" data-no-results-text="No results found"></div>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div><div class="modal" id="mkdocs_keyboard_modal" tabindex="-1" role="dialog" aria-labelledby="keyboardModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="keyboardModalLabel">Keyboard Shortcuts</h4>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<table class="table">
<thead>
<tr>
<th style="width: 20%;">Keys</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td class="help shortcut"><kbd>?</kbd></td>
<td>Open this help</td>
</tr>
<tr>
<td class="next shortcut"><kbd>n</kbd></td>
<td>Next page</td>
</tr>
<tr>
<td class="prev shortcut"><kbd>p</kbd></td>
<td>Previous page</td>
</tr>
<tr>
<td class="search shortcut"><kbd>s</kbd></td>
<td>Search</td>
</tr>
</tbody>
</table>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>
</body>
</html>