Actually doing cell cycle analysis in the lab
Flow cytometry is the standard way most of us track cell cycle progression, but the theory doesn't always match what your machine produces. I spent weeks trying to get clean G1/S/G2 separation from HeLa cells and kept getting broad S-phase peaks that made any modeling impossible. The problem wasn't the protocol. It was cell clumping and inconsistent fixation that nobody talks about enough. At its core, the cell cycle moves through G1, S, G2, and M phases. Cyclin-dependent kinases drive each transition. CDK4/6 with cyclin D pushes cells past the restriction point in late G1. CDK2 with cyclin E triggers S phase entry. CDK1 with cyclin B handles G2 to M transition. That is the textbook version. In practice, most researchers use DNA content staining with propidium iodide or DAPI and run the cells through a flow cytometer to see where the population sits across these phases. The model fitting software like CellCyclePro or ModFit takes your histogram data and estimates the percentage of cells in each phase. The fitting assumes a relatively clean bimodal or trimodal distribution. When your data looks like garbage, the software still produces numbers. Those numbers are wrong. I learned this the hard way after submitting a dataset that looked fine to reviewers until someone asked about the coefficient of variation on my G1 peak.
The practical workflow that actually works
Here is what I ended up doing after my initial attempts fell apart. Harvest cells by gentle scraping rather than trypsinization whenever possible. Harsh enzymatic treatment creates membrane damage that affects DNA staining integrity. Resuspend in PBS with 0.5 mg/ml RNase A before fixing. RNase treatment is not optional if you want accurate S-phase quantification. RNA contamination inflates the fluorescent signal and pushes apparent DNA content above 2N, making your S-phase look artificially large. Fix in 70% ethanol added dropwise while vortexing. Slow addition prevents osmotic shock that fragments nuclei. Store fixed cells at 4 degrees Celsius for at least 24 hours before staining. Short fixation times produce inconsistent results. After fixation, wash twice with PBS and resuspend at roughly 1 million cells per milliliter in staining buffer containing 50 micrograms per milliliter propidium iodide. Incubate 30 minutes in the dark at room temperature. Run on a flow cytometer with at least 10,000 events collected per sample. The coefficient of variation on your G1 peak should be below 5 percent. If it is above 7 percent, your sample preparation has issues. Redo the fixation step and check your cell health before harvesting. Sick or stressed cells show sub-G1 peaks from apoptosis, which destroys your model fitting accuracy.
Common mistakes and why they matter
One thing most protocols omit is the importance of cell density during staining. Running too many cells through the flow cytometer causes coincidence events where two cells pass through the laser simultaneously and register as a single event with double the fluorescence. This creates an artificial doublet peak around the G2/M region that inflates your mitotic population. Keep the event rate below 500 events per second. It makes acquisition slower but the data honest. Another issue is using the wrong gating strategy. Beginners often gate on forward scatter and side scatter to exclude debris, but this also removes dead cells and large aggregates that should be excluded for different reasons. Instead, gate on FSC-A versus FSC-H to identify and exclude doublets based on pulse geometry. Then apply your DNA content histogram analysis only to singlet events. This simple change typically improves G1 peak sharpness noticeably because you remove the shoulder artifacts created by doublets sitting near the G1 region. When fitting the histograms, choose the model carefully. The Watson pragmatic model works for most mammalian cell lines but fails with highly aneuploid samples. If your G1 peak has a shoulder or your S-phase distribution is asymmetric, try the Dean-Jett-Fox model instead. It handles broader S-phase distributions better. For my HeLa cells, switching from Watson to Dean-Jett-Fox changed my S-phase estimate by nearly 8 percentage points, which is a huge difference when you are comparing treated versus untreated conditions.
Get the Full Details

When flow cytometry is the wrong tool
BrdU or EdU incorporation assays give you information that DNA content alone cannot. They distinguish between actively synthesizing DNA and cells that have simply passed through S phase. If you need to measure replication dynamics or S-phase duration, combine PI staining with a nucleoside analog pulse. The dual-staining approach requires additional optimization because the fixation permeabilization step must be compatible with antibody or click chemistry detection of the incorporated analog. Western blotting for cyclin levels or phosphorylation states of Rb provides complementary information about checkpoint activity but does not tell you population-level phase distribution. It answers different questions. Using both methods together gives you the most complete picture, but budget accordingly for time and reagents. A single flow cytometry experiment with proper preparation takes about 4 hours from cell harvest to data acquisition. Western blots add another full day minimum. The biggest limitation of cell cycle analysis by DNA content is that it gives you a static snapshot. You cannot determine the actual duration of each phase from a single timepoint. If you need kinetic data, you have to run a synchronization experiment and sample across multiple time points, or use a pulse-chase approach with BrdU. Both add complexity and introduce their own artifacts. Synchronization with double thymidine block compresses cells into G1/S boundary but can cause stress responses that alter checkpoint behavior. Nocodazole arrest selects for M phase cells but incomplete release leads to mixed populations that complicate your early timepoint readings.
None of this makes the technique worthless. It just means you need to understand what your data actually represents before you draw conclusions from it.