flowFit-package: Estimate proliferation in cell-tracking dye studies

Description Details Author(s) References See Also Examples

Description

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.

Details

Package: flowFit
Type: Package
Version: 0.2
Date: 2012-11-29
License: Artistic-2.0

Author(s)

Maintainer: Davide Rambaldi <davide.rambaldi@gmail.com> Author: Davide Rambaldi

References

  1. 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.

  2. 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

  3. MEASURING MOLECULES OF EQUIVALENT FLUOROCHROME (MEF) USING SPHEROTM RAINBOW AND ULTRA RAINBOW CALIBRATION PARTICLES, Spherotech, http://www.spherotech.com/tech_SpheroTech_Note_9.html

  4. 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.

See Also

  1. proliferationFitting generations fitting function.

  2. parentFitting parent population fitting function.

  3. proliferationIndex proliferation index calculator.

  4. getGenerations get percentage of cells for generation.

  5. logTicks draw a log scale on your FACS plots.

  6. generationsDistance calculate the distance between 2 generations of cells on the FACS scale.

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
 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)
  }

flowFit documentation built on April 28, 2020, 9:04 p.m.