Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

CyteArc for Seurat users

This guide maps familiar Seurat stages to CyteArc’s store-backed API. Use the workflow map below to find the equivalent task, or try the Quick start to inspect a prepared result. For optional background on how CyteArc stores and reuses results, see How CyteArc compares with Scanpy and Seurat.

Workflow map

The methods below are approximate counterparts rather than identical implementations. After importing an .rds file, the CyteArc column describes analysis on the resulting Zarr store.

GoalSeuratCyteArc
Hold the analysisSeuratObjectDataStore
Load a saved projectreadRDS()inspect_seurat, SeuratReader, SeuratToZarr, then DataStore
Work with modalitiesAssays such as RNA and ADTAssays in the same Zarr store
Select and normalize featuresNormalizeData, FindVariableFeaturesds.features.hvgs, then ds.features.normalize, using exact refs
Scale, reduce, and find neighboursScaleData, RunPCA, FindNeighborsds.reduction.pca standardizes features by default, followed by CyteArc’s neighbour-graph methods
Embed and clusterRunUMAP, FindClustersds.embeddings.umap, ds.clusters.leiden
Correct batches with HarmonyHarmony integration after PCAds.reduction.harmony after PCA, followed by graph construction
Integrate modalities with WNNFindMultiModalNeighborsBuild neighbours per assay, then call ds.integration.modalities(...); WNN is the default

CyteArc WNN follows the published weighting equations but uses the supplied neighbour candidates rather than Seurat’s wider default search. See Compare multimodal integration methods before interpreting differences between integration methods. SNN remains available with method="snn".

Import a saved Seurat object

CyteArc imports a saved Seurat object from an .rds file. It reads the on-disk RDS document and does not attach to a live R session. It does not read .h5seurat.

Inspect the RDS file, select importable assays and reductions, then write a Zarr store:

import cytearc

inspection = cytearc.inspect_seurat("pbmc.rds")
with cytearc.SeuratReader(
    "pbmc.rds",
    assays=["RNA"],
    reductions=["pca"],
) as reader:
    imported = cytearc.SeuratToZarr(reader, zarr_loc="pbmc.zarr").dump()
ds = cytearc.DataStore("pbmc.zarr")
imported.activeIdentity, imported.reductionArtifacts["pca"]

The importer brings across supported count layers and literal cell metadata. It returns exact artifact refs for active.ident and selected reductions. Neighbour graphs, images, commands, and most tool slots stay behind. Graphs, clusterings, marker searches, and integrated analyses are rebuilt in CyteArc rather than imported from the RDS object. CyteArc does not write .rds or .h5seurat.

Typical next steps are ds.pipeline.run(), Identify PBMC populations with scRNA-seq, or Build a neighborhood graph stage by stage. For multimodal data, build a neighbour artifact per assay before calling integration.modalities. When you only need raw matrices, original 10x HDF5 or Matrix Market counts are still preferable to an RDS export.

To return to Seurat, write H5AD or Matrix Market from CyteArc and convert or import it with the tools used by your R workflow. See Import and export for the full Seurat import contract and the other format paths.