Signal transformation

Share:

Description

Signal and standard error estimates are subjected to log or nth-root transformation

Usage

1
2
3
transformChannels(X, Y = NULL, normOpts = setNormOptions())

transformSEs(X, se.X, normOpts = setNormOptions())

Arguments

X

Matrix of (mean bead type) intensity data for red or green channel

Y

Matrix of intensity data for the alternate channel

normOpts

List specifying pre-processing settings. See setNormOptions

se.X

Matrix holding the standard error of the mean bead intensities

Details

The channel(s) are transformed according to the specifications in normOpts.

As signal intensities are estimated as (robust) means within bead-types on an array, the estimated standard errors are in fact standard errors of means. The standard errors of means cannot be log or nth-root transformed in order to get the standard error of the transformed signal mean. To avoid loading the bead-level data into the workspace, the function transformSEs estimates the transformed standard errors using a first order Taylor-expansion around the mean. In our experience, these estimates are accurate except for very low signal intensities (below noise level).

Value

The output from transformChannels or transformSEs is a list containg at least two of the following items

X

Transformed X

Y

Transformed Y

SE

Estimated standard errors of transformed signal mean

lstr

Character string with description of transformation

Author(s)

Lars Gidskehaug

See Also

preprocessBeadSet

Examples

 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
#Simulate intensity data
X <- matrix(exp(rnorm(4000))*100,nrow=1000,ncol=4,
    dimnames=list(1:1000,paste('Array',1:4)))
Y <- matrix(exp(rnorm(4000))*70,nrow=1000,ncol=4,
    dimnames=list(1:1000,paste('Array',1:4)))

#Transform signal
normOpts <- setNormOptions(offset=0)
trChannel <- transformChannels(X,Y,normOpts)

## Not run: 
#Plot one array before and after transformation
dev.new()
plot(X[,1],Y[,1],pch='o',main='Raw data')
dev.new()
plot(trChannel$X[,1],trChannel$Y[,1],pch='o',
    main=paste(trChannel$lstr,'transformed data'))

## End(Not run)

#Simulate a single bead type represented by 12 beads
beadLevelX <- rnorm(12,mean=800,sd=10) 
sd.X <- sd(beadLevelX)
X <- mean(beadLevelX)
se.X <- sd.X/sqrt(length(beadLevelX))

#Transformed signal (4th-root)
transfX <- mean(beadLevelX^(1/4))   #true value
print(transfX)
transfX.1 <- X^(1/4)                #good approximation
print(transfX.1)

#Transformed standard error (4th-root)
transfSE <- sd(beadLevelX^(1/4))/sqrt(length(beadLevelX))  #true value
print(transfSE)
transfSE.1 <- se.X^(1/4)                                   #bad approximation
print(transfSE.1)
transfSE.2 <- transformSEs(X,se.X,normOpts=normOpts)       #good approximation
print(transfSE.2$SE)

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.