rm(list = ls())
library(tidyverse)
library(banter)
data(train.data)
# add unique id for each bp detected
bp <- train.data$detectors$bp |>
mutate(bp.id = as.character(1:n()))
# pairwise distance of all bp detections
bp.dist <- bp |>
select(-event.id, -call.id) |>
column_to_rownames("bp.id") |>
dist() |>
as.matrix()
# unique events
events <- unique(bp$event.id)
# data frame of unique pairs of events
event.pairs <- events |>
combn(2) |>
t() |>
as.data.frame() |>
setNames(c("event.1", "event.2"))
# add column for mean distance between pairs of events
event.pairs$dist <- apply(event.pairs, 1, function(x) {
id.1 <- bp |>
filter(event.id == x[1]) |>
pull(bp.id)
id.2 <- bp |>
filter(event.id == x[2]) |>
pull(bp.id)
mean(bp.dist[id.1, id.2])
})
# holder pairwise distance matrix for events
event.dist <- matrix(
0,
nrow = length(events),
ncol = length(events),
dimnames = list(events, events)
)
# fill distance matrix
for(i in 1:nrow(event.pairs)) {
i1 <- event.pairs$event.1[i]
i2 <- event.pairs$event.2[i]
event.dist[i1, i2] <- event.dist[i2, i1] <- event.pairs$dist[i]
}
# filled distance matrix
str(event.dist)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.