Converts a Seurat v4 object into tinydenseR's .cells format. Unlike v5, Seurat v4 stores all data in a single slot per assay. Each sample's cells are extracted and saved as temporary RDS files.
Usage
get.cells.Seurat(
.seurat.obj,
.meta,
.sample.var,
.assay = "RNA",
.slot = "counts",
.min.cells.per.sample = 10,
.compress = FALSE,
.verbose = TRUE
)Arguments
- .seurat.obj
Seurat v4 object containing expression data. Must use Assay class (not Assay5).
- .meta
Data frame with sample-level metadata. Rownames must be sample IDs matching values in
.seurat.obj@meta.data[[.sample.var]]. Required for filtering valid samples.- .sample.var
Character: column name in
.seurat.obj@meta.dataidentifying which sample each cell belongs to (e.g., "sample_id", "Sample", "orig.ident").- .assay
Character: assay name to extract. Default "RNA".
- .slot
Character: data slot to extract. Default "counts". Can also be "data" (normalized) or "scale.data" (scaled).
- .min.cells.per.sample
Integer: minimum cells required per sample. Default 10.
- .compress
Logical: compress RDS files? Default FALSE for faster I/O.
- .verbose
Logical: print progress messages? Default TRUE.
Value
Named list of file paths to temporary RDS files, one per sample. Only includes samples
meeting minimum cell threshold and present in .meta.
Details
Seurat v4 uses a simpler assay structure than v5, with all data stored in a single matrix per slot. This function extracts cells sample-by-sample and converts to sparse dgCMatrix format for memory-efficient storage.
Compatible with Seurat versions < 5.0.0 or when using legacy Assay class in v5.
See also
get.cells for automatic format detection,
get.cells.Seurat5 for Seurat v5 objects,
setup.tdr.obj for next workflow step
Examples
if (FALSE) { # \dontrun{
# Load example data
trajectory_data <- fetch_trajectory_data()
sim_trajectory.meta <- trajectory_data$meta |>
dplyr::select(Condition, Replicate, Sample) |>
unique()
rownames(sim_trajectory.meta) <- sim_trajectory.meta$Sample
# Create Seurat v4 object
counts.A_R1 <- SingleCellExperiment::counts(trajectory_data$SCE)[,
trajectory_data$SCE$Sample == "A_R1"]
counts.B_R1 <- SingleCellExperiment::counts(trajectory_data$SCE)[,
trajectory_data$SCE$Sample == "B_R1"]
combined.counts <- cbind(counts.A_R1, counts.B_R1)
cell.meta <- data.frame(
sample_id = c(rep("A_R1", ncol(counts.A_R1)),
rep("B_R1", ncol(counts.B_R1))),
row.names = colnames(combined.counts)
)
seurat.obj <- CreateSeuratObject(counts = combined.counts,
meta.data = cell.meta)
# Convert to .cells format
cells <- get.cells.Seurat(.seurat.obj = seurat.obj,
.meta = sim_trajectory.meta[c("A_R1", "B_R1"), ],
.sample.var = "sample_id")
# Use in tinydenseR workflow
lm.obj <- setup.tdr.obj(.cells = cells,
.meta = sim_trajectory.meta[c("A_R1", "B_R1"), ],
.assay.type = "RNA")
} # }
