diff --git a/SCENIC_CART/export_loom.R b/SCENIC_CART/export_loom.R new file mode 100644 index 0000000000000000000000000000000000000000..7a0e6c7ab26b4ea74d1e3f9b653b78bf5fb0bd6d --- /dev/null +++ b/SCENIC_CART/export_loom.R @@ -0,0 +1,32 @@ +library(Seurat) +library(SCENIC) +library(SCopeLoomR) +library(dplyr) + +args <- commandArgs(trailingOnly = TRUE) + +# Input Seurat RDS file +in_rds <- args[1] +# Output +out_loom <- args[2] + +in_obj <- readRDS(in_rds) +assay_name <- "RNA" +if (!assay_name %in% names(in_obj@assays)) { + assay_name <- names(in_obj@assays)[1] + print("'RNA' assay not found!") + print(paste0("Using ", assay_name, " as assay.")) +} + +umap_vars <- grep("umap", names(in_obj@reductions), value = T) +umap_name <- grep("harmony", umap_vars, value = T) +if (length(umap_name == 0)) { + umap_name <- umap_vars[1] +} +umap <- as.data.frame(in_obj@reductions[[umap_name]]@cell.embeddings) +colnames(umap) <- c("X", "Y") +cm <- in_obj@assays[[assay_name]] +cm <- as.matrix(cm$counts) +loom <- build_loom(file.name = out_loom, dgem = cm, default.embedding = umap, default.embedding.name = "umap") +loom <- add_cell_annotation(loom = loom, cellAnnotation = in_obj@meta.data) +close_loom(loom = loom)