From c93ad09ad2ffe97dfe8e8ac51f9dac652e13a0cd Mon Sep 17 00:00:00 2001 From: Matt Cannon Date: Mon, 17 Aug 2026 15:58:58 -0400 Subject: [PATCH 1/6] Fixing data retrieval of sobj --- R/celltrek.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/celltrek.R b/R/celltrek.R index c71c2e1..8ccc2c0 100644 --- a/R/celltrek.R +++ b/R/celltrek.R @@ -44,7 +44,7 @@ traint <- function (st_data, sc_data, st_assay='Spatial', sc_assay='scint', norm } sc_st_features <- sc_st_features[(sc_st_features %in% rownames(st_data[[st_assay]]@data)) & - (sc_st_features %in% rownames(sc_data[[sc_assay]]@data))] + (sc_st_features %in% rownames(sc_data[[sc_assay]]@layers$data))] cat('Using', length(sc_st_features), 'features for integration... \n') ### @@ -59,7 +59,7 @@ traint <- function (st_data, sc_data, st_assay='Spatial', sc_assay='scint', norm cat('Creating new Seurat object... \n') sc_st_meta <- dplyr::bind_rows(st_data@meta.data, sc_data@meta.data) - counts_temp <- cbind(data.frame(st_data[['transfer']]@data), data.frame(sc_data[[sc_assay]]@data[sc_st_features, ] %>% data.frame)) + counts_temp <- cbind(data.frame(st_data[['transfer']]@data), data.frame(sc_data[[sc_assay]]@layers$data[sc_st_features, ] %>% data.frame)) rownames(sc_st_meta) <- make.names(sc_st_meta$id) colnames(counts_temp) <- make.names(sc_st_meta$id) sc_st_int <- CreateSeuratObject(counts = counts_temp, assay = 'traint', meta.data = sc_st_meta) From 6d50dc0c8575728d94decf4f3e0aaf2fbf917818 Mon Sep 17 00:00:00 2001 From: Matt Cannon Date: Mon, 17 Aug 2026 16:18:39 -0400 Subject: [PATCH 2/6] updating how gene names are pulled --- R/celltrek.R | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/R/celltrek.R b/R/celltrek.R index 8ccc2c0..c3db7ef 100644 --- a/R/celltrek.R +++ b/R/celltrek.R @@ -43,8 +43,8 @@ traint <- function (st_data, sc_data, st_assay='Spatial', sc_assay='scint', norm sc_st_features <- union(sc_st_features, gene_kept) } - sc_st_features <- sc_st_features[(sc_st_features %in% rownames(st_data[[st_assay]]@data)) & - (sc_st_features %in% rownames(sc_data[[sc_assay]]@layers$data))] + sc_st_features <- sc_st_features[(sc_st_features %in% rownames(GetAssayData(st_data, assay = st_assay, layer = "data"))) & + (sc_st_features %in% rownames(Seurat::GetAssayData(sc_data, assay = sc_assay, layer = "data")))] cat('Using', length(sc_st_features), 'features for integration... \n') ### @@ -54,12 +54,12 @@ traint <- function (st_data, sc_data, st_assay='Spatial', sc_assay='scint', norm cat('Data transfering... \n') st_data_trans <- Seurat::TransferData(anchorset = sc_st_anchors, - refdata = GetAssayData(sc_data, assay = sc_assay, slot='data')[sc_st_features, ], weight.reduction = 'cca') + refdata = GetAssayData(sc_data, assay = sc_assay, layer='data')[sc_st_features, ], weight.reduction = 'cca') st_data@assays$transfer <- st_data_trans cat('Creating new Seurat object... \n') sc_st_meta <- dplyr::bind_rows(st_data@meta.data, sc_data@meta.data) - counts_temp <- cbind(data.frame(st_data[['transfer']]@data), data.frame(sc_data[[sc_assay]]@layers$data[sc_st_features, ] %>% data.frame)) + counts_temp <- cbind(data.frame(st_data[['transfer']]@data), data.frame(Seurat::GetAssayData(sc_data, assay = sc_assay, layer = "data")[sc_st_features, ] %>% data.frame)) rownames(sc_st_meta) <- make.names(sc_st_meta$id) colnames(counts_temp) <- make.names(sc_st_meta$id) sc_st_int <- CreateSeuratObject(counts = counts_temp, assay = 'traint', meta.data = sc_st_meta) From a91a35b63b02627149f7f35e9042fd47193d0f1d Mon Sep 17 00:00:00 2001 From: Matt Cannon Date: Mon, 17 Aug 2026 16:29:12 -0400 Subject: [PATCH 3/6] Updating how traint() updates layer data --- R/celltrek.R | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/R/celltrek.R b/R/celltrek.R index c3db7ef..1e1b61c 100644 --- a/R/celltrek.R +++ b/R/celltrek.R @@ -46,7 +46,6 @@ traint <- function (st_data, sc_data, st_assay='Spatial', sc_assay='scint', norm sc_st_features <- sc_st_features[(sc_st_features %in% rownames(GetAssayData(st_data, assay = st_assay, layer = "data"))) & (sc_st_features %in% rownames(Seurat::GetAssayData(sc_data, assay = sc_assay, layer = "data")))] cat('Using', length(sc_st_features), 'features for integration... \n') - ### sc_st_anchors <- Seurat::FindTransferAnchors(reference = sc_data, query = st_data, reference.assay = sc_assay, query.assay = st_assay, @@ -63,8 +62,8 @@ traint <- function (st_data, sc_data, st_assay='Spatial', sc_assay='scint', norm rownames(sc_st_meta) <- make.names(sc_st_meta$id) colnames(counts_temp) <- make.names(sc_st_meta$id) sc_st_int <- CreateSeuratObject(counts = counts_temp, assay = 'traint', meta.data = sc_st_meta) - sc_st_int[['traint']]@data <- sc_st_int[['traint']]@counts - sc_st_int[['traint']]@counts <- matrix(NA, nrow = 0, ncol = 0) + sc_st_int <- SetAssayData(sc_st_int, assay = "traint", layer = "data", new.data = GetAssayData(sc_st_int, assay = "traint", layer = "counts")) + sc_st_int <- SetAssayData(sc_st_int, assay = "traint", layer = "counts", new.data = matrix(NA, nrow = 0, ncol = 0)) cat('Scaling -> PCA -> UMAP... \n') sc_st_int <- ScaleData(sc_st_int, features = sc_st_features) %>% From 41d9be27f7a57dbd32b401ef95d38d239f233294 Mon Sep 17 00:00:00 2001 From: Matt Cannon Date: Mon, 17 Aug 2026 16:40:35 -0400 Subject: [PATCH 4/6] updating how counts layer is zero'd out in traint sobj --- R/celltrek.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/celltrek.R b/R/celltrek.R index 1e1b61c..97684f8 100644 --- a/R/celltrek.R +++ b/R/celltrek.R @@ -63,7 +63,7 @@ traint <- function (st_data, sc_data, st_assay='Spatial', sc_assay='scint', norm colnames(counts_temp) <- make.names(sc_st_meta$id) sc_st_int <- CreateSeuratObject(counts = counts_temp, assay = 'traint', meta.data = sc_st_meta) sc_st_int <- SetAssayData(sc_st_int, assay = "traint", layer = "data", new.data = GetAssayData(sc_st_int, assay = "traint", layer = "counts")) - sc_st_int <- SetAssayData(sc_st_int, assay = "traint", layer = "counts", new.data = matrix(NA, nrow = 0, ncol = 0)) + sc_st_int <- SetAssayData(sc_st_int, assay = "traint", layer = "counts", new.data = matrix(NA, nrow = nrow(sc_st_int), ncol = ncol(sc_st_int))) cat('Scaling -> PCA -> UMAP... \n') sc_st_int <- ScaleData(sc_st_int, features = sc_st_features) %>% From 7046d04c28bb8c852872a961fc61100b56d461ea Mon Sep 17 00:00:00 2001 From: Matt Cannon Date: Thu, 20 Aug 2026 13:31:06 -0400 Subject: [PATCH 5/6] updating code in celltrek() to work with Seurat V5 --- R/celltrek.R | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/R/celltrek.R b/R/celltrek.R index c71c2e1..b8c3fdc 100644 --- a/R/celltrek.R +++ b/R/celltrek.R @@ -361,7 +361,7 @@ celltrek <- function (st_sc_int, int_assay='traint', sc_data=NULL, sc_assay='RNA if (!is.null(sc_data)) { cat('sc data...') sc_data$id <- Seurat::Cells(sc_data) - sc_out <- CreateSeuratObject(counts=sc_data[[sc_assay]]@data[, sc_coord$id_raw] %>% set_colnames(sc_coord$id_new), + sc_out <- CreateSeuratObject(counts=GetAssayData(sc_data, assay=sc_assay, layer="data")[, sc_coord$id_raw] %>% set_colnames(sc_coord$id_new), project='celltrek', assay=sc_assay, meta.data=sc_data@meta.data[sc_coord$id_raw, ] %>% dplyr::rename(id_raw=id) %>% @@ -369,8 +369,8 @@ celltrek <- function (st_sc_int, int_assay='traint', sc_data=NULL, sc_assay='RNA set_rownames(sc_coord$id_new)) sc_out@meta.data <- dplyr::left_join(sc_out@meta.data, sc_coord) %>% data.frame %>% set_rownames(sc_out$id_new) - sc_out[[sc_assay]]@data <- sc_out[[sc_assay]]@counts - sc_out[[sc_assay]]@counts <- matrix(nrow = 0, ncol = 0) + sc_out <- SetAssayData(sc_out, layer="data", new.data=GetAssayData(sc_out, assay=sc_assay, layer="counts")) + sc_out <- SetAssayData(sc_out, layer="counts", new.data=matrix(nrow=nrow(sc_out), ncol=ncol(sc_out))) sc_coord_raw_df <- CreateDimReducObject(embeddings=sc_coord_raw %>% dplyr::mutate(coord1=coord_y, coord2=max(coord_x)+min(coord_x)-coord_x) %>% dplyr::select(c(coord1, coord2)) %>% set_rownames(sc_coord_raw$id_new) %>% as.matrix, @@ -381,24 +381,24 @@ celltrek <- function (st_sc_int, int_assay='traint', sc_data=NULL, sc_assay='RNA assay=sc_assay, key='celltrek') sc_out@reductions$celltrek <- sc_coord_dr sc_out@reductions$celltrek_raw <- sc_coord_raw_df - if ('pca' %in% names(sc_data@reductions)) { - sc_pca_dr <- CreateDimReducObject(embeddings=sc_data@reductions$pca@cell.embeddings[sc_coord$id_raw, ] %>% + if ('pca' %in% Reductions(sc_data)) { + sc_pca_dr <- CreateDimReducObject(embeddings=Embeddings(sc_data, reduction = "pca")[sc_coord$id_raw, ] %>% set_rownames(sc_coord$id_new) %>% as.matrix, assay=sc_assay, key='pca') sc_out@reductions$pca <- sc_pca_dr } - if ('umap' %in% names(sc_data@reductions)) { - sc_umap_dr <- CreateDimReducObject(embeddings=sc_data@reductions$umap@cell.embeddings[sc_coord$id_raw, ] %>% + if ('umap' %in% Reductions(sc_data)) { + sc_umap_dr <- CreateDimReducObject(embeddings=Embeddings(sc_data, reduction = "umap")[sc_coord$id_raw, ] %>% set_rownames(sc_coord$id_new) %>% as.matrix, assay=sc_assay, key='umap') sc_out@reductions$umap <- sc_umap_dr } - if ('tsne' %in% names(sc_data@reductions)) { - sc_tsne_dr <- CreateDimReducObject(embeddings=sc_data@reductions$tsne@cell.embeddings[sc_coord$id_raw, ] %>% + if ('tsne' %in% Reductions(sc_data)) { + sc_tsne_dr <- CreateDimReducObject(embeddings=Embeddings(sc_data, reduction = "tsne")[sc_coord$id_raw, ] %>% set_rownames(sc_coord$id_new) %>% as.matrix, assay=sc_assay, key='tsne') sc_out@reductions$tsne <- sc_tsne_dr } } else { cat('no sc data...') - sc_out <- CreateSeuratObject(counts=st_sc_int[[int_assay]]@data[, sc_coord$id_raw] %>% + sc_out <- CreateSeuratObject(counts=GetAssayData(st_sc_int, assay = int_assay, layer = "data")[, sc_coord$id_raw] %>% set_colnames(sc_coord$id_new), project='celltrek', assay=int_assay, meta.data=st_sc_int@meta.data[sc_coord$id_raw, ] %>% @@ -408,8 +408,8 @@ celltrek <- function (st_sc_int, int_assay='traint', sc_data=NULL, sc_assay='RNA sc_out$coord_x <- sc_coord$coord_x[match(sc_coord$id_new, sc_out$id_new)] sc_out$coord_y <- sc_coord$coord_y[match(sc_coord$id_new, sc_out$id_new)] - sc_out[[int_assay]]@counts <- matrix(nrow = 0, ncol = 0) - sc_out[[int_assay]]@scale.data <- st_sc_int[[int_assay]]@scale.data[, sc_coord$id_raw] %>% set_colnames(sc_coord$id_new) + sc_out <- SetAssayData(sc_out, layer="counts", new.data=matrix(nrow=nrow(sc_out), ncol=ncol(sc_out))) + sc_out <- SetAssayData(sc_out, layer="scale.data", new.data=GetAssayData(sc_out, assay=sc_assay, layer="scale.data")[, sc_coord$id_raw] %>% set_colnames(sc_coord$id_new)) sc_coord_raw_df <- CreateDimReducObject(embeddings=sc_coord_raw %>% dplyr::mutate(coord1=coord_y, coord2=max(coord_x)+min(coord_x)-coord_x) %>% dplyr::select(c(coord1, coord2)) %>% set_rownames(sc_coord_raw$id_new) %>% as.matrix, @@ -422,18 +422,18 @@ celltrek <- function (st_sc_int, int_assay='traint', sc_data=NULL, sc_assay='RNA assay=int_assay, key='celltrek') sc_out@reductions$celltrek <- sc_coord_dr sc_out@reductions$celltrek_raw <- sc_coord_raw_df - if ('pca' %in% names(st_sc_int@reductions)) { - sc_pca_dr <- CreateDimReducObject(embeddings=st_sc_int@reductions$pca@cell.embeddings[sc_coord$id_raw, ] %>% + if ('pca' %in% Reductions(sc_data)) { + sc_pca_dr <- CreateDimReducObject(embeddings=Embeddings(sc_data, reduction = "pca")[sc_coord$id_raw, ] %>% set_rownames(sc_coord$id_new) %>% as.matrix, assay=int_assay, key='pca') sc_out@reductions$pca <- sc_pca_dr } - if ('umap' %in% names(st_sc_int@reductions)) { - sc_umap_dr <- CreateDimReducObject(embeddings=st_sc_int@reductions$umap@cell.embeddings[sc_coord$id_raw, ] %>% + if ('umap' %in% Reductions(sc_data)) { + sc_umap_dr <- CreateDimReducObject(embeddings=Embeddings(sc_data, reduction = "umap")[sc_coord$id_raw, ] %>% set_rownames(sc_coord$id_new) %>% as.matrix, assay=int_assay, key='umap') sc_out@reductions$umap <- sc_umap_dr } - if ('tsne' %in% names(st_sc_int@reductions)) { - sc_tsne_dr <- CreateDimReducObject(embeddings=st_sc_int@reductions$tsne@cell.embeddings[sc_coord$id_raw, ] %>% + if ('tsne' %in% Reductions(sc_data)) { + sc_tsne_dr <- CreateDimReducObject(embeddings=Embeddings(sc_data, reduction = "tsne")[sc_coord$id_raw, ] %>% set_rownames(sc_coord$id_new) %>% as.matrix, assay=int_assay, key='tsne') sc_out@reductions$tsne <- sc_tsne_dr } From 9c670243ec4599673262e0d627abf720bebc04d5 Mon Sep 17 00:00:00 2001 From: Matt Cannon Date: Thu, 20 Aug 2026 13:37:15 -0400 Subject: [PATCH 6/6] Fixing seurat functions in celltrek_dist and celltrek_from_dist --- R/celltrek.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/celltrek.R b/R/celltrek.R index b8c3fdc..ea36f0b 100644 --- a/R/celltrek.R +++ b/R/celltrek.R @@ -144,7 +144,7 @@ celltrek_dist <- function (st_sc_int, int_assay='traint', reduction='pca', intp sc_idx <- st_sc_int$id[st_sc_int$type=='sc'] meta_df <- data.frame(st_sc_int@meta.data) - st_sc_int_pca <- st_sc_int@reductions[[reduction]]@cell.embeddings[, 1:nPCs] %>% data.frame %>% + st_sc_int_pca <- Embeddings(st_sc_int, reduction = reduction)[, 1:nPCs] %>% data.frame %>% mutate(id=st_sc_int$id, type=st_sc_int$type, class=st_sc_int$cell_names, coord_x=st_sc_int$coord_x, coord_y=st_sc_int$coord_y) st_pca <- st_sc_int_pca %>% dplyr::filter(type=='st') %>% dplyr::select(-c(id:class)) @@ -284,7 +284,7 @@ celltrek_from_dist <- function (dist_mat, coord_df, dist_cut, top_spot=10, spot_ sc_coord_list <- celltrek_chart(dist_mat=dist_mat, coord_df=coord_df, dist_cut=dist_cut, top_spot=top_spot, spot_n=spot_n, repel_r=repel_r, repel_iter=repel_iter) sc_coord_raw <- sc_coord_list[[1]] sc_coord <- sc_coord_list[[2]] - sc_out <- CreateSeuratObject(counts=sc_data[[sc_assay]]@data[, sc_coord$id_raw] %>% set_colnames(sc_coord$id_new), + sc_out <- CreateSeuratObject(counts=GetAssayData(sc_data, assay=sc_assay, layer="data")[, sc_coord$id_raw] %>% set_colnames(sc_coord$id_new), project='celltrek', assay=sc_assay, meta.data=sc_data@meta.data[sc_coord$id_raw, ] %>% dplyr::rename(id_raw=id) %>%