---
title: "Visualization of ColocBoost Results"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{Visualization of ColocBoost Results}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
dpi = 80
)
```
This vignette demonstrates how to visualize and interpret the output of ColocBoost results.
```{r setup}
library(colocboost)
```
**Causal variants (simulated)**
The dataset features two causal variants with indices 194 and 589.
- Causal variant 194 is associated with traits 1, 2, 3, and 4.
- Causal variant 589 is associated with traits 2, 3, and 5.
```{r run-colocboost}
# Loading the Dataset
data(Ind_5traits)
# Run colocboost
res <- colocboost(X = Ind_5traits$X, Y = Ind_5traits$Y)
```
## 1. Default plot function
The default plot of the colocboost results provides a visual representation of the colocalization events.
- The x-axis indicates the indices of variants, and the y-axis indicates the -log10(p-value) from marginal associations.
- The colors of the points represent the colocalization events, with different colors indicating different colocalization events.
```{r basic-plot}
colocboost_plot(res)
```
**Parameters to adjust plot**
- `plot_cols = 2` (default) indicates the number of columns in the plot.
- `y = "log10p"` (default) with optional
- `y = "z_original"` for z-scores
- `y = "vcp"` for variant colocalization probabilities (single plot for all variants),
- `y = "coef"` for regression coefficients estimated from the ColocBoost model.
- `y = "cos_vcp"` for variant colocalization probabilities (multiple plots for each CoS - only draw VCP for variants in CoS to the colocalized traits).
- `plot_cos_idx = NULL` (default) indicates all colocalization events are plotted. `plot_cos_idx = 1` can be specified to plot the 1st colocalization event, and so on.
- `outcome_idx = NULL` (default) indicates only the traits with colocalization are plotted. `outcome_idx = c(1,2,5)` can be specified to plot the traits 1, 2, and 5.
- `plot_all_outcome = FALSE` (default) indicates only the traits with colocalization are plotted. If `TRUE`, it will plot all traits.
- `cos_color = NULL` (default) indicates the colors of the colocalization events. Specify a vector of colors to customize the plot.
## 2. Advanced options
There are several advanced options available for customizing the plot by deepening the visualization of the colocboost results.
### 2.1. Plot with a zoom-in region
You can specify a zoom-in region by providing a `grange` argument, which is a vector indicating the indices of the region to be zoomed in.
```{r zoomin-plot}
colocboost_plot(res, grange = c(1:400))
```
### 2.2. Plot with marked top variants
You can highlight the top variants in the plot by setting `show_top_variables = TRUE`. This will add a red circle to top variants with highest VCP for each CoS.
```{r top-plot}
colocboost_plot(res, show_top_variables = TRUE)
```
### 2.3. Plot CoS variants to uncolocalized traits to diagnostic the colocalization.
There are three options available for plotting the CoS variants to uncolocalized traits:
- `show_cos_to_uncoloc = FALSE` (default), if `TRUE` will plot all CoS variants to all uncolocalized traits.
- `show_cos_to_uncoloc_idx = NULL` (default), if specified, will plot the specified CoS variants to all uncolocalized traits.
- `show_cos_to_uncoloc_outcome = NULL` (default), if specified, will plot the all CoS variants to the specified uncolocalized traits.
```{r ucos-plot}
colocboost_plot(res, show_cos_to_uncoloc = TRUE)
```
### 2.4. Plot with an added vertical line
You can add a vertical line to the plot by setting `add_vertical = TRUE` and `add_vertical_idx = **`. This will add a vertical line at the specified index.
For example, to add a vertical line at true causal variants, you can set `add_vertical_idx = unique(unlist(Ind_5traits$true_effect_variants))`.
Following plot also shows the top variants.
```{r vertical-plot}
colocboost_plot(
res, show_top_variables = TRUE,
add_vertical = TRUE,
add_vertical_idx = unique(unlist(Ind_5traits$true_effect_variants))
)
```
### 2.5. Plot with trait-specific sets if exists
There are two options available for plotting the trait-specific (uncolocalized) variants:
- `plot_ucos = FALSE` (default), if `TRUE` will plot all trait-specific (uncolocalized) sets.
- `plot_ucos_idx = NULL` (default) indicates all confidence sets are plotted. `plot_ucos_idx = 1` can be specified to plot the 1st uncolocalized confidence sets, and so on.
*Important Note*: You should use `colocboost(..., output_level = 2)` to obtain the trait-specific (uncolocalized) information.
```{r trait-specific}
# Create a mixed dataset
data(Ind_5traits)
data(Heterogeneous_Effect)
X <- Ind_5traits$X[1:3]
Y <- Ind_5traits$Y[1:3]
X1 <- Heterogeneous_Effect$X
Y1 <- Heterogeneous_Effect$Y[,1,drop=F]
# Run colocboost
res <- colocboost(X = c(X, list(X1)), Y = c(Y, list(Y1)), output_level = 2)
colocboost_plot(res, plot_ucos = TRUE)
```
In this example, there are two colocalized sets (blue and orange) and
two trait-specific sets for trait 4 only (green and purple).
For comprehensive tutorials on result interpretation, please visit our tutorials portal
at [Interpret ColocBoost Output](https://statfungen.github.io/colocboost/articles/Interpret_ColocBoost_Output.html).
### 2.6 Plot with focal trait for disease prioritized colocalization
There are three options available for plotting the results from disease prioritized colocalization, considering a focal trait:
- `plot_focal_only = FALSE` (default), if `TRUE` will only plot CoS with focal trait and ignoring other CoS.
- `plot_focal_cos_outcome_only = FALSE` (default) and **recommend** for visualization for disease prioritized colocalization.
If `TRUE` will plot all CoS colocalized with at least on traits within CoS of focal traits.
```{r focal-colocalization}
# Create a mixed dataset
data(Ind_5traits)
data(Sumstat_5traits)
X <- Ind_5traits$X[1:3]
Y <- Ind_5traits$Y[1:3]
sumstat <- Sumstat_5traits$sumstat[4]
LD <- get_cormat(Ind_5traits$X[[1]])
# Run colocboost
res <- colocboost(X = X, Y = Y,
sumstat = sumstat, LD = LD,
focal_outcome_idx = 4)
# Only plot CoS with focal trait
colocboost_plot(res, plot_focal_only = TRUE)
# Plot all CoS including at least one traits colocalized with focal trait
colocboost_plot(res, plot_focal_cos_outcome_only = TRUE)
```