calcPurity {rliger} | R Documentation |
Calculate purity by comparing two cluster labeling variables
Description
This function aims at calculating the purity for the clustering result obtained with LIGER and the external clustering (existing "true" annotation). Purity can sometimes be a more useful metric when the clustering to be tested contains more subgroups or clusters than the true clusters. Purity ranges from 0 to 1, with a score of 1 representing a pure, accurate clustering.
The true clustering annotation must be specified as the base line. We suggest setting it to the object cellMeta so that it can be easily used for many other visualization and evaluation functions.
The purity can be calculated for only specified datasets, since true
annotation might not be available for all datasets. Evaluation for only one
or a few datasets can be done by specifying useDatasets
. If
useDatasets
is specified, the argument checking for trueCluster
and useCluster
will be enforced to match the cells in the specified
datasets.
Usage
calcPurity(
object,
trueCluster,
useCluster = NULL,
useDatasets = NULL,
verbose = getOption("ligerVerbose", TRUE),
classes.compare = trueCluster
)
Arguments
object |
A liger object, with the clustering result present in cellMeta. |
trueCluster |
Either the name of one variable in |
useCluster |
The name of one variable in |
useDatasets |
A character vector of the names, a numeric or logical
vector of the index of the datasets to be considered for the purity
calculation. Default |
verbose |
Logical. Whether to show information of the progress. Default
|
classes.compare |
[Deprecated/Renamed]. Use |
Value
A numeric scalar, the purity of the clustering result indicated by
useCluster
compared to trueCluster
.
Examples
# Assume the true cluster in `pbmcPlot` is "leiden_cluster"
# generate fake new labeling
fake <- sample(1:7, ncol(pbmcPlot), replace = TRUE)
# Insert into cellMeta
pbmcPlot$new <- factor(fake)
calcPurity(pbmcPlot, trueCluster = "leiden_cluster", useCluster = "new")
# Now assume we got existing base line annotation only for "stim" dataset
nStim <- ncol(dataset(pbmcPlot, "stim"))
stimTrueLabel <- factor(fake[1:nStim])
# Insert into cellMeta
cellMeta(pbmcPlot, "stim_true_label", useDatasets = "stim") <- stimTrueLabel
# Assume "leiden_cluster" is the clustering result we got and need to be
# evaluated
calcPurity(pbmcPlot, trueCluster = "stim_true_label",
useCluster = "leiden_cluster", useDatasets = "stim")