---
title: "tracerer versus Tracer demo"
author: "Richèl J.C. Bilderbeek"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{tracerer versus Tracer demo}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r setup, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

![](tracerer_logo.png)

`tracerer`: 'Tracer for R' is an R package that does the same as
Tracer does, from within R. 

To use `tracerer`, it needs to be loaded:

```{r}
library(tracerer)
```

When loading `beast2_example_output.log` in Tracer, the following is displayed:

![Tracer output](tracer_example_output.png)

Most prominently, at the left, the effective sample sizes (ESSes) are shown.

The show the ESSes using `tracerer`:

```{r}
estimates <- parse_beast_tracelog_file(
  get_tracerer_path("beast2_example_output.log")
)
estimates <- remove_burn_ins(estimates, burn_in_fraction = 0.1)
esses <- calc_esses(estimates, sample_interval = 1000)
table <- t(esses)
colnames(table) <- c("ESS")
knitr::kable(table)
```

At the top-right, some measures of the variable `posterior` is shown.
To reproduce these measures in `tracerer`:

```{r}
sum_stats <- calc_summary_stats(
  estimates$posterior,
  sample_interval = 1000
)
table <- t(sum_stats)
colnames(table) <- c("sum_stat")
knitr::kable(table)
```

Unlike Tracer, in `tracerer` all summary statistics can be obtained at once:

```{r}
sum_stats <- calc_summary_stats(
  estimates,
  sample_interval = 1000
)
knitr::kable(sum_stats)
```

At the bottom-right, a histogram of the posterior estimates is shown.
To reproduce these measures in `tracerer`:

```{r}
ggplot2::ggplot(
  data = remove_burn_ins(estimates, burn_in_fraction = 0.1),
  ggplot2::aes(posterior)
) + ggplot2::geom_histogram(binwidth = 0.21) +
  ggplot2::scale_x_continuous(breaks = seq(-75, -68))

```

Tracer can also show the trace of each estimated variable:

![Tracer shows the trace of the posterior likelihood](tracer_trace_posterior.png)

Same can be done with `tracerer`:

```{r}
ggplot2::ggplot(
  data = remove_burn_ins(estimates, burn_in_fraction = 0.1),
  ggplot2::aes(x = Sample)
) + ggplot2::geom_line(ggplot2::aes(y = posterior))

```

`tracerer` can also use part of `DensiTree`'s functionality.
Here is `beast2_example_output.trees` displayed by `DensiTree`:

![DensiTree output](densitree_example_output.png)

The same is achieved in `tracerer` with:

```{r fig.width=7, fig.height=7}
trees <- parse_beast_trees(
  get_tracerer_path("beast2_example_output.trees")
)
phangorn::densiTree(trees, width = 2)
```
