Skip to content

Commit

Permalink
description and documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
Dhihram committed Nov 27, 2024
1 parent 9566d9d commit 8bdbe49
Show file tree
Hide file tree
Showing 3 changed files with 127 additions and 1 deletion.
2 changes: 1 addition & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Package: caIRA
Type: Package
Title: Collecting and Identification from Outbreak Cluster Based Tree and Metadata
Version: 0.1.3
Version: 1.1.1
Author: Dhihram Tenrisau, Stéphane Hué
Maintainer: Dhihram Tenrisau <dhihram.tenrisau@gmail.com>
Description: This package is used to find the cluster-based tree and metadata. The cluster-based tree is built based on the clusters in the data. The metadata contains information about the data used to build the tree.
Expand Down
32 changes: 32 additions & 0 deletions docs/index.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -106,3 +106,35 @@ for (node in res$ParentNode) {
}
gg_clus
```

## Generating from BEAST tree

Since BEAST tree has different structure of the tree, we developed `beastclus`. In BEAST tree, the bootstrapping value is posterior probability with scale 0-1. The beast tree is exported using `read.beast` from `treeio` In this example, I will use the Monkeypox phylogenetic tree and metadata from GISAID:

```{r}
#beast tree
beast_tree <- read.beast('https://raw.githubusercontent.com/Dhihram/caIRA/refs/heads/master/inst/extdata/pox_strict_comb.tree')
#metadata
metadata<-read.csv('https://raw.githubusercontent.com/Dhihram/caIRA/refs/heads/master/inst/extdata/metadata_samp.csv')
```

Generating cluster

```{r}
res2 <- beastclus(beast_tree, metadata, post_threshold = 0.50, date_range = 90, samearea = TRUE)
knitr::kable(res2)
```

Also, we can check the clusters in tree

```{r}
tr <- ggtree(beast_tree, mrsd = min(metadata$date)) +
theme_tree2()
# Replace `highlight_nodes` with the node numbers or clade labels you want to highlight
n <- as.numeric(res2$ParentNode)
tr +
geom_highlight(node = n, fill = "lightblue", alpha = 0.5)
```
94 changes: 94 additions & 0 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -492,6 +492,100 @@ <h3>Package Utilization</h3>
<p><img src="data:image/png;base64,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" /><!-- --></p>
</div>
</div>
<div id="generating-from-beast-tree" class="section level2">
<h2>Generating from BEAST tree</h2>
<p>Since BEAST tree has different structure of the tree, we developed
<code>beastclus</code>. In BEAST tree, the bootstrapping value is
posterior probability with scale 0-1. The beast tree is exported using
<code>read.beast</code> from <code>treeio</code> In this example, I will
use the Monkeypox phylogenetic tree and metadata from GISAID:</p>
<div class="sourceCode" id="cb7"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb7-1"><a href="#cb7-1" tabindex="-1"></a><span class="co">#beast tree</span></span>
<span id="cb7-2"><a href="#cb7-2" tabindex="-1"></a></span>
<span id="cb7-3"><a href="#cb7-3" tabindex="-1"></a>beast_tree <span class="ot">&lt;-</span> <span class="fu">read.beast</span>(<span class="st">&#39;https://raw.githubusercontent.com/Dhihram/caIRA/refs/heads/master/inst/extdata/pox_strict_comb.tree&#39;</span>)</span>
<span id="cb7-4"><a href="#cb7-4" tabindex="-1"></a></span>
<span id="cb7-5"><a href="#cb7-5" tabindex="-1"></a><span class="co">#metadata</span></span>
<span id="cb7-6"><a href="#cb7-6" tabindex="-1"></a>metadata<span class="ot">&lt;-</span><span class="fu">read.csv</span>(<span class="st">&#39;https://raw.githubusercontent.com/Dhihram/caIRA/refs/heads/master/inst/extdata/metadata_samp.csv&#39;</span>)</span></code></pre></div>
<p>Generating cluster</p>
<div class="sourceCode" id="cb8"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb8-1"><a href="#cb8-1" tabindex="-1"></a>res2 <span class="ot">&lt;-</span> <span class="fu">beastclus</span>(beast_tree, metadata, <span class="at">post_threshold =</span> <span class="fl">0.50</span>, <span class="at">date_range =</span> <span class="dv">90</span>, <span class="at">samearea =</span> <span class="cn">TRUE</span>)</span>
<span id="cb8-2"><a href="#cb8-2" tabindex="-1"></a>knitr<span class="sc">::</span><span class="fu">kable</span>(res2)</span></code></pre></div>
<table>
<colgroup>
<col width="2%" />
<col width="85%" />
<col width="2%" />
<col width="2%" />
<col width="2%" />
<col width="2%" />
<col width="1%" />
<col width="0%" />
</colgroup>
<thead>
<tr class="header">
<th align="right">ParentNode</th>
<th align="left">label</th>
<th align="right">Posterior</th>
<th align="left">AreaName</th>
<th align="left">min_date</th>
<th align="left">max_date</th>
<th align="right">NumTips</th>
<th align="right">dif</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td align="right">79</td>
<td align="left">hMpxV/Indonesia/BT-Biokes-MP303/2023,
hMpxV/Indonesia/JK-NIHRD-MP015/2023</td>
<td align="right">0.83</td>
<td align="left">Jabodetabek</td>
<td align="left">2023-10-20</td>
<td align="left">2023-12-12</td>
<td align="right">2</td>
<td align="right">53</td>
</tr>
<tr class="even">
<td align="right">64</td>
<td align="left">hMpxV/Indonesia/JB-NIHRD-MP254/2023,
hMpxV/Indonesia/JK-Biokes-MP310/2023,
hMpxV/Indonesia/JK-NIHRD-MP022/2023,
hMpxV/Indonesia/JK-NIHRD-MP039/2023,
hMpxV/Indonesia/JK-NIHRD-MP080/2023,
hMpxV/Indonesia/JK-NIHRD-MP081/2023,
hMpxV/Indonesia/JK-NIHRD-MP159/2023,
hMpxV/Indonesia/JK-NIHRD-MP218/2023,
hMpxV/Indonesia/JK-NIHRD-MP225/2023,
hMpxV/Indonesia/JK-NIHRD-MP246/2023,
hMpxV/Indonesia/JK-NIHRD-MP252/2023</td>
<td align="right">0.77</td>
<td align="left">Jabodetabek</td>
<td align="left">2023-10-23</td>
<td align="left">2023-12-15</td>
<td align="right">11</td>
<td align="right">53</td>
</tr>
<tr class="odd">
<td align="right">89</td>
<td align="left">hMpxV/Indonesia/JK-Biokes-MP010/2024,
hMpxV/Indonesia/JK-Biokes-MP011/2024,
hMpxV/Indonesia/JK-Biokes-MP020/2024</td>
<td align="right">0.99</td>
<td align="left">Jabodetabek</td>
<td align="left">2024-01-22</td>
<td align="left">2024-02-17</td>
<td align="right">3</td>
<td align="right">26</td>
</tr>
</tbody>
</table>
<p>Also, we can check the clusters in tree</p>
<div class="sourceCode" id="cb9"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb9-1"><a href="#cb9-1" tabindex="-1"></a>tr <span class="ot">&lt;-</span> <span class="fu">ggtree</span>(beast_tree, <span class="at">mrsd =</span> <span class="fu">min</span>(metadata<span class="sc">$</span>date)) <span class="sc">+</span></span>
<span id="cb9-2"><a href="#cb9-2" tabindex="-1"></a> <span class="fu">theme_tree2</span>() </span>
<span id="cb9-3"><a href="#cb9-3" tabindex="-1"></a><span class="co"># Replace `highlight_nodes` with the node numbers or clade labels you want to highlight</span></span>
<span id="cb9-4"><a href="#cb9-4" tabindex="-1"></a>n <span class="ot">&lt;-</span> <span class="fu">as.numeric</span>(res2<span class="sc">$</span>ParentNode)</span>
<span id="cb9-5"><a href="#cb9-5" tabindex="-1"></a>tr <span class="sc">+</span> </span>
<span id="cb9-6"><a href="#cb9-6" tabindex="-1"></a> <span class="fu">geom_highlight</span>(<span class="at">node =</span> n, <span class="at">fill =</span> <span class="st">&quot;lightblue&quot;</span>, <span class="at">alpha =</span> <span class="fl">0.5</span>)</span></code></pre></div>
<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAAEgCAMAAAAjXV6yAAAAYFBMVEUAAAAzMzNNTU1NTW5NTY5NbqtNjshXbHNuTU1uTW5uTY5ubqtuq+SOTU2OTW6OTY6OyP+rbk2rbm6rbo6ryKur5P/Ijk3I///W6/Lkq27k////yI7/5Kv//8j//+T////CfYPsAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAHQUlEQVR4nO2diXbbNhBFGadJt6R12jpp4oX//5cRtXDDAA8AZ0gAevecxpKswQOvhxBFLe16EqQ7egKlQ0EACgJQEICCABQEoCAABQEoCNCkoO6GxlgKYxSH5kY1KEinc8bRFMcqhI4dFKbjGhRGd5PaEqTWN7MhVUc7mm78R3fIZqAgwEXQApUhm8FgaxoSpL4+X0bVH/IoOnZQGAoCdOtFWmvUVuj4MB+m45F0mG71U3fU6pk6R3MFakmQ0aZQEBy3EW6C/veQP24jUBBgIehXl9wNbVQQO2jJ+WH98uh+6RcKWjJ7nsoOkqAggCPI3cs2DN0Aa0F8mF9hc67sNnT9dBQUhoIA3XiuTPMVsevYOsMci8XLPePYdkPvBwUBKAjgrj982WeB5UZQ0IFj74a4Eb7nHIlPPygoZ+zaiBI0P/9KQb0giB20xGkdClqybp07FeQ/JKSgM/53BDmC8l4ra07Q+ETDecxiB/WLy+sOoqDZDQMUdCZGkMt9Clqd5PD2zd120PzfnoKu+AVpBlQMBQFcQcqnXZsTZBJQMRQEoCDARZDBZzQWARXTuRd1XyRrUZBVQJXMBem+rcMNqJKFIOcm3YAqkQTx/UFXVhpsHsaqFtSLHaQfUisUBFgJstmW9gQpv4+qQUH6IbXiCLJ4StaSoOlW5ZBaoSCAR5Du21zbE2QQUisUBKAgAAUBXEEGH0ZoTJBNSK0sBRm9sNGQoJ4dtEIQxI9DzVkpsQupFfMF2nDYXaAgAAUBwgeJSitTO4JqDjFimHvEe1kT3tLqCakVCgJQkMhyAV44ED50sPl7AisUtLi0FMQO6v2Cgp8Mo6Bz+1DQQEiQ+KEnCopYgCiIgkY8gsIrNAVR0EiEoOwPqAbjaiFGEDtovCR3DQWNl8SuoaDpkrSHUdDskixI2t02x9VChCCRzXG1QEEACgL4BPm+wYSC8LkyCsLP5SmIgm5QECAoKLBMb46rhbAgdhAFITyCAic6KGjSQkFIEF8XW711HO1Ydy1oAO1YFERBaygIAAV5znuoxNUAFsQOmrFSEnhMU4mrgbAgdlCEIPnUq0pcDUBBHlTiiiT46QsKcqYoCQq/bYGCJigoVpDbUDrpJZIniB10YS3IvxjppJdIiiC3lSiIgvIE3dEbqLIEueikl0hQ0N7pJUJBgExBSh+eb1iQSXqJUBAgUZDy1+U0KCjyfnnpJZIrSKeRWhJ0r1+XHC8I/F4jvUQoCEBBgFRBul9B1Z4g2/QSiRNk9U2K5Qtab7dP0N12UJqgO/yq0kRB6vHaA6pDQYAEQRYLdUuCAr/dEK89oDoxgqbWUf9G6UYE2W0IBaF4o3H1oCAABQFSBGmv0J64skgSZBCvP6QyjiD5e8ctzkef4/SHVCZmq5Vf6pGGLhcKAiQJ8rAlfkPtPqQIsoi3G1oJCgJQECBKkO66sxhaaRw7rP63T7Hxh6bHQEEACgJQEMB38IfRiVcZxZKDZ0hBZcfPMd1T8md1bPyc8AteR9GcIO0+bE/Q9omYjrcBBUEGS1ZjgthBcIiGDxR1BGnTkCCbY6aWBLGDYD0FgXqD5/aNCLJ70taKoNg7JkNBESMXAgUBsgTNlmCb00jVC4q50xYoCEBBgFYEmZ3N3l9Q6rFulCA7DhCU+IvgDO1f86AgAAUBWhIUei4fR2q8CYaCsuYDoCBABYI27SF20zUjVVD8YBQEakz6qyVBJlDQ4QnRiRQEEikIJGYJ0j1sVppVHnBiBZ2amrGjIJRIQSCRgkCi84stC0zSOhMzbXsyBJnNJQEKApQkyGAH2U5BgrwVh1K0IB10pm1PuqAioCCAb7pK7S20eiuCzJIoCIwYN7JBB3s6OnLasbfnkyhIPT+TAwRp/n3t2V+Qxb0NKVbQbotM5rSPFlQMFASgIAAFAXYUtCt60068/e6gIAAFASgIYHg+aNftMKORzbCDggAzQYG95V3WPpZXtWuYv0oQFOBdlvy8ql3DcBUFAbgGASgIQEEACgJQEEAS9PLbw8Nj379+fvjwY33txPeHh4dfvsVVnS78cbnrVJ9UlhI2FvvCQJWYJQh6/eupf/n96e3LY//94+rawNdHYTvlqr5/vkbO6lPKUsLGYl8YqJKzBEHPH893fv372/B3XF4b0v95kuYsVvVf3/93aYWpPqksJexW7A0DVXKWZw06eX3588fZ8vraqUFvPQmr+nFfmd2eUpYYdiv2hwWq5CxZ0NuXT/3zh9s4y2tDP8qy3appS6fbk8oSw64//GGhKjlLFPT6+dPsz7C8dkHaXYWqPqKDgmVpYWOxLyxYJWfJj2LzHXl5zT9nqWraUt8aBMqSwsZiX1i4Ss4SBF0rhsY7LfbLa/2lf9/+ddLFqmlLp/qkspSwqdgTBqrkLEHQcDgwrFaXw4XltWHep1veu+0rV122dPjPc2iCyhLCrj/8YahKzOKRNICCABQEoCAABQEoCEBBAAoCUBDgJ1H6dLIKj8GnAAAAAElFTkSuQmCC" /><!-- --></p>
</div>



Expand Down

0 comments on commit 8bdbe49

Please sign in to comment.