Single-cell transcriptomics of melanoma sentinel lymph nodes identifies immune cell signatures associated with metastasis
Authors/Creators
Description
Cell-level raw counts for RNA and ADT (cell-surface protein) expression. A seurat object can be created from these files in R, for example:
## 1. libraries --------------------------------------------------------------
if (!requireNamespace("Seurat", quietly = TRUE)) stop("install.packages('Seurat')")
if (!requireNamespace("Matrix", quietly = TRUE)) stop("install.packages('Matrix')")
if (!requireNamespace("data.table", quietly = TRUE)) install.packages("data.table")
library(data.table)
library(Seurat)
library(data.table)
## check versions
pkgs <- c("Seurat", "data.table", "Matrix")
v <- vapply(pkgs, function(p) as.character(packageVersion(p)), character(1))
print(v)
# Seurat data.table Matrix
# "5.0.0" "1.14.8" "1.6.3"
## 2. helper to read a MatrixMarket triple + row/col names --------------------
read_mtx <- function(mtx_path, row_csv, barcode_csv) {
mat <- Matrix::readMM(mtx_path)
rows <- data.table::fread(row_csv, header = FALSE)[[1]]
if (length(rows) == nrow(mat) + 1) rows <- rows[-1] # drop header
stopifnot(length(rows) == nrow(mat))
cols <- data.table::fread(barcode_csv, header = FALSE)[[1]]
if (length(cols) == ncol(mat) + 1) cols <- cols[-1] # drop header
stopifnot(length(cols) == ncol(mat))
rownames(mat) <- rows
colnames(mat) <- cols
mat
}
## 3. load counts and metadata ----------------------------------------------
rna_counts <- read_mtx("RNA_counts.mtx", "RNA_genes.csv", "RNA_barcodes.csv")
adt_counts <- read_mtx("ADT_counts.mtx", "ADT_features.csv","RNA_barcodes.csv") # same barcodes
meta <- data.table::fread("seurat_metadata_full.csv", data.table = FALSE)
rownames(meta) <- colnames(rna_counts) # ensure 1-to-1 alignment
## 4. build Seurat object ----------------------------------------------------
seu <- Seurat::CreateSeuratObject(
counts = rna_counts,
assay = "RNA",
project = "Rebuilt",
meta.data = meta
)
# add ADT as a separate assay
adt_assay <- Seurat::CreateAssayObject(counts = adt_counts)
Seurat::DefaultAssay(adt_assay) <- "ADT"
seu[["ADT"]] <- adt_assay
# tidy up
Seurat::Key(seu[["ADT"]]) <- "adt_"
Seurat::DefaultAssay(seu) <- "RNA"
## 5. save -------------------------------------------------------------------
saveRDS(seu, file = "seurat_rebuilt.rds")
# peek at first 5×5 slice of RNA & ADT count layers
## RNA -----------------------------------------------------------------------
rna_slice <- Seurat::GetAssayData(seu[["RNA"]], layer = "counts")[1:5, 1:5]
cat("\n── RNA (first 5 genes × 5 cells) ──\n")
print(as.matrix(rna_slice)) # coercion only for nicer console display
## ADT -----------------------------------------------------------------------
adt_slice <- Seurat::GetAssayData(seu[["ADT"]], layer = "counts")[1:5, 1:5]
cat("\n── ADT (first 5 features × 5 cells) ──\n")
print(as.matrix(adt_slice))
Files
ADT_features.csv
Files
(3.1 GB)
| Name | Size | |
|---|---|---|
|
md5:7a5867bf147e4381dd9f008f2549a4a6
|
154.7 MB | Download |
|
md5:6ad8628f201d202e15c05636336fa450
|
1.3 kB | Preview Download |
|
md5:313238f03794b539f80d0bb52ca99d39
|
5.1 MB | Preview Download |
|
md5:b534425751360a94c3c54240eaa5ca54
|
2.5 GB | Download |
|
md5:85a23c35e75aa4fb168fcc7beeeb3e9d
|
275.6 kB | Preview Download |
|
md5:5a205b3c4687e3f1872309f171093148
|
9.2 MB | Preview Download |
|
md5:65340c2a86d6ce2061c06b0e82d973a2
|
50.0 MB | Preview Download |
|
md5:2e6843b08ed2b6860ad2d910e56cdc17
|
420.2 MB | Download |
Additional details
Related works
- Is published in
- Publication: 10.1172/jci.insight.183080 (DOI)