Description Usage Arguments Details Value References See Also Examples
This function takes a reduced data matrix n
by p
,
a vector of cluster identities (optionally including -1
's for
"unclustered"), and a set of lineages consisting of paths through a forest
constructed on the clusters. It constructs smooth curves for each lineage
and returns the points along these curves corresponding to the orthogonal
projections of each data point, along with corresponding arclength
(pseudotime
or lambda
) values.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | getCurves(sds, ...)
## S4 method for signature 'SlingshotDataSet'
getCurves(
sds,
shrink = TRUE,
extend = "y",
reweight = TRUE,
reassign = TRUE,
thresh = 0.001,
maxit = 15,
stretch = 2,
approx_points = FALSE,
smoother = "smooth.spline",
shrink.method = "cosine",
allow.breaks = TRUE,
...
)
## S4 method for signature 'SingleCellExperiment'
getCurves(
sds,
shrink = TRUE,
extend = "y",
reweight = TRUE,
reassign = TRUE,
thresh = 0.001,
maxit = 15,
stretch = 2,
approx_points = FALSE,
smoother = "smooth.spline",
shrink.method = "cosine",
allow.breaks = TRUE,
...
)
|
sds |
The |
... |
Additional parameters to pass to scatter plot smoothing function,
|
shrink |
logical or numeric between 0 and 1, determines whether and how much to shrink branching lineages toward their average prior to the split. |
extend |
character, how to handle root and leaf clusters of lineages
when constructing the initial, piece-wise linear curve. Accepted values are
|
reweight |
logical, whether to allow cells shared between lineages to be
reweighted during curve-fitting. If |
reassign |
logical, whether to reassign cells to lineages at each
iteration. If |
thresh |
numeric, determines the convergence criterion. Percent change
in the total distance from cells to their projections along curves must be
less than |
maxit |
numeric, maximum number of iterations, see
|
stretch |
numeric factor by which curves can be extrapolated beyond
endpoints. Default is |
approx_points |
numeric, whether curves should be approximated by a
fixed number of points. If |
smoother, |
choice of scatter plot smoother. Same as
|
shrink.method |
character denoting how to determine the appropriate
amount of shrinkage for a branching lineage. Accepted values are the same
as for |
allow.breaks |
logical, determines whether curves that branch very close to the origin should be allowed to have different starting points. |
When there is only a single lineage, the curve-fitting algorithm is
nearly identical to that of principal_curve
. When
there are multiple lineages and shrink > 0
, an additional step
is added to the iterative procedure, forcing curves to be similar in the
neighborhood of shared points (ie., before they branch).
The extend
argument determines how to construct the
piece-wise linear curve used to initiate the recursive algorithm. The
initial curve is always based on the lines between cluster centers and if
extend = 'n'
, this curve will terminate at the center of the
endpoint clusters. Setting extend = 'y'
will allow the first and
last segments to extend beyond the cluster center to the orthogonal
projection of the furthest point. Setting extend = 'pc1'
is similar
to 'y'
, but uses the first principal component of the cluster to
determine the direction of the curve beyond the cluster center. These
options typically have little to no impact on the final curve, but can
occasionally help with stability issues.
When shink = TRUE
, we compute a shrinkage curve,
w_l(t), for each lineage, a non-increasing function of pseudotime
that determines how much that lineage should be shrunk toward a shared
average curve. We set w_l(0) = 1, so that the curves will perfectly
overlap the average curve at pseudotime 0
. The weighting curve
decreases from 1
to 0
over the non-outlying pseudotime values
of shared cells (where outliers are defined by the 1.5*IQR
rule).
The exact shape of the curve in this region is controlled by
shrink.method
, and can follow the shape of any standard kernel
function's cumulative density curve (or more precisely, survival curve,
since we require a decreasing function). Different choices of
shrink.method
seem to have little impact on the final curves, in
most cases.
When reweight = TRUE
, weights for shared cells are based on
the quantiles of their projection distances onto each curve. The
distances are ranked and converted into quantiles between 0
and
1
, which are then transformed by 1 - q^2
. Each cell's weight
along a given lineage is the ratio of this value to the maximum value for
this cell across all lineages.
An updated SlingshotDataSet
object containing the
oringinal input, arguments provided to getCurves
as well as the
following new elements:
curves
A list of
principal_curve
objects.
slingParams
Additional parameters used for fitting
simultaneous principal curves.
Hastie, T., and Stuetzle, W. (1989). "Principal Curves." Journal of the American Statistical Association, 84:502–516.
1 2 3 4 5 6 7 8 | data("slingshotExample")
rd <- slingshotExample$rd
cl <- slingshotExample$cl
sds <- getLineages(rd, cl, start.clus = '1')
sds <- getCurves(sds)
plot(rd, col = cl, asp = 1)
lines(sds, type = 'c', lwd = 3)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.