flowStats quadrantGate and rangeGate Question
3
0
Entering edit mode
Aric Gregson ▴ 270
@aric-gregson-3058
Last seen 10.2 years ago
Hello, I am trying out the quadrant and rangeGate methods in flowStats with a small sample of data. It seems that they do not play well with asinh transformed data when there is a small, but significant, population below zero. I have tuned the adjustable parameters sd, alpha and borderQuant as much as possible, but with less than ideal results. What I am looking for I suppose is a way to tell the algorithm to ignore points below 0 when calculating the gates. For example, in the fluorochrome channels there are two distinct populations that have values above zero, and there is a small population with values below zero. For determining positive and negative gates, only the two populations that have values above zero should be considered. The values below zero should be lumped in with the non-zero but still negative numbers. Just wondering if there is a way to do this without having to manually program the gates. Thanks, Aric wf <- workFlow(fs, name="2009_03_05 Asinh Workflow") # remove boundry events before transformation as transform SSC boundaryfilter <- boundaryFilter(filterId = "boundaryfilter", x = c("FSC.A", "SSC.A")) add(wf, boundaryfilter) singletfilter = polygonGate(`FSC.A` = c(10000,13000,20000,40000,60000,80000,100000,160000,200000,263000,2630 00, 200000,160000,100000,80000,60000,40000,20000,14000,8000), `FSC.H` = c(5000,5000,10000,22000,34000,50000,65000,115000,150000,200000,220000, 170000,130000,78000,62000,45000,30000,15000,10000,5000), filterId="Singlet") add(wf, singletfilter, parent="boundaryfilter+") asinhtf <- transformList(colnames(fs)[4:19], asinh, transformationId="asinh") add(wf, asinhtf, parent="Singlet+") lymphfilter <- lymphGate(Data(wf[["asinh"]]), channels=c("FSC.A", "SSC.A"), preselection="APC.H7.A", filterId="Lymphs", eval=FALSE, scale=2) add(wf, lymphfilter$n2gate, parent="asinh") pars <- colnames(Data(wf[["base view"]]))[c(10,11,12,13,18,19)] norm <- normalization(normFun = function(x, parameters, ...) warpSet(x, parameters, ...), parameters = pars, normalizationId= "Warping") add(wf, norm, parent="Lymphs+") ## absolute=T & borderQuant=0.9 help with CD3, but not CD4 qgate <- quadrantGate(Data(wf[["Warping"]]), stains=c("AmCyan.A", "APC.H7.A"), plot=FALSE, filterId="CD3CD4", absolute=TRUE, borderQuant=0.8, alpha=0.9, sd=0.1) add(wf, qgate, parent="Warping") ## can't get much better than this without removing negative numbers qgateLive <- quadrantGate(Data(wf[["Warping"]]), stains=c("Indo.1..Violet..A", "APC.H7.A"), plot=TRUE, filterId="LiveCD4", absolute=TRUE, borderQuant=1, #0 is wrong direction alpha=1,#0.9 sd=0) > sessionInfo() R version 2.11.0 (2010-04-22) amd64-portbld-freebsd8.0 locale: [1] C attached base packages: [1] splines tools stats graphics grDevices utils datasets [8] methods base other attached packages: [1] flowStats_1.6.0 cluster_1.12.3 fda_2.2.1 [4] zoo_1.6-3 flowQ_1.8.0 latticeExtra_0.6-11 [7] RColorBrewer_1.0-2 parody_1.6.0 bioDist_1.20.0 [10] KernSmooth_2.23-3 mvoutlier_1.4 outliers_0.13-2 [13] flowViz_1.12.0 lattice_0.18-5 flowCore_1.14.1 [16] rrcov_1.0-00 pcaPP_1.8-1 mvtnorm_0.9-9 [19] robustbase_0.5-0-1 Biobase_2.8.0 fortunes_1.3-7 loaded via a namespace (and not attached): [1] AnnotationDbi_1.10.1 DBI_0.2-5 MASS_7.3-5 [4] RSQLite_0.9-0 annotate_1.26.0 feature_1.2.4 [7] geneplotter_1.26.0 graph_1.26.0 grid_2.11.0 [10] ks_1.6.12 stats4_2.11.0 xtable_1.5-6
flowStats flowStats • 1.8k views
ADD COMMENT
0
Entering edit mode
Chao-Jen Wong ▴ 580
@chao-jen-wong-3603
Last seen 9.9 years ago
USA/Seattle/Fred Hutchinson Cancer Rese…
Hi, Aric First of all, if your data contain significant population below zero, I would recommend using logicle transformation (see ?logicleTransform) instead of asinh. The problem of the asinh transformation is that the slop of asinh transformation around zero is too steep that makes the plots look like there are two separate populations on the right and left sides of zero (is that what you see from your transformed data?). As a result, quadrant and rangeGate would have troubles identifying the right threshold to divide the real positive and negative. This situation might be avoid using logicleTransform. Note that when you use logicleTransform, make sure you understand how to define the w, t and r parameters. Nishant and I can help you with that if you have any questions. As you are already using asinh transformation, I don't know how to ignore the population below zero when using quadrant or rangeGate. You can probably use rectangeGate from flowCore or do manually gating. Chao-Jen On 06/03/10 13:46, Aric Gregson wrote: > Hello, > > I am trying out the quadrant and rangeGate methods in flowStats with a small > sample of data. It seems that they do not play well with asinh transformed > data when there is a small, but significant, population below zero. I have > tuned the adjustable parameters sd, alpha and borderQuant as much as > possible, but with less than ideal results. What I am looking for I suppose > is a way to tell the algorithm to ignore points below 0 when calculating the > gates. > > For example, in the fluorochrome channels there are two distinct populations > that have values above zero, and there is a small population with values > below zero. For determining positive and negative gates, only the two > populations that have values above zero should be considered. The values > below zero should be lumped in with the non-zero but still negative numbers. > Just wondering if there is a way to do this without having to manually > program the gates. > > Thanks, Aric > > wf <- workFlow(fs, name="2009_03_05 Asinh Workflow") > # remove boundry events before transformation as transform SSC > boundaryfilter <- boundaryFilter(filterId = "boundaryfilter", > x = c("FSC.A", "SSC.A")) > add(wf, boundaryfilter) > singletfilter = polygonGate(`FSC.A` = > c(10000,13000,20000,40000,60000,80000,100000,160000,200000,263000,26 3000, > 200000,160000,100000,80000,60000,40000,20000,14000,8000), > `FSC.H` = > c(5000,5000,10000,22000,34000,50000,65000,115000,150000,200000,22000 0,170000,130000,78000,62000,45000,30000,15000,10000,5000), > filterId="Singlet") > add(wf, singletfilter, parent="boundaryfilter+") > asinhtf <- transformList(colnames(fs)[4:19], > asinh, > transformationId="asinh") > add(wf, asinhtf, parent="Singlet+") > lymphfilter <- lymphGate(Data(wf[["asinh"]]), channels=c("FSC.A", "SSC.A"), > preselection="APC.H7.A", filterId="Lymphs", eval=FALSE, scale=2) > add(wf, lymphfilter$n2gate, parent="asinh") > pars <- colnames(Data(wf[["base view"]]))[c(10,11,12,13,18,19)] > norm <- normalization(normFun = function(x, parameters, ...) > warpSet(x, parameters, ...), > parameters = pars, > normalizationId= "Warping") > add(wf, norm, parent="Lymphs+") > ## absolute=T & borderQuant=0.9 help with CD3, but not CD4 > qgate <- quadrantGate(Data(wf[["Warping"]]), > stains=c("AmCyan.A", "APC.H7.A"), > plot=FALSE, > filterId="CD3CD4", > absolute=TRUE, > borderQuant=0.8, > alpha=0.9, > sd=0.1) > add(wf, qgate, parent="Warping") > ## can't get much better than this without removing negative numbers > qgateLive <- quadrantGate(Data(wf[["Warping"]]), > stains=c("Indo.1..Violet..A", "APC.H7.A"), > plot=TRUE, > filterId="LiveCD4", > absolute=TRUE, > borderQuant=1, #0 is wrong direction > alpha=1,#0.9 > sd=0) > > >> sessionInfo() >> > R version 2.11.0 (2010-04-22) > amd64-portbld-freebsd8.0 > > locale: > [1] C > > attached base packages: > [1] splines tools stats graphics grDevices utils datasets > [8] methods base > > other attached packages: > [1] flowStats_1.6.0 cluster_1.12.3 fda_2.2.1 > [4] zoo_1.6-3 flowQ_1.8.0 latticeExtra_0.6-11 > [7] RColorBrewer_1.0-2 parody_1.6.0 bioDist_1.20.0 > [10] KernSmooth_2.23-3 mvoutlier_1.4 outliers_0.13-2 > [13] flowViz_1.12.0 lattice_0.18-5 flowCore_1.14.1 > [16] rrcov_1.0-00 pcaPP_1.8-1 mvtnorm_0.9-9 > [19] robustbase_0.5-0-1 Biobase_2.8.0 fortunes_1.3-7 > > loaded via a namespace (and not attached): > [1] AnnotationDbi_1.10.1 DBI_0.2-5 MASS_7.3-5 > [4] RSQLite_0.9-0 annotate_1.26.0 feature_1.2.4 > [7] geneplotter_1.26.0 graph_1.26.0 grid_2.11.0 > [10] ks_1.6.12 stats4_2.11.0 xtable_1.5-6 > > _______________________________________________ > Bioconductor mailing list > Bioconductor at stat.math.ethz.ch > https://stat.ethz.ch/mailman/listinfo/bioconductor > Search the archives: http://news.gmane.org/gmane.science.biology.informatics.conductor > -- Chao-Jen Wong Program in Computational Biology Division of Public Health Sciences Fred Hutchinson Cancer Research Center 1100 Fairview Avenue N., M1-B514 PO Box 19024 Seattle, WA 98109 206.667.4485 cwon2 at fhcrc.org
ADD COMMENT
0
Entering edit mode
@frederico-arnoldi-4001
Last seen 10.2 years ago
Hello Aric, If I understood your problem correctly, why dont you just select your data with values greater than 0 before using rangeGate ou quadrant? You could do it using, for example, rectangleGate from flowCore like this: #Define gating values for each fluorochrome, in this case APC and FITC, with values from 0 to 15 rect_gate <- rectangleGate(filterId="my_ractangleGate", "APC-A"=c(0,15), "FITC-A"=c(0,15)) #Get this subset from your data rect_gated_data <- Subset(yourdata, rect_gate) I hope I made myself clear and have helped you. Good luck, Frederico Arnoldi Aric wrote: Hello, I am trying out the quadrant and rangeGate methods in flowStats with a small sample of data. It seems that they do not play well with asinh transformed data when there is a small, but significant, population below zero. I have tuned the adjustable parameters sd, alpha and borderQuant as much as possible, but with less than ideal results. What I am looking for I suppose is a way to tell the algorithm to ignore points below 0 when calculating the gates. For example, in the fluorochrome channels there are two distinct populations that have values above zero, and there is a small population with values below zero. For determining positive and negative gates, only the two populations that have values above zero should be considered. The values below zero should be lumped in with the non-zero but still negative numbers. Just wondering if there is a way to do this without having to manually program the gates. Thanks, Aric wf <- workFlow(fs, name="2009_03_05 Asinh Workflow") # remove boundry events before transformation as transform SSC boundaryfilter <- boundaryFilter(filterId = "boundaryfilter", x = c("FSC.A", "SSC.A")) add(wf, boundaryfilter) singletfilter = polygonGate(`FSC.A` = c(10000,13000,20000,40000,60000,80000,100000,160000,200000,263000,2630 00, 200000,160000,100000,80000,60000,40000,20000,14000,8000), `FSC.H` = c(5000,5000,10000,22000,34000,50000,65000,115000,150000,200000,220000, 170000,130000,78000,62000,45000,30000,15000,10000,5000), filterId="Singlet") add(wf, singletfilter, parent="boundaryfilter+") asinhtf <- transformList(colnames(fs)[4:19], asinh, transformationId="asinh") add(wf, asinhtf, parent="Singlet+") lymphfilter <- lymphGate(Data(wf[["asinh"]]), channels=c("FSC.A", "SSC.A"), preselection="APC.H7.A", filterId="Lymphs", eval=FALSE, scale=2) add(wf, lymphfilter$n2gate, parent="asinh") pars <- colnames(Data(wf[["base view"]]))[c(10,11,12,13,18,19)] norm <- normalization(normFun = function(x, parameters, ...) warpSet(x, parameters, ...), parameters = pars, normalizationId= "Warping") add(wf, norm, parent="Lymphs+") ## absolute=T & borderQuant=0.9 help with CD3, but not CD4 qgate <- quadrantGate(Data(wf[["Warping"]]), stains=c("AmCyan.A", "APC.H7.A"), plot=FALSE, filterId="CD3CD4", absolute=TRUE, borderQuant=0.8, alpha=0.9, sd=0.1) add(wf, qgate, parent="Warping") ## can't get much better than this without removing negative numbers qgateLive <- quadrantGate(Data(wf[["Warping"]]), stains=c("Indo.1..Violet..A", "APC.H7.A"), plot=TRUE, filterId="LiveCD4", absolute=TRUE, borderQuant=1, #0 is wrong direction alpha=1,#0.9 sd=0) > sessionInfo() R version 2.11.0 (2010-04-22) amd64-portbld-freebsd8.0 locale: [1] C attached base packages: [1] splines tools stats graphics grDevices utils datasets [8] methods base other attached packages: [1] flowStats_1.6.0 cluster_1.12.3 fda_2.2.1 [4] zoo_1.6-3 flowQ_1.8.0 latticeExtra_0.6-11 [7] RColorBrewer_1.0-2 parody_1.6.0 bioDist_1.20.0 [10] KernSmooth_2.23-3 mvoutlier_1.4 outliers_0.13-2 [13] flowViz_1.12.0 lattice_0.18-5 flowCore_1.14.1 [16] rrcov_1.0-00 pcaPP_1.8-1 mvtnorm_0.9-9 [19] robustbase_0.5-0-1 Biobase_2.8.0 fortunes_1.3-7 loaded via a namespace (and not attached): [1] AnnotationDbi_1.10.1 DBI_0.2-5 MASS_7.3-5 [4] RSQLite_0.9-0 annotate_1.26.0 feature_1.2.4 [7] geneplotter_1.26.0 graph_1.26.0 grid_2.11.0 [10] ks_1.6.12 stats4_2.11.0 xtable_1.5-6 _________________________________________________________________ O INTERNET EXPLORER 8 TE AJUDA A FICAR PROTEGIDO DE FRAUDES NA WEB. LEIA MAIS AQUI. px?tabid=1&catid=1&WT.mc_id=1589
ADD COMMENT
0
Entering edit mode
Chao-Jen Wong ▴ 580
@chao-jen-wong-3603
Last seen 9.9 years ago
USA/Seattle/Fred Hutchinson Cancer Rese…
Aric and I have exchanged some conversation about this problem. Consequently I think it is a good idea to modify the 'quadrantGate' and 'rangeGate' functions such that the minor, yet significant, sub-population below a specified reference line can be ignored when calculating the separator between the positive and negative. This modification is already included in flowStats V 1.7.2 or newer. One can find it in the BioC-devel branch. Thanks again for Aric's comments. Chao-Jen On 06/03/10 13:46, Aric Gregson wrote: > Hello, > > I am trying out the quadrant and rangeGate methods in flowStats with a small > sample of data. It seems that they do not play well with asinh transformed > data when there is a small, but significant, population below zero. I have > tuned the adjustable parameters sd, alpha and borderQuant as much as > possible, but with less than ideal results. What I am looking for I suppose > is a way to tell the algorithm to ignore points below 0 when calculating the > gates. > > For example, in the fluorochrome channels there are two distinct populations > that have values above zero, and there is a small population with values > below zero. For determining positive and negative gates, only the two > populations that have values above zero should be considered. The values > below zero should be lumped in with the non-zero but still negative numbers. > Just wondering if there is a way to do this without having to manually > program the gates. > > Thanks, Aric > > wf <- workFlow(fs, name="2009_03_05 Asinh Workflow") > # remove boundry events before transformation as transform SSC > boundaryfilter <- boundaryFilter(filterId = "boundaryfilter", > x = c("FSC.A", "SSC.A")) > add(wf, boundaryfilter) > singletfilter = polygonGate(`FSC.A` = > c(10000,13000,20000,40000,60000,80000,100000,160000,200000,263000,26 3000, > 200000,160000,100000,80000,60000,40000,20000,14000,8000), > `FSC.H` = > c(5000,5000,10000,22000,34000,50000,65000,115000,150000,200000,22000 0,170000,130000,78000,62000,45000,30000,15000,10000,5000), > filterId="Singlet") > add(wf, singletfilter, parent="boundaryfilter+") > asinhtf <- transformList(colnames(fs)[4:19], > asinh, > transformationId="asinh") > add(wf, asinhtf, parent="Singlet+") > lymphfilter <- lymphGate(Data(wf[["asinh"]]), channels=c("FSC.A", "SSC.A"), > preselection="APC.H7.A", filterId="Lymphs", eval=FALSE, scale=2) > add(wf, lymphfilter$n2gate, parent="asinh") > pars <- colnames(Data(wf[["base view"]]))[c(10,11,12,13,18,19)] > norm <- normalization(normFun = function(x, parameters, ...) > warpSet(x, parameters, ...), > parameters = pars, > normalizationId= "Warping") > add(wf, norm, parent="Lymphs+") > ## absolute=T & borderQuant=0.9 help with CD3, but not CD4 > qgate <- quadrantGate(Data(wf[["Warping"]]), > stains=c("AmCyan.A", "APC.H7.A"), > plot=FALSE, > filterId="CD3CD4", > absolute=TRUE, > borderQuant=0.8, > alpha=0.9, > sd=0.1) > add(wf, qgate, parent="Warping") > ## can't get much better than this without removing negative numbers > qgateLive <- quadrantGate(Data(wf[["Warping"]]), > stains=c("Indo.1..Violet..A", "APC.H7.A"), > plot=TRUE, > filterId="LiveCD4", > absolute=TRUE, > borderQuant=1, #0 is wrong direction > alpha=1,#0.9 > sd=0) > > >> sessionInfo() >> > R version 2.11.0 (2010-04-22) > amd64-portbld-freebsd8.0 > > locale: > [1] C > > attached base packages: > [1] splines tools stats graphics grDevices utils datasets > [8] methods base > > other attached packages: > [1] flowStats_1.6.0 cluster_1.12.3 fda_2.2.1 > [4] zoo_1.6-3 flowQ_1.8.0 latticeExtra_0.6-11 > [7] RColorBrewer_1.0-2 parody_1.6.0 bioDist_1.20.0 > [10] KernSmooth_2.23-3 mvoutlier_1.4 outliers_0.13-2 > [13] flowViz_1.12.0 lattice_0.18-5 flowCore_1.14.1 > [16] rrcov_1.0-00 pcaPP_1.8-1 mvtnorm_0.9-9 > [19] robustbase_0.5-0-1 Biobase_2.8.0 fortunes_1.3-7 > > loaded via a namespace (and not attached): > [1] AnnotationDbi_1.10.1 DBI_0.2-5 MASS_7.3-5 > [4] RSQLite_0.9-0 annotate_1.26.0 feature_1.2.4 > [7] geneplotter_1.26.0 graph_1.26.0 grid_2.11.0 > [10] ks_1.6.12 stats4_2.11.0 xtable_1.5-6 > > _______________________________________________ > Bioconductor mailing list > Bioconductor at stat.math.ethz.ch > https://stat.ethz.ch/mailman/listinfo/bioconductor > Search the archives: http://news.gmane.org/gmane.science.biology.informatics.conductor > -- Chao-Jen Wong Program in Computational Biology Division of Public Health Sciences Fred Hutchinson Cancer Research Center 1100 Fairview Avenue N., M1-B514 PO Box 19024 Seattle, WA 98109 206.667.4485 cwon2 at fhcrc.org
ADD COMMENT

Login before adding your answer.

Traffic: 877 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6