[BioC] flowCore: modifying exprs of a flowFrame

Mike wjiang2 at fhcrc.org
Thu Dec 27 19:50:57 CET 2012


Hi,Ariful,

As you said,transform method should be the right API to use because it 
takes care of the the dynamic range in the parameters slot as well the 
exprs matrix.
By using exprs replacement method directly, you want to update the range 
info manually before apply curve1Filter,i.e.:
rg<-pData(parameters(ff))[,4:5]
pData(parameters(ff))[,4:5]<-asinh(rg/1000)

And I don't think we want exprs<- to update parameters slot 
automatically because the range in the parameters may not necessarily 
need to be consistent with exprs values.

Hope this helps.

Mike Jiang
Raphael Gottardo's Lab


On 12/27/2012 09:43 AM, Valerie Obenchain wrote:
> Hi Ariful,
>
> This looks like a bug. I've cc'd a couple of the authors.
>
> Valerie
>
>
> On 12/06/12 15:18, Ariful Azad wrote:
>> Hello Everybody,
>>
>> This is my first post to this list, so please advise me if this is not a
>> right place to post this question.
>>
>> I was trying to modify a flowFrame by accessing the raw data matrix
>> obtained from exprs(). This operation, however, does not changes tthe
>> parameters of the flowFrame ( can be found by pData(parameters(ff)) ).
>> In particular I was unable to use operations such as filter at later 
>> stage
>> if I directly modify exprs(). Please take a look at the following two
>> methods of transformations. They are essentially doing the same
>> transformation but I am getting error in subsequent analysis if I 
>> transform
>> exprs(ff) directly without using transform function in flowCore.
>>
>> ##### first use direct transformation... error on the filter #########
>>
>>> ff = GvHD[[1,3:4]]
>>> exprs(ff) = asinh(exprs(ff)/10000)
>>> ff
>> flowFrame object 's5a01'
>> with 3420 cells and 2 observables:
>>       name      desc range minRange maxRange
>> $P3 FL1-H CD15 FITC  1024        1    10000
>> $P4 FL2-H   CD45 PE  1024        1    10000
>> 124 keywords are stored in the 'description' slot
>>> summary(ff)
>>              FL1-H    FL2-H
>> Min.    0.0001000 0.000100
>> 1st Qu. 0.0004621 0.003833
>> Median  0.0017590 0.010840
>> Mean    0.0841400 0.033600
>> 3rd Qu. 0.1090000 0.053100
>> Max.    0.8814000 0.825300
>>> c1f<- curv1Filter(filterId="myCurv1Filter", x='FL2-H')
>>> fres<- filter(ff, c1f)
>> Error in if (from == to) rep.int(from, length.out) else 
>> as.vector(c(from,
>> :
>>    missing value where TRUE/FALSE needed
>> In addition: Warning messages:
>> 1: In min(x[, id]) : no non-missing arguments to min; returning Inf
>> 2: In max(x[, id]) : no non-missing arguments to max; returning -Inf
>>
>> ##### Now use transformation of flowCore. No error on the filter 
>> #########
>>
>>> ff = GvHD[[1,3:4]]
>>> ff = transform(ff, `FL1-H`=asinh(`FL1-H`/10000),
>> `FL2-H`=asinh(`FL2-H`/10000))
>>> ff
>> flowFrame object 's5a01'
>> with 3420 cells and 2 observables:
>>       name      desc range minRange  maxRange
>> $P3 FL1-H CD15 FITC  1024    1e-04 0.8813736
>> $P4 FL2-H   CD45 PE  1024    1e-04 0.8813736
>> 128 keywords are stored in the 'description' slot
>>> summary(ff)
>>              FL1-H    FL2-H
>> Min.    0.0001000 0.000100
>> 1st Qu. 0.0004621 0.003833
>> Median  0.0017590 0.010840
>> Mean    0.0841400 0.033600
>> 3rd Qu. 0.1090000 0.053100
>> Max.    0.8814000 0.825300
>>> c1f<- curv1Filter(filterId="myCurv1Filter", x='FL2-H')
>>> fres<- filter(ff, c1f)
>> #########################################
>>
>> I am looking for a way such that the first method does work. I wanted to
>> transform on exprs() because it is faster .
>>
>> Thanks
>>
>> Ariful Azad
>> PhD Student
>> Purdue University
>>
>>     [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> Bioconductor mailing list
>> Bioconductor at r-project.org
>> https://stat.ethz.ch/mailman/listinfo/bioconductor
>> Search the archives: 
>> http://news.gmane.org/gmane.science.biology.informatics.conductor
>



More information about the Bioconductor mailing list