A passport system for single-cell objects. Stamp your Seurat, SingleCellExperiment, or SummarizedExperiment data with full metadata, lineage tracking, and processing logs — all stored inside the
.rdsfile itself.
# Install from GitHub
remotes::install_github("sedatkacar56/scPassport")
Every object gets a passport that travels with it forever:
| Object Type | Passport Location | Processing Log Location |
|---|---|---|
| Seurat | @misc$passport |
@misc$processing_log |
| SingleCellExperiment | metadata(obj)$passport |
metadata(obj)$processing_log |
| SummarizedExperiment | metadata(obj)$passport |
metadata(obj)$processing_log |
| Section | Fields |
|---|---|
| Identity | object_id, rds_self (RDS number), created |
| Animal | animal_id, species, sex, age, condition, tissue |
| Experiment | project, researcher, date, notes |
| Lineage | parent_id, rds_parent, lineage chain, children, rds_children |
| Custom | anything you want to add |
| Processing Log | every step logged with cell count + timestamp |
library(scPassport)
# Stamp your object — popup opens, fill the form
WTHeme <- scPassport(WTHeme)
# Log processing steps
WTHeme <- NormalizeData(WTHeme)
WTHeme <- log_step(WTHeme, "NormalizeData",
params = list(method = "LogNormalize"))
# Stamp a child subset — parent linked automatically
EndofrHeme <- subset(WTHeme, subset = cell_type == "Endothelial")
EndofrHeme <- scPassport(EndofrHeme, parent = WTHeme)
# Read passport anytime
read_passport(EndofrHeme)
library(scPassport)
library(SingleCellExperiment)
sce <- SingleCellExperiment(assays = list(counts = count_matrix))
# Same functions — passport goes into metadata(sce)$passport
sce <- scPassport(sce)
sce <- log_step(sce, "scran normalization")
read_passport(sce)
library(scPassport)
library(SummarizedExperiment)
se <- SummarizedExperiment(assays = list(counts = count_matrix))
# Same functions — passport goes into metadata(se)$passport
se <- scPassport(se)
se <- log_step(se, "DESeq2 normalization")
read_passport(se)
read_passport()
========== PASSPORT ==========
Object ID : EndofrHeme
RDS Self : 225
Created : 2026-03-09 10:34:12
-------- Animal --------
Animal ID : M01
Species : Rattus norvegicus
Sex : male
Age : P60
Condition : Heme
Tissue : Lung - Endothelial
-------- Experiment --------
Project : HEME rat PROJECT
Researcher : Sedat
Date : 2026-03-09
Notes : rpca integrated, subset from WTHeme
-------- Lineage --------
Parent : WTHeme
RDS Parent : 224
Chain : WTHeme
Children : gCapC, gCapB, gCapD
RDS Children: 226, 227, 228
-------- Custom Fields --------
integration_type: rpca
ILMN_name : ILMN_5564
======= PROCESSING LOG =======
[1] NormalizeData | 54184 cells | 2026-03-09 ...
[2] RunPCA | 54184 cells | 2026-03-09 ...
[3] Subset Endothelial | 12453 cells | 2026-03-09 ...
==============================
| Function | Description |
|---|---|
scPassport(obj) |
Open popup to fill/update passport |
scPassport(obj, parent = WTHeme) |
Stamp child, auto-link to parent |
scPassport(obj, read = TRUE) |
Print passport to console |
read_passport(obj) |
Print passport to console |
log_step(obj, "step name", params = list(...)) |
Log a processing step |
Works with Seurat, SingleCellExperiment, and SummarizedExperiment objects.
Sedat Kacar Pulmonary Post Doc — Indiana University Praise be to Allah (SWT)