Nothing
## ---- include = FALSE---------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
message=FALSE,
warning=FALSE
)
## ----setup, warning=FALSE,message=FALSE---------------------------------------
library(mxnorm)
library(dplyr)
library(reticulate)
## -----------------------------------------------------------------------------
if(reticulate::py_module_available("skimage")){
knitr::knit_engines$set(python = reticulate::eng_python)
skimage_available = TRUE
} else{
## set boolean for CRAN builds
skimage_available = FALSE
## install if running locally
#py_install("scikit-image")
}
## -----------------------------------------------------------------------------
head(mx_sample, 3)
## ----example------------------------------------------------------------------
mx_data = mx_dataset(data=mx_sample,
slide_id="slide_id",
image_id="image_id",
marker_cols=c("marker1_vals","marker2_vals","marker3_vals"),
metadata_cols=c("metadata1_vals"))
## ----norm---------------------------------------------------------------------
mx_data = mx_normalize(mx_data = mx_data,
transform = "mean_divide",
method="None",
method_override=NULL,
method_override_name=NULL)
## ----norm_data----------------------------------------------------------------
head(mx_data$norm_data,3)
## ----otsu---------------------------------------------------------------------
if(skimage_available){
thold_override = NULL
} else{
thold_override = function(thold_data){quantile(thold_data, 0.5)}
}
mx_data = run_otsu_discordance(mx_data,
table="both",
threshold_override = thold_override,
plot_out = FALSE)
## ----otsu_data----------------------------------------------------------------
head(mx_data$otsu_data, 3)
## ----mx_dens------------------------------------------------------------------
plot_mx_density(mx_data)
## ----mx_misc------------------------------------------------------------------
plot_mx_discordance(mx_data)
## ----umap---------------------------------------------------------------------
set.seed(1234)
mx_data = run_reduce_umap(mx_data,
table="both",
marker_list = c("marker1_vals","marker2_vals","marker3_vals"),
downsample_pct = 0.5,
metadata_cols = c("metadata1_vals"))
## ----umap_data----------------------------------------------------------------
head(mx_data$umap_data, 3)
## ----mx_umap------------------------------------------------------------------
plot_mx_umap(mx_data,
metadata_col = "metadata1_vals")
## ----mx_umap_slide------------------------------------------------------------
plot_mx_umap(mx_data,
metadata_col = "slide_id")
## ----var,warning=FALSE,message=FALSE------------------------------------------
mx_data = run_var_proportions(mx_data,
table="both",
metadata_cols = NULL,
formula_override = NULL,
save_models = FALSE
)
## ----var_data-----------------------------------------------------------------
head(mx_data$var_data, 4)
## ----mx_var-------------------------------------------------------------------
plot_mx_proportions(mx_data)
## ----ex_str-------------------------------------------------------------------
summary(mx_data)
## ----out.width="100%",fig.cap="Basic structure of the `mxnorm` package and associated functions",echo=FALSE----
knitr::include_graphics("mxnorm_structure.png")
## ----flex_example-------------------------------------------------------------
mx_flex = mx_dataset(data=mx_sample,
slide_id="slide_id",
image_id="image_id",
marker_cols=c("marker1_vals","marker2_vals","marker3_vals"),
metadata_cols=c("metadata1_vals"))
## ----udf----------------------------------------------------------------------
quantile_divide <- function(mx_data, ptile=0.5){
## data to normalize
ndat = mx_data$data
## marker columns
cols = mx_data$marker_cols
## slide id
slide = mx_data$slide_id
## get column length slide medians
y = ndat %>%
dplyr::group_by(.data[[slide]]) %>%
dplyr::mutate(dplyr::across(all_of(cols),quantile,ptile))
## divide to normalize
ndat[,cols] = ndat[,cols]/y[,cols]
## rescale
ndat = ndat %>%
dplyr::mutate(dplyr::across(all_of(cols),function(a){a + -min(a)}))
## set normalized data
mx_data$norm_data = ndat
## return object
mx_data
}
## ----q_div--------------------------------------------------------------------
mx_flex_q50 = mx_normalize(mx_flex,
method_override = quantile_divide,
method_override_name = "median_divide")
mx_flex_q75 = mx_normalize(mx_flex,
method_override = quantile_divide,
ptile=0.75,
method_override_name = "75th_percentile")
## ----q_div_res----------------------------------------------------------------
summary(mx_flex_q50)
summary(mx_flex_q75)
## ----q50_iso------------------------------------------------------------------
if(skimage_available){
thold_override = "isodata"
} else{
thold_override = function(thold_data){quantile(thold_data, 0.5)}
}
mx_flex_q50 = run_otsu_discordance(mx_flex_q50,table = "both",threshold_override = thold_override)
summary(mx_flex_q50)
## ----q50_iso_plots------------------------------------------------------------
plot_mx_density(mx_flex_q50)
plot_mx_discordance(mx_flex_q50)
## ----q10_thold----------------------------------------------------------------
q10_threshold = function(thold_data,ptile=0.10){
quantile(thold_data, ptile)
}
## ----q75_q10------------------------------------------------------------------
mx_flex_q75 = run_otsu_discordance(mx_flex_q75,table = "both",threshold_override = q10_threshold)
summary(mx_flex_q75)
## ----q75_q10__plots-----------------------------------------------------------
plot_mx_density(mx_flex_q75)
plot_mx_discordance(mx_flex_q75)
## ----mx_sample_cols-----------------------------------------------------------
head(mx_sample,0)
## ----reff_mod-----------------------------------------------------------------
new_RHS = "metadata1_vals + (1 | image_id) + (1 | slide_id)"
## ----var_prop_flex------------------------------------------------------------
mx_flex_q50 = run_var_proportions(mx_flex_q50,
table="both",
formula_override = new_RHS,
save_models=TRUE)
## ----m1_vals------------------------------------------------------------------
summary(mx_flex_q50$var_models[[1]])
## ----q50_varprops_summ--------------------------------------------------------
summary(mx_flex_q50)
plot_mx_proportions(mx_flex_q50)
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.