[BioC] interactions of range(flowFrame) with transform, densityplot and splom

Wed Dec 8 16:26:58 CET 2010

In using the flowCore and flowViz packages, I came up against two problems,
apparently related to how transform() re-sets ranges, and how densityplot() and
splom() get their limits from range().

I was wondering if I was doing something wrong, if these are necessary features,
or are inadvertent glitches. I haven't seen them mentioned in the archives.

They can be seen with a subset (Time,SSC-H,FL2-A) of a flowFrame from the GvHD

> library(flowViz)
> data(GvHD)
> f1<-GvHD[[1]][,c(8,2,6)]

Problem 1: transform() and range(), with densityplot()
Create two derived columns with transform():

> f1<-transform(f1,sumCol=`SSC-H`+`FL2-A`,diffCol=`SSC-H`-`FL2-A`)

splom shows a wide range of all data

> splom(f1)

but densityplot() gives a trivial plot for diffCol, not representative of the
data. Compare:

> densityplot(~.,f1)
> hist(exprs(f1)[,"diffCol"])

This might arise from densityplot() taking limits from the range of the
flowFrame, which gave the following after transform():

> range(f1)
    Time SSC-H FL2-A sumCol diffCol
min    0     0     0      0       0
max 1023  1023  1023   2046       0

The values for range(f1) in the added columns seem to have been obtained by
arithmetic on the ranges of the source columns, rather than obtained from ranges
after transformation.

I understand that is the desired result for single-column data transformations,
but this poses a problem for on-the-fly plotting of transformations involving
multiple columns of flowFrames and flowSets. (I originally found it when taking
the difference of 2 log-transformed columns, to get the log of their ratio.)


Problem 2: splom() and plotting range
I found this problem when my data had Time as the first data column, with a wide
time range. To illustrate, simply change the "maxRange" for Time in the above

> pData(parameters(f1))[1,"maxRange"]<-10000
> range(f1)
     Time SSC-H FL2-A sumCol diffCol
min     0     0     0      0       0
max 10000  1023  1023   2046       0

Now, with:

> splom(f1)

the limits on the SSC-H axes (and for density calculation) seem to have been
taken from the first data column (Time), not from the SSC-H column, constricting
the output and leading to error messages from KernSmooth::bkde2D().

My initial look at the code for splom(flowFrame) suggests that scales for splom
are obtained from all data columns, even when exclude.time=TRUE, although I
might be misinterpreting the code.

If my interpretation is correct, this poses a problem for splom() if Time isn't
the last column and exclude.time=TRUE.

My sessionInfo() follows. Thanks for your help.

Ed Mroz
Surgical Oncology Research
MGH Cancer Center
Boston, MA

> sessionInfo()
R version 2.12.0 (2010-10-15)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)

[1] en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] flowViz_1.14.0     lattice_0.19-13    flowCore_1.16.0
[4] rrcov_1.1-00       pcaPP_1.8-3        mvtnorm_0.9-92
[7] robustbase_0.5-0-1 Biobase_2.10.0

loaded via a namespace (and not attached):
[1] feature_1.2.5       graph_1.28.0        grid_2.12.0
[4] KernSmooth_2.23-4   ks_1.7.4            latticeExtra_0.6-14
[7] MASS_7.3-8          RColorBrewer_1.0-2  stats4_2.12.0
[10] tools_2.12.0

The information in this e-mail is intended only for the ...{{dropped:11}}

More information about the Bioconductor mailing list