{ "cells": [ { "cell_type": "markdown", "id": "ef8532ee-d3b3-4227-b254-72302802ca5d", "metadata": {}, "source": [ "# deltact" ] }, { "cell_type": "markdown", "id": "2dfbb800-4a48-42fe-8333-29e7d8b224ef", "metadata": {}, "source": [ "ΔΔCt is the most common metric for quantifying gene expression changes by qPCR. Say you have a group of genes that you hypothesize varies between an experimental sample and a control. In both samples, you perform qPCR for both the genes of interest and some genes that you expect to be constant between the samples. These constant genes, often called housekeeping genes, are essential to the viability of the cell. 18S rRNA, RNA polymerase II, and GAPDH are common examples.\n", "\n", "To normalize for differences in cDNA input, subtract the average housekeeping gene Ct from the gene of interest Ct to get the ΔCt:\n", "\n", "$$\n", "Ct_{gene \\: of \\: interest} - Ct_{housekeeping} = \\Delta Ct\n", "$$\n", "\n", "Performing this calculation for both the experimental and control samples leaves you with two Ct values for each gene of interest:\n", "\n", "$$\n", "\\Delta Ct_{experimental} \\\\\n", "\\Delta Ct_{control}\n", "$$\n", "\n", "Subtracting the control ΔCt from the experimental yields the ΔΔCt:\n", "\n", "$$\n", "\\Delta Ct_{experimental} - \\Delta Ct_{control} = \\Delta \\Delta Ct\n", "$$\n", "\n", "The ΔΔCt is then the normalized cycle difference of the gene of interest between the experimental and control sample. Assuming that the efficiencies of all the primers are approximately 1, the ΔΔCt can be used to calculate fold change in gene expression:\n", "\n", "$$\n", "Fold \\: change = 2^{- \\Delta \\Delta Ct}\n", "$$\n", "\n", "So say that the ΔΔCt value is 1. This indicates that the PCR reaction in the experimental sample took 1 additional cycle to achieve the second derivative maximum than the control sample. Assuming perfect doubling with each cycle, the experimental sample should have half as much of the target transcript as the control:\n", "\n", "$$\n", "2^{-1} = 0.5\n", "$$\n", "\n", "It is worth emphasizing that this method is **semiquantitative**, as it assumes primer efficiencies of 1. [More advanced mathematical models](https://pubmed.ncbi.nlm.nih.gov/11328886/) than equipt currently uses can incorporate empirically determined efficiency values to gain true quantitative gene expression ratios. The \"Further Reading\" section of this document provides additional information on the complexities of relative gene expression using qPCR." ] }, { "cell_type": "markdown", "id": "8490b97a-7f71-4484-a5c7-26a7b630b800", "metadata": {}, "source": [ "## Importing data with namer" ] }, { "cell_type": "markdown", "id": "58df49ee-c2c8-4a3d-bc76-38873a3a4d88", "metadata": {}, "source": [ "As with all equipt tools, using `deltact()` begins with labeling the data using `namer()`. For this example, we will examine a dataset for siRNA validation of four genes:" ] }, { "cell_type": "code", "execution_count": 2, "id": "175d1dcd-b86a-4c40-bcdd-fed2bc477f62", "metadata": { "tags": [] }, "outputs": [], "source": [ "import equipt" ] }, { "cell_type": "code", "execution_count": 3, "id": "62406ebe-e213-4734-8081-76e522f3b0b0", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", " | Pos | \n", "Cp | \n", "Primer | \n", "Name | \n", "NamePrim | \n", "
---|---|---|---|---|---|
0 | \n", "A1 | \n", "11.23 | \n", "18S | \n", "Scramble-1 | \n", "Scramble-118S | \n", "
1 | \n", "A2 | \n", "11.20 | \n", "18S | \n", "Scramble-1 | \n", "Scramble-118S | \n", "
2 | \n", "A3 | \n", "11.22 | \n", "18S | \n", "Scramble-1 | \n", "Scramble-118S | \n", "
3 | \n", "A4 | \n", "11.29 | \n", "18S | \n", "Scramble-2 | \n", "Scramble-218S | \n", "
4 | \n", "A5 | \n", "11.31 | \n", "18S | \n", "Scramble-2 | \n", "Scramble-218S | \n", "
\n", " | Name | \n", "Primer | \n", "dCt | \n", "StdErr | \n", "
---|---|---|---|---|
0 | \n", "Ewsr1-1 | \n", "Ewsr1 | \n", "4.455000 | \n", "0.112151 | \n", "
1 | \n", "Ewsr1-1 | \n", "Fus | \n", "2.981667 | \n", "0.057155 | \n", "
2 | \n", "Ewsr1-1 | \n", "Hdac3 | \n", "6.718333 | \n", "0.061644 | \n", "
3 | \n", "Ewsr1-1 | \n", "Taf15 | \n", "5.395000 | \n", "0.071957 | \n", "
4 | \n", "Ewsr1-2 | \n", "Ewsr1 | \n", "4.808333 | \n", "0.029627 | \n", "
\n", " | Experimental | \n", "Control | \n", "Primer | \n", "Exp dCt | \n", "ddCt | \n", "StdErr | \n", "FoldChange | \n", "
---|---|---|---|---|---|---|---|
0 | \n", "Hdac3-1 | \n", "Scramble-1 | \n", "Ewsr1 | \n", "3.770000 | \n", "0.041667 | \n", "0.049944 | \n", "0.971532 | \n", "
1 | \n", "Hdac3-1 | \n", "Scramble-1 | \n", "Fus | \n", "3.780000 | \n", "0.098333 | \n", "0.027183 | \n", "0.934111 | \n", "
2 | \n", "Hdac3-1 | \n", "Scramble-1 | \n", "Hdac3 | \n", "9.210000 | \n", "2.218333 | \n", "0.080863 | \n", "0.214889 | \n", "
3 | \n", "Hdac3-1 | \n", "Scramble-1 | \n", "Taf15 | \n", "5.796667 | \n", "0.028333 | \n", "0.046488 | \n", "0.980552 | \n", "
4 | \n", "Hdac3-2 | \n", "Scramble-2 | \n", "Ewsr1 | \n", "3.646667 | \n", "0.093333 | \n", "0.054160 | \n", "0.937354 | \n", "
\\n\"+\n", " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", " \"
\\n\"+\n", " \"\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"
\\n\"+\n",
" \"\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"
\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"
\\n\"+\n \"