Analytical specificity shows how robust the test is to contamination. Positive controls with the fusion were spiked with EDTA or ethanol at various concentrations. We determined at which concentration the PCR no longer worked.
The figures and results in this blogpost were generated by R code corresponding to “AnalyticalSpecificity_R_scripts.txt” on github
Pictures always help, so these are some results:
EDTA affects FAM at higher concentrations.
EDTA affects Texas Red at higher concentrations.
EDTA doesn’t seem to affect ΔCt at higher concentrations.
From the pictures, it’s obvious EDTA affects FAM and Texas Red at higher concentrations. At what concentration does it start to significantly differ? (We’ll look at the p-values later in this post.)
Experimental Setup
Our PCR data contains in the Content column the groups “Unkn-01”, “Unkn-02″… “Unkn-10” where “Unkn-01” indicates the first concentration and “Unkn-10” indicates the 10th concentration tested.
For ethanol, the 10 concentrations that were tested were 4%, 2%, 1%, 0.5%, 0.25%, 0.125%, 0.063%, 0.031%, 0.016%, 0%.
For EDTA, the 10 concentrations that were tested were 20 mM, 10 mM, 5 mM, 2.5 mM, 1.25 mM, 0.625 mM, 0.313 mM, 0.156 mM, 0.078 mM and 0 mM.
Preliminary steps: Data is uploaded into R and then a whole bunch of cleaning and relabeling (check out the script in github).
We summarize the statistics for the channels under different conditions
summary_all_data <- ddply (df, c('Fluor', 'Spikein_Level', 'Sample_no_number'), .fun=summary_function)
The results look like:
Fluor | Spikein_Level | Sample_no_number | Number of observations | Number of missing | Mean | SD | CV |
---|---|---|---|---|---|---|---|
FAM | 0 | Positive Control -EDTA | 8 | 0 | 29.7 | 0.3 | 0 |
FAM | 0.078 | Positive Control -EDTA | 8 | 0 | 29.5 | 0.2 | 0 |
FAM | 0.156 | Positive Control -EDTA | 8 | 0 | 29.6 | 0.3 | 0 |
FAM | 0.313 | Positive Control -EDTA | 8 | 0 | 29.7 | 0.3 | 0 |
FAM | 0.625 | Positive Control -EDTA | 8 | 0 | 29.8 | 0.2 | 0 |
FAM | 1.25 | Positive Control -EDTA | 8 | 0 | 29.9 | 0.3 | 0 |
FAM | 2.5 | Positive Control -EDTA | 8 | 0 | 30 | 0.2 | 0 |
FAM | 5 | Positive Control -EDTA | 8 | 0 | 30.1 | 0.2 | 0 |
FAM | 10 | Positive Control -EDTA | 8 | 0 | 30.3 | 0.1 | 0 |
FAM | 20 | Positive Control -EDTA | 8 | 0 | 32.5 | 0.9 | 0 |
HEX | 0 | Positive Control -EDTA | 8 | 0 | 32.4 | 0.5 | 0 |
HEX | 0.078 | Positive Control -EDTA | 8 | 0 | 32.1 | 0.5 | 0 |
HEX | 0.156 | Positive Control -EDTA | 8 | 0 | 32.2 | 0.5 | 0 |
HEX | 0.313 | Positive Control -EDTA | 8 | 0 | 32.2 | 0.4 | 0 |
HEX | 0.625 | Positive Control -EDTA | 8 | 0 | 32.4 | 0.5 | 0 |
HEX | 1.25 | Positive Control -EDTA | 8 | 0 | 32.4 | 0.3 | 0 |
HEX | 2.5 | Positive Control -EDTA | 8 | 0 | 32.7 | 0.5 | 0 |
HEX | 5 | Positive Control -EDTA | 8 | 0 | 32.3 | 0.5 | 0 |
HEX | 10 | Positive Control -EDTA | 8 | 0 | 33.1 | 0.5 | 0 |
HEX | 20 | Positive Control -EDTA | 8 | 0 | 34.6 | 2.1 | 0.1 |
Texas Red | 0 | Positive Control -EDTA | 8 | 0 | 30.5 | 0.2 | 0 |
Texas Red | 0.078 | Positive Control -EDTA | 8 | 0 | 30.7 | 0.3 | 0 |
Texas Red | 0.156 | Positive Control -EDTA | 8 | 0 | 30.6 | 0.2 | 0 |
Texas Red | 0.313 | Positive Control -EDTA | 8 | 0 | 30.8 | 0.3 | 0 |
Texas Red | 0.625 | Positive Control -EDTA | 8 | 0 | 30.8 | 0.3 | 0 |
Texas Red | 1.25 | Positive Control -EDTA | 8 | 0 | 30.7 | 0.3 | 0 |
Texas Red | 2.5 | Positive Control -EDTA | 8 | 0 | 30.7 | 0.3 | 0 |
Texas Red | 5 | Positive Control -EDTA | 8 | 0 | 30.9 | 0.3 | 0 |
Texas Red | 10 | Positive Control -EDTA | 8 | 0 | 31.1 | 0.3 | 0 |
Texas Red | 20 | Positive Control -EDTA | 8 | 0 | 33.6 | 1.1 | 0 |
We compare each concentration with the negative control (when concentration = 0)
df_control = cleaned_df[cleaned_df$Content == “Unkn-10”,] # this is the control
if (nrow (df_control) > 0) {
wilcox_results <- ddply (cleaned_df, c(‘Fluor’, ‘Spikein_Level’, ‘Sample_no_number’), .fun = mann_whitney_function, controls=df_control )
mann_whitney_results_filename = paste (folder, “Mann-Whitney_”, chemical, “.csv”)
}
The Mann Whitney results look something like:
Fluor | Spikein_Level | Sample_no_number | W | p-value |
---|---|---|---|---|
FAM | 0 | PC-EDTA | 32 | 1 |
FAM | 0.078 | PC-EDTA | 22 | 0.328205128 |
FAM | 0.156 | PC-EDTA | 32 | 1 |
FAM | 0.313 | PC-EDTA | 32 | 1 |
FAM | 0.625 | PC-EDTA | 42 | 0.328205128 |
FAM | 1.25 | PC-EDTA | 45 | 0.194871795 |
FAM | 2.5 | PC-EDTA | 54 | 0.020668221 |
FAM | 5 | PC-EDTA | 56 | 0.01041181 |
FAM | 10 | PC-EDTA | 64 | 0.0001554 |
FAM | 20 | PC-EDTA | 64 | 0.0001554 |
HEX | 0 | PC-EDTA | 32 | 1 |
HEX | 0.078 | PC-EDTA | 22 | 0.328205128 |
HEX | 0.156 | PC-EDTA | 27 | 0.645376845 |
HEX | 0.313 | PC-EDTA | 29 | 0.798445998 |
HEX | 0.625 | PC-EDTA | 36 | 0.720901321 |
HEX | 1.25 | PC-EDTA | 39 | 0.505361305 |
HEX | 2.5 | PC-EDTA | 47 | 0.13038073 |
HEX | 5 | PC-EDTA | 26 | 0.573737374 |
HEX | 10 | PC-EDTA | 55 | 0.014763015 |
HEX | 20 | PC-EDTA | 61 | 0.001087801 |
Texas Red | 0 | PC-EDTA | 32 | 1 |
Texas Red | 0.078 | PC-EDTA | 46 | 0.160528361 |
Texas Red | 0.156 | PC-EDTA | 40 | 0.441802642 |
Texas Red | 0.313 | PC-EDTA | 47 | 0.13038073 |
Texas Red | 0.625 | PC-EDTA | 50 | 0.064957265 |
Texas Red | 1.25 | PC-EDTA | 48 | 0.104895105 |
Texas Red | 2.5 | PC-EDTA | 45 | 0.194871795 |
Texas Red | 5 | PC-EDTA | 57 | 0.006993007 |
Texas Red | 10 | PC-EDTA | 61 | 0.001087801 |
Texas Red | 20 | PC-EDTA | 64 | 0.0001554 |
For example, FAM signals are significantly different from control starting at 2.5% (p=0.02).
We also look for consistent trends. At all concentrations > 2.5%, the signals are significantly different from control, which is what we expect.
No comment yet
1 ping
FDA Validation of Companion Diagnostic (PCR test) – Part 1 / n » Pauline PI - investigating science, math, and biology says:
December 4, 2018 at 6:26 pm (UTC 8)
[…] is a long process that takes a few hundred experiments to examine: Part 2. Pre-processing Part 3. Analytical Specificity Part 4. Accuracy Part 5. Run Control Specification Part 6. Reportable Range Part 7. Limit of […]