Description Details Author(s) References See Also Examples
This package estimate the proliferation of a cell population in cell-tracking dye studies.
In cells proliferation tracking experiments, cells are stained with a tracking dye before culture. During cell division, the tracking dye is partitioned between daughter cells, so that each division brings about a halving of fluorescence intensity; the intensity of a cell, by comparison with the intensity of resting cells, provides an indication of how many divisions the cell has undergone since stimulation
This package uses an R implementation of the Levenberg-Marquardt algorithm (nls.lm) to fit a set of peaks (corresponding to different generations of cells) over the proliferation-tracking dye distribution in a FACS experiment.
The package define two data structure (S4 classes): proliferationFittingData, parentFittingData and their methods and accessors.
The package is integrated with other www.bioconductor.org libraries for analysis of flow cytometry data: flowCore and flowViz.
| Package: | flowFit | 
| Type: | Package | 
| Version: | 0.2 | 
| Date: | 2012-11-29 | 
| License: | Artistic-2.0 | 
Maintainer: Davide Rambaldi <davide.rambaldi@gmail.com> Author: Davide Rambaldi
Timur V. Elzhov, Katharine M. Mullen and Ben Bolker (2012). minpack.lm: R interface to the Levenberg-Marquardt nonlinear least-squares algorithm found in MINPACK.
Tracking antigen-driven responses by flow cytometry: Monitoring proliferation by dye dilution. Paul K Wallace, Joseph D Tario, Jan L Fisher, Stephen S Wallace, Marc S Ernstoff, Katharine A Muirhead. Cytometry (2008) vol. 73A (11) pp. 1019-1034
MEASURING MOLECULES OF EQUIVALENT FLUOROCHROME (MEF) USING SPHEROTM RAINBOW AND ULTRA RAINBOW CALIBRATION PARTICLES, Spherotech, http://www.spherotech.com/tech_SpheroTech_Note_9.html
Benjamin J.C. Quah, Christopher R. Parish, New and improved methods for measuring lymphocyte proliferation in vitro and in vivo using CFSE-like fluorescent dyes, Journal of Immunological Methods, Volume 379, Issues 1-2, 31 May 2012, Pages 1-14, ISSN 0022-1759, 10.1016/j.jim.2012.02.012.
proliferationFitting generations fitting function.
parentFitting parent population fitting function.
proliferationIndex proliferation index calculator.
getGenerations get percentage of cells for generation.
logTicks draw a log scale on your FACS plots.
generationsDistance calculate the distance between 2 generations of cells on the FACS scale.
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 97 98 99 100 101 102 103 104  |   if(require(flowFitExampleData)){
    data(QuahAndParish)
    parent.fitting.cfse <- parentFitting(QuahAndParish[[1]], "<FITC-A>")
    fitting.cfse <- proliferationFitting(QuahAndParish[[2]], "<FITC-A>", 
                                         parent.fitting.cfse@parentPeakPosition, 
                                         parent.fitting.cfse@parentPeakSize)
    summary(fitting.cfse)
    confint(fitting.cfse)
    coef(fitting.cfse)
    Data(fitting.cfse)
    plot(parent.fitting.cfse)
    plot(fitting.cfse)
    # for this sample we use a Fixed Model: we keep fixed in the model the Parent Peak Position
    parent.fitting.cpd <- parentFitting(QuahAndParish[[1]], "<APC-A>")
    fitting.cpd <- proliferationFitting(QuahAndParish[[3]], "<APC-A>", 
                                        parent.fitting.cpd@parentPeakPosition, 
                                        parent.fitting.cpd@parentPeakSize, 
                                        fixedModel=TRUE, 
                                        fixedPars=list(M=parent.fitting.cpd@parentPeakPosition))
    parent.fitting.ctv <- parentFitting(QuahAndParish[[1]], "<Alexa Fluor 405-A>")
    fitting.ctv <- proliferationFitting(QuahAndParish[[4]], "<Alexa Fluor 405-A>", 
                                        parent.fitting.ctv@parentPeakPosition, 
                                        parent.fitting.ctv@parentPeakSize)
    # let's compare the generations across the 3 samples:
    par(mfrow=c(3,4))
    plot(parent.fitting.cfse, main="CFSE Non Stimulated")
    plot(fitting.cfse, which=3, main="CFSE")
    plot(fitting.cfse, which=4, main="CFSE")
    plot(fitting.cfse, which=5, main="CFSE")
    plot(parent.fitting.cpd, main="CPD Non Stimulated")
    plot(fitting.cpd, which=3, main="CPD")
    plot(fitting.cpd, which=4, main="CPD")
    plot(fitting.cpd, which=5, main="CPD")
    plot(parent.fitting.ctv, main="CTV Non Stimulated")
    plot(fitting.ctv, which=3, main="CTV")
    plot(fitting.ctv, which=4, main="CTV")
    plot(fitting.ctv, which=5, main="CTV")
    # ESTIMATE GOODNESS of FITTING with KS TEST
    perc.cfse <- fitting.cfse@generations
    perc.cpd <- fitting.cpd@generations
    perc.ctv <- fitting.ctv@generations
    perc.cfse <- c(perc.cfse, rep(0,6))
    # EXPLORATIVE PLOT
    par(mfrow=c(1,1), ask=FALSE)
    plot(perc.cfse, type="b", axes=FALSE, ylim=c(0,50), 
         xlab="generations", ylab="Percentage of cells", main="")
    lines(perc.cpd, type="b", col="red")
    lines(perc.ctv, type="b", col="blue")
    legend("topleft", c("CFSE","CPD","CTV"), pch=1, 
         col=c("black","red","blue"), bg = 'gray90',text.col = "green4")
    axis(2, at=seq(0,50,10), labels=paste(seq(0,50,10),"%"))
    axis(1, at=1:16,labels=1:16)
    # Pearson's Chi-squared Test for Count Data
    M <- rbind(perc.cfse, perc.cpd, perc.ctv)
    colnames(M) <- 1:16
    (Xsq <- chisq.test(M, B=100000, simulate.p.value=TRUE))
    text(8,40,paste("Chi-squared Test p=", round(Xsq$p.value, digits=4), sep=""))
    # PKH26
    # load data
    data(PKH26data)
    parent.fitting <-  parentFitting(PKH26data[[1]], "FL2-Height LOG")
    my.fit <- proliferationFitting(PKH26data[[2]], "FL2-Height LOG", 
                                   parent.fitting@parentPeakPosition, 
                                   parent.fitting@parentPeakSize)
    my.fit
    summary(my.fit)
    confint(my.fit)
    coef(my.fit)
    Data(my.fit)
    # plot results
    plot(my.fit)
    # modeling with locked Peak Size
    my.fitb <- proliferationFitting(PKH26data[[2]], "FL2-Height LOG", 
                                  parent.fitting@parentPeakPosition, 
                                  parent.fitting@parentPeakSize, 
                                  fixedModel=TRUE, 
                                  fixedPars=list(S=16))
    plot(my.fitb)
    # modeling with locked Peak Size and Position
    my.fitc <- proliferationFitting(PKH26data[[2]], 
                                  "FL2-Height LOG", 
                                  parent.fitting@parentPeakPosition, 
                                  parent.fitting@parentPeakSize, 
                                  fixedModel=TRUE, 
                                  fixedPars=list(S=16, M=810))
    plot(my.fitc)
    # modeling with locked Peak Size, Position and Distance
    my.fitd <- proliferationFitting(PKH26data[[2]], "FL2-Height LOG", 
                                  parent.fitting@parentPeakPosition, 
                                  parent.fitting@parentPeakSize, 
                                  fixedModel=TRUE, 
                                  fixedPars=list(S=16, M=810, D=76))
    plot(my.fitd)
  }
 | 
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.