warpSet: Normalization based on landmark registration

Description Usage Arguments Details Value Note Author(s) References See Also Examples

View source: R/warpSet.R

Description

This function will perform a normalization of flow cytometry data based on warping functions computed on high-density region landmarks for individual flow channels.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
warpSet(x, ...)

## S3 method for class 'cytoset'
warpSet(
  x,
  stains,
  grouping = NULL,
  monwrd = TRUE,
  subsample = NULL,
  peakNr = NULL,
  clipRange = 0.01,
  nbreaks = 11,
  fres,
  bwFac = 2,
  warpFuns = FALSE,
  target = NULL,
  chunksize = 10,
  ...
)

Arguments

x

A flowSet.

...

Further arguments that are passed on to landmarkreg.

stains

A character vector of flow parameters in x to be normalized.

grouping

A character indicating one of the phenotypic variables in the phenoData slot of x used as a grouping factor. The within-group and between-group variance is computed and a warning is issued in case the latter is bigger than the former, indicating the likely removal of signal by the normalization procedure.

monwrd

Logical. Compute strictly monotone warping functions. This gets directly passed on to landmarkreg.

subsample

Numeric. Reduce the number of events in each flowSet by sub sampling for all density estimation steps and the calculation of the warping functions. This can increase computation time for large data sets, however it might reduce the accuracy of the density estimates. To be used with care.

peakNr

Numeric scalar. Force a fixed number of peaks to use for the normalization.

clipRange

Only use peaks within a clipped data range. Essentially, the number indicates the percent of clipping on both sides of the data range, e.g. min(x) - 0.01 * diff(range(x)).

nbreaks

The number of spline sections used to approximate the data. Higher values produce more accurate results, however this comes with the cost of increaseqd computing times. For most data, the default setting is good enough.

fres

A named list of filterResultList objects. This can be used to speed up the process since the curv1Filter step can take quite some time.

bwFac

Numeric of lenght 1 used to set the bandwidth factor by curv1Filter for smoothing of the density estimate.

warpFuns

Logical indcating whether to return the normalized flowSet or a list of warping functions.

target

Character vector specifying the target sample to which other samples in the flowSet should be normalized. If NULL, then the mean of the peaks is used.

chunksize

an integer. For a memory-efficient implementation of normalization, chunksize can be set to perform normalization on chunks of the data of size chunksize

Details

Normalization is achived by first identifying high-density regions (landmarks) for each flowFrame in the flowSet for a single channel and subsequently by computing warping functions for each flowFrame that best align these landmarks. This is based on the algorithm implemented in the landmarkreg function in the fda package. An intermediate step classifies the high-density regions, see landmarkMatrix for details.

Please note that this normalization is on a channel-by-channel basis. Multiple channels are normalized in a loop.

Value

The normalized flowSet if warpFuns is FALSE, otherwise a list of warping functions. Additional inforamtion is attached as the warping attribute to the flowSet in form of a list.

Note

We currently use a patched fda version.

Author(s)

Florian Hahne

References

J.O. Ramsay and B.W. Silverman: Applied Functional Data Analysis, Springer 2002

See Also

curv1Filter landmarkMatrix

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
library(flowCore)
data(ITN)
dat <- transform(ITN, "CD4"=asinh(CD4), "CD3"=asinh(CD3), "CD8"=asinh(CD8))
lg <- lymphGate(dat, channels=c("CD3", "SSC"), preselection="CD4",scale=1.5)
dat <- Subset(dat, lg)
datr <- warpSet(dat, "CD8", grouping="GroupID", monwrd=TRUE)
if(require(flowViz)){
  d1 <- densityplot(~CD8, dat, main="original", filter=curv1Filter("CD8"))
  d2 <- densityplot(~CD8, datr, main="normalized", filter=curv1Filter("CD8"))
  plot(d1, split=c(1,1,2,1))
  plot(d2, split=c(2,1,2,1), newpage=FALSE)
}

flowStats documentation built on Nov. 8, 2020, 6:49 p.m.