Skip to contents

This file reads a liger object stored in RDS files under all kinds of types.

  1. A liger object with in-memory data created from package version since 1.99.

  2. A liger object with on-disk H5 data associated, where the link to H5 files will be automatically restored.

  3. A liger object created with older package version, and can be updated to the latest data structure by default.

Usage

readLiger(
  filename,
  dimredName,
  clusterName = "clusters",
  h5FilePath = NULL,
  update = TRUE
)

Arguments

filename

Path to an RDS file of a liger object of old versions.

dimredName

The name of variable in cellMeta slot to store the dimensionality reduction matrix, which originally located in tsne.coords slot. Default "tsne.coords".

clusterName

The name of variable in cellMeta slot to store the clustering assignment, which originally located in clusters slot. Default "clusters".

h5FilePath

Named character vector for all H5 file paths. Not required for object run with in-memory analysis. For object containing H5-based analysis (e.g. online iNMF), this must be supplied if the H5 file location is different from that at creation time.

update

Logical, whether to update an old (<=1.99.0) liger object to the currect version of structure. Default TRUE.

Value

New version of liger object

Examples

# Save and read regular current-version liger object
tempPath <- tempfile(fileext = ".rds")
saveRDS(pbmc, tempPath)

pbmc <- readLiger(tempPath, dimredName = NULL)
#>  Detected <liger> object with up-to-date structure.

# Save and read H5-based liger object
h5Path <- system.file("extdata/ctrl.h5", package = "rliger")
h5tempPath <- tempfile(fileext = ".h5")
file.copy(from = h5Path, to = h5tempPath)
#> [1] TRUE
lig <- createLiger(list(ctrl = h5tempPath))
#> Found more than one class "H5D" in cache; using the first, from namespace 'rliger'
#> Also defined by ‘hdf5r’
#> Found more than one class "H5D" in cache; using the first, from namespace 'rliger'
#> Also defined by ‘hdf5r’
#> Found more than one class "H5D" in cache; using the first, from namespace 'rliger'
#> Also defined by ‘hdf5r’
#> ! No human mitochondrial gene found in the union of dataset "ctrl"
#>  calculating QC for dataset "ctrl"
#> 
#>  Updated QC variables: "nUMI", "nGene", "mito", "ribo", and "hemo"
#>  calculating QC for dataset "ctrl"

#>  calculating QC for dataset "ctrl" ... done
#> 
tempPath <- tempfile(fileext = ".rds")
saveRDS(lig, tempPath)

lig <- readLiger(tempPath, h5FilePath = list(ctrl = h5tempPath))
#>  Detected <liger> object with up-to-date structure.
#>  Restoring dataset "ctrl"
#> Found more than one class "H5D" in cache; using the first, from namespace 'rliger'
#> Also defined by ‘hdf5r’
#>  Restoring dataset "ctrl" ... done
#> 

if (FALSE) {
# Read a old liger object <= 1.0.1
# Assume the dimensionality reduction method applied was UMAP
# Assume the clustering was derived with Louvain method
lig <- readLiger(
    filename = "path/to/oldLiger.rds",
    dimredName = "UMAP",
    clusterName = "louvain"
)
}