-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathgaussNorm.Rd
96 lines (69 loc) · 3.45 KB
/
gaussNorm.Rd
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
\name{gaussNorm}
\alias{gaussNorm}
\title{Per-channel normalization based on landmark registration}
\description{
This funciton normalizes a set of flow cytometry data samples by
identifying and aligning the high density regions (landmarks or peaks) for each channel.
The data of each channel is shifted in such a way that the identified high
density regions are moved to fixed locations called base landmarks.
}
\usage{
gaussNorm (flowset, channel.names, max.lms=2, base.lms=NULL,
peak.density.thr=0.05, peak.distance.thr=0.05, debug=FALSE, fname='')
}
\arguments{
\item{flowset}{ A \code{\link[flowCore:flowSet-class]{flowSet}}. }
\item{channel.names}{ A character vector of flow parameters in \code{flowset} to be
normalized. }
\item{max.lms}{ A numeric vector of the maximum number of base
landmarks to be used for normalizing each channel. If it has only one
value that will be used as the maximum number of base landmarks for
all the channels. }
\item{base.lms}{ A list of vector for each channel that contains the
base landmarks for normalizing that channel. If not specified the base
landmarks are computed from the set of extracted landmarks.}
\item{peak.density.thr}{The peaks with density value less than
"peak.density.thr times maximum peak density" are discarded.}
\item{peak.distance.thr}{The sequences of peaks that are located closer than
"peak.distance.thr times range of data" are identified. Then for
each sequence only one peak (the one with the highest intensity
value) is used as a landmark. In other words no two landmarks are
located closer than "peak.distance.thr times range of data" to each other.}
\item{debug}{ Logical. Forces the function to draw before and
after normalization plots for each sample. The plot of the i-th sample is stored in \code{paste(fname, i)} file.}
\item{fname}{ The pre- and post- normalization plots of the i-th sample is
stored in \code{paste(fname, i)} file if debug is set to
\code{TRUE}. If default value is used the plots are drawn on separate X11 windows
for each sample. In this case, the function waits for a user input to draw the plots
for the next sample.}
}
\details{
Normalization is archived in three phases: (i) identifying high-density regions
(landmarks) for each \code{\link[flowCore:flowFrame-class]{flowFrame}}
in the \code{flowSet} for a single channel; (ii) computing the best
matching between the landmarks and a set of fixed reference
landmarks for each channel called base landmarks; (iii) manipulating
the data of each channel in such a way that each landmark is moved to
its matching base landmark.
Please note that this normalization is on a channel-by-channel
basis. Multiple channels are normalized in a loop.
}
\value{
A list with items \code{flowset}: normalized \code{flowSet}.
\code{confidence}: a confidence measure of the normalization procedure.
}
\author{ Alireza Hadj Khodabakhshi }
\examples{
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 <- gaussNorm(dat, "CD8")$flowset
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)
}
}