Nothing
## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "# >",
dev = "jpeg"
)
## ---- include = FALSE---------------------------------------------------------
library(rlang)
library(dplyr)
# Patch SpatialCPie::runCPie so that it returns a mock output object instead of
# starting the web server
assignInNamespace(
ns = "SpatialCPie",
x = "runCPie",
value = function(
counts,
image = NULL,
spotCoordinates = NULL,
margin = "spot",
resolutions = 2:4,
assignmentFunction = function(k, x) kmeans(x, centers = k)$cluster,
scoreMultiplier = 1.0
) {
data <- SpatialCPie:::.preprocessData(
counts,
coordinates = spotCoordinates,
margin = margin,
resolutions = resolutions,
assignmentFunction = assignmentFunction
)
arrayPlots <- lapply(
setNames(
nm = levels(data$scores$resolution) %>%
purrr::keep(~ . > 1)
),
function(r) {
scores <- data$scores %>% filter(.data$resolution == r)
p <- SpatialCPie:::.arrayPlot(
scores = scores %>%
select(.data$spot, .data$name, .data$score),
coordinates = data$coordinates,
image =
if (!is.null(image) && !is.null(data$coordinates))
grid::rasterGrob(
image,
width = grid::unit(1, "npc"),
height = grid::unit(1, "npc"),
interpolate = TRUE
)
else NULL,
scoreMultiplier = scoreMultiplier,
spotOpacity = if (is.null(image)) 1.0 else 0.7
) +
ggplot2::guides(
fill = ggplot2::guide_legend(title = "Cluster")
) +
ggplot2::scale_fill_manual(
values = data$colors,
labels = unique(scores$cluster)
)
}
)
list(
clusters = data$assignments %>% select(-.data$name),
clusterGraph = SpatialCPie:::.clusterGraph(
data$assignments,
data$means,
data$featureName,
transitionLabels = TRUE,
transitionThreshold = 0.05
) +
ggplot2::scale_color_manual(values = data$colors),
arrayPlot = arrayPlots
)
}
)
## -----------------------------------------------------------------------------
library(SpatialCPie)
set.seed(42)
## -----------------------------------------------------------------------------
counts <- read.table(
system.file("extdata", "counts.tsv", package = "SpatialCPie"),
sep = "\t",
check.names = FALSE
)
counts[1:5, 1:5]
## -----------------------------------------------------------------------------
tissue <- jpeg::readJPEG(
system.file("extdata", "he_image.jpg", package = "SpatialCPie")
)
spots <- parseSpotFile(
system.file("extdata", "spot_data.tsv", package = "SpatialCPie")
)
head(spots)
## -----------------------------------------------------------------------------
counts <- counts[, which(colnames(counts) %in% rownames(spots))]
## -----------------------------------------------------------------------------
repeat {
d <- dim(counts)
counts <- counts[rowSums(counts) >= 20, colSums(counts) >= 20]
if (all(dim(counts) == d)) {
break
}
}
## ---- eval=FALSE, echo=TRUE---------------------------------------------------
# runCPie(
# counts,
# resolutions = c(3, 5),
# assignmentFunction = function(k, x) cluster::pam(x, k = k)$clustering
# )
## -----------------------------------------------------------------------------
result <- runCPie(
counts,
image = tissue,
spotCoordinates = spots
)
## -----------------------------------------------------------------------------
str(result, max.level = 1)
## -----------------------------------------------------------------------------
result$clusterGraph
## -----------------------------------------------------------------------------
result$arrayPlot$`4`
## ---- echo=FALSE, message=FALSE-----------------------------------------------
result <- runCPie(
counts,
image = tissue,
spotCoordinates = spots,
scoreMultiplier = 10.0
)
result$arrayPlot$`4`
## -----------------------------------------------------------------------------
library(dplyr)
subcluster <-
result$clusters %>%
filter(resolution == 4, cluster %in% c(1, 4)) %>%
`$`("unit")
head(subcluster)
## -----------------------------------------------------------------------------
subclusterResult <- runCPie(
counts = counts[, subcluster],
image = tissue,
spotCoordinates = spots
)
subclusterResult$clusterGraph
## -----------------------------------------------------------------------------
subclusterResult$arrayPlot$`3`
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.