ReticulateMuData
ReticulateMuData.RdAn R6 wrapper around a Python mudata MuData object accessed via
reticulate. All data remain in Python; the R object is a thin proxy
that forwards attribute reads/writes to the underlying Python object.
Modalities (sub-AnnData objects) are always returned as
anndataR::ReticulateAnnData wrappers, so the critical invariant holds:
any AnnData extracted from a ReticulateMuData is returned as an
anndataR::ReticulateAnnData.
Constructor
mdata <- ReticulateMuData$new(x)where x is either
a Python
mudata.MuDataobject (fromreticulate::import("mudata")), oran existing
ReticulateMuData(wrapping is idempotent).
Modality access
rna <- mdata[["rna"]] # returns ReticulateAnnData
mdata[["rna"]] <- new_rna_adata # accepts ReticulateAnnData or raw Python AnnDataPython object access
py_obj <- mdata$py_mudata() # the raw Python MuDataUse py_call() to invoke Python methods with automatic wrapping of the
result:
result <- mdata$py_call("copy") # returns ReticulateMuData if result is MuDataActive bindings
obsGlobal observation data frame (pandas DataFrame ↔ R data.frame).
varGlobal variable data frame (pandas DataFrame ↔ R data.frame).
obs_namesGlobal observation names (character vector).
var_namesGlobal variable names (character vector).
shapeInteger vector
c(n_obs, n_vars)(read-only).axisMuData axis: 0 = shared obs, 1 = shared var (read-only).
obsmMulti-dimensional observation annotation (named R list).
varmMulti-dimensional variable annotation (named R list).
obspPairwise observation annotation (named R list of square matrices).
varpPairwise variable annotation (named R list of square matrices).
unsUnstructured annotation (named R list).
modNamed R list of modalities; each value is a
anndataR::ReticulateAnnData. Usemdata[["name"]] <- adatato update individual modalities.
Methods
Method py_mudata()
Return the underlying Python mudata.MuData object.
Method update()
Update global obs / var indices from individual modalities.
Equivalent to Python mdata.update().
Method update_obs()
Update global obs_names from individual modalities.
Equivalent to Python mdata.update_obs().
Method update_var()
Update global var_names from individual modalities.
Equivalent to Python mdata.update_var().
Method pull_obs()
Copy columns from modality-level .obs to the global .obs.
Wraps Python mdata.pull_obs(...).
Method pull_var()
Copy columns from modality-level .var to the global .var.
Wraps Python mdata.pull_var(...).
Method push_obs()
Push columns from global .obs back to individual modalities.
Wraps Python mdata.push_obs(...).
Method push_var()
Push columns from global .var back to individual modalities.
Wraps Python mdata.push_var(...).
Method py_call()
Invoke any Python method on the underlying MuData and return the result with automatic wrapping:
anndata.AnnData→anndataR::ReticulateAnnDatamudata.MuData→ReticulateMuDataanything else → returned as-is (Python object,
convert = FALSE)
Method print()
Print a human-readable summary.
Examples
if (FALSE) { # \dontrun{
reticulate::use_condaenv("mofaflex_test", required = TRUE)
mu <- reticulate::import("mudata", convert = FALSE)
ad <- reticulate::import("anndata", convert = FALSE)
sp <- reticulate::import("scipy.sparse", convert = FALSE)
np <- reticulate::import("numpy", convert = FALSE)
X1 <- sp$csr_matrix(reticulate::r_to_py(matrix(1:12, 3L, 4L)))
X2 <- sp$csr_matrix(reticulate::r_to_py(matrix(1:6, 3L, 2L)))
a1 <- ad$AnnData(X = X1)
a2 <- ad$AnnData(X = X2)
md <- mu$MuData(reticulate::py_dict(list("rna" = a1, "prot" = a2)))
mdata <- ReticulateMuData$new(md)
print(mdata)
rna <- mdata[["rna"]] # ReticulateAnnData
print(rna)
} # }