--- title: "Dicentrics characteristic limits" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Dicentrics characteristic limits} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} Sys.setenv(R_USER_LIBS = tempdir()) #Just in case for CRAN library(biodosetools) knitr::opts_chunk$set( fig.dpi = 96, collapse = TRUE, comment = "#>" ) ``` ## Compare proband vs. control The first step is to input the number of dicentrics and the number of cells counted for the proband (case) and for the control. A significant P-value suggests that the proband was exposed two a dose ($D>0Gy$) and the calculation of the dose shall be performed if an appropriate calibration curve is available. ```{r sc-dic-limits-01, echo=FALSE, out.width='100%', fig.align='center', fig.cap="'Data input options' in the characteristic limits module - Compare proband vs control method."} knitr::include_graphics("figures/screenshot-dicentrics-limits-01.png") ``` This step is accomplished in R by `poisson.test()` function: ```{r dic-limits-results-01, tidy=TRUE, tidy.opts=list(width.cutoff=60)} control_data <- c(aberr = 1, cells = 1000) proband_data <- c(aberr = 13, cells = 1000) result_data <- matrix(c( control_data["aberr"] / control_data["cells"], proband_data["aberr"] / proband_data["cells"], stats::poisson.test(c(proband_data["aberr"], control_data["aberr"]), c(proband_data["cells"], control_data["cells"]))$p.value ), ncol = 3, nrow = 1) colnames(result_data) <- c("dics/cell (control)", "dics/cell (case)", "P-value") ``` ```{r} result_data ``` ## Characteristic limits The user can choose the type I error rate($α$)(false positive rate) and the type II error rate ($β$) (false negative rate). ```{r sc-dic-limits-02, echo=FALSE, out.width='100%', fig.align='center', fig.cap="'Data input options' in the characteristic limits module - Characteristic limits."} knitr::include_graphics("figures/screenshot-dicentrics-limits-02.png") ``` The input data are: the number of dicentrics and cells of the control data if ($Number of dics and cells$) is selected or the mean number of dicentrics per cell if ($Dics per cell$) is selected. Input the pre-calculated curve in `.rds` format obtained in the dose-effect fitting module. ```{r sc-dic-limits-03, echo=FALSE, out.width='100%', fig.align='center', fig.cap="'Data input options' in the characteristic limits module - Characteristic limits - Without curve data option."} knitr::include_graphics("figures/screenshot-dicentrics-limits-03.png") ``` or input the curve coefficients manually in case the user wants to use a pre-existing curve calculated outside of Biodose Tools. ```{r sc-dic-limits-04, echo=FALSE, out.width='100%', fig.align='center', fig.cap="'Data input options' in the characteristic limits module - Characteristic limits - Loaded data .rds option."} knitr::include_graphics("figures/screenshot-dicentrics-limits-04.png") ``` If these information is not available, choose ($Without curve data$) and the dose will not be calculated. ```{r sc-dic-limits-05, echo=FALSE, out.width='100%', fig.align='center', fig.cap="'Data input options' in the characteristic limits module - Characteristic limits - Manually entered curve data option."} knitr::include_graphics("figures/screenshot-dicentrics-limits-05.png") ``` This step is accomplished in R by calling the `calculate_characteristic_limits()` function that gives the decision threshold and the detection limit: ```{r dic-limits-results-02} cells_proband <- c(20, 50, 100, 200, 500, 1000) control_data <- c(aberr = 4, cells = 1000) c_limits <- sapply(cells_proband, function(x) calculate_characteristic_limits( y0 = control_data["aberr"], n0 = control_data["cells"], n1 = x, alpha = 0.05, beta = 0.1, ymax = 100, type = "var" )) ``` ```{r} c_limits ``` For the Minimum resolvable dose ($(Gy)$) and the Dose at detection limit ($(Gy)$) `project_yield()` function is applied: ```{r dic-limits-results-03} fit_results_list <- system.file("extdata", "dicentrics-fitting-results.rds", package = "biodosetools")%>% readRDS() fit_coeffs <- fit_results_list$fit_coeffs[, "estimate"] est_dec <- sapply((unlist(c_limits["decision_threshold", ]) + 1) / cells_proband, function(x) project_yield( yield = x, type = "estimate", general_fit_coeffs = fit_coeffs, general_fit_var_cov_mat = NULL, protracted_g_value = 1, conf_int = 0)) est_det <- sapply(unlist(c_limits["detection_limit", ]) / cells_proband, function(x) project_yield( yield = x, type = "estimate", general_fit_coeffs = fit_coeffs, general_fit_var_cov_mat = NULL, protracted_g_value = 1, conf_int = 0)) ``` ```{r} est_dec est_det ``` Results are displayed in the UI as a table and can be saved in .csv and .tex ```{r sc-dic-limits-07, echo=FALSE, out.width='100%', fig.align='center', fig.cap="'Results' tabbed box in the characteristic limits module - Characteristic limits."} knitr::include_graphics("figures/screenshot-dicentrics-limits-06.png") ```