diff --git a/.Rbuildignore b/.Rbuildignore index 2f20fc7..9d7cf33 100755 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -1,3 +1,8 @@ -^\.travis\.yml$ +.editorconfig +.gitignore +.lintr +.yamllint.yml +^\.\.Rcheck +.git +.github README.md - diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..1978e32 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,48 @@ +# EditorConfig is awesome: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +insert_final_newline = true +charset = utf-8 +trim_trailing_whitespace = true + +# R files +[*.R] +indent_style = space +indent_size = 4 +max_line_length = 127 + +# Rmd files (R Markdown) +[*.Rmd] +indent_style = space +indent_size = 2 +max_line_length = 127 + +# YAML files +[*.{yml,yaml}] +indent_style = space +indent_size = 2 + +# JSON files +[*.json] +indent_style = space +indent_size = 2 + +# Markdown files +[*.md] +indent_style = space +indent_size = 2 +trim_trailing_whitespace = false + +# Makefile +[Makefile] +indent_style = tab + +# Shell scripts +[*.sh] +indent_style = space +indent_size = 2 diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml new file mode 100644 index 0000000..5d74d31 --- /dev/null +++ b/.github/workflows/labeler.yml @@ -0,0 +1,13 @@ +--- +name: "Pull Request Labeler" +on: # yamllint disable-line rule:truthy + pull_request_target: + +jobs: + labeler: + permissions: + contents: read + pull-requests: write + runs-on: ubuntu-latest + steps: + - uses: actions/labeler@v6 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..92617e4 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,28 @@ +--- +name: Tests + +on: # yamllint disable-line rule:truthy + push: + branches: [master, development] + pull_request: + branches: [master, development] + +jobs: + Formatting: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + with: + fetch-depth: 0 + - name: Formatting + uses: super-linter/super-linter@v8 + env: + LINTER_RULES_PATH: . + VALIDATE_ALL_CODEBASE: false + DEFAULT_BRANCH: master + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SAVE_SUPER_LINTER_SUMMARY: true + VALIDATE_JSON: true + VALIDATE_YAML: true + YAML_CONFIG_FILE: .yamllint.yml + VALIDATE_R: true diff --git a/.github/workflows/pkgdown.yml b/.github/workflows/pkgdown.yml new file mode 100644 index 0000000..5ae34aa --- /dev/null +++ b/.github/workflows/pkgdown.yml @@ -0,0 +1,34 @@ +--- +name: pkgdown +on: # yamllint disable-line rule:truthy + push: + branches: [master] + pull_request: + branches: [master] + release: + types: [published] + +jobs: + pkgdown: + runs-on: ubuntu-latest + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + permissions: + contents: write + steps: + - uses: actions/checkout@v6 + - uses: r-lib/actions/setup-pandoc@v2 + - uses: r-lib/actions/setup-r@v2 + with: + use-public-rspm: true + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: any::pkgdown, local::. + - name: Build site + run: pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE) + shell: Rscript {0} + - name: Deploy to GitHub pages 🚀 + if: github.event_name != 'pull_request' + uses: JamesIves/github-pages-deploy-action@v4 + with: + folder: docs diff --git a/.github/workflows/r-cmd-check.yml b/.github/workflows/r-cmd-check.yml new file mode 100644 index 0000000..57222b2 --- /dev/null +++ b/.github/workflows/r-cmd-check.yml @@ -0,0 +1,28 @@ +--- +name: R-CMD-check +on: # yamllint disable-line rule:truthy + push: + branches: [master, development] + pull_request: + branches: [master, development] + +jobs: + R-CMD-check: + runs-on: ${{ matrix.config.os }} + strategy: + fail-fast: false + matrix: + config: + - {os: ubuntu-latest, r: 'release'} + - {os: ubuntu-latest, r: 'devel'} + # - {os: macos-latest, r: 'release'} + # - {os: windows-latest, r: 'release'} + steps: + - uses: actions/checkout@v6 + - uses: r-lib/actions/setup-r@v2 + with: + r-version: ${{ matrix.config.r }} + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: any::rcmdcheck + - uses: r-lib/actions/check-r-package@v2 diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml new file mode 100644 index 0000000..0009ee9 --- /dev/null +++ b/.github/workflows/spellcheck.yml @@ -0,0 +1,24 @@ +--- +name: Spell Check +on: # yamllint disable-line rule:truthy + push: + branches: [master, development] + pull_request: + branches: [master, development] + +jobs: + spellcheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: r-lib/actions/setup-r@v2 + - name: Install spelling package + run: Rscript -e 'install.packages("spelling")' + - name: Check spelling + run: Rscript -e 'spelling::spell_check_package()' + - name: Check for spelling errors + run: | + if [ -s spelling.txt ]; then + cat spelling.txt + exit 1 + fi diff --git a/.github/workflows/test-coverage.yml b/.github/workflows/test-coverage.yml new file mode 100644 index 0000000..1023339 --- /dev/null +++ b/.github/workflows/test-coverage.yml @@ -0,0 +1,38 @@ +--- +name: test-coverage +on: # yamllint disable-line rule:truthy + push: + branches: [master, development] + pull_request: + branches: [master, development] + +jobs: + test-coverage: + runs-on: ubuntu-latest + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: actions/checkout@v6 + - uses: r-lib/actions/setup-r@v2 + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: any::covr + - name: Test coverage + run: | + covr::codecov( + quiet = FALSE, + clean = FALSE, + install_path = file.path(normalizePath(Sys.getenv("RUNNER_TEMP"), winslash = "/"), "package") + ) + shell: Rscript {0} + - name: Show testthat output + if: always() + run: | + find '${{ runner.temp }}/package' -name 'testthat.Rout*' -exec cat '{}' \; || true + shell: bash + - name: Upload test results + if: failure() + uses: actions/upload-artifact@v4 + with: + name: coverage-test-failures + path: ${{ runner.temp }}/package diff --git a/.gitignore b/.gitignore index 2f634dc..82e938a 100755 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,5 @@ auto/ .DS_Store inst/doc *.pdf -*.html \ No newline at end of file +*.html +..Rcheck diff --git a/.lintr b/.lintr new file mode 100644 index 0000000..b694916 --- /dev/null +++ b/.lintr @@ -0,0 +1,7 @@ +linters: linters_with_defaults( + line_length_linter(127), + indentation_linter(indent = 4), + commented_code_linter = NULL, + object_usage_linter = NULL, + object_name_linter = NULL + ) diff --git a/.travis.yml b/.travis.yml deleted file mode 100755 index 959b02e..0000000 --- a/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: r -r: bioc-devel -cache: packages -warnings_are_errors: false -r_github_packages: - - jimhester/covr -after_success: - - Rscript -e 'covr::codecov()' diff --git a/.yamllint.yml b/.yamllint.yml new file mode 100644 index 0000000..4a2a0f9 --- /dev/null +++ b/.yamllint.yml @@ -0,0 +1,10 @@ +--- +extends: default + +rules: + # 80 chars should be enough, but don't fail if a line is longer + line-length: + max: 127 + level: warning + comments: + min-spaces-from-content: 1 diff --git a/CONFIG-FILES-README.md b/CONFIG-FILES-README.md new file mode 100644 index 0000000..e69de29 diff --git a/DESCRIPTION b/DESCRIPTION index 2309d53..37d1772 100755 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,17 +1,18 @@ Package: BCalm Version: 0.99.0 -Title: Barcode Analysis using linear models -Description: Tools for data management, count preprocessing, and differential analysis in massively parallel report assays (MPRA). +Title: Barcode Analysis Using Linear Models +Description: Tools for data management, count preprocessing, and differential analysis in massively parallel reporter assays (MPRA). Authors@R: c( person("Pia", "Keukeleire", role = c("cre", "aut"), email = "pia.keukeleire@uksh.de"), person("Martin", "Kircher", role = "aut")) +Author: Pia Keukeleire [cre, aut], Martin Kircher [aut] +Maintainer: Pia Keukeleire Depends: R (>= 3.5), methods, BiocGenerics, SummarizedExperiment, - limma, - curl + limma Suggests: BiocStyle, knitr, @@ -28,11 +29,8 @@ Imports: graphics, statmod, tidyr, - GenomeInfoDb, - IRanges, - GenomicRanges, - Biobase, - DelayedArray + dplyr, + rlang Collate: mpra_set.R utils.R @@ -40,7 +38,7 @@ Collate: preprocess.R analyze.R VignetteBuilder: knitr -License: MIT +License: MIT + file LICENSE URL: https://github.com/kircherlab/BCalm BugReports: https://github.com/kircherlab/BCalm/issues biocViews: Software, GeneRegulation, Sequencing, FunctionalGenomics diff --git a/LICENSE b/LICENSE index debe8ec..bf41129 100644 --- a/LICENSE +++ b/LICENSE @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +SOFTWARE. diff --git a/NAMESPACE b/NAMESPACE index fbe8183..2a1f7ed 100755 --- a/NAMESPACE +++ b/NAMESPACE @@ -5,15 +5,15 @@ import(limma, except = "plotMA") import(S4Vectors) importFrom("scales", "alpha") importFrom("graphics", "lines") -importFrom("stats", "approxfun", "lowess") +importFrom("stats", "approxfun", "lowess", "pt", "quantile", "setNames") importFrom("statmod", "mixedModel2Fit") importFrom("tidyr", "pivot_wider") importFrom("tidyr", "unite") +importFrom("dplyr", "%>%", "group_by", "summarise", "mutate", "filter", "ungroup", "pull", "select", "n", "row_number", "arrange", "matches", "rename_with") +importFrom("rlang", "sym") importFrom("mpra", MPRASet, getRNA, getDNA, getBarcode, getEid, getEseq, normalize_counts, mpralm, get_precision_weights) -exportClasses("MPRASet") -exportMethods("show") export(MPRASet, getRNA, getDNA, getBarcode, getEid, getEseq, getLabel) export(mpralm, get_precision_weights, compute_logratio, normalize_counts, fit_elements) export(downsample_barcodes, create_dna_df, create_rna_df, create_var_df) -export(plot_groups, mpra_treat) \ No newline at end of file +export(plot_groups, mpra_treat) diff --git a/R/analyze.R b/R/analyze.R index f2ac482..6179897 100644 --- a/R/analyze.R +++ b/R/analyze.R @@ -1,125 +1,127 @@ -plot_groups <- function(object, percentile=NULL, neg_label=NULL, test_label=NULL) { - if (is(object, "MPRASet")) { - object <- rowData(object) - } else { - object <- as.data.frame(object) - } - if (!requireNamespace("ggplot2", quietly = TRUE)) { +plot_groups <- function(object, percentile = NULL, neg_label = NULL, test_label = NULL) { + if (is(object, "MPRASet")) { + object <- rowData(object) + } else { + object <- as.data.frame(object) + } + if (!requireNamespace("ggplot2", quietly = TRUE)) { stop("The 'ggplot2' package is required but not installed. Please install it.") } - if (is.null(object$logFC)) { - stop("Your MPRASet does not contain logFC values. Please run mpralm or fit_elements first.") - } - if (is.null(object$label) && (! is.null(neg_label) || ! is.null(test_label))) { - stop("Your MPRASet should contain labels.") - } - if (! is.null(neg_label) && ! neg_label %in% unique(object$label)) { - stop("The negative label you provided is not in the label column of the mpra fit object.") - } - if (! is.null(test_label) && ! test_label %in% unique(object$label)) { - stop("The test label you provided is not in the label column of the mpra fit object.") - } - if (is.null(percentile) && ! is.null(neg_label)) { - percentile <- 0.95 - print("No percentile provided, using 0.95.") - } - - if (! is.null(test_label) && ! is.null(neg_label)) { - object <- object[object$label %in% c(test_label, neg_label), ] - } + if (is.null(object$logFC)) { + stop("Your MPRASet does not contain logFC values. Please run mpralm or fit_elements first.") + } + if (is.null(object$label) && (!is.null(neg_label) || !is.null(test_label))) { + stop("Your MPRASet should contain labels.") + } + if (!is.null(neg_label) && !neg_label %in% unique(object$label)) { + stop("The negative label you provided is not in the label column of the mpra fit object.") + } + if (!is.null(test_label) && !test_label %in% unique(object$label)) { + stop("The test label you provided is not in the label column of the mpra fit object.") + } + if (is.null(percentile) && !is.null(neg_label)) { + percentile <- 0.95 + print("No percentile provided, using 0.95.") + } - plot <- ggplot(object, aes(x = logFC, fill = label, y = after_stat(density))) + - geom_histogram(alpha = 0.5, position = "identity", binwidth = 0.1) + - geom_density(alpha = 0.2, adjust = 1) + - theme_minimal() + - labs(title = "Normalized Histogram of logratio Values", x = "Logratio", y = "Density", color = NULL) + - xlim(c(min(object$logFC), max(object$logFC))) + if (!is.null(test_label) && !is.null(neg_label)) { + object <- object[object$label %in% c(test_label, neg_label), ] + } - if (!is.null(neg_label)) { + plot <- ggplot(object, aes(x = logFC, fill = label, y = after_stat(density))) + + geom_histogram(alpha = 0.5, position = "identity", binwidth = 0.1) + + geom_density(alpha = 0.2, adjust = 1) + + theme_minimal() + + labs(title = "Normalized Histogram of logratio Values", x = "Logratio", y = "Density", color = NULL) + + xlim(c(min(object$logFC), max(object$logFC))) - percentile_up <- quantile(object$logFC[object$label == neg_label], percentile) - up_label <- paste(percentile, "th percentile of negative controls", sep="") + if (!is.null(neg_label)) { + percentile_up <- quantile(object$logFC[object$label == neg_label], percentile) + up_label <- paste(percentile, "th percentile of negative controls", sep = "") - percentile_down <- quantile(object$logFC[object$label == neg_label], 1 - percentile) - down_label <- paste(1 - percentile, "th percentile of negative controls", sep="") + percentile_down <- quantile(object$logFC[object$label == neg_label], 1 - percentile) + down_label <- paste(1 - percentile, "th percentile of negative controls", sep = "") - plot <- plot + - geom_vline(aes(xintercept = percentile_up, color = up_label), linetype = "dashed", size = 1) + - geom_vline(aes(xintercept = percentile_down, color = down_label), linetype = "dashed", size = 1) + - scale_color_manual(values = setNames(c("green", "orange"), c(up_label, down_label)), - guide = guide_legend(override.aes = list(linetype = "dashed"))) - } + plot <- plot + + geom_vline(aes(xintercept = percentile_up, color = up_label), linetype = "dashed", size = 1) + + geom_vline(aes(xintercept = percentile_down, color = down_label), linetype = "dashed", size = 1) + + scale_color_manual( + values = setNames(c("green", "orange"), c(up_label, down_label)), + guide = guide_legend(override.aes = list(linetype = "dashed")) + ) + } - return(plot) + return(plot) } +# Moderated t-statistics relative to a logFC threshold. +# Davis McCarthy, Gordon Smyth, adapted by Pia Keukeleire from original function in limma package. +# This version shifts the mean of the coefficients to the mean of +# the negative controls in order to work with negative upper thresholds. +# percentile: The percentile of the negative controls to use as the threshold. +# 25 November 2024. +mpra_treat <- function(fit, percentile = 0.975, neg_label, trend = FALSE, robust = FALSE, winsor.tail.p = c(0.05, 0.1)) { + # Check fit + if (is(fit, "MPRASet")) { + mpra <- attr(fit, "MArrayLM") + mpra$logFC <- rowData(fit)$logFC + mpra$label <- getLabel(fit) + fit <- mpra + } + if (!is(fit, "MArrayLM")) stop("fit must be an MArrayLM object") + if (is.null(fit$coefficients)) stop("coefficients not found in fit object") + if (is.null(fit$stdev.unscaled)) stop("stdev.unscaled not found in fit object") + if (is.null(fit$label)) stop("Your mpra fit object should contain a label column.") -mpra_treat <- function(fit, percentile=0.975, neg_label, trend=FALSE, robust=FALSE, winsor.tail.p=c(0.05,0.1)) -# Moderated t-statistics relative to a logFC threshold. -# Davis McCarthy, Gordon Smyth, adapted by Pia Keukeleire from original function in limma package. -# This version shifts the mean of the coefficients to the mean of the negative controls in order to work with negative upper thresholds. -# percentile: The percentile of the negative controls to use as the threshold. -# 25 November 2024. -{ -# Check fit - if (is(fit, "MPRASet")) { - mpra <- attr(fit, "MArrayLM") - mpra$logFC <- rowData(fit)$logFC - mpra$label <- getLabel(fit) - fit <- mpra - } - if(!is(fit,"MArrayLM")) stop("fit must be an MArrayLM object") - if(is.null(fit$coefficients)) stop("coefficients not found in fit object") - if(is.null(fit$stdev.unscaled)) stop("stdev.unscaled not found in fit object") - if (is.null(fit$label)) stop("Your mpra fit object should contain a label column.") - - fit$lods <- NULL + fit$lods <- NULL - neg_mean <- mean(fit$coefficients[fit$label == neg_label]) + neg_mean <- mean(fit$coefficients[fit$label == neg_label]) - coefficients <- as.matrix(fit$coefficients - neg_mean) - coefficients_neg <- as.matrix(fit$coefficients[fit$label == neg_label] - neg_mean) + coefficients <- as.matrix(fit$coefficients - neg_mean) + coefficients_neg <- as.matrix(fit$coefficients[fit$label == neg_label] - neg_mean) - stdev.unscaled <- as.matrix(fit$stdev.unscaled) - sigma <- fit$sigma - df.residual <- fit$df.residual - if (is.null(coefficients) || is.null(stdev.unscaled) || is.null(sigma) || - is.null(df.residual)) - stop("No data, or argument is not a valid lmFit object") - if (max(df.residual) == 0) - stop("No residual degrees of freedom in linear model fits") - if (!any(is.finite(sigma))) - stop("No finite residual standard deviations") - if(trend) { - covariate <- fit$Amean - if(is.null(covariate)) stop("Need Amean component in fit to estimate trend") - } else { - covariate <- NULL - } - sv <- squeezeVar(sigma^2, df.residual, covariate=covariate, robust=robust, winsor.tail.p=winsor.tail.p) - fit$df.prior <- sv$df.prior - fit$s2.prior <- sv$var.prior - fit$s2.post <- sv$var.post - df.total <- df.residual + sv$df.prior - df.pooled <- sum(df.residual,na.rm=TRUE) - df.total <- pmin(df.total,df.pooled) - fit$df.total <- df.total + stdev.unscaled <- as.matrix(fit$stdev.unscaled) + sigma <- fit$sigma + df.residual <- fit$df.residual + if (is.null(coefficients) || is.null(stdev.unscaled) || is.null(sigma) || is.null(df.residual)) { + stop("No data, or argument is not a valid lmFit object") + } + if (max(df.residual) == 0) { + stop("No residual degrees of freedom in linear model fits") + } + if (!any(is.finite(sigma))) { + stop("No finite residual standard deviations") + } + if (trend) { + covariate <- fit$Amean + if (is.null(covariate)) stop("Need Amean component in fit to estimate trend") + } else { + covariate <- NULL + } + sv <- squeezeVar(sigma^2, df.residual, covariate = covariate, robust = robust, winsor.tail.p = winsor.tail.p) + fit$df.prior <- sv$df.prior + fit$s2.prior <- sv$var.prior + fit$s2.post <- sv$var.post + df.total <- df.residual + sv$df.prior + df.pooled <- sum(df.residual, na.rm = TRUE) + df.total <- pmin(df.total, df.pooled) + fit$df.total <- df.total - acoef <- abs(coefficients) - se <- stdev.unscaled*sqrt(fit$s2.post) - lfc_right <- quantile(coefficients_neg, percentile) - lfc_left <- quantile(coefficients_neg, 1-percentile) - tstat.right <- (acoef-lfc_right)/se - tstat.left <- (acoef-lfc_left)/se - fit$t <- array(0,dim(coefficients),dimnames=dimnames(coefficients)) - fit$p.value <- pt(tstat.right, df=df.total,lower.tail=FALSE) + pt(tstat.left,df=df.total,lower.tail=FALSE) - tstat.right <- pmax(tstat.right,0) - tstat.left <- pmax(tstat.left,0) - fc.up <- (coefficients > lfc_right) - fc.down <- (coefficients < lfc_left) - fit$t[fc.up] <- tstat.right[fc.up] - fit$t[fc.down] <- tstat.left[fc.down] - fit$treat.lfc_right <- lfc_right - fit$treat.lfc_left <- lfc_left - fit -} \ No newline at end of file + acoef <- abs(coefficients) + se <- stdev.unscaled * sqrt(fit$s2.post) + lfc_right <- quantile(coefficients_neg, percentile) + lfc_left <- quantile(coefficients_neg, 1 - percentile) + tstat.right <- (acoef - lfc_right) / se + tstat.left <- (acoef - lfc_left) / se + fit$t <- array(0, dim(coefficients), dimnames = dimnames(coefficients)) + fit$p.value <- pt(tstat.right, df = df.total, lower.tail = FALSE) + pt(tstat.left, df = df.total, lower.tail = FALSE) + tstat.right <- pmax(tstat.right, 0) + tstat.left <- pmax(tstat.left, 0) + fc.up <- (coefficients > lfc_right) + fc.down <- (coefficients < lfc_left) + fit$t[fc.up] <- tstat.right[fc.up] + fit$t[fc.down] <- tstat.left[fc.down] + fit$treat.lfc_right <- lfc_right + fit$treat.lfc_left <- lfc_left + fit +} diff --git a/R/fit.R b/R/fit.R index d3b1ec1..6003534 100755 --- a/R/fit.R +++ b/R/fit.R @@ -1,26 +1,31 @@ -fit_elements <- function(object, normalize=TRUE, block = NULL, endomorphic=FALSE, normalizeSize=1e9, ...) { - design <- data.frame(rep(1, ncol(object))) - if (normalize) { - if ("normalizeSize" %in% names(formals(normalize_counts))) { - object <- normalize_counts(object, normalizeSize=normalizeSize, block=block) - } else { - object <- normalize_counts(object, block=block) - } - } - if ("endomorphic" %in% names(formals(mpralm))) { - mpralm_fit <- mpralm(object = object, design = design, aggregate = "none", - normalize = F, model_type = "indep_groups", - block = block, endomorphic = endomorphic, normalizeSize = normalizeSize, ...) - } else { - mpralm_fit <- mpralm(object = object, design = design, aggregate = "none", - normalize = F, model_type = "indep_groups", - block = block, ...) - } - if (! endomorphic) { - mpralm_fit$label <- getLabel(object) - mpralm_fit$logFC <- mpralm_fit$coefficients - } - return(mpralm_fit) +fit_elements <- function(object, normalize = TRUE, block = NULL, endomorphic = FALSE, normalizeSize = 1e9, plot=FALSE, ...) { + if (!("endomorphic" %in% names(formals(mpralm))) && endomorphic) { + warning( + "The 'endomorphic' argument is not available in the version ", + "of mpra you have installed. Please update mpra to use this ", + "argument. Proceeding with endomorphic = FALSE." + ) + endomorphic <- FALSE + } + design <- data.frame(rep(1, ncol(object))) + if ("endomorphic" %in% names(formals(mpralm))) { + mpralm_fit <- mpralm( + object = object, design = design, aggregate = "none", + normalize = normalize, model_type = "corr_groups", + block = block, endomorphic = endomorphic, normalizeSize = normalizeSize, ... + ) + } else { + mpralm_fit <- mpralm( + object = object, design = design, aggregate = "none", + normalize = normalize, model_type = "corr_groups", + block = block, ... + ) + } + if (!endomorphic) { + mpralm_fit$logFC <- mpralm_fit$coefficients + mpralm_fit$label <- getLabel(object) + } + return(mpralm_fit) } compute_logratio <- function(object, aggregate = c("mean", "sum", "none")) { @@ -28,7 +33,7 @@ compute_logratio <- function(object, aggregate = c("mean", "sum", "none")) { aggregate <- match.arg(aggregate) - if (aggregate=="sum") { + if (aggregate == "sum") { dna <- getDNA(object, aggregate = TRUE) rna <- getRNA(object, aggregate = TRUE) logr <- log2(rna + 1) - log2(dna + 1) @@ -36,12 +41,12 @@ compute_logratio <- function(object, aggregate = c("mean", "sum", "none")) { dna <- getDNA(object, aggregate = FALSE) rna <- getRNA(object, aggregate = FALSE) logr <- log2(rna + 1) - log2(dna + 1) - } else if (aggregate=="mean") { + } else if (aggregate == "mean") { dna <- getDNA(object, aggregate = FALSE) rna <- getRNA(object, aggregate = FALSE) eid <- getEid(object) logr <- log2(rna + 1) - log2(dna + 1) - + by_out <- by(logr, eid, colMeans, na.rm = TRUE) logr <- do.call("rbind", by_out) rownames(logr) <- names(by_out) diff --git a/R/mpra_set.R b/R/mpra_set.R index 4371364..e4584ca 100644 --- a/R/mpra_set.R +++ b/R/mpra_set.R @@ -1,27 +1,27 @@ #' @importFrom mpra MPRASet getRNA getDNA getBarcode getEid getEseq #' @export MPRASet getRNA getDNA getBarcode getEid getEseq -MPRASet <- function(label=new("character"), ...) { - # Create a new MPRASet object - # label: A character vector with the labels of the sequences - object <- mpra::MPRASet(...) - if (length(label) != 0) { - eid <- getEid(object) - label <- label[eid] - rowData(object)$label <- label - } - object +MPRASet <- function(label = new("character"), ...) { + # Create a new MPRASet object + # label: A character vector with the labels of the sequences + object <- mpra::MPRASet(...) + if (length(label) != 0) { + eid <- getEid(object) + label <- label[eid] + rowData(object)$label <- label + } + object } getLabel <- function(object) { - .is_mpra_or_stop(object) - rowData(object)$label + .is_mpra_or_stop(object) + rowData(object)$label } setLabel <- function(object, label) { - .is_mpra_or_stop(object) - eid <- getEid(object) - label <- label[eid] - rowData(object)$label <- label - object -} \ No newline at end of file + .is_mpra_or_stop(object) + eid <- getEid(object) + label <- label[eid] + rowData(object)$label <- label + object +} diff --git a/R/preprocess.R b/R/preprocess.R index ea7d05d..7a3d9f4 100644 --- a/R/preprocess.R +++ b/R/preprocess.R @@ -1,117 +1,129 @@ -downsample_barcodes <- function(df, id_column_name="name", percentile=0.95) { - if (!id_column_name %in% names(df)) { - warning(paste("Column", id_column_name, "does not exist in the DataFrame. - Provide an existing column name to the variable id_column_name. Returning the original DataFrame.")) - return(df) # Return the original DataFrame if the column does not exist - } - if (any(names(df) == "allele")) { - - # Calculate the 0.95th quantile of the number of barcodes across all groups - max_bc <- df %>% - group_by(!!sym(id_column_name), allele) %>% - summarise(n = n(), .groups = 'drop') %>% - summarise(max_bc = quantile(n, percentile)) %>% - pull(max_bc) - - # Downsample barcodes - df <- df %>% - group_by(!!sym(id_column_name), allele) %>% - mutate(row_num = sample(row_number())) %>% - filter(row_num <= max_bc) %>% - ungroup() - } else { - # Calculate the 0.95th quantile of the number of barcodes across all groups - max_bc <- df %>% - group_by(!!sym(id_column_name)) %>% - summarise(n = n(), .groups = 'drop') %>% - summarise(max_bc = quantile(n, percentile)) %>% - pull(max_bc) - - # Downsample barcodes - df <- df %>% - group_by(!!sym(id_column_name)) %>% - mutate(row_num = sample(row_number())) %>% - filter(row_num <= max_bc) %>% - ungroup() - } - - df$row_num <- NULL - - return(df) +downsample_barcodes <- function(df, id_column_name = "name", percentile = 0.95) { + if (!id_column_name %in% names(df)) { + warning(paste("Column", id_column_name, "does not exist in the data frame.", + "Provide an existing column name to the variable id_column_name.", + "Returning the original data frame.")) + return(df) # Return the original data frame if the column does not exist + } + if (any(names(df) == "allele")) { + # Calculate the 0.95th quantile of the number of barcodes across all groups + max_bc <- df %>% + group_by(!!sym(id_column_name), allele) %>% + summarise(n = n(), .groups = "drop") %>% + summarise(max_bc = quantile(n, percentile)) %>% + pull(max_bc) + + # Downsample barcodes + df <- df %>% + group_by(!!sym(id_column_name), allele) %>% + mutate(row_num = sample(row_number())) %>% + filter(row_num <= max_bc) %>% + ungroup() + } else { + # Calculate the 0.95th quantile of the number of barcodes across all groups + max_bc <- df %>% + group_by(!!sym(id_column_name)) %>% + summarise(n = n(), .groups = "drop") %>% + summarise(max_bc = quantile(n, percentile)) %>% + pull(max_bc) + + # Downsample barcodes + df <- df %>% + group_by(!!sym(id_column_name)) %>% + mutate(row_num = sample(row_number())) %>% + filter(row_num <= max_bc) %>% + ungroup() + } + + df$row_num <- NULL + + return(df) } -create_dna_df <- function(df, id_column_name="variant_id", allele_column_name=NULL) { - suppressWarnings({ - if (is.null(allele_column_name) && !is.null(df$allele)) { - allele_column_name <- "allele" - }}) - - df_dna <- .pivot_df(df, id_column_name, allele_column_name, "DNA") - return(df_dna) +create_dna_df <- function(df, id_column_name = "variant_id", allele_column_name = NULL) { + suppressWarnings({ + if (is.null(allele_column_name) && !is.null(df$allele)) { + allele_column_name <- "allele" + } + }) + + df_dna <- .pivot_df(df, id_column_name, allele_column_name, "DNA") + return(df_dna) } -create_rna_df <- function(df, id_column_name="variant_id", allele_column_name=NULL) { - suppressWarnings({ - if (is.null(allele_column_name) && !is.null(df$allele)) { - allele_column_name <- "allele" - }}) +create_rna_df <- function(df, id_column_name = "variant_id", allele_column_name = NULL) { + suppressWarnings({ + if (is.null(allele_column_name) && !is.null(df$allele)) { + allele_column_name <- "allele" + } + }) - df_rna <- .pivot_df(df, id_column_name, allele_column_name, "RNA") - return(df_rna) + df_rna <- .pivot_df(df, id_column_name, allele_column_name, "RNA") + return(df_rna) } create_var_df <- function(df, map_df) { - if (!all(c("ID", "REF", "ALT") %in% colnames(map_df))) { - stop("map_df must contain columns 'ID', 'REF', and 'ALT'") - } + if (!all(c("ID", "REF", "ALT") %in% colnames(map_df))) { + stop("map_df must contain columns 'ID', 'REF', and 'ALT'") + } + + if (!all(c("name") %in% colnames(df))) { + stop("df must contain column 'name'") + } - if (!all(c("name") %in% colnames(df))) { - stop("df must contain column 'name'") - } + if (!any(df$name %in% map_df$REF) && !any(df$name %in% map_df$ALT)) { + stop( + "No matches found between the 'name' column in 'df' and the ", + "'REF'/'ALT' columns in 'map_df'. Please ensure that these ", + "columns have matching values." + ) + } - if (!any(df$name %in% map_df$REF) & !any(df$name %in% map_df$ALT)) { - stop("No matches found between the 'name' column in 'df' and the 'REF'/'ALT' columns in 'map_df'. Please ensure that these columns have matching values.") - } + map_df <- map_df %>% select(ID, REF, ALT) - map_df <- map_df %>% select(ID, REF, ALT) - - # Merge on REF - df_ref <- merge(df, map_df, by.x = "name", by.y = "REF", all.x = FALSE) - df_ref$allele <- "ref" - df_ref$ALT <- NULL + # Merge on REF + df_ref <- merge(df, map_df, by.x = "name", by.y = "REF", all.x = FALSE) + df_ref$allele <- "ref" + df_ref$ALT <- NULL - # Merge on ALT - df_alt <- merge(df, map_df, by.x = "name", by.y = "ALT", all.x = FALSE) - df_alt$allele <- "alt" - df_alt$REF <- NULL + # Merge on ALT + df_alt <- merge(df, map_df, by.x = "name", by.y = "ALT", all.x = FALSE) + df_alt$allele <- "alt" + df_alt$REF <- NULL - # Combine the results - df_combined <- rbind(df_ref, df_alt) + # Combine the results + df_combined <- rbind(df_ref, df_alt) - # Select and rename columns as necessary - var_df <- df_combined %>% select(variant_id = ID, allele, Barcode, matches("count")) + # Select and rename columns as necessary + var_df <- df_combined %>% select(variant_id = ID, allele, Barcode, matches("count")) - return(var_df) + return(var_df) } -.pivot_df <- function(df, id_column_name="variant_id", allele_column_name, type) { - if (is.null(allele_column_name)) { - df <- df %>% group_by(!!sym(id_column_name)) %>% - mutate(new_idx = row_number()) %>% - ungroup() - } else { - df <- df %>% group_by(!!sym(id_column_name), !!sym(allele_column_name)) %>% - mutate(bc = row_number()) %>% - unite("new_idx", c("bc", !!sym(allele_column_name)), sep = "_", remove = FALSE) %>% - ungroup() - } - df_pivot <- df %>% - pivot_wider(names_from = new_idx, values_from = matches(type, ignore.case=TRUE), names_prefix = "bc", id_cols = id_column_name) %>% - rename_with(~ gsub(paste0("(?i)", type), "sample", .)) %>% - arrange(!!sym(id_column_name)) %>% - as.data.frame() - - row.names(df_pivot) <- df_pivot[,id_column_name] - df_pivot[,id_column_name] <- NULL - return(df_pivot) +.pivot_df <- function(df, id_column_name = "variant_id", allele_column_name, type) { + if (is.null(allele_column_name)) { + df <- df %>% + group_by(!!sym(id_column_name)) %>% + mutate(new_idx = row_number()) %>% + ungroup() + } else { + df <- df %>% + group_by(!!sym(id_column_name), !!sym(allele_column_name)) %>% + mutate(bc = row_number()) %>% + unite("new_idx", c("bc", !!sym(allele_column_name)), sep = "_", remove = FALSE) %>% + ungroup() + } + df_pivot <- df %>% + pivot_wider( + names_from = new_idx, + values_from = matches(type, ignore.case = TRUE), + names_prefix = "bc", id_cols = id_column_name + ) %>% + rename_with(~ gsub(paste0("(?i)", type), "sample", .)) %>% + arrange(!!sym(id_column_name)) %>% + as.data.frame() + + row.names(df_pivot) <- df_pivot[, id_column_name] + df_pivot[, id_column_name] <- NULL + return(df_pivot) } diff --git a/R/utils.R b/R/utils.R index b848502..7f9dfb3 100755 --- a/R/utils.R +++ b/R/utils.R @@ -1,9 +1,30 @@ +# Declare global variables to avoid R CMD check NOTEs +utils::globalVariables(c( + # Functions from mpra package + "mpralm", "getDNA", "getRNA", "getEid", "getBarcode", "getEseq", + "normalize_counts", "get_precision_weights", "compute_logratio", + "MPRASet", "getLabel", + # Functions from other packages + "squeezeVar", "rowData", + # ggplot2 functions (in Suggests) + "ggplot", "aes", "geom_histogram", "geom_density", "theme_minimal", + "labs", "xlim", "geom_vline", "scale_color_manual", "guide_legend", + "after_stat", + # NSE column names used in dplyr and ggplot2 operations + "allele", "row_num", "n", "ID", "REF", "ALT", "max_bc", "label", "logFC", + "Barcode", "new_idx" +)) + .is_mpra_or_stop <- function(object) { - if (!is(object, "MPRASet")) + if (!is(object, "MPRASet")) { stop("object is of class '", class(object), "', but needs to be of class 'MPRASet'") + } } .onLoad <- function(libname, pkgname) { - # Override the compute_logratio function in the mpra namespace - assignInNamespace("compute_logratio", compute_logratio, ns = "mpra") -} \ No newline at end of file + # Override the compute_logratio function in the mpra namespace + ns <- base::getNamespace("mpra") + base::unlockBinding("compute_logratio", ns) + utils::assignInNamespace("compute_logratio", compute_logratio, ns = "mpra") + base::lockBinding("compute_logratio", ns) +} diff --git a/README.md b/README.md index 72d2675..5d9b46b 100755 --- a/README.md +++ b/README.md @@ -1,6 +1,14 @@ +[![DOI](https://zenodo.org/badge/858995953.svg)](https://doi.org/10.5281/zenodo.18802316) +[![GitHub License](https://img.shields.io/github/license/kircherlab/BCalm)](https://github.com/kircherlab/BCalm/blob/master/LICENSE) +[![GitHub Release](https://img.shields.io/github/v/release/kircherlab/BCalm)](https://github.com/kircherlab/BCalm/releases/latest) +[![Bioconda Version](https://img.shields.io/conda/vn/bioconda/r-bcalm?label=bioconda)](https://bioconda.github.io/recipes/r-bcalm/README.html) +[![R CMD check](https://github.com/kircherlab/BCalm/actions/workflows/r-cmd-check.yml/badge.svg?branch=master)](https://github.com/kircherlab/BCalm/actions/workflows/r-cmd-check.yml) +[![GitHub Issues](https://img.shields.io/github/issues/kircherlab/BCalm)](https://github.com/kircherlab/BCalm/issues) +[![GitHub Pull Requests](https://img.shields.io/github/issues-pr/kircherlab/BCalm)](https://github.com/kircherlab/BCalm/pulls) + # BCalm and analyze your MPRA data -BCalm is a package that provides a modification from [the mpralm package](https://github.com/hansenlab/mpra/tree/master), an R package that provides tools for differential analysis in MPRA studies. +BCalm is a package that provides a modification of [the mpralm package](https://github.com/hansenlab/mpra/tree/master), an R package that provides tools for differential analysis in MPRA studies. BCalm allows users to use individual barcodes as model input. See the [paper](https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-025-06065-9) for a detailed description, and the vignette for examples on how to run BCalm. @@ -8,8 +16,14 @@ BCalm requires R >=3.5, <= 4.4.0 and can be installed using `devtools` or `remot ### Installation guide: -#### Using conda -We suggest using conda as a package management tool. Its installation guide can be found [here](https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html). +#### Using conda (recommended) +We suggest using conda as a package management tool. Its installation guide can be found [here](https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html) + +```bash +conda create -n BCalm_env r-bcalm +``` + +#### Using `devtools` or `remotes` + conda `BCalm` is available from GitHub. Here we give installation instructions using either `devtools` or `remotes`. @@ -27,9 +41,6 @@ After activating the environment (`conda activate BCalm_env`) you can start the install_github("kircherlab/BCalm") ``` -After installation, you can start using `BCalm` (after loading it with `library(BCalm)`). -For a more extensive user guide, please see the vignette (installation described below). - > **Note:** > If you have problems installing BCalm dependencies (e.g. similar to [issue #10](https://github.com/kircherlab/BCalm/issues/10)) you can install them via conda. Due to one dependency (`bioconductor-genomeinfodbdata`) we have to use the gcc7 label for the bioconda channel. R base version might be different to `4.4.0` but BCALm should work on all R versions `bioconductor-mpra` is supported. @@ -37,6 +48,10 @@ For a more extensive user guide, please see the vignette (installation described > conda install -c bioconda/label/gcc7 -c conda-forge bioconductor-mpra r-devtools r-tidyr r-ggplot2 r-dplyr > ``` +### Loading BCalm + +After installation, you can start using `BCalm` (after loading it with `library(BCalm)`). +For a more extensive user guide, please see the vignette (installation described below). ### Vignette @@ -54,7 +69,7 @@ devtools::install_github("kircherlab/BCalm", build_vignette=TRUE, dependencies=T After this you can open the built vignette by `vignette('BCalm')` (Alternatively, we provide a pre-built vignette in `vignettes/BCalm.html`) -You can either follow the prepared vignette directly in the editor of your choice (`vignettes/BCalm.Rmd`) or scroll through it by opening it in your browser (`vignettes/BCalm.html`). +You can either follow the prepared vignette directly in the editor of your choice (`vignettes/BCalm.Rmd`) or scroll through it by opening it in your browser (`inst/doc//BCalm.html`). ### How to cite: diff --git a/inst/CITATION b/inst/CITATION index ba05ef0..81e2447 100755 --- a/inst/CITATION +++ b/inst/CITATION @@ -1,14 +1,38 @@ -c(bibentry(bibtype = "Article", - key = "mpralm", - title = "Linear models enable powerful differential activity analysis in massively parallel reporter assays", - author = c( - person("Leslie", "Myint"), - person(c("Dimitrios", "G"), "Avramopoulos"), - person(c("Loyal", "A"), "Goff"), - person(c("Kasper", "D."), "Hansen")), - year = 2019, - journal = "BMC Genomics", - pages = "209", - doi = "10.1186/s12864-019-5556-x", - header = "The mpralm functionality is described in:") - ) +c( + bibentry( + bibtype = "Article", + key = "bcalm", + title = "Using individual barcodes to increase quantification power of massively parallel reporter assays", + author = c( + person("Pia", "Keukeleire"), + person(c("Jonathan", "D."), "Rosen"), + person("Angelina", "Gobel-Knapp"), + person("Kilian", "Salomon"), + person("Max", "Schubach"), + person("Martin", "Kircher") + ), + year = 2025, + journal = "BMC Bioinformatics", + volume = "26", + pages = "52", + doi = "10.1186/s12859-025-06065-9", + header = "To cite BCalm in publications use:" + ), + bibentry( + bibtype = "Article", + key = "mpralm", + title = "Linear models enable powerful differential activity analysis in massively parallel reporter assays", + author = c( + person("Leslie", "Myint"), + person(c("Dimitrios", "G."), "Avramopoulos"), + person(c("Loyal", "A."), "Goff"), + person(c("Kasper", "D."), "Hansen") + ), + year = 2019, + journal = "BMC Genomics", + volume = "20", + pages = "209", + doi = "10.1186/s12864-019-5556-x", + header = "The underlying mpralm methodology is described in:" + ) +) diff --git a/inst/NEWS.Rd b/inst/NEWS.Rd index 30d0c2d..bd995b1 100755 --- a/inst/NEWS.Rd +++ b/inst/NEWS.Rd @@ -1,24 +1,9 @@ -\name{mpranews} -\title{mpra News} +\name{bcalmnews} +\title{BCalm News} \encoding{UTF-8} -\section{Version 1.12.1}{ - \itemize{ - \item Fix argument checking in MPRASet construction to allow users to not have to specify barcode or eseq. - \item Fix bug with ordering of eids in log ratio object with aggregate="none" option - } -} - -\section{Version 1.5.3}{ - \itemize{ - \item Update main paper citation. - \item Update vignette with better examples for allelic studies. - \item Add mpraSetAllelicExample to available data. - } -} - \section{Version 0.99}{ \itemize{ - \item Initial release to Bioconductor. + \item Initial release. } } diff --git a/inst/scripts/makeMpraSetExample.R b/inst/scripts/makeMpraSetExample.R index 92f5d6f..720c497 100755 --- a/inst/scripts/makeMpraSetExample.R +++ b/inst/scripts/makeMpraSetExample.R @@ -7,7 +7,8 @@ library(mpra) files <- list.files("GSE83894", pattern = "-[DR]NA", full.names = TRUE) samples <- sapply(files %>% str_split("_"), function(x) { str_sub(str_split(x[2], "-")[[1]][1], 3, 3) -}) %>% as.integer +}) %>% + as.integer() cond <- sapply(files %>% str_split("_"), function(x) { str_sub(str_split(x[2], "-")[[1]][1], 1, 2) }) @@ -19,7 +20,9 @@ new_colnames <- paste0(cond, "_", samples, "_", count_type) counts <- lapply(seq_along(files), function(i) { read_tsv(files[i], col_names = c("barcode", new_colnames[i], "eid")) }) -counts <- Reduce(function(data1, data2) { full_join(data1, data2) }, counts) +counts <- Reduce(function(data1, data2) { + full_join(data1, data2) +}, counts) counts <- counts %>% mutate(bcid = barcode) %>% mutate(eid = str_replace(eid, ":[:digit:]*$", "")) %>% @@ -33,13 +36,13 @@ dna_bc <- counts %>% select(eid, bcid, condition, sample, dna) %>% unite(col = cond_sample, condition, sample) %>% spread(key = cond_sample, value = dna) -dna_mat_bc <- as.matrix(dna_bc[,3:ncol(dna_bc)]) +dna_mat_bc <- as.matrix(dna_bc[, 3:ncol(dna_bc)]) rownames(dna_mat_bc) <- dna_bc$bcid rna_bc <- counts %>% select(eid, bcid, condition, sample, rna) %>% unite(col = cond_sample, condition, sample) %>% spread(key = cond_sample, value = rna) -rna_mat_bc <- as.matrix(rna_bc[,3:ncol(rna_bc)]) +rna_mat_bc <- as.matrix(rna_bc[, 3:ncol(rna_bc)]) rownames(rna_mat_bc) <- rna_bc$bcid ## Check that rows are identical in DNA and RNA @@ -47,18 +50,21 @@ identical(rownames(dna_mat_bc), rownames(rna_mat_bc)) ## Check that columns are identical in DNA and RNA identical(colnames(dna_mat_bc), colnames(rna_mat_bc)) -mpraSetExample <- MPRASet(DNA = dna_mat_bc, RNA = rna_mat_bc, - eid = dna_bc$eid, barcode = dna_bc$bcid, - eseq = NULL - ) +mpraSetExample <- MPRASet( + DNA = dna_mat_bc, RNA = rna_mat_bc, + eid = dna_bc$eid, barcode = dna_bc$bcid, + eseq = NULL +) save(mpraSetExample, file = "../../data/mpraSetExample.rda", compress = "xz") ## Aggregated counts counts_summ <- counts %>% group_by(eid, sample, condition) %>% - summarize(agg_rna = sum(rna, na.rm = TRUE), - agg_dna = sum(dna, na.rm = TRUE)) + summarize( + agg_rna = sum(rna, na.rm = TRUE), + agg_dna = sum(dna, na.rm = TRUE) + ) dna <- counts_summ %>% select(eid, sample, condition, agg_dna) %>% unite(col = cond_sample, condition, sample) %>% @@ -68,9 +74,9 @@ rna <- counts_summ %>% unite(col = cond_sample, condition, sample) %>% spread(key = cond_sample, value = agg_rna, sep = "_") -dna_mat <- as.matrix(dna[,2:ncol(dna)]) +dna_mat <- as.matrix(dna[, 2:ncol(dna)]) rownames(dna_mat) <- dna$eid -rna_mat <- as.matrix(rna[,2:ncol(rna)]) +rna_mat <- as.matrix(rna[, 2:ncol(rna)]) rownames(rna_mat) <- rna$eid ## Check that rows are identical in DNA and RNA @@ -79,18 +85,19 @@ identical(rownames(dna_mat), rownames(rna_mat)) identical(colnames(dna_mat), colnames(rna_mat)) -mpraSetAggExample <- MPRASet(DNA = dna_mat, RNA = rna_mat, - eid = rownames(dna_mat), barcode = NULL, eseq = NULL - ) +mpraSetAggExample <- MPRASet( + DNA = dna_mat, RNA = rna_mat, + eid = rownames(dna_mat), barcode = NULL, eseq = NULL +) save(mpraSetAggExample, file = "../../data/mpraSetAggExample.rda", compress = "xz") get_counts_GSE75661 <- function(file) { counts <- read_tsv(file) - counts <- counts %>% + counts <- counts %>% gather(key = type, value = count, -Oligo) %>% separate(type, into = c("type", "sample"), sep = "_") %>% - mutate(sample = str_replace(sample, "r", "") %>% as.numeric, bcid = 1) %>% + mutate(sample = str_replace(sample, "r", "") %>% as.numeric(), bcid = 1) %>% spread(key = type, value = count) %>% dplyr::rename(eid = Oligo, dna = Plasmid) @@ -119,12 +126,16 @@ counts <- get_counts_GSE75661(file) counts <- counts$na12878 counts_summ <- counts %>% - mutate(snp_id = str_replace(eid, "_[AB]$", ""), - allele = str_extract(eid, "[AB]$")) %>% + mutate( + snp_id = str_replace(eid, "_[AB]$", ""), + allele = str_extract(eid, "[AB]$") + ) %>% select(snp_id, allele, sample, bcid, dna, rna) %>% group_by(snp_id, allele, sample) %>% - summarize(agg_rna = sum(rna, na.rm = TRUE), - agg_dna = sum(dna, na.rm = TRUE)) %>% + summarize( + agg_rna = sum(rna, na.rm = TRUE), + agg_dna = sum(dna, na.rm = TRUE) + ) %>% filter(!is.na(allele)) dna <- counts_summ %>% select(snp_id, allele, sample, agg_dna) %>% @@ -138,13 +149,14 @@ rna <- counts_summ %>% cat("Row orders are identical in DNA and RNA:", identical(dna$snp_id, rna$snp_id), "\n") cat("Columns are identical in DNA and RNA:", identical(colnames(dna), colnames(rna)), "\n") -dna_mat <- as.matrix(dna[,2:ncol(dna)]) +dna_mat <- as.matrix(dna[, 2:ncol(dna)]) rownames(dna_mat) <- dna$snp_id -rna_mat <- as.matrix(rna[,2:ncol(rna)]) +rna_mat <- as.matrix(rna[, 2:ncol(rna)]) rownames(rna_mat) <- rna$snp_id -mpraSetAllelicExample <- MPRASet(DNA = dna_mat, RNA = rna_mat, - eid = rownames(dna_mat), barcode = NULL, eseq = NULL - ) +mpraSetAllelicExample <- MPRASet( + DNA = dna_mat, RNA = rna_mat, + eid = rownames(dna_mat), barcode = NULL, eseq = NULL +) save(mpraSetAllelicExample, file = "../../data/mpraSetAllelicExample.rda", compress = "xz") diff --git a/man/BCalm-package.Rd b/man/BCalm-package.Rd index 238f0c7..bdb4055 100755 --- a/man/BCalm-package.Rd +++ b/man/BCalm-package.Rd @@ -26,21 +26,21 @@ Maintainer: \packageMaintainer{BCalm} Myint, Leslie, Dimitrios G. Avramopoulos, Loyal A. Goff, and Kasper D. Hansen. \emph{Linear models enable powerful differential activity analysis in - massively parallel reporter assays}. + massively parallel reporter assays}. BMC Genomics 2019, 209. \doi{10.1186/s12864-019-5556-x}. Law, Charity W., Yunshun Chen, Wei Shi, and Gordon K. Smyth. - \emph{Voom: Precision Weights Unlock Linear Model Analysis Tools for RNA-Seq Read Counts}. + \emph{Voom: Precision Weights Unlock Linear Model Analysis Tools for RNA-Seq Read Counts}. Genome Biology 2014, 15:R29. \doi{10.1186/gb-2014-15-2-r29}. - Smyth, Gordon K., Jo\"{e}lle Michaud, and Hamish S. Scott. + Smyth, Gordon K., Joelle Michaud, and Hamish S. Scott. \emph{Use of within-Array Replicate Spots for Assessing Differential - Expression in Microarray Experiments.} + Expression in Microarray Experiments.} Bioinformatics 2005, 21 (9): 2067-75. \doi{10.1093/bioinformatics/bti270}. } \keyword{ package } \examples{ -data(mpraSetAggExample) +data("mpraSetAggExample", package = "mpra") design <- data.frame(intcpt = 1, episomal = grepl("MT", colnames(mpraSetAggExample))) mpralm_fit <- mpralm(object = mpraSetAggExample, design = design, diff --git a/man/BcSetExample.Rd b/man/BcSetExample.Rd new file mode 100644 index 0000000..0776085 --- /dev/null +++ b/man/BcSetExample.Rd @@ -0,0 +1,32 @@ +\name{BcSetExample} +\alias{BcSetExample} +\alias{LabelExample} +\alias{MapExample} +\alias{MapExampleOriginalIds} +\docType{data} +\title{Example Data for BCalm} +\description{ + Example datasets for the BCalm package demonstrating typical MPRA data + structures and preprocessing workflows. +} +\usage{ +data("BcSetExample") +data("LabelExample") +data("MapExample") +data("MapExampleOriginalIds") +} +\format{ + \describe{ + \item{\code{BcSetExample}}{An MPRASet object with barcode-level DNA and RNA counts.} + \item{\code{LabelExample}}{A data frame with labels for elements in BcSetExample.} + \item{\code{MapExample}}{A data frame mapping barcodes to variant IDs.} + \item{\code{MapExampleOriginalIds}}{A data frame mapping barcodes to original variant IDs.} + } +} +\details{ + These datasets are provided for demonstration and testing of the + barcode-counting linear model workflow. +} +\examples{ +data(BcSetExample) +} diff --git a/man/MPRASet-class.Rd b/man/MPRASet-class.Rd index eeb727d..dc5a1ad 100755 --- a/man/MPRASet-class.Rd +++ b/man/MPRASet-class.Rd @@ -16,9 +16,7 @@ } \usage{ ## Constructor -MPRASet(DNA = new("matrix"), RNA = new("matrix"), - barcode = new("character"), eid = new("character"), - eseq = new("character"), ...) +MPRASet(label = new("character"), ...) ## Accessors getRNA(object, aggregate = FALSE) @@ -31,25 +29,9 @@ getEseq(object) \item{object}{A \code{MPRASet} object.} \item{aggregate}{A \code{logical} indicating if data should be aggregated to the element level (by summing across barcodes).} - \item{DNA}{A matrix of DNA counts where rows correspond to elements or - individual barcodes and columns to samples of conditions being - compared.} - \item{RNA}{A matrix of RNA counts where rows correspond to elements or - individual barcodes and columns to samples of conditions being - compared.} - \item{barcode}{If barcodes are supplied, a \code{character} vector of - length equal to the number of rows in \code{DNA} and \code{RNA} - containing the barcode sequences or identifiers. \code{NULL} - otherwise.} - \item{eid}{A \code{character} vector of length equal to the number of - rows in \code{DNA} and \code{RNA} containing the enhancer - identifiers corresponding to each row.} - \item{eseq}{If supplied, a \code{character} vector of length equal to - the number of rows in \code{DNA} and \code{RNA} containing the - enhancer sequences corresponding to the regulatory elements in each - row. \code{NULL} otherwise.} - \item{...}{Further arguments to be passed to - \code{SummarizedExperiment}.} + \item{label}{A character vector of labels to store with the elements. + When provided, the labels are aligned to the element IDs.} + \item{...}{Further arguments passed to \code{mpra::MPRASet}.} } \section{Slots}{ Slots are as described in a \code{SummarizedExperiment}. Of @@ -60,13 +42,13 @@ getEseq(object) \code{rowData} slot. We have chosen to store barcode and element as \code{character} to be flexible, although they are often DNA sequences (and could therefore be considered \code{DNAStringSet} (from package - Biostrings)). + Biostrings)). } \section{Extends}{ Class \code{"\linkS4class{SummarizedExperiment}"}, directly. } \value{ - The constrcutor function \code{MPRASet} returns an object of class + The constructor function \code{MPRASet} returns an object of class \code{"MPRASet"}. } \section{Accessors}{ diff --git a/man/compute_logratio.Rd b/man/compute_logratio.Rd index 0d9e182..96db0f2 100755 --- a/man/compute_logratio.Rd +++ b/man/compute_logratio.Rd @@ -24,6 +24,6 @@ and sample-specific log ratios. } \examples{ - data(mpraSetAggExample) + data("mpraSetAggExample", package = "mpra") logr <- compute_logratio(mpraSetAggExample, aggregate = "sum") } diff --git a/man/create_dna_df.Rd b/man/create_dna_df.Rd new file mode 100644 index 0000000..79d7cca --- /dev/null +++ b/man/create_dna_df.Rd @@ -0,0 +1,26 @@ +\name{create_dna_df} +\alias{create_dna_df} +\title{Create DNA Count Matrix} +\description{ + Convert a long-format DNA count data frame into a wide-format matrix + suitable for MPRA analysis. +} +\usage{ +create_dna_df(df, id_column_name = "variant_id", allele_column_name = NULL) +} +\arguments{ + \item{df}{A data frame containing DNA counts in long format.} + \item{id_column_name}{Column name for variant identifiers.} + \item{allele_column_name}{Column name for allele values. If NULL, uses "allele" when present.} +} +\value{ + A wide-format data frame with DNA counts per allele. +} +\examples{ +df <- data.frame( + variant_id = c("var1", "var2", "var1", "var2"), + allele = c("ref", "ref", "alt", "alt"), + DNA_A = c(100, 200, 150, 250) +) +create_dna_df(df) +} diff --git a/man/create_rna_df.Rd b/man/create_rna_df.Rd new file mode 100644 index 0000000..f934fb9 --- /dev/null +++ b/man/create_rna_df.Rd @@ -0,0 +1,26 @@ +\name{create_rna_df} +\alias{create_rna_df} +\title{Create RNA Count Matrix} +\description{ + Convert a long-format RNA count data frame into a wide-format matrix + suitable for MPRA analysis. +} +\usage{ +create_rna_df(df, id_column_name = "variant_id", allele_column_name = NULL) +} +\arguments{ + \item{df}{A data frame containing RNA counts in long format.} + \item{id_column_name}{Column name for variant identifiers.} + \item{allele_column_name}{Column name for allele values. If NULL, uses "allele" when present.} +} +\value{ + A wide-format data frame with RNA counts per allele. +} +\examples{ +df <- data.frame( + variant_id = c("var1", "var2", "var1", "var2"), + allele = c("ref", "ref", "alt", "alt"), + RNA_A = c(500, 600, 450, 700) +) +create_rna_df(df) +} diff --git a/man/create_var_df.Rd b/man/create_var_df.Rd new file mode 100644 index 0000000..4b1b206 --- /dev/null +++ b/man/create_var_df.Rd @@ -0,0 +1,30 @@ +\name{create_var_df} +\alias{create_var_df} +\title{Create Variant Mapping Data} +\description{ + Map barcode-level data to variant IDs using a mapping data frame that + contains reference and alternate allele sequences. +} +\usage{ +create_var_df(df, map_df) +} +\arguments{ + \item{df}{A data frame containing barcode data with a "name" column.} + \item{map_df}{A data frame with columns "ID", "REF", and "ALT".} +} +\value{ + A data frame with variant IDs and allele assignments. +} +\examples{ +df <- data.frame( + name = c("A", "B", "C"), + Barcode = c("BC1", "BC2", "BC3"), + count = c(10, 20, 30) +) +map_df <- data.frame( + ID = c("var1", "var2", "var3"), + REF = c("A", "B", "D"), + ALT = c("E", "F", "C") +) +create_var_df(df, map_df) +} diff --git a/man/downsample_barcodes.Rd b/man/downsample_barcodes.Rd new file mode 100644 index 0000000..5fb51f9 --- /dev/null +++ b/man/downsample_barcodes.Rd @@ -0,0 +1,27 @@ +\name{downsample_barcodes} +\alias{downsample_barcodes} +\title{Downsample Barcodes} +\description{ + Downsample barcodes to a specified percentile of their distribution to + balance barcode counts across groups. +} +\usage{ +downsample_barcodes(df, id_column_name = "name", percentile = 0.95) +} +\arguments{ + \item{df}{A data frame containing barcode information.} + \item{id_column_name}{Column name for the element or sequence ID.} + \item{percentile}{Percentile threshold used to downsample barcodes.} +} +\value{ + A data frame with downsampled barcodes. +} +\examples{ +df <- data.frame( + name = c("A", "B", "C", "A", "B", "C"), + allele = c("ref", "ref", "alt", "ref", "alt", "alt"), + Barcode = c("BC1", "BC2", "BC3", "BC1", "BC2", "BC3"), + count = c(10, 50, 30, 20, 40, 35) +) +downsample_barcodes(df) +} diff --git a/man/fit_elements.Rd b/man/fit_elements.Rd new file mode 100644 index 0000000..2048169 --- /dev/null +++ b/man/fit_elements.Rd @@ -0,0 +1,30 @@ +\name{fit_elements} +\alias{fit_elements} +\title{Fit Elements with Linear Models} +\description{ + Fit linear models to MPRA data using \code{mpralm}, with optional + endomorphic output. +} +\usage{ +fit_elements(object, normalize = TRUE, block = NULL, endomorphic = FALSE, + normalizeSize = 1e9, plot = FALSE, ...) +} +\arguments{ + \item{object}{An MPRASet object containing DNA and RNA counts.} + \item{normalize}{Logical indicating whether to normalize counts.} + \item{block}{Optional vector or factor specifying replicate blocks.} + \item{endomorphic}{Logical indicating whether to return an MPRASet result.} + \item{normalizeSize}{Library size for normalization.} + \item{plot}{Logical indicating whether to plot the voom precision weights.} + \item{...}{Additional arguments passed to \code{mpralm}.} +} +\value{ + An \code{MArrayLM} object, or an \code{MPRASet} if \code{endomorphic} is TRUE. +} +\examples{ +\dontrun{ + data(BcSetExample) + block_vector <- rep(1:2, length.out = ncol(BcSetExample)) + fit <- fit_elements(BcSetExample, normalize = TRUE, block = block_vector) +} +} diff --git a/man/getLabel.Rd b/man/getLabel.Rd new file mode 100644 index 0000000..1756624 --- /dev/null +++ b/man/getLabel.Rd @@ -0,0 +1,24 @@ +\name{getLabel} +\alias{getLabel} +\title{Get Labels from an MPRASet} +\description{ + Retrieve the label vector stored in the row data of an MPRASet object. +} +\usage{ +getLabel(object) +} +\arguments{ + \item{object}{An MPRASet object.} +} +\value{ + A character vector of labels. +} +\seealso{ + \code{\link{MPRASet}} +} +\examples{ +\dontrun{ + data(BcSetExample) + getLabel(BcSetExample) +} +} diff --git a/man/get_precision_weights.Rd b/man/get_precision_weights.Rd index 1fb590a..5fe09d9 100755 --- a/man/get_precision_weights.Rd +++ b/man/get_precision_weights.Rd @@ -13,16 +13,16 @@ get_precision_weights(logr, design, log_dna, span = 0.4, plot = TRUE, ...) \item{design}{Design matrix specifying comparisons of interest.} \item{log_dna}{Matrix of log2 aggregated DNA counts of the same dimension as \code{logr}.} \item{span}{The smoothing span for \code{lowess} in estimating the - copy number-variance relationship. Default: 0.4.} + copy number-variance relationship. Default: 0.4.} \item{plot}{If \code{TRUE}, plot the copy number-variance relationship.} \item{\dots}{Further arguments to be passed to \code{lmFit} for obtaining residual standard deviations used in estimating the - copy number-variance relationship.} + copy number-variance relationship.} } \details{ Residual standard deviations are computed using the supplied outcomes -and design matrix. The square root of the the residual standard -deviations are modeled as a function of the average log2 aggregated DNA +and design matrix. The square root of the residual standard +deviations is modeled as a function of the average log2 aggregated DNA counts to estimate the copy number-variance relationship. } \value{ @@ -30,11 +30,11 @@ A matrix of precision weights of the same dimension as \code{logr} and \code{log } \references{ Law, Charity W., Yunshun Chen, Wei Shi, and Gordon K. Smyth. - \emph{Voom: Precision Weights Unlock Linear Model Analysis Tools for RNA-Seq Read Counts}. + \emph{Voom: Precision Weights Unlock Linear Model Analysis Tools for RNA-Seq Read Counts}. Genome Biology 2014, 15:R29. \doi{10.1186/gb-2014-15-2-r29}. } \examples{ -data(mpraSetAggExample) +data("mpraSetAggExample", package = "mpra") design <- data.frame(intcpt = 1, episomal = grepl("MT", colnames(mpraSetAggExample))) logr <- compute_logratio(mpraSetAggExample, aggregate = "none") diff --git a/man/mpraSetExample.Rd b/man/mpraSetExample.Rd deleted file mode 100755 index 00ec784..0000000 --- a/man/mpraSetExample.Rd +++ /dev/null @@ -1,56 +0,0 @@ -\name{mpraSetExample} -\alias{mpraSetExample} -\alias{mpraSetAggExample} -\alias{mpraSetAllelicExample} -\docType{data} -\title{ - Example data for the mpra package. -} -\description{ - Example data for the MPRA package. \code{mpraSetExample} and - \code{mpraSetAggExample} come from a study by Inoue et al - that compares episomal and lentiviral MPRA. The former contains - data at the barcode level and the latter contains data - aggregated over barcodes. \code{mpraSetAllelicExample} come from - a study by Tewhey et al that looks at regulatory activity of - allelic versions of thousands of SNPs to follow up on prior - eQTL results. -} -\usage{ -data("mpraSetExample") -data("mpraSetAggExample") -data("mpraSetAllelicExample") -} -\format{ - An \code{MPRASet}. -} -\details{ - \code{mpraSetExample} contains barcode level information for the - study by Inoue et al. - \code{mpraSetAggExample} contains count information from - \code{mpraSetExample} where the counts have been summed over - barcodes for each element. - \code{mpraSetAllelicExample} contains count information for the - Tewhey et al study. The counts have been summed over barcodes - for each element. -} -\source{ - A script for creating the three datasets is supplied in the - \code{scripts} folder of the package. The data are taken from the GEO - submission associated with the paper (see references), specifically - GSE83894 and GSE75661. -} -\references{ - Inoue, Fumitaka, Martin Kircher, Beth Martin, Gregory M. Cooper, - Daniela M. Witten, Michael T. McManus, Nadav Ahituv, and - Jay Shendure. \emph{A Systematic Comparison Reveals Substantial - Differences in Chromosomal versus Episomal Encoding of Enhancer - Activity}. Genome Research 2017, 27(1):38-52. - \doi{10.1101/gr.212092.116}. - - Tewhey R, Kotliar D, Park DS, Liu B, Winnicki S, Reilly SK, Andersen KG, Mikkelsen TS, Lander ES, Schaffner SF, Sabeti PC. \emph{Direct Identification of Hundreds of Expression-Modulating Variants using a Multiplexed Reporter Assay}. Cell 2016, 165:1519-1529. \doi{10.1016/j.cell.2016.04.027}. -} -\examples{ -data(mpraSetAggExample) -} -\keyword{datasets} diff --git a/man/mpra_treat.Rd b/man/mpra_treat.Rd new file mode 100644 index 0000000..b91050d --- /dev/null +++ b/man/mpra_treat.Rd @@ -0,0 +1,30 @@ +\name{mpra_treat} +\alias{mpra_treat} +\title{Apply logFC Threshold for MPRA Results} +\description{ + Apply a moderated t-statistic with a logFC threshold derived from + negative controls. +} +\usage{ +mpra_treat(fit, percentile = 0.975, neg_label, trend = FALSE, + robust = FALSE, winsor.tail.p = c(0.05, 0.1)) +} +\arguments{ + \item{fit}{An \code{MArrayLM} or \code{MPRASet} object.} + \item{percentile}{Percentile of negative controls used as threshold.} + \item{neg_label}{Label for negative control elements.} + \item{trend}{Logical indicating if a trend is fitted.} + \item{robust}{Logical indicating robust variance estimation.} + \item{winsor.tail.p}{Tail probabilities for winsorization.} +} +\value{ + A data frame containing moderated t-statistics and adjusted p-values. +} +\examples{ +\dontrun{ + data(BcSetExample) + block_vector <- rep(1:2, length.out = ncol(BcSetExample)) + fit <- fit_elements(BcSetExample, normalize = TRUE, block = block_vector) + mpra_treat(fit, percentile = 0.95, neg_label = "control_name") +} +} diff --git a/man/mpralm.Rd b/man/mpralm.Rd index e2c3163..19d380e 100755 --- a/man/mpralm.Rd +++ b/man/mpralm.Rd @@ -5,15 +5,16 @@ Fits weighted linear models to test for differential activity in MPRA data. } \usage{ -mpralm(object, design, aggregate = c("mean", "sum", "none"), normalize = TRUE, +mpralm(object, design, aggregate = c("mean", "sum", "none"), + normalize = TRUE, normalizeSize = 10e6, block = NULL, model_type = c("indep_groups", "corr_groups"), - plot = TRUE, ...) + plot = TRUE, endomorphic = FALSE, ...) } \arguments{ \item{object}{An object of class \code{MPRASet}.} - \item{design}{Design matrix specifying comparisons of interest. The - number of rows of this matrix should equal the number of columns - in \code{object}. The number of columns in this design matrix has + \item{design}{Design matrix specifying comparisons of interest. The + number of rows of this matrix should equal the number of columns + in \code{object}. The number of columns in this design matrix has no constraints and should correspond to the experimental design.} \item{aggregate}{Aggregation method over barcodes: \code{"mean"} to use the average of barcode-specific log ratios, \code{"sum"} to use @@ -21,16 +22,20 @@ mpralm(object, design, aggregate = c("mean", "sum", "none"), normalize = TRUE, no aggregation (counts have already been summarized over barcodes).} \item{normalize}{If \code{TRUE}, perform total count normalization before model fitting.} + \item{normalizeSize}{If normalizing, the target library size (default + is 10e6).} \item{block}{A vector giving the sample designations of the columns of \code{object}. The default, \code{NULL}, indicates that all columns - are separate samples.} + are separate samples.} \item{model_type}{Indicates whether an unpaired model fit (\code{"indep_groups"}) or a paired mixed-model fit ((\code{"corr_groups"})) should be used.} \item{plot}{If \code{TRUE}, plot the mean-variance relationship.} + \item{endomorphic}{If \code{TRUE}, return the same class as the input, + i.e. an object of class \code{MPRASet}.} \item{\dots}{Further arguments to be passed to \code{lmFit} for obtaining residual standard deviations used in estimating the - mean-variance relationship.} + mean-variance relationship.} } \details{ Using \code{method_type = "corr_groups"} use the @@ -39,30 +44,35 @@ estimate the intra-replicate correlation of log-ratio values. } \value{ An object of class \code{MArrayLM} resulting from the \code{eBayes} -function. +function. + +If \code{endomorphic = TRUE}, then an \code{MPRASet} is returned, +with the output of \code{topTable} added to the \code{rowData}, +and the \code{MArrayLM} results added as an attribute +\code{"MArrayLM"}. } \references{ Myint, Leslie, Dimitrios G. Avramopoulos, Loyal A. Goff, and Kasper D. Hansen. \emph{Linear models enable powerful differential activity analysis in - massively parallel reporter assays}. + massively parallel reporter assays}. BMC Genomics 2019, 209. \doi{10.1186/s12864-019-5556-x}. Law, Charity W., Yunshun Chen, Wei Shi, and Gordon K. Smyth. - \emph{Voom: Precision Weights Unlock Linear Model Analysis Tools for RNA-Seq Read Counts}. + \emph{Voom: Precision Weights Unlock Linear Model Analysis Tools for RNA-Seq Read Counts}. Genome Biology 2014, 15:R29. \doi{10.1186/gb-2014-15-2-r29}. - Smyth, Gordon K., Jo\"{e}lle Michaud, and Hamish S. Scott. + Smyth, Gordon K., Joelle Michaud, and Hamish S. Scott. \emph{Use of within-Array Replicate Spots for Assessing Differential - Expression in Microarray Experiments.} + Expression in Microarray Experiments.} Bioinformatics 2005, 21 (9): 2067-75. \doi{10.1093/bioinformatics/bti270}. } \examples{ -data(mpraSetAggExample) +data(mpraSetAggExample, package = "mpra") design <- data.frame(intcpt = 1, episomal = grepl("MT", colnames(mpraSetAggExample))) mpralm_fit <- mpralm(object = mpraSetAggExample, design = design, - aggregate = "none", normalize = TRUE, + aggregate = "none", normalize = TRUE, model_type = "indep_groups", plot = FALSE) toptab <- topTable(mpralm_fit, coef = 2, number = Inf) head(toptab) diff --git a/man/normalize_counts.Rd b/man/normalize_counts.Rd index c03e854..9aaee87 100755 --- a/man/normalize_counts.Rd +++ b/man/normalize_counts.Rd @@ -5,13 +5,15 @@ Total count normalization of DNA and RNA counts. } \usage{ -normalize_counts(object, block = NULL) +normalize_counts(object, normalizeSize = 1e+07, block = NULL) } \arguments{ \item{object}{An object of class \code{MPRASet}.} + \item{normalizeSize}{A numeric value specifying the total count to which + all samples should be normalized. Default is \code{1e+07} (10 million).} \item{block}{A vector giving the sample designations of the columns of \code{object}. The default, \code{NULL}, indicates that all columns - are separate samples.} + are separate samples.} } \details{ \code{block} is a vector that is used when the columns of the @@ -21,13 +23,13 @@ allelic versions of an element. In this case, the first $s$ columns of samples. The second $s$ columns give the counts for the alternative allele measured in the same $s$ samples. With 3 samples, \code{block} would be \code{c(1,2,3,1,2,3)}. All columns are scaled to have 10 -million counts. +million counts. } \value{ An object of class \code{MPRASet} with the total count-normalized DNA and RNA counts. } \examples{ -data(mpraSetAggExample) -mpraSetAggExample <- normalize_counts(mpraSetAggExample) +data("mpraSetAggExample", package = "mpra") +mpraSetAggExample <- normalize_counts(mpraSetAggExample, ) } diff --git a/man/plot_groups.Rd b/man/plot_groups.Rd new file mode 100644 index 0000000..71345f0 --- /dev/null +++ b/man/plot_groups.Rd @@ -0,0 +1,27 @@ +\name{plot_groups} +\alias{plot_groups} +\title{Plot logFC Distributions by Group} +\description{ + Plot the distribution of logFC values for MPRA results, optionally + highlighting negative control percentiles. +} +\usage{ +plot_groups(object, percentile = NULL, neg_label = NULL, test_label = NULL) +} +\arguments{ + \item{object}{An MPRASet object or a data frame with \code{logFC} values.} + \item{percentile}{Percentile for negative control thresholds.} + \item{neg_label}{Label for negative control elements.} + \item{test_label}{Label for test elements to subset.} +} +\value{ + A \code{ggplot} object. +} +\examples{ +\dontrun{ + data(BcSetExample) + block_vector <- rep(1:2, length.out = ncol(BcSetExample)) + fit <- fit_elements(BcSetExample, normalize = TRUE, block = block_vector) + plot_groups(fit, percentile = 0.95, neg_label = "control_name") +} +} diff --git a/tests/runTests.R b/tests/runTests.R deleted file mode 100755 index 2ccf2bc..0000000 --- a/tests/runTests.R +++ /dev/null @@ -1,6 +0,0 @@ -library(testthat) -library(usethis) -library(devtools) -library(here) - -use_testthat() \ No newline at end of file diff --git a/tests/testthat.R b/tests/testthat.R index 69f02a7..af7a007 100644 --- a/tests/testthat.R +++ b/tests/testthat.R @@ -7,6 +7,6 @@ # * https://testthat.r-lib.org/articles/special-files.html library(testthat) -library(mpra) +library(BCalm) -test_check("mpra") +test_check("BCalm") diff --git a/tests/testthat/test-analyze.R b/tests/testthat/test-analyze.R index 0e3a947..76f465c 100644 --- a/tests/testthat/test-analyze.R +++ b/tests/testthat/test-analyze.R @@ -1,4 +1,6 @@ -##Data preparation +library(BCalm) + +## Data preparation # Controlls without effect and tests with half positive half negative effect dna <- as.data.frame(matrix(rnorm(20 * 10, mean = 10, sd = sqrt(0.5)), nrow = 20, ncol = 10)) rownames(dna) <- paste0("label_", sprintf("%06d", 1:20)) @@ -15,43 +17,32 @@ colnames(rna) <- colnames(dna) labels_vec <- c(rep("test_name", 10), rep("control_name", 10)) names(labels_vec) <- paste0("label_", sprintf("%06d", 1:20)) -mpra <- MPRASet(DNA = dna, RNA = rna, eid = rownames(dna), barcode = NULL, label=labels_vec) +mpra <- MPRASet(DNA = dna, RNA = rna, eid = rownames(dna), barcode = NULL, label = labels_vec) nr_reps <- 2 -bcs <- ncol(dna)/ nr_reps +bcs <- ncol(dna) / nr_reps block_vector <- rep(1:nr_reps, each = bcs) -mpralm_fit <- fit_elements(object = mpra, normalize=TRUE, block = block_vector) +mpralm_fit <- fit_elements(object = mpra, normalize = TRUE, block = block_vector) # forcing the output to be MPRASEt as well mpralm_fit_endo <- fit_elements(object = mpra, normalize = TRUE, block = block_vector, endomorphic = TRUE) # with different percentiles -result_95 <- mpra_treat(mpralm_fit, percentile = 0.95, neg_label="control_name", test_label="test_name", side="both") -result_50 <- mpra_treat(mpralm_fit, percentile = 0.50, neg_label="control_name", test_label="test_name", side="both") - -# with different side options -result_right <- mpra_treat(mpralm_fit, percentile = 0.95, neg_label="control_name", test_label="test_name", side = "right") -result_left <- mpra_treat(mpralm_fit, percentile = 0.95, neg_label="control_name", test_label="test_name", side = "left") +result_95 <- mpra_treat(mpralm_fit, percentile = 0.95, neg_label = "control_name") +result_50 <- mpra_treat(mpralm_fit, percentile = 0.50, neg_label = "control_name") -#simple result to check output structure -result <- mpra_treat(mpralm_fit, percentile = 0.95, neg_label="control_name", test_label="test_name", side="both") -result_endo <- mpra_treat(mpralm_fit_endo, percentile = 0.95, neg_label = "control_name", test_label = "test_name", side = "both") +# simple result to check output structure +result <- mpra_treat(mpralm_fit, percentile = 0.95, neg_label = "control_name") +result_endo <- mpra_treat(mpralm_fit_endo, percentile = 0.95, neg_label = "control_name") ## testthat calls test_that("mpra_treat", { - expect_error(mpra_treat(mpralm_fit, percentile = 0.95, neg_label="neg_name", test_label="test_name", side="both")) - expect_error(mpra_treat(mpralm_fit, percentile = 0.95, neg_label="control_name", test_label="name", side="both")) - - expect_true(nrow(result_95) > 0) - expect_true(nrow(result_50) > 0) + expect_error(mpra_treat(mpralm_fit, percentile = 0.95, neg_label = "neg_name")) - expect_true(all(result_right$logFC > 0)) - expect_true(all(result_left$logFC < 0)) + expect_true(nrow(result_95) > 0) + expect_true(nrow(result_50) > 0) - expect_true(nrow(result) > 0) - expect_true("logFC" %in% colnames(result)) - expect_true("AveExpr" %in% colnames(result)) + expect_true(nrow(result) > 0) - expect_equal(result, result_endo) - expect_error(mpra_treat(mpra)) -}) \ No newline at end of file + expect_error(mpra_treat(mpra)) +}) diff --git a/tests/testthat/test-fit.R b/tests/testthat/test-fit.R index 93be86a..e679819 100644 --- a/tests/testthat/test-fit.R +++ b/tests/testthat/test-fit.R @@ -1,4 +1,6 @@ -##Data preparation for tests +library(BCalm) + +## Data preparation for tests # compute_logratio dna <- as.data.frame(matrix(10, nrow = 10, ncol = 10)) @@ -10,20 +12,25 @@ rownames(rna) <- paste0("name_", sprintf("%06d", 1:10)) colnames(rna) <- paste0("sample_count_", rep(1:2, each = 5), "_bc_", rep(1:5, 2)) # first set with no effect -labels_vec <- c(rep("test_label_1", 5), rep("test_label_2",5)) -names(labels_vec) <- rownames(dna) -mpra_log_1 <- MPRASet(DNA = dna, RNA = dna, eid = row.names(dna), barcode = NULL, label=labels_vec) +labels_vec <- c(rep("test_label_1", 5), rep("test_label_2", 5)) +names(labels_vec) <- rownames(dna) +mpra_log_1 <- MPRASet(DNA = dna, RNA = dna, eid = row.names(dna), barcode = NULL, label = labels_vec) # second set with missing value in first cell dna_log_2 <- dna dna_log_2["name_000001", "sample_count_1_bc_1"] <- NA -mpra_log_2 <- MPRASet(DNA = dna_log_2, RNA = dna, eid = row.names(dna), barcode = NULL, label=labels_vec) +mpra_log_2 <- MPRASet(DNA = dna_log_2, RNA = dna, eid = row.names(dna), barcode = NULL, label = labels_vec) + +# block vector for replicates +nr_reps <- 2 +bcs <- ncol(dna) / nr_reps +block_vector <- rep(1:nr_reps, each = bcs) # to test outcome type endometric == TRUE -fit_MPRA_Set <- fit_elements(object = mpra_log_2, normalize=TRUE, block = block_vector, endomorphic = TRUE) -fit_MArrayLM <- fit_elements(object = mpra_log_2, normalize=TRUE, block = block_vector) +fit_MPRA_Set <- fit_elements(object = mpra_log_2, normalize = TRUE, block = block_vector, endomorphic = TRUE) +fit_MArrayLM <- fit_elements(object = mpra_log_2, normalize = TRUE, block = block_vector) -#expected results +# expected results res_log_1 <- as.data.frame(matrix(0, nrow = length(dna), ncol = length(dna))) rownames(res_log_1) <- paste0("name_", sprintf("%06d", 1:10)) colnames(res_log_1) <- paste0("sample_count_", rep(1:2, each = 5), "_bc_", rep(1:5, 2)) @@ -33,11 +40,15 @@ res_log_2[1, 1] <- NA ## testthat calls test_that("compute_logratio", { - expect_equal(compute_logratio(mpra_log_1, aggregate="none"), res_log_1) - expect_equal(compute_logratio(mpra_log_2, aggregate="none"), res_log_2) + expect_equal(compute_logratio(mpra_log_1, aggregate = "none"), res_log_1) + expect_equal(compute_logratio(mpra_log_2, aggregate = "none"), res_log_2) }) test_that("fit_elements", { - expect_equal(class(fit_MPRA_Set)[1], "MPRASet") - expect_equal(class(fit_MArrayLM)[1], "MArrayLM") -}) \ No newline at end of file + if ("endomorphic" %in% names(formals(mpralm))) { + expect_equal(class(fit_MPRA_Set)[1], "MPRASet") + } else { + expect_equal(class(fit_MPRA_Set)[1], "MArrayLM") + } + expect_equal(class(fit_MArrayLM)[1], "MArrayLM") +}) diff --git a/tests/testthat/test-preprocess.R b/tests/testthat/test-preprocess.R index c2d1d1f..2a35bb7 100644 --- a/tests/testthat/test-preprocess.R +++ b/tests/testthat/test-preprocess.R @@ -1,126 +1,125 @@ -library(mpra) +library(BCalm) library(testthat) -library(usethis) -library(devtools) library(tidyr) library(dplyr) -##Data preparation for tests +## Data preparation for tests -#Downsample_barcodes +# Downsample_barcodes empty_df <- data.frame( - name = character(), - allele = character(), - Barcode = character(), - count = numeric() + name = character(), + allele = character(), + Barcode = character(), + count = numeric() ) nan_df <- data.frame( - name = c("A", "B", NA, "D"), - allele = c("ref", NA, "alt", "ref"), - Barcode = c("BC1", "BC2", NA, "BC4"), - count = c(10, NA, 5, NA) + name = c("A", "B", NA, "D"), + allele = c("ref", NA, "alt", "ref"), + Barcode = c("BC1", "BC2", NA, "BC4"), + count = c(10, NA, 5, NA) ) single_column_df <- data.frame( - name = c("A", "B", "C", "D") + name = c("A", "B", "C", "D") ) -#create_var_df +# create_var_df df_var_1 <- data.frame( - name = c("A", "B", "C"), - Barcode = c("BC1", "BC2", "BC3"), - count = c(10, 20, 30) + name = c("A", "B", "C"), + Barcode = c("BC1", "BC2", "BC3"), + count = c(10, 20, 30) ) map_df_var_1 <- data.frame( - ID = c("var1", "var2", "var3", "var4"), - REF = c("A", "A", "B", "D"), - ALT = c("E", "F", "G", "C") + ID = c("var1", "var2", "var3", "var4"), + REF = c("A", "A", "B", "D"), + ALT = c("E", "F", "G", "C") ) res_var_1 <- data.frame( - variant_id = c("var1", "var2", "var3", "var4"), - allele = c("ref", "ref", "ref", "alt"), - Barcode = c("BC1", "BC1", "BC2", "BC3"), - count = c(10, 10, 20, 30) + variant_id = c("var1", "var2", "var3", "var4"), + allele = c("ref", "ref", "ref", "alt"), + Barcode = c("BC1", "BC1", "BC2", "BC3"), + count = c(10, 10, 20, 30) ) map_df_var_2 <- data.frame( - ID = c("var1", "var2", "var3", "var4"), - REF = c("U", "V", "W", "X"), - ALT = c("Y", "Z", "Q", "R") + ID = c("var1", "var2", "var3", "var4"), + REF = c("U", "V", "W", "X"), + ALT = c("Y", "Z", "Q", "R") ) res_var_2 <- data.frame( - variant_id = character(), - allele = character(), - Barcode = character(), - count = numeric() + variant_id = character(), + allele = character(), + Barcode = character(), + count = numeric() ) -#create_dna_df +# create_dna_df df_dna_1 <- data.frame( - variant_id = c("var1", "var2"), - allele = c("ref", "alt"), - DNA_A = c(100, 200), - DNA_B = c(300, 400)) + variant_id = c("var1", "var2"), + allele = c("ref", "alt"), + DNA_A = c(100, 200), + DNA_B = c(300, 400) +) res_dna_1 <- data.frame( - sample_A_bc1_ref = c(100, NA), - sample_A_bc1_alt = c(NA, 200), - sample_B_bc1_ref = c(300, NA), - sample_B_bc1_alt = c(NA, 400), - row.names = c("var1", "var2")) + sample_A_bc1_ref = c(100, NA), + sample_A_bc1_alt = c(NA, 200), + sample_B_bc1_ref = c(300, NA), + sample_B_bc1_alt = c(NA, 400), + row.names = c("var1", "var2") +) df_dna_2 <- data.frame( - variant_id = c("var1", "var2"), - custom_allele = c("ref", "alt"), - DNA_A = c(100, 200), - DNA_B = c(300, 400)) + variant_id = c("var1", "var2"), + custom_allele = c("ref", "alt"), + DNA_A = c(100, 200), + DNA_B = c(300, 400) +) res_dna_2 <- data.frame( - sample_A_bc1_ref = c(100, NA), - sample_A_bc1_alt = c(NA, 200), - sample_B_bc1_ref = c(300, NA), - sample_B_bc1_alt = c(NA, 400), - row.names = c("var1", "var2")) + sample_A_bc1_ref = c(100, NA), + sample_A_bc1_alt = c(NA, 200), + sample_B_bc1_ref = c(300, NA), + sample_B_bc1_alt = c(NA, 400), + row.names = c("var1", "var2") +) df_dna_3 <- data.frame( - DNA_A = c(100, 200), - DNA_B = c(300, 400)) + DNA_A = c(100, 200), + DNA_B = c(300, 400) +) df_dna_4 <- data.frame( - variant_id = character(), - DNA_A = numeric(), - DNA_B = numeric()) + variant_id = character(), + DNA_A = numeric(), + DNA_B = numeric() +) df_dna_5 <- data.frame( - name = c("var1", "var2"), - allele = c("ref", "alt"), - DNA_A = c(100, 200)) + name = c("var1", "var2"), + allele = c("ref", "alt"), + DNA_A = c(100, 200) +) -##testthat calls +## testthat calls test_that("downsample_barcodes", { - - expect_equal(as.data.frame(downsample_barcodes(empty_df)), empty_df) - expect_equal(as.data.frame(downsample_barcodes(nan_df)), nan_df) - expect_true(is.data.frame(downsample_barcodes(empty_df))) - + expect_equal(as.data.frame(downsample_barcodes(empty_df)), empty_df) + expect_equal(as.data.frame(downsample_barcodes(nan_df)), nan_df) + expect_true(is.data.frame(downsample_barcodes(empty_df))) }) test_that("create_var_df", { - - expect_equal(create_var_df(df_var_1,map_df_var_1), res_var_1) - expect_error(create_var_df(df_var_1,map_df_var_2)) - + expect_equal(create_var_df(df_var_1, map_df_var_1), res_var_1) + expect_error(create_var_df(df_var_1, map_df_var_2)) }) test_that("create_dna_df", { - - expect_equal(create_dna_df(df_dna_1), res_dna_1) - expect_equal(create_dna_df(df_dna_2, allele_column_name = "custom_allele"), res_dna_2) - expect_error(create_dna_df(df_dna_3)) - expect_equal(create_dna_df(df_dna_4), data.frame(row.names = character())) - expect_error(create_dna_df(df_dna_5, id_column_name = "variant_id")) - + expect_equal(create_dna_df(df_dna_1), res_dna_1) + expect_equal(create_dna_df(df_dna_2, allele_column_name = "custom_allele"), res_dna_2) + expect_error(create_dna_df(df_dna_3)) + expect_equal(create_dna_df(df_dna_4), data.frame(row.names = character())) + expect_error(create_dna_df(df_dna_5, id_column_name = "variant_id")) }) diff --git a/vignettes/BCalm.Rmd b/vignettes/BCalm.Rmd index 2173eca..805a34b 100644 --- a/vignettes/BCalm.Rmd +++ b/vignettes/BCalm.Rmd @@ -1,178 +1,181 @@ ---- -title: "BCalm and analyze your MPRA data" -author: "Pia Keukeleire" -date: "`r format(Sys.time(), '%B %d, %Y')`" -package: "`r Githubpkg('kircherlab/BCalm')` (v0.1.0)" -bibliography: bcalm.bib -abstract: > - A guide on how to use `BCalm` for analyzing massively parallel reporter assays (MPRA) data. -vignette: > - %\VignetteIndexEntry{BCalm: A User's Guide} - %\VignetteEngine{knitr::rmarkdown} - %\VignetteEncoding{UTF-8} -output: - BiocStyle::html_document ---- -```{r setup, include=FALSE} -knitr::opts_chunk$set(warning = FALSE, message = FALSE, crop=NULL) -``` - -```{r loading packages, echo=TRUE} -library(BCalm) -library(dplyr) -library(ggplot2) -library(kableExtra) # for visually appealing tables -``` - -# Introduction - -The `r Githubpkg('kircherlab/BCalm')` package provides a framework for analyzing data from Massively Parallel Reporter Assays (MPRA) and is built on top of the mpra package. BCalm adapts the existing mpralm method but enhances it by modeling individual barcode counts rather than aggregating counts per sequence. Furthermore, the package includes a set of pre-processing functions and plotting capabilities, facilitating the visualization and interpretation of results. BCalm is more robust to outlier MPRA counts. Variant and element analysis are both shown below together with a significance test of elements against a control group (e.g. negative controls). - -## Citing BCalm -The BCalm package is still unpublished, citing details will be provided later. When using BCalm, please cite the `mpra` package [@mpralm] and the limma-voom framework [@voom]. - -## Additional information for the installation -The package is currently available on GitHub and can be installed using remotes [@remotes] or devtools [@devtools]. -The package requires R >= 3.5, <= 4.4.0. -If you have any trouble with the provided package feel free to let us know by creating an issue directly in the [BCalm GitHub repository](https://github.com/kircherlab/BCalm). -To display the vignette correctly, the `kableExtra` and `ggplot2` packages are required. - -# Preprocessing data - -The first dataframe contains as small subset of a lentiMPRA dataset performed within HepG2 cells with three technical replicates (IGVF accession identifier: IGVFSM9009DVDG). Sequences tested in this experiment aim to capture variant effects across tens of thousands of candidate cis-regulatory element (cCRE) sequences of 200 base pair (bp) length. -The input files used here were obtained from `r Githubpkg('kircherlab/MPRAsnakeflow')`, a Snakemake workflow produced as part of the Impact of Genomic Variation on Function (IGVF) Consortium. MPRAsnakeflow is a comprehensive pipeline which performs both the assignment of barcodes to the designed oligos and the preparation of count tables of DNA and RNA counts based on the observed number of barcodes within the targeted DNA and RNA sequencing (modified from [@Gordon2020]). - -```{r First dataset} -data("BcSetExample") -nr_reps = 3 -# show the data -kable(head(BcSetExample), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%") -``` - -In general, any sequence can be tested using an MPRA. Possible analyses can be differentiated by whether they compare the activity of different conditions of the same region, such as variant testing, or whether they compare the activities of different regions. -For element testing, the tested sequences in this vignette are compared to a group of negative control sequences (known to have low activity in HepG2) and the sequences to be tested. -We show the usage of BCalm on a variant dataset as well as an element dataset in this vignette. First, we show how to correctly preprocess the data. - -## Variant testing - -To prepare data for variant testing, we use the `create_var_df` function from BCalm. This function requires a mapping dataframe with information linking each reference allele to its corresponding alternative allele. Here, we use `MapExample`, a dataframe containing three essential columns: `ID`, `REF`, and `ALT`. This setup provides the necessary reference and alternative allele data to enable variant analysis. -```{r Variant Map} -# load the variant map -data("MapExample") -# show the data -kable(head(MapExample), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%") - -# create the variant dataframe by adding the variant ID to the DNA and RNA counts -var_df <- create_var_df(BcSetExample, MapExample) -# show the data -kable(head(var_df), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%") - -``` - -Optionally, downsampling can be performed to our dataframe `var_df` now. The function `downsample_barcodes` allows users to reduce the number of barcodes while retaining a representative subset. This way, the number of barcodes of oligos with many barcodes are reduced, which simplifies the data handling and reduces the sparseness of the data table (i.e. increased speed and reduced memory requirements). The degree of downsampling can be controlled by adjusting the sampling rate, which is expressed as a percentile value `percentile`, with a default of 0.975. -The `id_column_name` argument specifies the column in the input data frame that contains the unique identifiers for each variant (here `variant_id`). - -```{r Variant Downsampling} -var_df <- downsample_barcodes(var_df, id_column_name="variant_id") -``` - -After downsampling the barcode counts in our dataset, we can prepare the data for analysis using the `create_dna_df` and `create_rna_df` functions. -Only six rows are shown here (original size of the dataframe 996 × 474). -```{r Creating dna dataframe from var_df} -dna_var <- create_dna_df(var_df) -kable(head(dna_var), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%") -``` -```{r Creating rna dataframe from var_df} -rna_var <- create_rna_df(var_df) -kable(head(rna_var), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%") -``` -Now we create the MPRAset used as input to BCalm. - -```{r Variant MPRASet} -# create the variant specific MPRAset -BcVariantMPRASetExample <- MPRASet(DNA = dna_var, RNA = rna_var, eid = row.names(dna_var), barcode = NULL) -``` - -## Element testing - -The dataset is the same one we used above, but we have to add labels to the data to distinguish between control and test groups, thus allowing us to easily identify and compare these different groups in the analysis later. -```{r LabelsVec} -data(LabelExample) -table(LabelExample) -kable(head(LabelExample), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%") -``` - -Once again, we perform downsampling on this dataset using the `downsample_barcodes` function. -```{r Downsampling} -elem_df <- downsample_barcodes(BcSetExample) -``` - -As before, we use `create_dna_df` and `create_rna_df` to format the data correctly for the `MPRASet` function. However, this time we specify `id_column_name = "name"` since the default, `id_column_name = "variant_id"`, does not match our data format. -```{r Creating dataframes} -dna_elem <- create_dna_df(elem_df, id_column_name="name") -rna_elem <- create_rna_df(elem_df, id_column_name="name") -``` - -To compare between test and control, we need to add the labels to the MPRASet. - -```{r Element MPRASet} -BcLabelMPRASetExample <- MPRASet(DNA = dna_elem, RNA = rna_elem, eid = row.names(dna_elem), barcode = NULL, label=LabelExample) -``` - -With the data prepared and preprocessed, we now have the foundation to conduct our analysis. - -# Analysis -In this section we get to see the usage of the `mpralm` and the `fit_elements` functions. We take the `MPRASet` created in the preprocessing chapter. BCalm allows us to analyze individual barcode counts as separate samples, capturing additional data variation and potentially increasing statistical power. - -## Variant Analysis -We will start with variant testing. In order to achieve this, we employ the `mpralm` function. Which column belongs to which replicate is described in a blocking vector, also used to normalize the counts per replicate. -The design matrix gives information which count comes from the reference and which from the alternative allele. - -```{r Fit Variants} -bcs <- ncol(dna_var) / nr_reps -design <- data.frame(intcpt = 1, alt = grepl("alt", colnames(BcVariantMPRASetExample))) -block_vector <- rep(1:nr_reps, each=bcs) -mpralm_fit_var <- mpralm(object = BcVariantMPRASetExample, design = design, aggregate = "none", normalize = TRUE, model_type = "corr_groups", plot = FALSE, block = block_vector) - -top_var <- topTable(mpralm_fit_var, coef = 2, number = Inf) -kable(head(rna_var), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%") -``` - -```{r Volcano Plot} -ggplot(top_var, aes(x = logFC, y = -log10(P.Value))) + - geom_point(alpha = 0.6) -``` - -## Element Analysis - -BCalm provides the function `fit_elements`. It takes the `MPRASet` object as input and applies the statistical modeling. Again the `block_vector` gives reference which barcode belongs to which replicate. -We again set `normalize = TRUE` to perform total count normalization on the RNA and DNA libraries. - -```{r Fit elements, fig.width=8, fig.height=4} -bcs <- ncol(dna_elem) / nr_reps -block_vector <- rep(1:nr_reps, each=bcs) -mpralm_fit_elem <- fit_elements(object = BcLabelMPRASetExample, normalize=TRUE, block = block_vector, plot = FALSE) -``` - -### Visualisation and results -In this section, we will examine the visualization of our analysis results using the `mpra_treat` and `plot_groups` functions. -To visualize our results, we utilize the `plot_groups` function, which allows us to compare logratios for each group. We use the results from `fit_elements` above. As negative controls we use `"control"` and as test `"tested"`. - -```{r Visualization, fig=TRUE, fig.width=8, fig.height=4, warning=FALSE} -plot_groups(mpralm_fit_elem, 0.975, neg_label="control", test_label="tested") -``` - -The `mpra_treat()` function reimplements the `treat()` function from the limma package. This function performs a t-test with a specified threshold, making it especially useful for identifying elements with significant differential activity in MPRA data. -```{r MPRA treat} -treat <- mpra_treat(mpralm_fit_elem, 0.975, neg_label="control") -result <- topTreat(treat, coef = 1, number = Inf) -head(result) -``` - -# Session Info - -```{r sessionInfo, results='asis', echo=FALSE} -sessionInfo() -``` - -# References +--- +title: "BCalm and analyze your MPRA data" +author: "Pia Keukeleire" +date: "`r format(Sys.time(), '%B %d, %Y')`" +version: "`r Githubpkg('kircherlab/BCalm')` (v`r packageVersion('BCalm')`)" +bibliography: bcalm.bib +abstract: > + A guide on how to use `BCalm` for analyzing massively parallel reporter assays (MPRA) data. +vignette: > + %\VignetteIndexEntry{BCalm: A User's Guide} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +output: + BiocStyle::html_document +--- +```{r setup, include=FALSE} +knitr::opts_chunk$set(warning = FALSE, message = FALSE, crop=NULL) +``` + +```{r loading packages, echo=TRUE} +library(BCalm) +library(dplyr) +library(ggplot2) +library(kableExtra) # for visually appealing tables +``` + +# Introduction + +The `r Githubpkg('kircherlab/BCalm')` package provides a framework for analyzing data from Massively Parallel Reporter Assays (MPRA) and is built on top of the mpra package. BCalm adapts the existing mpralm method but enhances it by modeling individual barcode counts rather than aggregating counts per sequence. Furthermore, the package includes a set of pre-processing functions and plotting capabilities, facilitating the visualization and interpretation of results. BCalm is more robust to outlier MPRA counts. Variant and element analysis are both shown below together with a significance test of elements against a control group (e.g. negative controls). + +# Citing BCalm +To cite the BCalm package please use [@bcalm]. When using BCalm you can additionally cite the `mpra` package [@mpralm] and the limma-voom framework [@voom]. + +# Installation +The BCalm package is available via bioconda (called `r-bcalm`) and can be installed via `conda install -c bioconda r-bcalm`). + +## Additional information for installation +The package is also available on GitHub and can be installed using remotes [@remotes] or devtools [@devtools]. +The package requires R >= 3.5, <= 4.4.0. +If you have any trouble with the provided package, feel free to let us know by creating an issue directly in the [BCalm GitHub repository](https://github.com/kircherlab/BCalm). +To display the vignette correctly, the `kableExtra` and `ggplot2` packages are required. + +# Preprocessing data + +The first dataframe contains as small subset of a lentiMPRA dataset performed within HepG2 cells with three technical replicates (IGVF accession identifier: IGVFSM9009DVDG). Sequences tested in this experiment aim to capture variant effects across tens of thousands of candidate cis-regulatory element (cCRE) sequences of 200 base pair (bp) length. +The input files used here were obtained from `r Githubpkg('kircherlab/MPRAsnakeflow')`, a Snakemake workflow produced as part of the Impact of Genomic Variation on Function (IGVF) Consortium. MPRAsnakeflow is a comprehensive pipeline which performs both the assignment of barcodes to the designed oligos and the preparation of count tables of DNA and RNA counts based on the observed number of barcodes within the targeted DNA and RNA sequencing (modified from [@Gordon2020]). + +```{r First dataset} +data("BcSetExample") +nr_reps = 3 +# show the data +kable(head(BcSetExample), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%") +``` + +In general, any sequence can be tested using an MPRA. Possible analyses can be differentiated by whether they compare the activity of different conditions of the same region, such as variant testing, or whether they compare the activities of different regions. +For element testing, the tested sequences in this vignette are compared to a group of negative control sequences (known to have low activity in HepG2) and the sequences to be tested. +We show the usage of BCalm on a variant dataset as well as an element dataset in this vignette. First, we show how to correctly preprocess the data. + +## Variant testing + +To prepare data for variant testing, we use the `create_var_df` function from BCalm. This function requires a mapping dataframe with information linking each reference allele to its corresponding alternative allele. Here, we use `MapExample`, a dataframe containing three essential columns: `ID`, `REF`, and `ALT`. This setup provides the necessary reference and alternative allele data to enable variant analysis. +```{r Variant Map} +# load the variant map +data("MapExample") +# show the data +kable(head(MapExample), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%") + +# create the variant dataframe by adding the variant ID to the DNA and RNA counts +var_df <- create_var_df(BcSetExample, MapExample) +# show the data +kable(head(var_df), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%") + +``` + +Optionally, downsampling can be performed on our data frame `var_df` now. The function `downsample_barcodes` allows users to reduce the number of barcodes while retaining a representative subset. This way, the number of barcodes for oligos with many barcodes is reduced, which simplifies data handling and reduces the sparseness of the data table (i.e., increased speed and reduced memory requirements). The degree of downsampling can be controlled by adjusting the sampling rate, which is expressed as a percentile value `percentile`, with a default of 0.95. +The `id_column_name` argument specifies the column in the input data frame that contains the unique identifiers for each variant (here `variant_id`). + +```{r Variant Downsampling} +var_df <- downsample_barcodes(var_df, id_column_name="variant_id") +``` + +After downsampling the barcode counts in our dataset, we can prepare the data for analysis using the `create_dna_df` and `create_rna_df` functions. +Only six rows are shown here (original size of the dataframe 996 × 474). +```{r Creating dna dataframe from var_df} +dna_var <- create_dna_df(var_df) +kable(head(dna_var), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%") +``` +```{r Creating rna dataframe from var_df} +rna_var <- create_rna_df(var_df) +kable(head(rna_var), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%") +``` +Now we create the MPRAset used as input to BCalm. + +```{r Variant MPRASet} +# create the variant specific MPRAset +BcVariantMPRASetExample <- mpra::MPRASet(DNA = dna_var, RNA = rna_var, eid = row.names(dna_var), barcode = NULL) +``` + +## Element testing + +The dataset is the same one we used above, but we have to add labels to the data to distinguish between control and test groups, thus allowing us to easily identify and compare these different groups in the analysis later. +```{r LabelsVec} +data(LabelExample) +table(LabelExample) +kable(head(LabelExample), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%") +``` + +Once again, we perform downsampling on this dataset using the `downsample_barcodes` function. +```{r Downsampling} +elem_df <- downsample_barcodes(BcSetExample) +``` + +As before, we use `create_dna_df` and `create_rna_df` to format the data correctly for the `MPRASet` function. However, this time we specify `id_column_name = "name"` since the default, `id_column_name = "variant_id"`, does not match our data format. +```{r Creating dataframes} +dna_elem <- create_dna_df(elem_df, id_column_name="name") +rna_elem <- create_rna_df(elem_df, id_column_name="name") +``` + +To compare between test and control, we need to add the labels to the MPRASet. + +```{r Element MPRASet} +BcLabelMPRASetExample <- BCalm::MPRASet(label = LabelExample, DNA = dna_elem, RNA = rna_elem, eid = row.names(dna_elem), barcode = NULL) +``` + +With the data prepared and preprocessed, we now have the foundation to conduct our analysis. + +# Analysis +In this section we get to see the usage of the `mpralm` and the `fit_elements` functions. We take the `MPRASet` created in the preprocessing chapter. BCalm allows us to analyze individual barcode counts as separate samples, capturing additional data variation and potentially increasing statistical power. + +## Variant Analysis +We will start with variant testing. In order to achieve this, we employ the `mpralm` function. Which column belongs to which replicate is described in a blocking vector, also used to normalize the counts per replicate. +The design matrix gives information which count comes from the reference and which from the alternative allele. + +```{r Fit Variants} +bcs <- ncol(dna_var) / nr_reps +design <- data.frame(intcpt = 1, alt = grepl("alt", colnames(BcVariantMPRASetExample))) +block_vector <- rep(1:nr_reps, each=bcs) +mpralm_fit_var <- mpralm(object = BcVariantMPRASetExample, design = design, aggregate = "none", normalize = TRUE, model_type = "corr_groups", block = block_vector) + +top_var <- topTable(mpralm_fit_var, coef = 2, number = Inf) +kable(head(top_var), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%") +``` + +```{r Volcano Plot} +ggplot(top_var, aes(x = logFC, y = -log10(P.Value))) + + geom_point(alpha = 0.6) +``` + +## Element Analysis + +BCalm provides the function `fit_elements`. It takes the `MPRASet` object as input and applies the statistical modeling. Again the `block_vector` gives reference which barcode belongs to which replicate. +We again set `normalize = TRUE` to perform total count normalization on the RNA and DNA libraries. + +```{r Fit elements, fig.width=8, fig.height=4} +bcs <- ncol(dna_elem) / nr_reps +block_vector <- rep(1:nr_reps, each=bcs) +mpralm_fit_elem <- fit_elements(object = BcLabelMPRASetExample, normalize = TRUE, block = block_vector) +``` + +### Visualisation and results +In this section, we will examine the visualization of our analysis results using the `mpra_treat` and `plot_groups` functions. +To visualize our results, we utilize the `plot_groups` function, which allows us to compare logratios for each group. We use the results from `fit_elements` above. As negative controls we use `"control"` and as test `"tested"`. + +```{r Visualization, fig=TRUE, fig.width=8, fig.height=4, warning=FALSE} +plot_groups(mpralm_fit_elem, 0.975, neg_label="control", test_label="tested") +``` + +The `mpra_treat()` function reimplements the `treat()` function from the limma package. This function performs a t-test with a specified threshold, making it especially useful for identifying elements with significant differential activity in MPRA data. +```{r MPRA treat} +treat <- mpra_treat(mpralm_fit_elem, 0.975, neg_label="control") +result <- topTreat(treat, coef = 1, number = Inf) +head(result) +``` + +# Session Info + +```{r sessionInfo, results='asis', echo=FALSE} +sessionInfo() +``` + +# References diff --git a/vignettes/BCalm.html b/vignettes/BCalm.html index 661b50e..a9e47d9 100644 --- a/vignettes/BCalm.html +++ b/vignettes/BCalm.html @@ -1,31805 +1,21990 @@ - - - - - - - - - - - - - - -BCalm and analyze your MPRA data - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - -

Contents

- - -
library(BCalm)
-library(dplyr)
-library(ggplot2)
-library(kableExtra) # for visually appealing tables
-
-

1 Introduction

-

The bcalm package provides a framework for analyzing data from Massively Parallel Reporter Assays (MPRA) and is built on top of the mpra package. BCalm adapts the existing mpralm method but enhances it by modeling individual barcode counts rather than aggregating counts per sequence. Furthermore, the package includes a set of pre-processing functions and plotting capabilities, facilitating the visualization and interpretation of results. BCalm is more robust to outlier MPRA counts. Variant and element analysis are both shown below together with a significance test of elements against a control group (e.g. negative controls).

-
-

1.1 Citing BCalm

-

The BCalm package is still unpublished, citing details will be provided later. When using BCalm, please cite the mpra package (Myint et al. 2019) and the limma-voom framework (Law et al. 2014).

-
-
-

1.2 Additional information for the installation

-

The package is currently available on GitHub and can be installed using remotes (Csárdi et al. 2024) or devtools (Wickham et al. 2022). -The package requires R >= 3.5, <= 4.4.0. -If you have any trouble with the provided package feel free to let us know by creating an issue directly in the BCalm GitHub repository. -To display the vignette correctly, the kableExtra and ggplot2 packages are required.

-
-
-
-

2 Preprocessing data

-

The first dataframe contains as small subset of a lentiMPRA dataset performed within HepG2 cells with three technical replicates (IGVF accession identifier: IGVFSM9009DVDG). Sequences tested in this experiment aim to capture variant effects across tens of thousands of candidate cis-regulatory element (cCRE) sequences of 200 base pair (bp) length. -The input files used here were obtained from MPRAsnakeflow, a Snakemake workflow produced as part of the Impact of Genomic Variation on Function (IGVF) Consortium. MPRAsnakeflow is a comprehensive pipeline which performs both the assignment of barcodes to the designed oligos and the preparation of count tables of DNA and RNA counts based on the observed number of barcodes within the targeted DNA and RNA sequencing (modified from (Gordon et al. 2020)).

-
data("BcSetExample")
-nr_reps = 3
-# show the data
-kable(head(BcSetExample), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%")
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Barcode - -name - -dna_count_1 - -rna_count_1 - -dna_count_2 - -rna_count_2 - -dna_count_3 - -rna_count_3 -
-AAAAAAAAAAGCTGC - -oligo_006364 - -11 - -10 - -8 - -6 - -1 - -3 -
-AAAAAAAAATCACAG - -oligo_005641 - -8 - -7 - -1 - -2 - -1 - -29 -
-AAAAAAAAATTGAGC - -oligo_005719 - -2 - -25 - -2 - -88 - -1 - -30 -
-AAAAAAAAATTGTAT - -oligo_005725 - -4 - -12 - -4 - -2 - -2 - -6 -
-AAAAAAAACACATGA - -oligo_005412 - -21 - -15 - -5 - -12 - -11 - -51 -
-AAAAAAAACATAGTT - -oligo_006471 - -8 - -3 - -3 - -5 - -7 - -3 -
-
-

In general, any sequence can be tested using an MPRA. Possible analyses can be differentiated by whether they compare the activity of different conditions of the same region, such as variant testing, or whether they compare the activities of different regions. -For element testing, the tested sequences in this vignette are compared to a group of negative control sequences (known to have low activity in HepG2) and the sequences to be tested. -We show the usage of BCalm on a variant dataset as well as an element dataset in this vignette. First, we show how to correctly preprocess the data.

-
-

2.1 Variant testing

-

To prepare data for variant testing, we use the create_var_df function from BCalm. This function requires a mapping dataframe with information linking each reference allele to its corresponding alternative allele. Here, we use MapExample, a dataframe containing three essential columns: ID, REF, and ALT. This setup provides the necessary reference and alternative allele data to enable variant analysis.

-
# load the variant map
-data("MapExample")
-# show the data
-kable(head(MapExample), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%")
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-ID - -REF - -ALT -
-variant_1 - -oligo_005868 - -oligo_005870 -
-variant_2 - -oligo_005299 - -oligo_005300 -
-variant_3 - -oligo_006685 - -oligo_006687 -
-variant_4 - -oligo_006919 - -oligo_006920 -
-variant_5 - -oligo_006895 - -oligo_006897 -
-variant_6 - -oligo_006675 - -oligo_006677 -
-
-
# create the variant dataframe by adding the variant ID to the DNA and RNA counts
-var_df <- create_var_df(BcSetExample, MapExample)
-# show the data
-kable(head(var_df), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%")
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-variant_id - -allele - -Barcode - -dna_count_1 - -rna_count_1 - -dna_count_2 - -rna_count_2 - -dna_count_3 - -rna_count_3 -
-variant_820 - -ref - -TCTTAAGTAAGAAGG - -2 - -3 - -1 - -2 - -9 - -15 -
-variant_820 - -ref - -GTAAGAATGGTTGGG - -7 - -1 - -2 - -10 - -7 - -5 -
-variant_820 - -ref - -TTTAGAAGTACACTC - -4 - -3 - -4 - -11 - -1 - -1 -
-variant_820 - -ref - -TTCGTTTTGACTAGG - -4 - -4 - -9 - -11 - -6 - -14 -
-variant_820 - -ref - -TCCGTACATCGTGAA - -1 - -2 - -2 - -2 - -1 - -4 -
-variant_820 - -ref - -GGTTCAAGGAATACC - -1 - -7 - -2 - -4 - -3 - -1 -
-
-

Optionally, downsampling can be performed to our dataframe var_df now. The function downsample_barcodes allows users to reduce the number of barcodes while retaining a representative subset. This way, the number of barcodes of oligos with many barcodes are reduced, which simplifies the data handling and reduces the sparseness of the data table (i.e. increased speed and reduced memory requirements). The degree of downsampling can be controlled by adjusting the sampling rate, which is expressed as a percentile value percentile, with a default of 0.975. -The id_column_name argument specifies the column in the input data frame that contains the unique identifiers for each variant (here variant_id).

-
var_df <- downsample_barcodes(var_df, id_column_name="variant_id")
-

After downsampling the barcode counts in our dataset, we can prepare the data for analysis using the create_dna_df and create_rna_df functions. -Only six rows are shown here (original size of the dataframe 996 × 474).

-
dna_var <- create_dna_df(var_df)
-kable(head(dna_var), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%")
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -sample_count_1_bc1_ref - -sample_count_1_bc2_ref - -sample_count_1_bc3_ref - -sample_count_1_bc4_ref - -sample_count_1_bc5_ref - -sample_count_1_bc6_ref - -sample_count_1_bc7_ref - -sample_count_1_bc8_ref - -sample_count_1_bc9_ref - -sample_count_1_bc10_ref - -sample_count_1_bc11_ref - -sample_count_1_bc12_ref - -sample_count_1_bc13_ref - -sample_count_1_bc14_ref - -sample_count_1_bc15_ref - -sample_count_1_bc16_ref - -sample_count_1_bc17_ref - -sample_count_1_bc18_ref - -sample_count_1_bc19_ref - -sample_count_1_bc20_ref - -sample_count_1_bc21_ref - -sample_count_1_bc22_ref - -sample_count_1_bc23_ref - -sample_count_1_bc24_ref - -sample_count_1_bc25_ref - -sample_count_1_bc26_ref - -sample_count_1_bc27_ref - -sample_count_1_bc28_ref - -sample_count_1_bc29_ref - -sample_count_1_bc30_ref - -sample_count_1_bc31_ref - -sample_count_1_bc32_ref - -sample_count_1_bc33_ref - -sample_count_1_bc34_ref - -sample_count_1_bc35_ref - -sample_count_1_bc36_ref - -sample_count_1_bc37_ref - -sample_count_1_bc38_ref - -sample_count_1_bc39_ref - -sample_count_1_bc40_ref - -sample_count_1_bc41_ref - -sample_count_1_bc42_ref - -sample_count_1_bc43_ref - -sample_count_1_bc44_ref - -sample_count_1_bc45_ref - -sample_count_1_bc46_ref - -sample_count_1_bc47_ref - -sample_count_1_bc48_ref - -sample_count_1_bc49_ref - -sample_count_1_bc50_ref - -sample_count_1_bc51_ref - -sample_count_1_bc52_ref - -sample_count_1_bc53_ref - -sample_count_1_bc54_ref - -sample_count_1_bc55_ref - -sample_count_1_bc56_ref - -sample_count_1_bc57_ref - -sample_count_1_bc58_ref - -sample_count_1_bc59_ref - -sample_count_1_bc60_ref - -sample_count_1_bc61_ref - -sample_count_1_bc62_ref - -sample_count_1_bc63_ref - -sample_count_1_bc64_ref - -sample_count_1_bc65_ref - -sample_count_1_bc66_ref - -sample_count_1_bc67_ref - -sample_count_1_bc68_ref - -sample_count_1_bc69_ref - -sample_count_1_bc70_ref - -sample_count_1_bc71_ref - -sample_count_1_bc72_ref - -sample_count_1_bc73_ref - -sample_count_1_bc74_ref - -sample_count_1_bc75_ref - -sample_count_1_bc76_ref - -sample_count_1_bc77_ref - -sample_count_1_bc78_ref - -sample_count_1_bc79_ref - -sample_count_1_bc1_alt - -sample_count_1_bc2_alt - -sample_count_1_bc3_alt - -sample_count_1_bc4_alt - -sample_count_1_bc5_alt - -sample_count_1_bc6_alt - -sample_count_1_bc7_alt - -sample_count_1_bc8_alt - -sample_count_1_bc9_alt - -sample_count_1_bc10_alt - -sample_count_1_bc11_alt - -sample_count_1_bc12_alt - -sample_count_1_bc13_alt - -sample_count_1_bc14_alt - -sample_count_1_bc15_alt - -sample_count_1_bc16_alt - -sample_count_1_bc17_alt - -sample_count_1_bc18_alt - -sample_count_1_bc19_alt - -sample_count_1_bc20_alt - -sample_count_1_bc21_alt - -sample_count_1_bc22_alt - -sample_count_1_bc23_alt - -sample_count_1_bc24_alt - -sample_count_1_bc25_alt - -sample_count_1_bc26_alt - -sample_count_1_bc27_alt - -sample_count_1_bc28_alt - -sample_count_1_bc29_alt - -sample_count_1_bc30_alt - -sample_count_1_bc31_alt - -sample_count_1_bc32_alt - -sample_count_1_bc33_alt - -sample_count_1_bc34_alt - -sample_count_1_bc35_alt - -sample_count_1_bc36_alt - -sample_count_1_bc37_alt - -sample_count_1_bc38_alt - -sample_count_1_bc39_alt - -sample_count_1_bc40_alt - -sample_count_1_bc41_alt - -sample_count_1_bc42_alt - -sample_count_1_bc43_alt - -sample_count_1_bc44_alt - -sample_count_1_bc45_alt - -sample_count_1_bc46_alt - -sample_count_1_bc47_alt - -sample_count_1_bc48_alt - -sample_count_1_bc49_alt - -sample_count_1_bc50_alt - -sample_count_1_bc51_alt - -sample_count_1_bc52_alt - -sample_count_1_bc53_alt - -sample_count_1_bc54_alt - -sample_count_1_bc55_alt - -sample_count_1_bc56_alt - -sample_count_1_bc57_alt - -sample_count_1_bc58_alt - -sample_count_1_bc59_alt - -sample_count_1_bc60_alt - -sample_count_1_bc61_alt - -sample_count_1_bc62_alt - -sample_count_1_bc63_alt - -sample_count_1_bc64_alt - -sample_count_1_bc65_alt - -sample_count_1_bc66_alt - -sample_count_1_bc67_alt - -sample_count_1_bc68_alt - -sample_count_1_bc69_alt - -sample_count_1_bc70_alt - -sample_count_1_bc71_alt - -sample_count_1_bc72_alt - -sample_count_1_bc73_alt - -sample_count_1_bc74_alt - -sample_count_1_bc75_alt - -sample_count_1_bc76_alt - -sample_count_1_bc77_alt - -sample_count_1_bc78_alt - -sample_count_1_bc79_alt - -sample_count_2_bc1_ref - -sample_count_2_bc2_ref - -sample_count_2_bc3_ref - -sample_count_2_bc4_ref - -sample_count_2_bc5_ref - -sample_count_2_bc6_ref - -sample_count_2_bc7_ref - -sample_count_2_bc8_ref - -sample_count_2_bc9_ref - -sample_count_2_bc10_ref - -sample_count_2_bc11_ref - -sample_count_2_bc12_ref - -sample_count_2_bc13_ref - -sample_count_2_bc14_ref - -sample_count_2_bc15_ref - -sample_count_2_bc16_ref - -sample_count_2_bc17_ref - -sample_count_2_bc18_ref - -sample_count_2_bc19_ref - -sample_count_2_bc20_ref - -sample_count_2_bc21_ref - -sample_count_2_bc22_ref - -sample_count_2_bc23_ref - -sample_count_2_bc24_ref - -sample_count_2_bc25_ref - -sample_count_2_bc26_ref - -sample_count_2_bc27_ref - -sample_count_2_bc28_ref - -sample_count_2_bc29_ref - -sample_count_2_bc30_ref - -sample_count_2_bc31_ref - -sample_count_2_bc32_ref - -sample_count_2_bc33_ref - -sample_count_2_bc34_ref - -sample_count_2_bc35_ref - -sample_count_2_bc36_ref - -sample_count_2_bc37_ref - -sample_count_2_bc38_ref - -sample_count_2_bc39_ref - -sample_count_2_bc40_ref - -sample_count_2_bc41_ref - -sample_count_2_bc42_ref - -sample_count_2_bc43_ref - -sample_count_2_bc44_ref - -sample_count_2_bc45_ref - -sample_count_2_bc46_ref - -sample_count_2_bc47_ref - -sample_count_2_bc48_ref - -sample_count_2_bc49_ref - -sample_count_2_bc50_ref - -sample_count_2_bc51_ref - -sample_count_2_bc52_ref - -sample_count_2_bc53_ref - -sample_count_2_bc54_ref - -sample_count_2_bc55_ref - -sample_count_2_bc56_ref - -sample_count_2_bc57_ref - -sample_count_2_bc58_ref - -sample_count_2_bc59_ref - -sample_count_2_bc60_ref - -sample_count_2_bc61_ref - -sample_count_2_bc62_ref - -sample_count_2_bc63_ref - -sample_count_2_bc64_ref - -sample_count_2_bc65_ref - -sample_count_2_bc66_ref - -sample_count_2_bc67_ref - -sample_count_2_bc68_ref - -sample_count_2_bc69_ref - -sample_count_2_bc70_ref - -sample_count_2_bc71_ref - -sample_count_2_bc72_ref - -sample_count_2_bc73_ref - -sample_count_2_bc74_ref - -sample_count_2_bc75_ref - -sample_count_2_bc76_ref - -sample_count_2_bc77_ref - -sample_count_2_bc78_ref - -sample_count_2_bc79_ref - -sample_count_2_bc1_alt - -sample_count_2_bc2_alt - -sample_count_2_bc3_alt - -sample_count_2_bc4_alt - -sample_count_2_bc5_alt - -sample_count_2_bc6_alt - -sample_count_2_bc7_alt - -sample_count_2_bc8_alt - -sample_count_2_bc9_alt - -sample_count_2_bc10_alt - -sample_count_2_bc11_alt - -sample_count_2_bc12_alt - -sample_count_2_bc13_alt - -sample_count_2_bc14_alt - -sample_count_2_bc15_alt - -sample_count_2_bc16_alt - -sample_count_2_bc17_alt - -sample_count_2_bc18_alt - -sample_count_2_bc19_alt - -sample_count_2_bc20_alt - -sample_count_2_bc21_alt - -sample_count_2_bc22_alt - -sample_count_2_bc23_alt - -sample_count_2_bc24_alt - -sample_count_2_bc25_alt - -sample_count_2_bc26_alt - -sample_count_2_bc27_alt - -sample_count_2_bc28_alt - -sample_count_2_bc29_alt - -sample_count_2_bc30_alt - -sample_count_2_bc31_alt - -sample_count_2_bc32_alt - -sample_count_2_bc33_alt - -sample_count_2_bc34_alt - -sample_count_2_bc35_alt - -sample_count_2_bc36_alt - -sample_count_2_bc37_alt - -sample_count_2_bc38_alt - -sample_count_2_bc39_alt - -sample_count_2_bc40_alt - -sample_count_2_bc41_alt - -sample_count_2_bc42_alt - -sample_count_2_bc43_alt - -sample_count_2_bc44_alt - -sample_count_2_bc45_alt - -sample_count_2_bc46_alt - -sample_count_2_bc47_alt - -sample_count_2_bc48_alt - -sample_count_2_bc49_alt - -sample_count_2_bc50_alt - -sample_count_2_bc51_alt - -sample_count_2_bc52_alt - -sample_count_2_bc53_alt - -sample_count_2_bc54_alt - -sample_count_2_bc55_alt - -sample_count_2_bc56_alt - -sample_count_2_bc57_alt - -sample_count_2_bc58_alt - -sample_count_2_bc59_alt - -sample_count_2_bc60_alt - -sample_count_2_bc61_alt - -sample_count_2_bc62_alt - -sample_count_2_bc63_alt - -sample_count_2_bc64_alt - -sample_count_2_bc65_alt - -sample_count_2_bc66_alt - -sample_count_2_bc67_alt - -sample_count_2_bc68_alt - -sample_count_2_bc69_alt - -sample_count_2_bc70_alt - -sample_count_2_bc71_alt - -sample_count_2_bc72_alt - -sample_count_2_bc73_alt - -sample_count_2_bc74_alt - -sample_count_2_bc75_alt - -sample_count_2_bc76_alt - -sample_count_2_bc77_alt - -sample_count_2_bc78_alt - -sample_count_2_bc79_alt - -sample_count_3_bc1_ref - -sample_count_3_bc2_ref - -sample_count_3_bc3_ref - -sample_count_3_bc4_ref - -sample_count_3_bc5_ref - -sample_count_3_bc6_ref - -sample_count_3_bc7_ref - -sample_count_3_bc8_ref - -sample_count_3_bc9_ref - -sample_count_3_bc10_ref - -sample_count_3_bc11_ref - -sample_count_3_bc12_ref - -sample_count_3_bc13_ref - -sample_count_3_bc14_ref - -sample_count_3_bc15_ref - -sample_count_3_bc16_ref - -sample_count_3_bc17_ref - -sample_count_3_bc18_ref - -sample_count_3_bc19_ref - -sample_count_3_bc20_ref - -sample_count_3_bc21_ref - -sample_count_3_bc22_ref - -sample_count_3_bc23_ref - -sample_count_3_bc24_ref - -sample_count_3_bc25_ref - -sample_count_3_bc26_ref - -sample_count_3_bc27_ref - -sample_count_3_bc28_ref - -sample_count_3_bc29_ref - -sample_count_3_bc30_ref - -sample_count_3_bc31_ref - -sample_count_3_bc32_ref - -sample_count_3_bc33_ref - -sample_count_3_bc34_ref - -sample_count_3_bc35_ref - -sample_count_3_bc36_ref - -sample_count_3_bc37_ref - -sample_count_3_bc38_ref - -sample_count_3_bc39_ref - -sample_count_3_bc40_ref - -sample_count_3_bc41_ref - -sample_count_3_bc42_ref - -sample_count_3_bc43_ref - -sample_count_3_bc44_ref - -sample_count_3_bc45_ref - -sample_count_3_bc46_ref - -sample_count_3_bc47_ref - -sample_count_3_bc48_ref - -sample_count_3_bc49_ref - -sample_count_3_bc50_ref - -sample_count_3_bc51_ref - -sample_count_3_bc52_ref - -sample_count_3_bc53_ref - -sample_count_3_bc54_ref - -sample_count_3_bc55_ref - -sample_count_3_bc56_ref - -sample_count_3_bc57_ref - -sample_count_3_bc58_ref - -sample_count_3_bc59_ref - -sample_count_3_bc60_ref - -sample_count_3_bc61_ref - -sample_count_3_bc62_ref - -sample_count_3_bc63_ref - -sample_count_3_bc64_ref - -sample_count_3_bc65_ref - -sample_count_3_bc66_ref - -sample_count_3_bc67_ref - -sample_count_3_bc68_ref - -sample_count_3_bc69_ref - -sample_count_3_bc70_ref - -sample_count_3_bc71_ref - -sample_count_3_bc72_ref - -sample_count_3_bc73_ref - -sample_count_3_bc74_ref - -sample_count_3_bc75_ref - -sample_count_3_bc76_ref - -sample_count_3_bc77_ref - -sample_count_3_bc78_ref - -sample_count_3_bc79_ref - -sample_count_3_bc1_alt - -sample_count_3_bc2_alt - -sample_count_3_bc3_alt - -sample_count_3_bc4_alt - -sample_count_3_bc5_alt - -sample_count_3_bc6_alt - -sample_count_3_bc7_alt - -sample_count_3_bc8_alt - -sample_count_3_bc9_alt - -sample_count_3_bc10_alt - -sample_count_3_bc11_alt - -sample_count_3_bc12_alt - -sample_count_3_bc13_alt - -sample_count_3_bc14_alt - -sample_count_3_bc15_alt - -sample_count_3_bc16_alt - -sample_count_3_bc17_alt - -sample_count_3_bc18_alt - -sample_count_3_bc19_alt - -sample_count_3_bc20_alt - -sample_count_3_bc21_alt - -sample_count_3_bc22_alt - -sample_count_3_bc23_alt - -sample_count_3_bc24_alt - -sample_count_3_bc25_alt - -sample_count_3_bc26_alt - -sample_count_3_bc27_alt - -sample_count_3_bc28_alt - -sample_count_3_bc29_alt - -sample_count_3_bc30_alt - -sample_count_3_bc31_alt - -sample_count_3_bc32_alt - -sample_count_3_bc33_alt - -sample_count_3_bc34_alt - -sample_count_3_bc35_alt - -sample_count_3_bc36_alt - -sample_count_3_bc37_alt - -sample_count_3_bc38_alt - -sample_count_3_bc39_alt - -sample_count_3_bc40_alt - -sample_count_3_bc41_alt - -sample_count_3_bc42_alt - -sample_count_3_bc43_alt - -sample_count_3_bc44_alt - -sample_count_3_bc45_alt - -sample_count_3_bc46_alt - -sample_count_3_bc47_alt - -sample_count_3_bc48_alt - -sample_count_3_bc49_alt - -sample_count_3_bc50_alt - -sample_count_3_bc51_alt - -sample_count_3_bc52_alt - -sample_count_3_bc53_alt - -sample_count_3_bc54_alt - -sample_count_3_bc55_alt - -sample_count_3_bc56_alt - -sample_count_3_bc57_alt - -sample_count_3_bc58_alt - -sample_count_3_bc59_alt - -sample_count_3_bc60_alt - -sample_count_3_bc61_alt - -sample_count_3_bc62_alt - -sample_count_3_bc63_alt - -sample_count_3_bc64_alt - -sample_count_3_bc65_alt - -sample_count_3_bc66_alt - -sample_count_3_bc67_alt - -sample_count_3_bc68_alt - -sample_count_3_bc69_alt - -sample_count_3_bc70_alt - -sample_count_3_bc71_alt - -sample_count_3_bc72_alt - -sample_count_3_bc73_alt - -sample_count_3_bc74_alt - -sample_count_3_bc75_alt - -sample_count_3_bc76_alt - -sample_count_3_bc77_alt - -sample_count_3_bc78_alt - -sample_count_3_bc79_alt -
-variant_10 - -8 - -4 - -2 - -5 - -3 - -8 - -9 - -6 - -2 - -7 - -4 - -3 - -6 - -2 - -5 - -2 - -4 - -4 - -5 - -4 - -1 - -8 - -1 - -1 - -5 - -5 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -4 - -4 - -7 - -8 - -2 - -1 - -1 - -3 - -1 - -2 - -2 - -4 - -1 - -1 - -2 - -3 - -2 - -1 - -3 - -3 - -1 - -1 - -3 - -5 - -2 - -1 - -3 - -1 - -3 - -7 - -3 - -3 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -4 - -3 - -1 - -2 - -1 - -1 - -4 - -3 - -4 - -6 - -1 - -1 - -2 - -1 - -7 - -2 - -2 - -4 - -1 - -2 - -3 - -2 - -4 - -2 - -2 - -5 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -7 - -3 - -1 - -3 - -3 - -6 - -3 - -4 - -4 - -3 - -3 - -2 - -1 - -1 - -1 - -1 - -1 - -1 - -6 - -2 - -5 - -2 - -1 - -3 - -1 - -1 - -4 - -8 - -1 - -6 - -2 - -3 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -11 - -7 - -3 - -1 - -4 - -4 - -2 - -9 - -2 - -14 - -1 - -7 - -1 - -4 - -2 - -2 - -6 - -3 - -3 - -1 - -1 - -5 - -2 - -3 - -4 - -6 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -1 - -3 - -7 - -8 - -7 - -1 - -2 - -4 - -5 - -5 - -6 - -6 - -4 - -4 - -2 - -12 - -1 - -6 - -6 - -4 - -1 - -3 - -2 - -1 - -3 - -5 - -4 - -13 - -3 - -6 - -2 - -13 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA -
-variant_100 - -12 - -11 - -2 - -3 - -2 - -3 - -2 - -11 - -6 - -3 - -19 - -3 - -4 - -4 - -7 - -2 - -4 - -5 - -8 - -3 - -3 - -1 - -3 - -3 - -3 - -5 - -10 - -4 - -6 - -6 - -11 - -2 - -8 - -4 - -4 - -2 - -4 - -1 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -3 - -3 - -10 - -5 - -8 - -3 - -4 - -1 - -6 - -3 - -2 - -4 - -3 - -7 - -9 - -2 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -2 - -7 - -1 - -4 - -2 - -3 - -4 - -3 - -3 - -3 - -7 - -6 - -2 - -3 - -1 - -12 - -5 - -7 - -6 - -2 - -1 - -4 - -2 - -9 - -2 - -3 - -7 - -3 - -5 - -5 - -12 - -9 - -9 - -3 - -5 - -1 - -1 - -9 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -4 - -2 - -9 - -7 - -6 - -2 - -3 - -5 - -14 - -5 - -4 - -8 - -5 - -4 - -2 - -2 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -6 - -7 - -6 - -5 - -2 - -2 - -3 - -3 - -1 - -4 - -5 - -4 - -6 - -10 - -7 - -3 - -4 - -2 - -4 - -1 - -3 - -2 - -2 - -2 - -1 - -7 - -2 - -2 - -1 - -3 - -7 - -4 - -2 - -5 - -1 - -1 - -4 - -3 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -5 - -2 - -10 - -6 - -1 - -2 - -2 - -1 - -3 - -1 - -8 - -3 - -2 - -1 - -1 - -2 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA -
-variant_100314 - -9 - -5 - -1 - -5 - -12 - -2 - -12 - -10 - -10 - -3 - -7 - -16 - -4 - -8 - -2 - -8 - -2 - -4 - -13 - -3 - -1 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -7 - -10 - -4 - -5 - -4 - -3 - -12 - -10 - -5 - -4 - -11 - -17 - -1 - -5 - -5 - -7 - -5 - -5 - -13 - -10 - -4 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -3 - -1 - -6 - -1 - -5 - -9 - -3 - -3 - -10 - -12 - -9 - -24 - -2 - -1 - -2 - -10 - -3 - -2 - -3 - -14 - -1 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA -
-variant_100463 - -7 - -8 - -3 - -1 - -1 - -7 - -2 - -3 - -8 - -1 - -6 - -3 - -5 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -1 - -3 - -3 - -1 - -3 - -3 - -6 - -1 - -3 - -2 - -6 - -1 - -5 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -4 - -4 - -4 - -2 - -3 - -3 - -1 - -2 - -3 - -6 - -1 - -4 - -4 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA -
-variant_101 - -18 - -16 - -3 - -9 - -4 - -1 - -4 - -3 - -14 - -5 - -3 - -7 - -1 - -1 - -7 - -5 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -1 - -2 - -4 - -7 - -7 - -1 - -3 - -3 - -4 - -1 - -6 - -2 - -12 - -2 - -10 - -4 - -1 - -6 - -2 - -6 - -3 - -3 - -1 - -8 - -3 - -1 - -2 - -10 - -4 - -5 - -10 - -6 - -3 - -1 - -3 - -3 - -4 - -5 - -5 - -2 - -5 - -6 - -5 - -11 - -5 - -7 - -3 - -2 - -2 - -3 - -5 - -11 - -13 - -10 - -7 - -2 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -1 - -13 - -6 - -7 - -2 - -2 - -1 - -1 - -8 - -1 - -3 - -2 - -3 - -6 - -12 - -2 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -1 - -5 - -1 - -2 - -2 - -16 - -12 - -1 - -10 - -3 - -2 - -2 - -4 - -4 - -9 - -5 - -6 - -1 - -6 - -2 - -3 - -2 - -7 - -2 - -1 - -2 - -6 - -3 - -1 - -2 - -3 - -3 - -1 - -4 - -8 - -1 - -1 - -4 - -4 - -5 - -1 - -4 - -9 - -5 - -4 - -2 - -7 - -9 - -1 - -9 - -11 - -4 - -7 - -12 - -9 - -6 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -10 - -11 - -2 - -6 - -6 - -1 - -4 - -1 - -2 - -1 - -2 - -3 - -7 - -7 - -6 - -2 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -7 - -1 - -2 - -8 - -6 - -5 - -5 - -1 - -6 - -5 - -2 - -3 - -3 - -2 - -2 - -3 - -2 - -2 - -3 - -3 - -4 - -5 - -2 - -5 - -2 - -2 - -1 - -5 - -15 - -1 - -5 - -4 - -2 - -1 - -1 - -1 - -4 - -4 - -1 - -2 - -1 - -3 - -14 - -12 - -2 - -1 - -2 - -7 - -2 - -2 - -5 - -8 - -12 - -4 - -7 - -4 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA -
-variant_101165 - -2 - -8 - -9 - -7 - -7 - -5 - -5 - -2 - -2 - -21 - -2 - -1 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -3 - -2 - -4 - -3 - -4 - -5 - -3 - -4 - -2 - -10 - -7 - -10 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -1 - -6 - -2 - -4 - -3 - -2 - -1 - -1 - -7 - -10 - -1 - -3 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA -
-
-
rna_var <- create_rna_df(var_df)
-kable(head(rna_var), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%")
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -sample_count_1_bc1_ref - -sample_count_1_bc2_ref - -sample_count_1_bc3_ref - -sample_count_1_bc4_ref - -sample_count_1_bc5_ref - -sample_count_1_bc6_ref - -sample_count_1_bc7_ref - -sample_count_1_bc8_ref - -sample_count_1_bc9_ref - -sample_count_1_bc10_ref - -sample_count_1_bc11_ref - -sample_count_1_bc12_ref - -sample_count_1_bc13_ref - -sample_count_1_bc14_ref - -sample_count_1_bc15_ref - -sample_count_1_bc16_ref - -sample_count_1_bc17_ref - -sample_count_1_bc18_ref - -sample_count_1_bc19_ref - -sample_count_1_bc20_ref - -sample_count_1_bc21_ref - -sample_count_1_bc22_ref - -sample_count_1_bc23_ref - -sample_count_1_bc24_ref - -sample_count_1_bc25_ref - -sample_count_1_bc26_ref - -sample_count_1_bc27_ref - -sample_count_1_bc28_ref - -sample_count_1_bc29_ref - -sample_count_1_bc30_ref - -sample_count_1_bc31_ref - -sample_count_1_bc32_ref - -sample_count_1_bc33_ref - -sample_count_1_bc34_ref - -sample_count_1_bc35_ref - -sample_count_1_bc36_ref - -sample_count_1_bc37_ref - -sample_count_1_bc38_ref - -sample_count_1_bc39_ref - -sample_count_1_bc40_ref - -sample_count_1_bc41_ref - -sample_count_1_bc42_ref - -sample_count_1_bc43_ref - -sample_count_1_bc44_ref - -sample_count_1_bc45_ref - -sample_count_1_bc46_ref - -sample_count_1_bc47_ref - -sample_count_1_bc48_ref - -sample_count_1_bc49_ref - -sample_count_1_bc50_ref - -sample_count_1_bc51_ref - -sample_count_1_bc52_ref - -sample_count_1_bc53_ref - -sample_count_1_bc54_ref - -sample_count_1_bc55_ref - -sample_count_1_bc56_ref - -sample_count_1_bc57_ref - -sample_count_1_bc58_ref - -sample_count_1_bc59_ref - -sample_count_1_bc60_ref - -sample_count_1_bc61_ref - -sample_count_1_bc62_ref - -sample_count_1_bc63_ref - -sample_count_1_bc64_ref - -sample_count_1_bc65_ref - -sample_count_1_bc66_ref - -sample_count_1_bc67_ref - -sample_count_1_bc68_ref - -sample_count_1_bc69_ref - -sample_count_1_bc70_ref - -sample_count_1_bc71_ref - -sample_count_1_bc72_ref - -sample_count_1_bc73_ref - -sample_count_1_bc74_ref - -sample_count_1_bc75_ref - -sample_count_1_bc76_ref - -sample_count_1_bc77_ref - -sample_count_1_bc78_ref - -sample_count_1_bc79_ref - -sample_count_1_bc1_alt - -sample_count_1_bc2_alt - -sample_count_1_bc3_alt - -sample_count_1_bc4_alt - -sample_count_1_bc5_alt - -sample_count_1_bc6_alt - -sample_count_1_bc7_alt - -sample_count_1_bc8_alt - -sample_count_1_bc9_alt - -sample_count_1_bc10_alt - -sample_count_1_bc11_alt - -sample_count_1_bc12_alt - -sample_count_1_bc13_alt - -sample_count_1_bc14_alt - -sample_count_1_bc15_alt - -sample_count_1_bc16_alt - -sample_count_1_bc17_alt - -sample_count_1_bc18_alt - -sample_count_1_bc19_alt - -sample_count_1_bc20_alt - -sample_count_1_bc21_alt - -sample_count_1_bc22_alt - -sample_count_1_bc23_alt - -sample_count_1_bc24_alt - -sample_count_1_bc25_alt - -sample_count_1_bc26_alt - -sample_count_1_bc27_alt - -sample_count_1_bc28_alt - -sample_count_1_bc29_alt - -sample_count_1_bc30_alt - -sample_count_1_bc31_alt - -sample_count_1_bc32_alt - -sample_count_1_bc33_alt - -sample_count_1_bc34_alt - -sample_count_1_bc35_alt - -sample_count_1_bc36_alt - -sample_count_1_bc37_alt - -sample_count_1_bc38_alt - -sample_count_1_bc39_alt - -sample_count_1_bc40_alt - -sample_count_1_bc41_alt - -sample_count_1_bc42_alt - -sample_count_1_bc43_alt - -sample_count_1_bc44_alt - -sample_count_1_bc45_alt - -sample_count_1_bc46_alt - -sample_count_1_bc47_alt - -sample_count_1_bc48_alt - -sample_count_1_bc49_alt - -sample_count_1_bc50_alt - -sample_count_1_bc51_alt - -sample_count_1_bc52_alt - -sample_count_1_bc53_alt - -sample_count_1_bc54_alt - -sample_count_1_bc55_alt - -sample_count_1_bc56_alt - -sample_count_1_bc57_alt - -sample_count_1_bc58_alt - -sample_count_1_bc59_alt - -sample_count_1_bc60_alt - -sample_count_1_bc61_alt - -sample_count_1_bc62_alt - -sample_count_1_bc63_alt - -sample_count_1_bc64_alt - -sample_count_1_bc65_alt - -sample_count_1_bc66_alt - -sample_count_1_bc67_alt - -sample_count_1_bc68_alt - -sample_count_1_bc69_alt - -sample_count_1_bc70_alt - -sample_count_1_bc71_alt - -sample_count_1_bc72_alt - -sample_count_1_bc73_alt - -sample_count_1_bc74_alt - -sample_count_1_bc75_alt - -sample_count_1_bc76_alt - -sample_count_1_bc77_alt - -sample_count_1_bc78_alt - -sample_count_1_bc79_alt - -sample_count_2_bc1_ref - -sample_count_2_bc2_ref - -sample_count_2_bc3_ref - -sample_count_2_bc4_ref - -sample_count_2_bc5_ref - -sample_count_2_bc6_ref - -sample_count_2_bc7_ref - -sample_count_2_bc8_ref - -sample_count_2_bc9_ref - -sample_count_2_bc10_ref - -sample_count_2_bc11_ref - -sample_count_2_bc12_ref - -sample_count_2_bc13_ref - -sample_count_2_bc14_ref - -sample_count_2_bc15_ref - -sample_count_2_bc16_ref - -sample_count_2_bc17_ref - -sample_count_2_bc18_ref - -sample_count_2_bc19_ref - -sample_count_2_bc20_ref - -sample_count_2_bc21_ref - -sample_count_2_bc22_ref - -sample_count_2_bc23_ref - -sample_count_2_bc24_ref - -sample_count_2_bc25_ref - -sample_count_2_bc26_ref - -sample_count_2_bc27_ref - -sample_count_2_bc28_ref - -sample_count_2_bc29_ref - -sample_count_2_bc30_ref - -sample_count_2_bc31_ref - -sample_count_2_bc32_ref - -sample_count_2_bc33_ref - -sample_count_2_bc34_ref - -sample_count_2_bc35_ref - -sample_count_2_bc36_ref - -sample_count_2_bc37_ref - -sample_count_2_bc38_ref - -sample_count_2_bc39_ref - -sample_count_2_bc40_ref - -sample_count_2_bc41_ref - -sample_count_2_bc42_ref - -sample_count_2_bc43_ref - -sample_count_2_bc44_ref - -sample_count_2_bc45_ref - -sample_count_2_bc46_ref - -sample_count_2_bc47_ref - -sample_count_2_bc48_ref - -sample_count_2_bc49_ref - -sample_count_2_bc50_ref - -sample_count_2_bc51_ref - -sample_count_2_bc52_ref - -sample_count_2_bc53_ref - -sample_count_2_bc54_ref - -sample_count_2_bc55_ref - -sample_count_2_bc56_ref - -sample_count_2_bc57_ref - -sample_count_2_bc58_ref - -sample_count_2_bc59_ref - -sample_count_2_bc60_ref - -sample_count_2_bc61_ref - -sample_count_2_bc62_ref - -sample_count_2_bc63_ref - -sample_count_2_bc64_ref - -sample_count_2_bc65_ref - -sample_count_2_bc66_ref - -sample_count_2_bc67_ref - -sample_count_2_bc68_ref - -sample_count_2_bc69_ref - -sample_count_2_bc70_ref - -sample_count_2_bc71_ref - -sample_count_2_bc72_ref - -sample_count_2_bc73_ref - -sample_count_2_bc74_ref - -sample_count_2_bc75_ref - -sample_count_2_bc76_ref - -sample_count_2_bc77_ref - -sample_count_2_bc78_ref - -sample_count_2_bc79_ref - -sample_count_2_bc1_alt - -sample_count_2_bc2_alt - -sample_count_2_bc3_alt - -sample_count_2_bc4_alt - -sample_count_2_bc5_alt - -sample_count_2_bc6_alt - -sample_count_2_bc7_alt - -sample_count_2_bc8_alt - -sample_count_2_bc9_alt - -sample_count_2_bc10_alt - -sample_count_2_bc11_alt - -sample_count_2_bc12_alt - -sample_count_2_bc13_alt - -sample_count_2_bc14_alt - -sample_count_2_bc15_alt - -sample_count_2_bc16_alt - -sample_count_2_bc17_alt - -sample_count_2_bc18_alt - -sample_count_2_bc19_alt - -sample_count_2_bc20_alt - -sample_count_2_bc21_alt - -sample_count_2_bc22_alt - -sample_count_2_bc23_alt - -sample_count_2_bc24_alt - -sample_count_2_bc25_alt - -sample_count_2_bc26_alt - -sample_count_2_bc27_alt - -sample_count_2_bc28_alt - -sample_count_2_bc29_alt - -sample_count_2_bc30_alt - -sample_count_2_bc31_alt - -sample_count_2_bc32_alt - -sample_count_2_bc33_alt - -sample_count_2_bc34_alt - -sample_count_2_bc35_alt - -sample_count_2_bc36_alt - -sample_count_2_bc37_alt - -sample_count_2_bc38_alt - -sample_count_2_bc39_alt - -sample_count_2_bc40_alt - -sample_count_2_bc41_alt - -sample_count_2_bc42_alt - -sample_count_2_bc43_alt - -sample_count_2_bc44_alt - -sample_count_2_bc45_alt - -sample_count_2_bc46_alt - -sample_count_2_bc47_alt - -sample_count_2_bc48_alt - -sample_count_2_bc49_alt - -sample_count_2_bc50_alt - -sample_count_2_bc51_alt - -sample_count_2_bc52_alt - -sample_count_2_bc53_alt - -sample_count_2_bc54_alt - -sample_count_2_bc55_alt - -sample_count_2_bc56_alt - -sample_count_2_bc57_alt - -sample_count_2_bc58_alt - -sample_count_2_bc59_alt - -sample_count_2_bc60_alt - -sample_count_2_bc61_alt - -sample_count_2_bc62_alt - -sample_count_2_bc63_alt - -sample_count_2_bc64_alt - -sample_count_2_bc65_alt - -sample_count_2_bc66_alt - -sample_count_2_bc67_alt - -sample_count_2_bc68_alt - -sample_count_2_bc69_alt - -sample_count_2_bc70_alt - -sample_count_2_bc71_alt - -sample_count_2_bc72_alt - -sample_count_2_bc73_alt - -sample_count_2_bc74_alt - -sample_count_2_bc75_alt - -sample_count_2_bc76_alt - -sample_count_2_bc77_alt - -sample_count_2_bc78_alt - -sample_count_2_bc79_alt - -sample_count_3_bc1_ref - -sample_count_3_bc2_ref - -sample_count_3_bc3_ref - -sample_count_3_bc4_ref - -sample_count_3_bc5_ref - -sample_count_3_bc6_ref - -sample_count_3_bc7_ref - -sample_count_3_bc8_ref - -sample_count_3_bc9_ref - -sample_count_3_bc10_ref - -sample_count_3_bc11_ref - -sample_count_3_bc12_ref - -sample_count_3_bc13_ref - -sample_count_3_bc14_ref - -sample_count_3_bc15_ref - -sample_count_3_bc16_ref - -sample_count_3_bc17_ref - -sample_count_3_bc18_ref - -sample_count_3_bc19_ref - -sample_count_3_bc20_ref - -sample_count_3_bc21_ref - -sample_count_3_bc22_ref - -sample_count_3_bc23_ref - -sample_count_3_bc24_ref - -sample_count_3_bc25_ref - -sample_count_3_bc26_ref - -sample_count_3_bc27_ref - -sample_count_3_bc28_ref - -sample_count_3_bc29_ref - -sample_count_3_bc30_ref - -sample_count_3_bc31_ref - -sample_count_3_bc32_ref - -sample_count_3_bc33_ref - -sample_count_3_bc34_ref - -sample_count_3_bc35_ref - -sample_count_3_bc36_ref - -sample_count_3_bc37_ref - -sample_count_3_bc38_ref - -sample_count_3_bc39_ref - -sample_count_3_bc40_ref - -sample_count_3_bc41_ref - -sample_count_3_bc42_ref - -sample_count_3_bc43_ref - -sample_count_3_bc44_ref - -sample_count_3_bc45_ref - -sample_count_3_bc46_ref - -sample_count_3_bc47_ref - -sample_count_3_bc48_ref - -sample_count_3_bc49_ref - -sample_count_3_bc50_ref - -sample_count_3_bc51_ref - -sample_count_3_bc52_ref - -sample_count_3_bc53_ref - -sample_count_3_bc54_ref - -sample_count_3_bc55_ref - -sample_count_3_bc56_ref - -sample_count_3_bc57_ref - -sample_count_3_bc58_ref - -sample_count_3_bc59_ref - -sample_count_3_bc60_ref - -sample_count_3_bc61_ref - -sample_count_3_bc62_ref - -sample_count_3_bc63_ref - -sample_count_3_bc64_ref - -sample_count_3_bc65_ref - -sample_count_3_bc66_ref - -sample_count_3_bc67_ref - -sample_count_3_bc68_ref - -sample_count_3_bc69_ref - -sample_count_3_bc70_ref - -sample_count_3_bc71_ref - -sample_count_3_bc72_ref - -sample_count_3_bc73_ref - -sample_count_3_bc74_ref - -sample_count_3_bc75_ref - -sample_count_3_bc76_ref - -sample_count_3_bc77_ref - -sample_count_3_bc78_ref - -sample_count_3_bc79_ref - -sample_count_3_bc1_alt - -sample_count_3_bc2_alt - -sample_count_3_bc3_alt - -sample_count_3_bc4_alt - -sample_count_3_bc5_alt - -sample_count_3_bc6_alt - -sample_count_3_bc7_alt - -sample_count_3_bc8_alt - -sample_count_3_bc9_alt - -sample_count_3_bc10_alt - -sample_count_3_bc11_alt - -sample_count_3_bc12_alt - -sample_count_3_bc13_alt - -sample_count_3_bc14_alt - -sample_count_3_bc15_alt - -sample_count_3_bc16_alt - -sample_count_3_bc17_alt - -sample_count_3_bc18_alt - -sample_count_3_bc19_alt - -sample_count_3_bc20_alt - -sample_count_3_bc21_alt - -sample_count_3_bc22_alt - -sample_count_3_bc23_alt - -sample_count_3_bc24_alt - -sample_count_3_bc25_alt - -sample_count_3_bc26_alt - -sample_count_3_bc27_alt - -sample_count_3_bc28_alt - -sample_count_3_bc29_alt - -sample_count_3_bc30_alt - -sample_count_3_bc31_alt - -sample_count_3_bc32_alt - -sample_count_3_bc33_alt - -sample_count_3_bc34_alt - -sample_count_3_bc35_alt - -sample_count_3_bc36_alt - -sample_count_3_bc37_alt - -sample_count_3_bc38_alt - -sample_count_3_bc39_alt - -sample_count_3_bc40_alt - -sample_count_3_bc41_alt - -sample_count_3_bc42_alt - -sample_count_3_bc43_alt - -sample_count_3_bc44_alt - -sample_count_3_bc45_alt - -sample_count_3_bc46_alt - -sample_count_3_bc47_alt - -sample_count_3_bc48_alt - -sample_count_3_bc49_alt - -sample_count_3_bc50_alt - -sample_count_3_bc51_alt - -sample_count_3_bc52_alt - -sample_count_3_bc53_alt - -sample_count_3_bc54_alt - -sample_count_3_bc55_alt - -sample_count_3_bc56_alt - -sample_count_3_bc57_alt - -sample_count_3_bc58_alt - -sample_count_3_bc59_alt - -sample_count_3_bc60_alt - -sample_count_3_bc61_alt - -sample_count_3_bc62_alt - -sample_count_3_bc63_alt - -sample_count_3_bc64_alt - -sample_count_3_bc65_alt - -sample_count_3_bc66_alt - -sample_count_3_bc67_alt - -sample_count_3_bc68_alt - -sample_count_3_bc69_alt - -sample_count_3_bc70_alt - -sample_count_3_bc71_alt - -sample_count_3_bc72_alt - -sample_count_3_bc73_alt - -sample_count_3_bc74_alt - -sample_count_3_bc75_alt - -sample_count_3_bc76_alt - -sample_count_3_bc77_alt - -sample_count_3_bc78_alt - -sample_count_3_bc79_alt -
-variant_10 - -7 - -7 - -3 - -1 - -15 - -1 - -18 - -43 - -2 - -22 - -16 - -16 - -4 - -6 - -3 - -17 - -2 - -24 - -3 - -17 - -5 - -16 - -41 - -8 - -12 - -25 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -29 - -5 - -12 - -11 - -3 - -2 - -4 - -2 - -2 - -1 - -4 - -32 - -10 - -2 - -5 - -16 - -6 - -8 - -12 - -8 - -9 - -7 - -13 - -4 - -8 - -4 - -2 - -11 - -1 - -16 - -9 - -8 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -2 - -6 - -1 - -7 - -8 - -2 - -24 - -8 - -3 - -23 - -4 - -7 - -1 - -2 - -13 - -11 - -1 - -4 - -14 - -1 - -4 - -2 - -6 - -10 - -10 - -8 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -27 - -10 - -2 - -32 - -3 - -16 - -35 - -6 - -19 - -17 - -16 - -6 - -5 - -55 - -1 - -13 - -22 - -15 - -17 - -2 - -10 - -34 - -1 - -54 - -6 - -12 - -15 - -2 - -5 - -15 - -11 - -44 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -10 - -22 - -7 - -4 - -4 - -13 - -2 - -31 - -5 - -15 - -27 - -6 - -12 - -49 - -6 - -8 - -12 - -13 - -15 - -7 - -12 - -5 - -5 - -21 - -1 - -23 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -25 - -35 - -17 - -3 - -2 - -18 - -3 - -10 - -14 - -13 - -25 - -25 - -18 - -16 - -10 - -25 - -18 - -2 - -10 - -19 - -2 - -8 - -4 - -27 - -7 - -1 - -10 - -12 - -7 - -15 - -40 - -19 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA -
-variant_100 - -39 - -9 - -21 - -16 - -2 - -5 - -22 - -46 - -23 - -55 - -38 - -23 - -39 - -13 - -21 - -2 - -8 - -31 - -27 - -32 - -5 - -7 - -9 - -19 - -20 - -7 - -14 - -16 - -45 - -1 - -36 - -14 - -7 - -14 - -8 - -3 - -26 - -11 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -4 - -6 - -11 - -1 - -19 - -2 - -7 - -3 - -31 - -6 - -3 - -4 - -2 - -1 - -13 - -2 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -8 - -18 - -12 - -39 - -12 - -15 - -5 - -22 - -17 - -24 - -39 - -20 - -5 - -17 - -30 - -5 - -8 - -23 - -20 - -58 - -18 - -1 - -10 - -2 - -12 - -7 - -8 - -11 - -6 - -13 - -17 - -22 - -64 - -23 - -20 - -11 - -6 - -10 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -11 - -8 - -19 - -11 - -13 - -6 - -5 - -2 - -9 - -20 - -11 - -7 - -1 - -4 - -3 - -21 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -13 - -25 - -19 - -43 - -3 - -41 - -10 - -51 - -3 - -26 - -49 - -8 - -27 - -3 - -5 - -21 - -36 - -5 - -42 - -5 - -10 - -2 - -2 - -26 - -7 - -29 - -2 - -33 - -5 - -5 - -15 - -36 - -115 - -5 - -37 - -4 - -7 - -27 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -3 - -9 - -32 - -27 - -8 - -18 - -4 - -6 - -11 - -3 - -9 - -5 - -4 - -1 - -3 - -1 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA -
-variant_100314 - -1 - -17 - -3 - -6 - -8 - -4 - -4 - -6 - -15 - -12 - -4 - -17 - -7 - -10 - -9 - -11 - -15 - -9 - -16 - -2 - -1 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -5 - -5 - -20 - -11 - -9 - -4 - -2 - -6 - -24 - -5 - -11 - -12 - -3 - -10 - -11 - -2 - -4 - -6 - -29 - -34 - -4 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -3 - -2 - -18 - -11 - -21 - -6 - -1 - -7 - -33 - -10 - -3 - -38 - -2 - -6 - -6 - -2 - -5 - -2 - -2 - -28 - -1 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA -
-variant_100463 - -1 - -2 - -3 - -11 - -2 - -2 - -24 - -3 - -9 - -1 - -2 - -4 - -1 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -3 - -4 - -1 - -4 - -1 - -4 - -9 - -2 - -7 - -8 - -2 - -14 - -10 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -22 - -1 - -9 - -2 - -2 - -2 - -6 - -8 - -3 - -9 - -4 - -6 - -4 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA -
-variant_101 - -7 - -19 - -4 - -28 - -1 - -5 - -1 - -1 - -9 - -1 - -6 - -7 - -5 - -12 - -59 - -13 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -32 - -2 - -12 - -1 - -22 - -19 - -11 - -6 - -45 - -8 - -13 - -2 - -24 - -8 - -51 - -12 - -16 - -4 - -51 - -11 - -25 - -35 - -7 - -6 - -79 - -34 - -19 - -9 - -26 - -4 - -43 - -10 - -11 - -6 - -4 - -18 - -7 - -22 - -1 - -37 - -6 - -58 - -2 - -12 - -41 - -25 - -2 - -16 - -17 - -29 - -19 - -20 - -63 - -16 - -82 - -15 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -12 - -40 - -3 - -16 - -23 - -5 - -3 - -2 - -2 - -6 - -4 - -12 - -5 - -24 - -26 - -8 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -48 - -23 - -39 - -29 - -5 - -84 - -37 - -51 - -27 - -18 - -24 - -20 - -20 - -15 - -13 - -13 - -18 - -6 - -32 - -9 - -23 - -30 - -8 - -38 - -22 - -12 - -49 - -23 - -40 - -6 - -13 - -9 - -32 - -20 - -38 - -5 - -4 - -25 - -31 - -4 - -39 - -5 - -58 - -36 - -16 - -23 - -5 - -61 - -1 - -22 - -4 - -5 - -272 - -8 - -37 - -23 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -21 - -5 - -5 - -3 - -4 - -2 - -4 - -3 - -1 - -2 - -2 - -2 - -16 - -12 - -3 - -6 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -32 - -1 - -37 - -22 - -33 - -45 - -14 - -1 - -23 - -36 - -22 - -5 - -11 - -5 - -53 - -17 - -14 - -10 - -2 - -2 - -22 - -11 - -14 - -62 - -12 - -25 - -6 - -17 - -62 - -7 - -91 - -10 - -25 - -9 - -6 - -1 - -11 - -15 - -58 - -23 - -12 - -24 - -2 - -12 - -106 - -19 - -35 - -51 - -16 - -13 - -26 - -27 - -88 - -28 - -80 - -3 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA -
-variant_101165 - -4 - -13 - -9 - -26 - -13 - -2 - -24 - -2 - -5 - -22 - -4 - -2 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -2 - -3 - -3 - -10 - -4 - -2 - -13 - -1 - -27 - -2 - -3 - -7 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -5 - -1 - -12 - -7 - -3 - -1 - -4 - -3 - -6 - -12 - -7 - -3 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA -
-
-

Now we create the MPRAset used as input to BCalm.

-
# create the variant specific MPRAset
-BcVariantMPRASetExample <- MPRASet(DNA = dna_var, RNA = rna_var, eid = row.names(dna_var), barcode = NULL)
-
-
-

2.2 Element testing

-

The dataset is the same one we used above, but we have to add labels to the data to distinguish between control and test groups, thus allowing us to easily identify and compare these different groups in the analysis later.

-
data(LabelExample)
-table(LabelExample)
-
## LabelExample
-## control  tested 
-##     198    1475
-
kable(head(LabelExample), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%")
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -x -
-oligo_000702 - -tested -
-oligo_000703 - -tested -
-oligo_000706 - -tested -
-oligo_000707 - -tested -
-oligo_000711 - -tested -
-oligo_000713 - -tested -
-
-

Once again, we perform downsampling on this dataset using the downsample_barcodes function.

-
elem_df <- downsample_barcodes(BcSetExample)
-

As before, we use create_dna_df and create_rna_df to format the data correctly for the MPRASet function. However, this time we specify id_column_name = "name" since the default, id_column_name = "variant_id", does not match our data format.

-
dna_elem <- create_dna_df(elem_df, id_column_name="name")
-rna_elem <- create_rna_df(elem_df, id_column_name="name")
-

To compare between test and control, we need to add the labels to the MPRASet.

-
BcLabelMPRASetExample <- MPRASet(DNA = dna_elem, RNA = rna_elem, eid = row.names(dna_elem), barcode = NULL, label=LabelExample)
-

With the data prepared and preprocessed, we now have the foundation to conduct our analysis.

-
-
-
-

3 Analysis

-

In this section we get to see the usage of the mpralm and the fit_elements functions. We take the MPRASet created in the preprocessing chapter. BCalm allows us to analyze individual barcode counts as separate samples, capturing additional data variation and potentially increasing statistical power.

-
-

3.1 Variant Analysis

-

We will start with variant testing. In order to achieve this, we employ the mpralm function. Which column belongs to which replicate is described in a blocking vector, also used to normalize the counts per replicate. -The design matrix gives information which count comes from the reference and which from the alternative allele.

-
bcs <- ncol(dna_var) / nr_reps
-design <- data.frame(intcpt = 1, alt = grepl("alt", colnames(BcVariantMPRASetExample)))
-block_vector <- rep(1:nr_reps, each=bcs)
-mpralm_fit_var <- mpralm(object = BcVariantMPRASetExample, design = design, aggregate = "none", normalize = TRUE, model_type = "corr_groups", plot = FALSE, block = block_vector)
-
-top_var <- topTable(mpralm_fit_var, coef = 2, number = Inf)
-kable(head(rna_var), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%")
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -sample_count_1_bc1_ref - -sample_count_1_bc2_ref - -sample_count_1_bc3_ref - -sample_count_1_bc4_ref - -sample_count_1_bc5_ref - -sample_count_1_bc6_ref - -sample_count_1_bc7_ref - -sample_count_1_bc8_ref - -sample_count_1_bc9_ref - -sample_count_1_bc10_ref - -sample_count_1_bc11_ref - -sample_count_1_bc12_ref - -sample_count_1_bc13_ref - -sample_count_1_bc14_ref - -sample_count_1_bc15_ref - -sample_count_1_bc16_ref - -sample_count_1_bc17_ref - -sample_count_1_bc18_ref - -sample_count_1_bc19_ref - -sample_count_1_bc20_ref - -sample_count_1_bc21_ref - -sample_count_1_bc22_ref - -sample_count_1_bc23_ref - -sample_count_1_bc24_ref - -sample_count_1_bc25_ref - -sample_count_1_bc26_ref - -sample_count_1_bc27_ref - -sample_count_1_bc28_ref - -sample_count_1_bc29_ref - -sample_count_1_bc30_ref - -sample_count_1_bc31_ref - -sample_count_1_bc32_ref - -sample_count_1_bc33_ref - -sample_count_1_bc34_ref - -sample_count_1_bc35_ref - -sample_count_1_bc36_ref - -sample_count_1_bc37_ref - -sample_count_1_bc38_ref - -sample_count_1_bc39_ref - -sample_count_1_bc40_ref - -sample_count_1_bc41_ref - -sample_count_1_bc42_ref - -sample_count_1_bc43_ref - -sample_count_1_bc44_ref - -sample_count_1_bc45_ref - -sample_count_1_bc46_ref - -sample_count_1_bc47_ref - -sample_count_1_bc48_ref - -sample_count_1_bc49_ref - -sample_count_1_bc50_ref - -sample_count_1_bc51_ref - -sample_count_1_bc52_ref - -sample_count_1_bc53_ref - -sample_count_1_bc54_ref - -sample_count_1_bc55_ref - -sample_count_1_bc56_ref - -sample_count_1_bc57_ref - -sample_count_1_bc58_ref - -sample_count_1_bc59_ref - -sample_count_1_bc60_ref - -sample_count_1_bc61_ref - -sample_count_1_bc62_ref - -sample_count_1_bc63_ref - -sample_count_1_bc64_ref - -sample_count_1_bc65_ref - -sample_count_1_bc66_ref - -sample_count_1_bc67_ref - -sample_count_1_bc68_ref - -sample_count_1_bc69_ref - -sample_count_1_bc70_ref - -sample_count_1_bc71_ref - -sample_count_1_bc72_ref - -sample_count_1_bc73_ref - -sample_count_1_bc74_ref - -sample_count_1_bc75_ref - -sample_count_1_bc76_ref - -sample_count_1_bc77_ref - -sample_count_1_bc78_ref - -sample_count_1_bc79_ref - -sample_count_1_bc1_alt - -sample_count_1_bc2_alt - -sample_count_1_bc3_alt - -sample_count_1_bc4_alt - -sample_count_1_bc5_alt - -sample_count_1_bc6_alt - -sample_count_1_bc7_alt - -sample_count_1_bc8_alt - -sample_count_1_bc9_alt - -sample_count_1_bc10_alt - -sample_count_1_bc11_alt - -sample_count_1_bc12_alt - -sample_count_1_bc13_alt - -sample_count_1_bc14_alt - -sample_count_1_bc15_alt - -sample_count_1_bc16_alt - -sample_count_1_bc17_alt - -sample_count_1_bc18_alt - -sample_count_1_bc19_alt - -sample_count_1_bc20_alt - -sample_count_1_bc21_alt - -sample_count_1_bc22_alt - -sample_count_1_bc23_alt - -sample_count_1_bc24_alt - -sample_count_1_bc25_alt - -sample_count_1_bc26_alt - -sample_count_1_bc27_alt - -sample_count_1_bc28_alt - -sample_count_1_bc29_alt - -sample_count_1_bc30_alt - -sample_count_1_bc31_alt - -sample_count_1_bc32_alt - -sample_count_1_bc33_alt - -sample_count_1_bc34_alt - -sample_count_1_bc35_alt - -sample_count_1_bc36_alt - -sample_count_1_bc37_alt - -sample_count_1_bc38_alt - -sample_count_1_bc39_alt - -sample_count_1_bc40_alt - -sample_count_1_bc41_alt - -sample_count_1_bc42_alt - -sample_count_1_bc43_alt - -sample_count_1_bc44_alt - -sample_count_1_bc45_alt - -sample_count_1_bc46_alt - -sample_count_1_bc47_alt - -sample_count_1_bc48_alt - -sample_count_1_bc49_alt - -sample_count_1_bc50_alt - -sample_count_1_bc51_alt - -sample_count_1_bc52_alt - -sample_count_1_bc53_alt - -sample_count_1_bc54_alt - -sample_count_1_bc55_alt - -sample_count_1_bc56_alt - -sample_count_1_bc57_alt - -sample_count_1_bc58_alt - -sample_count_1_bc59_alt - -sample_count_1_bc60_alt - -sample_count_1_bc61_alt - -sample_count_1_bc62_alt - -sample_count_1_bc63_alt - -sample_count_1_bc64_alt - -sample_count_1_bc65_alt - -sample_count_1_bc66_alt - -sample_count_1_bc67_alt - -sample_count_1_bc68_alt - -sample_count_1_bc69_alt - -sample_count_1_bc70_alt - -sample_count_1_bc71_alt - -sample_count_1_bc72_alt - -sample_count_1_bc73_alt - -sample_count_1_bc74_alt - -sample_count_1_bc75_alt - -sample_count_1_bc76_alt - -sample_count_1_bc77_alt - -sample_count_1_bc78_alt - -sample_count_1_bc79_alt - -sample_count_2_bc1_ref - -sample_count_2_bc2_ref - -sample_count_2_bc3_ref - -sample_count_2_bc4_ref - -sample_count_2_bc5_ref - -sample_count_2_bc6_ref - -sample_count_2_bc7_ref - -sample_count_2_bc8_ref - -sample_count_2_bc9_ref - -sample_count_2_bc10_ref - -sample_count_2_bc11_ref - -sample_count_2_bc12_ref - -sample_count_2_bc13_ref - -sample_count_2_bc14_ref - -sample_count_2_bc15_ref - -sample_count_2_bc16_ref - -sample_count_2_bc17_ref - -sample_count_2_bc18_ref - -sample_count_2_bc19_ref - -sample_count_2_bc20_ref - -sample_count_2_bc21_ref - -sample_count_2_bc22_ref - -sample_count_2_bc23_ref - -sample_count_2_bc24_ref - -sample_count_2_bc25_ref - -sample_count_2_bc26_ref - -sample_count_2_bc27_ref - -sample_count_2_bc28_ref - -sample_count_2_bc29_ref - -sample_count_2_bc30_ref - -sample_count_2_bc31_ref - -sample_count_2_bc32_ref - -sample_count_2_bc33_ref - -sample_count_2_bc34_ref - -sample_count_2_bc35_ref - -sample_count_2_bc36_ref - -sample_count_2_bc37_ref - -sample_count_2_bc38_ref - -sample_count_2_bc39_ref - -sample_count_2_bc40_ref - -sample_count_2_bc41_ref - -sample_count_2_bc42_ref - -sample_count_2_bc43_ref - -sample_count_2_bc44_ref - -sample_count_2_bc45_ref - -sample_count_2_bc46_ref - -sample_count_2_bc47_ref - -sample_count_2_bc48_ref - -sample_count_2_bc49_ref - -sample_count_2_bc50_ref - -sample_count_2_bc51_ref - -sample_count_2_bc52_ref - -sample_count_2_bc53_ref - -sample_count_2_bc54_ref - -sample_count_2_bc55_ref - -sample_count_2_bc56_ref - -sample_count_2_bc57_ref - -sample_count_2_bc58_ref - -sample_count_2_bc59_ref - -sample_count_2_bc60_ref - -sample_count_2_bc61_ref - -sample_count_2_bc62_ref - -sample_count_2_bc63_ref - -sample_count_2_bc64_ref - -sample_count_2_bc65_ref - -sample_count_2_bc66_ref - -sample_count_2_bc67_ref - -sample_count_2_bc68_ref - -sample_count_2_bc69_ref - -sample_count_2_bc70_ref - -sample_count_2_bc71_ref - -sample_count_2_bc72_ref - -sample_count_2_bc73_ref - -sample_count_2_bc74_ref - -sample_count_2_bc75_ref - -sample_count_2_bc76_ref - -sample_count_2_bc77_ref - -sample_count_2_bc78_ref - -sample_count_2_bc79_ref - -sample_count_2_bc1_alt - -sample_count_2_bc2_alt - -sample_count_2_bc3_alt - -sample_count_2_bc4_alt - -sample_count_2_bc5_alt - -sample_count_2_bc6_alt - -sample_count_2_bc7_alt - -sample_count_2_bc8_alt - -sample_count_2_bc9_alt - -sample_count_2_bc10_alt - -sample_count_2_bc11_alt - -sample_count_2_bc12_alt - -sample_count_2_bc13_alt - -sample_count_2_bc14_alt - -sample_count_2_bc15_alt - -sample_count_2_bc16_alt - -sample_count_2_bc17_alt - -sample_count_2_bc18_alt - -sample_count_2_bc19_alt - -sample_count_2_bc20_alt - -sample_count_2_bc21_alt - -sample_count_2_bc22_alt - -sample_count_2_bc23_alt - -sample_count_2_bc24_alt - -sample_count_2_bc25_alt - -sample_count_2_bc26_alt - -sample_count_2_bc27_alt - -sample_count_2_bc28_alt - -sample_count_2_bc29_alt - -sample_count_2_bc30_alt - -sample_count_2_bc31_alt - -sample_count_2_bc32_alt - -sample_count_2_bc33_alt - -sample_count_2_bc34_alt - -sample_count_2_bc35_alt - -sample_count_2_bc36_alt - -sample_count_2_bc37_alt - -sample_count_2_bc38_alt - -sample_count_2_bc39_alt - -sample_count_2_bc40_alt - -sample_count_2_bc41_alt - -sample_count_2_bc42_alt - -sample_count_2_bc43_alt - -sample_count_2_bc44_alt - -sample_count_2_bc45_alt - -sample_count_2_bc46_alt - -sample_count_2_bc47_alt - -sample_count_2_bc48_alt - -sample_count_2_bc49_alt - -sample_count_2_bc50_alt - -sample_count_2_bc51_alt - -sample_count_2_bc52_alt - -sample_count_2_bc53_alt - -sample_count_2_bc54_alt - -sample_count_2_bc55_alt - -sample_count_2_bc56_alt - -sample_count_2_bc57_alt - -sample_count_2_bc58_alt - -sample_count_2_bc59_alt - -sample_count_2_bc60_alt - -sample_count_2_bc61_alt - -sample_count_2_bc62_alt - -sample_count_2_bc63_alt - -sample_count_2_bc64_alt - -sample_count_2_bc65_alt - -sample_count_2_bc66_alt - -sample_count_2_bc67_alt - -sample_count_2_bc68_alt - -sample_count_2_bc69_alt - -sample_count_2_bc70_alt - -sample_count_2_bc71_alt - -sample_count_2_bc72_alt - -sample_count_2_bc73_alt - -sample_count_2_bc74_alt - -sample_count_2_bc75_alt - -sample_count_2_bc76_alt - -sample_count_2_bc77_alt - -sample_count_2_bc78_alt - -sample_count_2_bc79_alt - -sample_count_3_bc1_ref - -sample_count_3_bc2_ref - -sample_count_3_bc3_ref - -sample_count_3_bc4_ref - -sample_count_3_bc5_ref - -sample_count_3_bc6_ref - -sample_count_3_bc7_ref - -sample_count_3_bc8_ref - -sample_count_3_bc9_ref - -sample_count_3_bc10_ref - -sample_count_3_bc11_ref - -sample_count_3_bc12_ref - -sample_count_3_bc13_ref - -sample_count_3_bc14_ref - -sample_count_3_bc15_ref - -sample_count_3_bc16_ref - -sample_count_3_bc17_ref - -sample_count_3_bc18_ref - -sample_count_3_bc19_ref - -sample_count_3_bc20_ref - -sample_count_3_bc21_ref - -sample_count_3_bc22_ref - -sample_count_3_bc23_ref - -sample_count_3_bc24_ref - -sample_count_3_bc25_ref - -sample_count_3_bc26_ref - -sample_count_3_bc27_ref - -sample_count_3_bc28_ref - -sample_count_3_bc29_ref - -sample_count_3_bc30_ref - -sample_count_3_bc31_ref - -sample_count_3_bc32_ref - -sample_count_3_bc33_ref - -sample_count_3_bc34_ref - -sample_count_3_bc35_ref - -sample_count_3_bc36_ref - -sample_count_3_bc37_ref - -sample_count_3_bc38_ref - -sample_count_3_bc39_ref - -sample_count_3_bc40_ref - -sample_count_3_bc41_ref - -sample_count_3_bc42_ref - -sample_count_3_bc43_ref - -sample_count_3_bc44_ref - -sample_count_3_bc45_ref - -sample_count_3_bc46_ref - -sample_count_3_bc47_ref - -sample_count_3_bc48_ref - -sample_count_3_bc49_ref - -sample_count_3_bc50_ref - -sample_count_3_bc51_ref - -sample_count_3_bc52_ref - -sample_count_3_bc53_ref - -sample_count_3_bc54_ref - -sample_count_3_bc55_ref - -sample_count_3_bc56_ref - -sample_count_3_bc57_ref - -sample_count_3_bc58_ref - -sample_count_3_bc59_ref - -sample_count_3_bc60_ref - -sample_count_3_bc61_ref - -sample_count_3_bc62_ref - -sample_count_3_bc63_ref - -sample_count_3_bc64_ref - -sample_count_3_bc65_ref - -sample_count_3_bc66_ref - -sample_count_3_bc67_ref - -sample_count_3_bc68_ref - -sample_count_3_bc69_ref - -sample_count_3_bc70_ref - -sample_count_3_bc71_ref - -sample_count_3_bc72_ref - -sample_count_3_bc73_ref - -sample_count_3_bc74_ref - -sample_count_3_bc75_ref - -sample_count_3_bc76_ref - -sample_count_3_bc77_ref - -sample_count_3_bc78_ref - -sample_count_3_bc79_ref - -sample_count_3_bc1_alt - -sample_count_3_bc2_alt - -sample_count_3_bc3_alt - -sample_count_3_bc4_alt - -sample_count_3_bc5_alt - -sample_count_3_bc6_alt - -sample_count_3_bc7_alt - -sample_count_3_bc8_alt - -sample_count_3_bc9_alt - -sample_count_3_bc10_alt - -sample_count_3_bc11_alt - -sample_count_3_bc12_alt - -sample_count_3_bc13_alt - -sample_count_3_bc14_alt - -sample_count_3_bc15_alt - -sample_count_3_bc16_alt - -sample_count_3_bc17_alt - -sample_count_3_bc18_alt - -sample_count_3_bc19_alt - -sample_count_3_bc20_alt - -sample_count_3_bc21_alt - -sample_count_3_bc22_alt - -sample_count_3_bc23_alt - -sample_count_3_bc24_alt - -sample_count_3_bc25_alt - -sample_count_3_bc26_alt - -sample_count_3_bc27_alt - -sample_count_3_bc28_alt - -sample_count_3_bc29_alt - -sample_count_3_bc30_alt - -sample_count_3_bc31_alt - -sample_count_3_bc32_alt - -sample_count_3_bc33_alt - -sample_count_3_bc34_alt - -sample_count_3_bc35_alt - -sample_count_3_bc36_alt - -sample_count_3_bc37_alt - -sample_count_3_bc38_alt - -sample_count_3_bc39_alt - -sample_count_3_bc40_alt - -sample_count_3_bc41_alt - -sample_count_3_bc42_alt - -sample_count_3_bc43_alt - -sample_count_3_bc44_alt - -sample_count_3_bc45_alt - -sample_count_3_bc46_alt - -sample_count_3_bc47_alt - -sample_count_3_bc48_alt - -sample_count_3_bc49_alt - -sample_count_3_bc50_alt - -sample_count_3_bc51_alt - -sample_count_3_bc52_alt - -sample_count_3_bc53_alt - -sample_count_3_bc54_alt - -sample_count_3_bc55_alt - -sample_count_3_bc56_alt - -sample_count_3_bc57_alt - -sample_count_3_bc58_alt - -sample_count_3_bc59_alt - -sample_count_3_bc60_alt - -sample_count_3_bc61_alt - -sample_count_3_bc62_alt - -sample_count_3_bc63_alt - -sample_count_3_bc64_alt - -sample_count_3_bc65_alt - -sample_count_3_bc66_alt - -sample_count_3_bc67_alt - -sample_count_3_bc68_alt - -sample_count_3_bc69_alt - -sample_count_3_bc70_alt - -sample_count_3_bc71_alt - -sample_count_3_bc72_alt - -sample_count_3_bc73_alt - -sample_count_3_bc74_alt - -sample_count_3_bc75_alt - -sample_count_3_bc76_alt - -sample_count_3_bc77_alt - -sample_count_3_bc78_alt - -sample_count_3_bc79_alt -
-variant_10 - -7 - -7 - -3 - -1 - -15 - -1 - -18 - -43 - -2 - -22 - -16 - -16 - -4 - -6 - -3 - -17 - -2 - -24 - -3 - -17 - -5 - -16 - -41 - -8 - -12 - -25 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -29 - -5 - -12 - -11 - -3 - -2 - -4 - -2 - -2 - -1 - -4 - -32 - -10 - -2 - -5 - -16 - -6 - -8 - -12 - -8 - -9 - -7 - -13 - -4 - -8 - -4 - -2 - -11 - -1 - -16 - -9 - -8 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -2 - -6 - -1 - -7 - -8 - -2 - -24 - -8 - -3 - -23 - -4 - -7 - -1 - -2 - -13 - -11 - -1 - -4 - -14 - -1 - -4 - -2 - -6 - -10 - -10 - -8 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -27 - -10 - -2 - -32 - -3 - -16 - -35 - -6 - -19 - -17 - -16 - -6 - -5 - -55 - -1 - -13 - -22 - -15 - -17 - -2 - -10 - -34 - -1 - -54 - -6 - -12 - -15 - -2 - -5 - -15 - -11 - -44 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -10 - -22 - -7 - -4 - -4 - -13 - -2 - -31 - -5 - -15 - -27 - -6 - -12 - -49 - -6 - -8 - -12 - -13 - -15 - -7 - -12 - -5 - -5 - -21 - -1 - -23 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -25 - -35 - -17 - -3 - -2 - -18 - -3 - -10 - -14 - -13 - -25 - -25 - -18 - -16 - -10 - -25 - -18 - -2 - -10 - -19 - -2 - -8 - -4 - -27 - -7 - -1 - -10 - -12 - -7 - -15 - -40 - -19 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA -
-variant_100 - -39 - -9 - -21 - -16 - -2 - -5 - -22 - -46 - -23 - -55 - -38 - -23 - -39 - -13 - -21 - -2 - -8 - -31 - -27 - -32 - -5 - -7 - -9 - -19 - -20 - -7 - -14 - -16 - -45 - -1 - -36 - -14 - -7 - -14 - -8 - -3 - -26 - -11 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -4 - -6 - -11 - -1 - -19 - -2 - -7 - -3 - -31 - -6 - -3 - -4 - -2 - -1 - -13 - -2 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -8 - -18 - -12 - -39 - -12 - -15 - -5 - -22 - -17 - -24 - -39 - -20 - -5 - -17 - -30 - -5 - -8 - -23 - -20 - -58 - -18 - -1 - -10 - -2 - -12 - -7 - -8 - -11 - -6 - -13 - -17 - -22 - -64 - -23 - -20 - -11 - -6 - -10 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -11 - -8 - -19 - -11 - -13 - -6 - -5 - -2 - -9 - -20 - -11 - -7 - -1 - -4 - -3 - -21 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -13 - -25 - -19 - -43 - -3 - -41 - -10 - -51 - -3 - -26 - -49 - -8 - -27 - -3 - -5 - -21 - -36 - -5 - -42 - -5 - -10 - -2 - -2 - -26 - -7 - -29 - -2 - -33 - -5 - -5 - -15 - -36 - -115 - -5 - -37 - -4 - -7 - -27 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -3 - -9 - -32 - -27 - -8 - -18 - -4 - -6 - -11 - -3 - -9 - -5 - -4 - -1 - -3 - -1 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA -
-variant_100314 - -1 - -17 - -3 - -6 - -8 - -4 - -4 - -6 - -15 - -12 - -4 - -17 - -7 - -10 - -9 - -11 - -15 - -9 - -16 - -2 - -1 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -5 - -5 - -20 - -11 - -9 - -4 - -2 - -6 - -24 - -5 - -11 - -12 - -3 - -10 - -11 - -2 - -4 - -6 - -29 - -34 - -4 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -3 - -2 - -18 - -11 - -21 - -6 - -1 - -7 - -33 - -10 - -3 - -38 - -2 - -6 - -6 - -2 - -5 - -2 - -2 - -28 - -1 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA -
-variant_100463 - -1 - -2 - -3 - -11 - -2 - -2 - -24 - -3 - -9 - -1 - -2 - -4 - -1 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -3 - -4 - -1 - -4 - -1 - -4 - -9 - -2 - -7 - -8 - -2 - -14 - -10 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -22 - -1 - -9 - -2 - -2 - -2 - -6 - -8 - -3 - -9 - -4 - -6 - -4 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA -
-variant_101 - -7 - -19 - -4 - -28 - -1 - -5 - -1 - -1 - -9 - -1 - -6 - -7 - -5 - -12 - -59 - -13 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -32 - -2 - -12 - -1 - -22 - -19 - -11 - -6 - -45 - -8 - -13 - -2 - -24 - -8 - -51 - -12 - -16 - -4 - -51 - -11 - -25 - -35 - -7 - -6 - -79 - -34 - -19 - -9 - -26 - -4 - -43 - -10 - -11 - -6 - -4 - -18 - -7 - -22 - -1 - -37 - -6 - -58 - -2 - -12 - -41 - -25 - -2 - -16 - -17 - -29 - -19 - -20 - -63 - -16 - -82 - -15 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -12 - -40 - -3 - -16 - -23 - -5 - -3 - -2 - -2 - -6 - -4 - -12 - -5 - -24 - -26 - -8 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -48 - -23 - -39 - -29 - -5 - -84 - -37 - -51 - -27 - -18 - -24 - -20 - -20 - -15 - -13 - -13 - -18 - -6 - -32 - -9 - -23 - -30 - -8 - -38 - -22 - -12 - -49 - -23 - -40 - -6 - -13 - -9 - -32 - -20 - -38 - -5 - -4 - -25 - -31 - -4 - -39 - -5 - -58 - -36 - -16 - -23 - -5 - -61 - -1 - -22 - -4 - -5 - -272 - -8 - -37 - -23 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -21 - -5 - -5 - -3 - -4 - -2 - -4 - -3 - -1 - -2 - -2 - -2 - -16 - -12 - -3 - -6 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -32 - -1 - -37 - -22 - -33 - -45 - -14 - -1 - -23 - -36 - -22 - -5 - -11 - -5 - -53 - -17 - -14 - -10 - -2 - -2 - -22 - -11 - -14 - -62 - -12 - -25 - -6 - -17 - -62 - -7 - -91 - -10 - -25 - -9 - -6 - -1 - -11 - -15 - -58 - -23 - -12 - -24 - -2 - -12 - -106 - -19 - -35 - -51 - -16 - -13 - -26 - -27 - -88 - -28 - -80 - -3 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA -
-variant_101165 - -4 - -13 - -9 - -26 - -13 - -2 - -24 - -2 - -5 - -22 - -4 - -2 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -2 - -3 - -3 - -10 - -4 - -2 - -13 - -1 - -27 - -2 - -3 - -7 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -5 - -1 - -12 - -7 - -3 - -1 - -4 - -3 - -6 - -12 - -7 - -3 - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA - -NA -
-
-
ggplot(top_var, aes(x = logFC, y = -log10(P.Value))) +
-  geom_point(alpha = 0.6)
-

-
-
-

3.2 Element Analysis

-

BCalm provides the function fit_elements. It takes the MPRASet object as input and applies the statistical modeling. Again the block_vector gives reference which barcode belongs to which replicate. -We again set normalize = TRUE to perform total count normalization on the RNA and DNA libraries.

-
bcs <- ncol(dna_elem) / nr_reps
-block_vector <- rep(1:nr_reps, each=bcs)
-mpralm_fit_elem <- fit_elements(object = BcLabelMPRASetExample, normalize=TRUE, block = block_vector, plot = FALSE)
-
-

3.2.1 Visualisation and results

-

In this section, we will examine the visualization of our analysis results using the mpra_treat and plot_groups functions. -To visualize our results, we utilize the plot_groups function, which allows us to compare logratios for each group. We use the results from fit_elements above. As negative controls we use "control" and as test "tested".

-
plot_groups(mpralm_fit_elem, 0.975, neg_label="control", test_label="tested")
-

-

The mpra_treat() function reimplements the treat() function from the limma package. This function performs a t-test with a specified threshold, making it especially useful for identifying elements with significant differential activity in MPRA data.

-
treat <- mpra_treat(mpralm_fit_elem, 0.975, neg_label="control")
-result <- topTreat(treat, coef = 1, number = Inf)
-head(result)
-
##                 logFC  AveExpr        t       P.Value     adj.P.Val
-## oligo_006626 3.747002 3.749226 34.09445 7.884865e-136 1.319138e-132
-## oligo_006624 3.521868 3.524330 28.52746 1.991338e-106 1.665755e-103
-## oligo_006203 2.899792 2.901751 16.62038  3.420742e-48  1.907634e-45
-## oligo_006468 2.212209 2.215034 15.99422  4.034956e-47  1.687620e-44
-## oligo_005287 1.912143 1.914193 14.78730  5.936039e-42  1.986199e-39
-## oligo_006201 1.997943 2.000452 14.48532  1.397503e-40  3.896706e-38
-
-
-
-
-

4 Session Info

-

R version 4.3.1 (2023-06-16 ucrt) -Platform: x86_64-w64-mingw32/x64 (64-bit) -Running under: Windows 11 x64 (build 22631)

-

Matrix products: default

-

locale: -[1] LC_COLLATE=German_Germany.utf8 LC_CTYPE=German_Germany.utf8
-[3] LC_MONETARY=German_Germany.utf8 LC_NUMERIC=C
-[5] LC_TIME=German_Germany.utf8

-

time zone: Europe/Berlin -tzcode source: internal

-

attached base packages: -[1] stats4 stats graphics grDevices utils datasets methods
-[8] base

-

other attached packages: -[1] kableExtra_1.4.0 ggplot2_3.5.1
-[3] dplyr_1.1.4 BCalm_0.1.0
-[5] curl_6.0.1 limma_3.58.1
-[7] SummarizedExperiment_1.32.0 Biobase_2.62.0
-[9] GenomicRanges_1.54.1 GenomeInfoDb_1.38.8
-[11] IRanges_2.36.0 S4Vectors_0.40.2
-[13] MatrixGenerics_1.14.0 matrixStats_1.4.1
-[15] BiocGenerics_0.48.1 BiocStyle_2.30.0

-

loaded via a namespace (and not attached): -[1] gtable_0.3.6 xfun_0.49 bslib_0.8.0
-[4] mpra_1.24.0 lattice_0.22-6 vctrs_0.6.5
-[7] tools_4.3.1 bitops_1.0-9 generics_0.1.3
-[10] tibble_3.2.1 fansi_1.0.6 pkgconfig_2.0.3
-[13] Matrix_1.5-4.1 lifecycle_1.0.4 GenomeInfoDbData_1.2.11 -[16] farver_2.1.2 stringr_1.5.1 compiler_4.3.1
-[19] statmod_1.5.0 munsell_0.5.1 htmltools_0.5.8.1
-[22] sass_0.4.9 RCurl_1.98-1.16 yaml_2.3.7
-[25] pillar_1.9.0 crayon_1.5.3 jquerylib_0.1.4
-[28] tidyr_1.3.1 DelayedArray_0.28.0 cachem_1.1.0
-[31] abind_1.4-8 tidyselect_1.2.1 digest_0.6.33
-[34] stringi_1.8.4 purrr_1.0.2 bookdown_0.41
-[37] labeling_0.4.3 fastmap_1.2.0 grid_4.3.1
-[40] colorspace_2.1-1 cli_3.6.1 SparseArray_1.2.4
-[43] magrittr_2.0.3 S4Arrays_1.2.1 utf8_1.2.4
-[46] withr_3.0.2 scales_1.3.0 rmarkdown_2.29
-[49] XVector_0.42.0 evaluate_1.0.1 knitr_1.49
-[52] viridisLite_0.4.2 rlang_1.1.1 glue_1.8.0
-[55] xml2_1.3.6 BiocManager_1.30.25 svglite_2.1.3
-[58] rstudioapi_0.17.1 jsonlite_1.8.9 R6_2.5.1
-[61] systemfonts_1.1.0 zlibbioc_1.48.2

-
-
-

References

-
-
-Csárdi, Gábor, Jim Hester, Hadley Wickham, Winston Chang, Martin Morgan, and Dan Tenenbaum. 2024. README — Cran.r-Project.org.” https://cran.r-project.org/web/packages/remotes/readme/README.html. -
-
-Gordon, M. Grace, Fumitaka Inoue, Beth Martin, Max Schubach, Vikram Agarwal, Sean Whalen, Shiyun Feng, et al. 2020. “lentiMPRA and MPRAflow for High-Throughput Functional Characterization of Gene Regulatory Elements.” Nature Protocols 15 (8): 2387–2412. https://doi.org/10.1038/s41596-020-0333-5. -
-
-Law, Charity W, Yunshun Chen, Wei Shi, and Gordon K Smyth. 2014. “Voom: Precision Weights Unlock Linear Model Analysis Tools for RNA-seq Read Counts.” Genome Biology 15: R29. https://doi.org/10.1186/gb-2014-15-2-r29. -
-
-Myint, Leslie, Dimitrios G Avramopoulos, Loyal A Goff, and Kasper D Hansen. 2019. “Linear Models Enable Powerful Differential Activity Analysis in Massively Parallel Reporter Assays.” BMC Genomics 20: 209. https://doi.org/10.1186/s12864-019-5556-x. -
-
-Wickham, Hadley, Jim Hester, Winston Chang, and Jennifer Bryan. 2022. Devtools: Tools to Make Developing r Packages Easier. -
-
-
- - - - -
- - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + +BCalm and analyze your MPRA data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +

Contents

+ + +
library(BCalm)
+library(dplyr)
+library(ggplot2)
+library(kableExtra) # for visually appealing tables
+
+

1 Introduction

+

The BCalm package provides a framework for analyzing data from Massively Parallel Reporter Assays (MPRA) and is built on top of the mpra package. BCalm adapts the existing mpralm method but enhances it by modeling individual barcode counts rather than aggregating counts per sequence. Furthermore, the package includes a set of pre-processing functions and plotting capabilities, facilitating the visualization and interpretation of results. BCalm is more robust to outlier MPRA counts. Variant and element analysis are both shown below together with a significance test of elements against a control group (e.g. negative controls).

+
+
+

2 Citing BCalm

+

To cite the BCalm package please use (Keukeleire et al. 2025). When using BCalm you can additionally cite the mpra package (Myint et al. 2019) and the limma-voom framework (Law et al. 2014).

+
+
+

3 Installation

+

The BCalm package is available via bioconda (called r-bcalm) and can be installed via conda install -c bioconda r-bcalm).

+
+

3.1 Additional information for installation

+

The package is also available on GitHub and can be installed using remotes (Csárdi et al. 2024) or devtools (Wickham et al. 2022). +The package requires R >= 3.5, <= 4.4.0. +If you have any trouble with the provided package, feel free to let us know by creating an issue directly in the BCalm GitHub repository. +To display the vignette correctly, the kableExtra and ggplot2 packages are required.

+
+
+
+

4 Preprocessing data

+

The first dataframe contains as small subset of a lentiMPRA dataset performed within HepG2 cells with three technical replicates (IGVF accession identifier: IGVFSM9009DVDG). Sequences tested in this experiment aim to capture variant effects across tens of thousands of candidate cis-regulatory element (cCRE) sequences of 200 base pair (bp) length. +The input files used here were obtained from MPRAsnakeflow, a Snakemake workflow produced as part of the Impact of Genomic Variation on Function (IGVF) Consortium. MPRAsnakeflow is a comprehensive pipeline which performs both the assignment of barcodes to the designed oligos and the preparation of count tables of DNA and RNA counts based on the observed number of barcodes within the targeted DNA and RNA sequencing (modified from (Gordon et al. 2020)).

+
data("BcSetExample")
+nr_reps = 3
+# show the data
+kable(head(BcSetExample), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%")
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Barcode + +name + +dna_count_1 + +rna_count_1 + +dna_count_2 + +rna_count_2 + +dna_count_3 + +rna_count_3 +
+AAAAAAAAAAGCTGC + +oligo_006364 + +11 + +10 + +8 + +6 + +1 + +3 +
+AAAAAAAAATCACAG + +oligo_005641 + +8 + +7 + +1 + +2 + +1 + +29 +
+AAAAAAAAATTGAGC + +oligo_005719 + +2 + +25 + +2 + +88 + +1 + +30 +
+AAAAAAAAATTGTAT + +oligo_005725 + +4 + +12 + +4 + +2 + +2 + +6 +
+AAAAAAAACACATGA + +oligo_005412 + +21 + +15 + +5 + +12 + +11 + +51 +
+AAAAAAAACATAGTT + +oligo_006471 + +8 + +3 + +3 + +5 + +7 + +3 +
+
+

In general, any sequence can be tested using an MPRA. Possible analyses can be differentiated by whether they compare the activity of different conditions of the same region, such as variant testing, or whether they compare the activities of different regions. +For element testing, the tested sequences in this vignette are compared to a group of negative control sequences (known to have low activity in HepG2) and the sequences to be tested. +We show the usage of BCalm on a variant dataset as well as an element dataset in this vignette. First, we show how to correctly preprocess the data.

+
+

4.1 Variant testing

+

To prepare data for variant testing, we use the create_var_df function from BCalm. This function requires a mapping dataframe with information linking each reference allele to its corresponding alternative allele. Here, we use MapExample, a dataframe containing three essential columns: ID, REF, and ALT. This setup provides the necessary reference and alternative allele data to enable variant analysis.

+
# load the variant map
+data("MapExample")
+# show the data
+kable(head(MapExample), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%")
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ID + +REF + +ALT +
+variant_1 + +oligo_005868 + +oligo_005870 +
+variant_2 + +oligo_005299 + +oligo_005300 +
+variant_3 + +oligo_006685 + +oligo_006687 +
+variant_4 + +oligo_006919 + +oligo_006920 +
+variant_5 + +oligo_006895 + +oligo_006897 +
+variant_6 + +oligo_006675 + +oligo_006677 +
+
+
# create the variant dataframe by adding the variant ID to the DNA and RNA counts
+var_df <- create_var_df(BcSetExample, MapExample)
+# show the data
+kable(head(var_df), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%")
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+variant_id + +allele + +Barcode + +dna_count_1 + +rna_count_1 + +dna_count_2 + +rna_count_2 + +dna_count_3 + +rna_count_3 +
+variant_820 + +ref + +TCTTAAGTAAGAAGG + +2 + +3 + +1 + +2 + +9 + +15 +
+variant_820 + +ref + +GTAAGAATGGTTGGG + +7 + +1 + +2 + +10 + +7 + +5 +
+variant_820 + +ref + +TTTAGAAGTACACTC + +4 + +3 + +4 + +11 + +1 + +1 +
+variant_820 + +ref + +TTCGTTTTGACTAGG + +4 + +4 + +9 + +11 + +6 + +14 +
+variant_820 + +ref + +TCCGTACATCGTGAA + +1 + +2 + +2 + +2 + +1 + +4 +
+variant_820 + +ref + +GGTTCAAGGAATACC + +1 + +7 + +2 + +4 + +3 + +1 +
+
+

Optionally, downsampling can be performed on our data frame var_df now. The function downsample_barcodes allows users to reduce the number of barcodes while retaining a representative subset. This way, the number of barcodes for oligos with many barcodes is reduced, which simplifies data handling and reduces the sparseness of the data table (i.e., increased speed and reduced memory requirements). The degree of downsampling can be controlled by adjusting the sampling rate, which is expressed as a percentile value percentile, with a default of 0.95. +The id_column_name argument specifies the column in the input data frame that contains the unique identifiers for each variant (here variant_id).

+
var_df <- downsample_barcodes(var_df, id_column_name="variant_id")
+

After downsampling the barcode counts in our dataset, we can prepare the data for analysis using the create_dna_df and create_rna_df functions. +Only six rows are shown here (original size of the dataframe 996 × 474).

+
dna_var <- create_dna_df(var_df)
+kable(head(dna_var), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%")
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +sample_count_1_bc1_ref + +sample_count_1_bc2_ref + +sample_count_1_bc3_ref + +sample_count_1_bc4_ref + +sample_count_1_bc5_ref + +sample_count_1_bc6_ref + +sample_count_1_bc7_ref + +sample_count_1_bc8_ref + +sample_count_1_bc9_ref + +sample_count_1_bc10_ref + +sample_count_1_bc11_ref + +sample_count_1_bc12_ref + +sample_count_1_bc13_ref + +sample_count_1_bc14_ref + +sample_count_1_bc15_ref + +sample_count_1_bc16_ref + +sample_count_1_bc17_ref + +sample_count_1_bc18_ref + +sample_count_1_bc19_ref + +sample_count_1_bc20_ref + +sample_count_1_bc21_ref + +sample_count_1_bc22_ref + +sample_count_1_bc23_ref + +sample_count_1_bc24_ref + +sample_count_1_bc25_ref + +sample_count_1_bc26_ref + +sample_count_1_bc27_ref + +sample_count_1_bc28_ref + +sample_count_1_bc29_ref + +sample_count_1_bc30_ref + +sample_count_1_bc31_ref + +sample_count_1_bc32_ref + +sample_count_1_bc33_ref + +sample_count_1_bc34_ref + +sample_count_1_bc35_ref + +sample_count_1_bc36_ref + +sample_count_1_bc37_ref + +sample_count_1_bc38_ref + +sample_count_1_bc39_ref + +sample_count_1_bc40_ref + +sample_count_1_bc41_ref + +sample_count_1_bc42_ref + +sample_count_1_bc43_ref + +sample_count_1_bc44_ref + +sample_count_1_bc45_ref + +sample_count_1_bc46_ref + +sample_count_1_bc47_ref + +sample_count_1_bc48_ref + +sample_count_1_bc49_ref + +sample_count_1_bc50_ref + +sample_count_1_bc51_ref + +sample_count_1_bc52_ref + +sample_count_1_bc53_ref + +sample_count_1_bc54_ref + +sample_count_1_bc55_ref + +sample_count_1_bc56_ref + +sample_count_1_bc57_ref + +sample_count_1_bc58_ref + +sample_count_1_bc59_ref + +sample_count_1_bc60_ref + +sample_count_1_bc61_ref + +sample_count_1_bc62_ref + +sample_count_1_bc63_ref + +sample_count_1_bc64_ref + +sample_count_1_bc65_ref + +sample_count_1_bc66_ref + +sample_count_1_bc67_ref + +sample_count_1_bc68_ref + +sample_count_1_bc69_ref + +sample_count_1_bc70_ref + +sample_count_1_bc71_ref + +sample_count_1_bc72_ref + +sample_count_1_bc73_ref + +sample_count_1_bc74_ref + +sample_count_1_bc75_ref + +sample_count_1_bc76_ref + +sample_count_1_bc77_ref + +sample_count_1_bc78_ref + +sample_count_1_bc79_ref + +sample_count_1_bc1_alt + +sample_count_1_bc2_alt + +sample_count_1_bc3_alt + +sample_count_1_bc4_alt + +sample_count_1_bc5_alt + +sample_count_1_bc6_alt + +sample_count_1_bc7_alt + +sample_count_1_bc8_alt + +sample_count_1_bc9_alt + +sample_count_1_bc10_alt + +sample_count_1_bc11_alt + +sample_count_1_bc12_alt + +sample_count_1_bc13_alt + +sample_count_1_bc14_alt + +sample_count_1_bc15_alt + +sample_count_1_bc16_alt + +sample_count_1_bc17_alt + +sample_count_1_bc18_alt + +sample_count_1_bc19_alt + +sample_count_1_bc20_alt + +sample_count_1_bc21_alt + +sample_count_1_bc22_alt + +sample_count_1_bc23_alt + +sample_count_1_bc24_alt + +sample_count_1_bc25_alt + +sample_count_1_bc26_alt + +sample_count_1_bc27_alt + +sample_count_1_bc28_alt + +sample_count_1_bc29_alt + +sample_count_1_bc30_alt + +sample_count_1_bc31_alt + +sample_count_1_bc32_alt + +sample_count_1_bc33_alt + +sample_count_1_bc34_alt + +sample_count_1_bc35_alt + +sample_count_1_bc36_alt + +sample_count_1_bc37_alt + +sample_count_1_bc38_alt + +sample_count_1_bc39_alt + +sample_count_1_bc40_alt + +sample_count_1_bc41_alt + +sample_count_1_bc42_alt + +sample_count_1_bc43_alt + +sample_count_1_bc44_alt + +sample_count_1_bc45_alt + +sample_count_1_bc46_alt + +sample_count_1_bc47_alt + +sample_count_1_bc48_alt + +sample_count_1_bc49_alt + +sample_count_1_bc50_alt + +sample_count_1_bc51_alt + +sample_count_1_bc52_alt + +sample_count_1_bc53_alt + +sample_count_1_bc54_alt + +sample_count_1_bc55_alt + +sample_count_1_bc56_alt + +sample_count_1_bc57_alt + +sample_count_1_bc58_alt + +sample_count_1_bc59_alt + +sample_count_1_bc60_alt + +sample_count_1_bc61_alt + +sample_count_1_bc62_alt + +sample_count_1_bc63_alt + +sample_count_1_bc64_alt + +sample_count_1_bc65_alt + +sample_count_1_bc66_alt + +sample_count_1_bc67_alt + +sample_count_1_bc68_alt + +sample_count_1_bc69_alt + +sample_count_1_bc70_alt + +sample_count_1_bc71_alt + +sample_count_1_bc72_alt + +sample_count_1_bc73_alt + +sample_count_1_bc74_alt + +sample_count_1_bc75_alt + +sample_count_1_bc76_alt + +sample_count_1_bc77_alt + +sample_count_1_bc78_alt + +sample_count_1_bc79_alt + +sample_count_2_bc1_ref + +sample_count_2_bc2_ref + +sample_count_2_bc3_ref + +sample_count_2_bc4_ref + +sample_count_2_bc5_ref + +sample_count_2_bc6_ref + +sample_count_2_bc7_ref + +sample_count_2_bc8_ref + +sample_count_2_bc9_ref + +sample_count_2_bc10_ref + +sample_count_2_bc11_ref + +sample_count_2_bc12_ref + +sample_count_2_bc13_ref + +sample_count_2_bc14_ref + +sample_count_2_bc15_ref + +sample_count_2_bc16_ref + +sample_count_2_bc17_ref + +sample_count_2_bc18_ref + +sample_count_2_bc19_ref + +sample_count_2_bc20_ref + +sample_count_2_bc21_ref + +sample_count_2_bc22_ref + +sample_count_2_bc23_ref + +sample_count_2_bc24_ref + +sample_count_2_bc25_ref + +sample_count_2_bc26_ref + +sample_count_2_bc27_ref + +sample_count_2_bc28_ref + +sample_count_2_bc29_ref + +sample_count_2_bc30_ref + +sample_count_2_bc31_ref + +sample_count_2_bc32_ref + +sample_count_2_bc33_ref + +sample_count_2_bc34_ref + +sample_count_2_bc35_ref + +sample_count_2_bc36_ref + +sample_count_2_bc37_ref + +sample_count_2_bc38_ref + +sample_count_2_bc39_ref + +sample_count_2_bc40_ref + +sample_count_2_bc41_ref + +sample_count_2_bc42_ref + +sample_count_2_bc43_ref + +sample_count_2_bc44_ref + +sample_count_2_bc45_ref + +sample_count_2_bc46_ref + +sample_count_2_bc47_ref + +sample_count_2_bc48_ref + +sample_count_2_bc49_ref + +sample_count_2_bc50_ref + +sample_count_2_bc51_ref + +sample_count_2_bc52_ref + +sample_count_2_bc53_ref + +sample_count_2_bc54_ref + +sample_count_2_bc55_ref + +sample_count_2_bc56_ref + +sample_count_2_bc57_ref + +sample_count_2_bc58_ref + +sample_count_2_bc59_ref + +sample_count_2_bc60_ref + +sample_count_2_bc61_ref + +sample_count_2_bc62_ref + +sample_count_2_bc63_ref + +sample_count_2_bc64_ref + +sample_count_2_bc65_ref + +sample_count_2_bc66_ref + +sample_count_2_bc67_ref + +sample_count_2_bc68_ref + +sample_count_2_bc69_ref + +sample_count_2_bc70_ref + +sample_count_2_bc71_ref + +sample_count_2_bc72_ref + +sample_count_2_bc73_ref + +sample_count_2_bc74_ref + +sample_count_2_bc75_ref + +sample_count_2_bc76_ref + +sample_count_2_bc77_ref + +sample_count_2_bc78_ref + +sample_count_2_bc79_ref + +sample_count_2_bc1_alt + +sample_count_2_bc2_alt + +sample_count_2_bc3_alt + +sample_count_2_bc4_alt + +sample_count_2_bc5_alt + +sample_count_2_bc6_alt + +sample_count_2_bc7_alt + +sample_count_2_bc8_alt + +sample_count_2_bc9_alt + +sample_count_2_bc10_alt + +sample_count_2_bc11_alt + +sample_count_2_bc12_alt + +sample_count_2_bc13_alt + +sample_count_2_bc14_alt + +sample_count_2_bc15_alt + +sample_count_2_bc16_alt + +sample_count_2_bc17_alt + +sample_count_2_bc18_alt + +sample_count_2_bc19_alt + +sample_count_2_bc20_alt + +sample_count_2_bc21_alt + +sample_count_2_bc22_alt + +sample_count_2_bc23_alt + +sample_count_2_bc24_alt + +sample_count_2_bc25_alt + +sample_count_2_bc26_alt + +sample_count_2_bc27_alt + +sample_count_2_bc28_alt + +sample_count_2_bc29_alt + +sample_count_2_bc30_alt + +sample_count_2_bc31_alt + +sample_count_2_bc32_alt + +sample_count_2_bc33_alt + +sample_count_2_bc34_alt + +sample_count_2_bc35_alt + +sample_count_2_bc36_alt + +sample_count_2_bc37_alt + +sample_count_2_bc38_alt + +sample_count_2_bc39_alt + +sample_count_2_bc40_alt + +sample_count_2_bc41_alt + +sample_count_2_bc42_alt + +sample_count_2_bc43_alt + +sample_count_2_bc44_alt + +sample_count_2_bc45_alt + +sample_count_2_bc46_alt + +sample_count_2_bc47_alt + +sample_count_2_bc48_alt + +sample_count_2_bc49_alt + +sample_count_2_bc50_alt + +sample_count_2_bc51_alt + +sample_count_2_bc52_alt + +sample_count_2_bc53_alt + +sample_count_2_bc54_alt + +sample_count_2_bc55_alt + +sample_count_2_bc56_alt + +sample_count_2_bc57_alt + +sample_count_2_bc58_alt + +sample_count_2_bc59_alt + +sample_count_2_bc60_alt + +sample_count_2_bc61_alt + +sample_count_2_bc62_alt + +sample_count_2_bc63_alt + +sample_count_2_bc64_alt + +sample_count_2_bc65_alt + +sample_count_2_bc66_alt + +sample_count_2_bc67_alt + +sample_count_2_bc68_alt + +sample_count_2_bc69_alt + +sample_count_2_bc70_alt + +sample_count_2_bc71_alt + +sample_count_2_bc72_alt + +sample_count_2_bc73_alt + +sample_count_2_bc74_alt + +sample_count_2_bc75_alt + +sample_count_2_bc76_alt + +sample_count_2_bc77_alt + +sample_count_2_bc78_alt + +sample_count_2_bc79_alt + +sample_count_3_bc1_ref + +sample_count_3_bc2_ref + +sample_count_3_bc3_ref + +sample_count_3_bc4_ref + +sample_count_3_bc5_ref + +sample_count_3_bc6_ref + +sample_count_3_bc7_ref + +sample_count_3_bc8_ref + +sample_count_3_bc9_ref + +sample_count_3_bc10_ref + +sample_count_3_bc11_ref + +sample_count_3_bc12_ref + +sample_count_3_bc13_ref + +sample_count_3_bc14_ref + +sample_count_3_bc15_ref + +sample_count_3_bc16_ref + +sample_count_3_bc17_ref + +sample_count_3_bc18_ref + +sample_count_3_bc19_ref + +sample_count_3_bc20_ref + +sample_count_3_bc21_ref + +sample_count_3_bc22_ref + +sample_count_3_bc23_ref + +sample_count_3_bc24_ref + +sample_count_3_bc25_ref + +sample_count_3_bc26_ref + +sample_count_3_bc27_ref + +sample_count_3_bc28_ref + +sample_count_3_bc29_ref + +sample_count_3_bc30_ref + +sample_count_3_bc31_ref + +sample_count_3_bc32_ref + +sample_count_3_bc33_ref + +sample_count_3_bc34_ref + +sample_count_3_bc35_ref + +sample_count_3_bc36_ref + +sample_count_3_bc37_ref + +sample_count_3_bc38_ref + +sample_count_3_bc39_ref + +sample_count_3_bc40_ref + +sample_count_3_bc41_ref + +sample_count_3_bc42_ref + +sample_count_3_bc43_ref + +sample_count_3_bc44_ref + +sample_count_3_bc45_ref + +sample_count_3_bc46_ref + +sample_count_3_bc47_ref + +sample_count_3_bc48_ref + +sample_count_3_bc49_ref + +sample_count_3_bc50_ref + +sample_count_3_bc51_ref + +sample_count_3_bc52_ref + +sample_count_3_bc53_ref + +sample_count_3_bc54_ref + +sample_count_3_bc55_ref + +sample_count_3_bc56_ref + +sample_count_3_bc57_ref + +sample_count_3_bc58_ref + +sample_count_3_bc59_ref + +sample_count_3_bc60_ref + +sample_count_3_bc61_ref + +sample_count_3_bc62_ref + +sample_count_3_bc63_ref + +sample_count_3_bc64_ref + +sample_count_3_bc65_ref + +sample_count_3_bc66_ref + +sample_count_3_bc67_ref + +sample_count_3_bc68_ref + +sample_count_3_bc69_ref + +sample_count_3_bc70_ref + +sample_count_3_bc71_ref + +sample_count_3_bc72_ref + +sample_count_3_bc73_ref + +sample_count_3_bc74_ref + +sample_count_3_bc75_ref + +sample_count_3_bc76_ref + +sample_count_3_bc77_ref + +sample_count_3_bc78_ref + +sample_count_3_bc79_ref + +sample_count_3_bc1_alt + +sample_count_3_bc2_alt + +sample_count_3_bc3_alt + +sample_count_3_bc4_alt + +sample_count_3_bc5_alt + +sample_count_3_bc6_alt + +sample_count_3_bc7_alt + +sample_count_3_bc8_alt + +sample_count_3_bc9_alt + +sample_count_3_bc10_alt + +sample_count_3_bc11_alt + +sample_count_3_bc12_alt + +sample_count_3_bc13_alt + +sample_count_3_bc14_alt + +sample_count_3_bc15_alt + +sample_count_3_bc16_alt + +sample_count_3_bc17_alt + +sample_count_3_bc18_alt + +sample_count_3_bc19_alt + +sample_count_3_bc20_alt + +sample_count_3_bc21_alt + +sample_count_3_bc22_alt + +sample_count_3_bc23_alt + +sample_count_3_bc24_alt + +sample_count_3_bc25_alt + +sample_count_3_bc26_alt + +sample_count_3_bc27_alt + +sample_count_3_bc28_alt + +sample_count_3_bc29_alt + +sample_count_3_bc30_alt + +sample_count_3_bc31_alt + +sample_count_3_bc32_alt + +sample_count_3_bc33_alt + +sample_count_3_bc34_alt + +sample_count_3_bc35_alt + +sample_count_3_bc36_alt + +sample_count_3_bc37_alt + +sample_count_3_bc38_alt + +sample_count_3_bc39_alt + +sample_count_3_bc40_alt + +sample_count_3_bc41_alt + +sample_count_3_bc42_alt + +sample_count_3_bc43_alt + +sample_count_3_bc44_alt + +sample_count_3_bc45_alt + +sample_count_3_bc46_alt + +sample_count_3_bc47_alt + +sample_count_3_bc48_alt + +sample_count_3_bc49_alt + +sample_count_3_bc50_alt + +sample_count_3_bc51_alt + +sample_count_3_bc52_alt + +sample_count_3_bc53_alt + +sample_count_3_bc54_alt + +sample_count_3_bc55_alt + +sample_count_3_bc56_alt + +sample_count_3_bc57_alt + +sample_count_3_bc58_alt + +sample_count_3_bc59_alt + +sample_count_3_bc60_alt + +sample_count_3_bc61_alt + +sample_count_3_bc62_alt + +sample_count_3_bc63_alt + +sample_count_3_bc64_alt + +sample_count_3_bc65_alt + +sample_count_3_bc66_alt + +sample_count_3_bc67_alt + +sample_count_3_bc68_alt + +sample_count_3_bc69_alt + +sample_count_3_bc70_alt + +sample_count_3_bc71_alt + +sample_count_3_bc72_alt + +sample_count_3_bc73_alt + +sample_count_3_bc74_alt + +sample_count_3_bc75_alt + +sample_count_3_bc76_alt + +sample_count_3_bc77_alt + +sample_count_3_bc78_alt + +sample_count_3_bc79_alt +
+variant_10 + +8 + +4 + +2 + +5 + +3 + +8 + +9 + +6 + +2 + +7 + +4 + +3 + +6 + +2 + +5 + +2 + +4 + +4 + +5 + +4 + +1 + +8 + +1 + +1 + +5 + +5 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +4 + +4 + +7 + +8 + +2 + +1 + +1 + +3 + +1 + +2 + +2 + +4 + +1 + +1 + +2 + +3 + +2 + +1 + +3 + +3 + +1 + +1 + +3 + +5 + +2 + +1 + +3 + +1 + +3 + +7 + +3 + +3 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +4 + +3 + +1 + +2 + +1 + +1 + +4 + +3 + +4 + +6 + +1 + +1 + +2 + +1 + +7 + +2 + +2 + +4 + +1 + +2 + +3 + +2 + +4 + +2 + +2 + +5 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +7 + +3 + +1 + +3 + +3 + +6 + +3 + +4 + +4 + +3 + +3 + +2 + +1 + +1 + +1 + +1 + +1 + +1 + +6 + +2 + +5 + +2 + +1 + +3 + +1 + +1 + +4 + +8 + +1 + +6 + +2 + +3 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +11 + +7 + +3 + +1 + +4 + +4 + +2 + +9 + +2 + +14 + +1 + +7 + +1 + +4 + +2 + +2 + +6 + +3 + +3 + +1 + +1 + +5 + +2 + +3 + +4 + +6 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +1 + +3 + +7 + +8 + +7 + +1 + +2 + +4 + +5 + +5 + +6 + +6 + +4 + +4 + +2 + +12 + +1 + +6 + +6 + +4 + +1 + +3 + +2 + +1 + +3 + +5 + +4 + +13 + +3 + +6 + +2 + +13 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA +
+variant_100 + +12 + +11 + +2 + +3 + +2 + +3 + +2 + +11 + +6 + +3 + +19 + +3 + +4 + +4 + +7 + +2 + +4 + +5 + +8 + +3 + +3 + +1 + +3 + +3 + +3 + +5 + +10 + +4 + +6 + +6 + +11 + +2 + +8 + +4 + +4 + +2 + +4 + +1 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +3 + +3 + +10 + +5 + +8 + +3 + +4 + +1 + +6 + +3 + +2 + +4 + +3 + +7 + +9 + +2 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +2 + +7 + +1 + +4 + +2 + +3 + +4 + +3 + +3 + +3 + +7 + +6 + +2 + +3 + +1 + +12 + +5 + +7 + +6 + +2 + +1 + +4 + +2 + +9 + +2 + +3 + +7 + +3 + +5 + +5 + +12 + +9 + +9 + +3 + +5 + +1 + +1 + +9 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +4 + +2 + +9 + +7 + +6 + +2 + +3 + +5 + +14 + +5 + +4 + +8 + +5 + +4 + +2 + +2 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +6 + +7 + +6 + +5 + +2 + +2 + +3 + +3 + +1 + +4 + +5 + +4 + +6 + +10 + +7 + +3 + +4 + +2 + +4 + +1 + +3 + +2 + +2 + +2 + +1 + +7 + +2 + +2 + +1 + +3 + +7 + +4 + +2 + +5 + +1 + +1 + +4 + +3 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +5 + +2 + +10 + +6 + +1 + +2 + +2 + +1 + +3 + +1 + +8 + +3 + +2 + +1 + +1 + +2 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA +
+variant_100314 + +9 + +5 + +1 + +5 + +12 + +2 + +12 + +10 + +10 + +3 + +7 + +16 + +4 + +8 + +2 + +8 + +2 + +4 + +13 + +3 + +1 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +7 + +10 + +4 + +5 + +4 + +3 + +12 + +10 + +5 + +4 + +11 + +17 + +1 + +5 + +5 + +7 + +5 + +5 + +13 + +10 + +4 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +3 + +1 + +6 + +1 + +5 + +9 + +3 + +3 + +10 + +12 + +9 + +24 + +2 + +1 + +2 + +10 + +3 + +2 + +3 + +14 + +1 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA +
+variant_100463 + +7 + +8 + +3 + +1 + +1 + +7 + +2 + +3 + +8 + +1 + +6 + +3 + +5 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +1 + +3 + +3 + +1 + +3 + +3 + +6 + +1 + +3 + +2 + +6 + +1 + +5 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +4 + +4 + +4 + +2 + +3 + +3 + +1 + +2 + +3 + +6 + +1 + +4 + +4 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA +
+variant_101 + +18 + +16 + +3 + +9 + +4 + +1 + +4 + +3 + +14 + +5 + +3 + +7 + +1 + +1 + +7 + +5 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +1 + +2 + +4 + +7 + +7 + +1 + +3 + +3 + +4 + +1 + +6 + +2 + +12 + +2 + +10 + +4 + +1 + +6 + +2 + +6 + +3 + +3 + +1 + +8 + +3 + +1 + +2 + +10 + +4 + +5 + +10 + +6 + +3 + +1 + +3 + +3 + +4 + +5 + +5 + +2 + +5 + +6 + +5 + +11 + +5 + +7 + +3 + +2 + +2 + +3 + +5 + +11 + +13 + +10 + +7 + +2 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +1 + +13 + +6 + +7 + +2 + +2 + +1 + +1 + +8 + +1 + +3 + +2 + +3 + +6 + +12 + +2 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +1 + +5 + +1 + +2 + +2 + +16 + +12 + +1 + +10 + +3 + +2 + +2 + +4 + +4 + +9 + +5 + +6 + +1 + +6 + +2 + +3 + +2 + +7 + +2 + +1 + +2 + +6 + +3 + +1 + +2 + +3 + +3 + +1 + +4 + +8 + +1 + +1 + +4 + +4 + +5 + +1 + +4 + +9 + +5 + +4 + +2 + +7 + +9 + +1 + +9 + +11 + +4 + +7 + +12 + +9 + +6 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +10 + +11 + +2 + +6 + +6 + +1 + +4 + +1 + +2 + +1 + +2 + +3 + +7 + +7 + +6 + +2 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +7 + +1 + +2 + +8 + +6 + +5 + +5 + +1 + +6 + +5 + +2 + +3 + +3 + +2 + +2 + +3 + +2 + +2 + +3 + +3 + +4 + +5 + +2 + +5 + +2 + +2 + +1 + +5 + +15 + +1 + +5 + +4 + +2 + +1 + +1 + +1 + +4 + +4 + +1 + +2 + +1 + +3 + +14 + +12 + +2 + +1 + +2 + +7 + +2 + +2 + +5 + +8 + +12 + +4 + +7 + +4 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA +
+variant_101165 + +2 + +8 + +9 + +7 + +7 + +5 + +5 + +2 + +2 + +21 + +2 + +1 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +3 + +2 + +4 + +3 + +4 + +5 + +3 + +4 + +2 + +10 + +7 + +10 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +1 + +6 + +2 + +4 + +3 + +2 + +1 + +1 + +7 + +10 + +1 + +3 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA +
+
+
rna_var <- create_rna_df(var_df)
+kable(head(rna_var), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%")
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +sample_count_1_bc1_ref + +sample_count_1_bc2_ref + +sample_count_1_bc3_ref + +sample_count_1_bc4_ref + +sample_count_1_bc5_ref + +sample_count_1_bc6_ref + +sample_count_1_bc7_ref + +sample_count_1_bc8_ref + +sample_count_1_bc9_ref + +sample_count_1_bc10_ref + +sample_count_1_bc11_ref + +sample_count_1_bc12_ref + +sample_count_1_bc13_ref + +sample_count_1_bc14_ref + +sample_count_1_bc15_ref + +sample_count_1_bc16_ref + +sample_count_1_bc17_ref + +sample_count_1_bc18_ref + +sample_count_1_bc19_ref + +sample_count_1_bc20_ref + +sample_count_1_bc21_ref + +sample_count_1_bc22_ref + +sample_count_1_bc23_ref + +sample_count_1_bc24_ref + +sample_count_1_bc25_ref + +sample_count_1_bc26_ref + +sample_count_1_bc27_ref + +sample_count_1_bc28_ref + +sample_count_1_bc29_ref + +sample_count_1_bc30_ref + +sample_count_1_bc31_ref + +sample_count_1_bc32_ref + +sample_count_1_bc33_ref + +sample_count_1_bc34_ref + +sample_count_1_bc35_ref + +sample_count_1_bc36_ref + +sample_count_1_bc37_ref + +sample_count_1_bc38_ref + +sample_count_1_bc39_ref + +sample_count_1_bc40_ref + +sample_count_1_bc41_ref + +sample_count_1_bc42_ref + +sample_count_1_bc43_ref + +sample_count_1_bc44_ref + +sample_count_1_bc45_ref + +sample_count_1_bc46_ref + +sample_count_1_bc47_ref + +sample_count_1_bc48_ref + +sample_count_1_bc49_ref + +sample_count_1_bc50_ref + +sample_count_1_bc51_ref + +sample_count_1_bc52_ref + +sample_count_1_bc53_ref + +sample_count_1_bc54_ref + +sample_count_1_bc55_ref + +sample_count_1_bc56_ref + +sample_count_1_bc57_ref + +sample_count_1_bc58_ref + +sample_count_1_bc59_ref + +sample_count_1_bc60_ref + +sample_count_1_bc61_ref + +sample_count_1_bc62_ref + +sample_count_1_bc63_ref + +sample_count_1_bc64_ref + +sample_count_1_bc65_ref + +sample_count_1_bc66_ref + +sample_count_1_bc67_ref + +sample_count_1_bc68_ref + +sample_count_1_bc69_ref + +sample_count_1_bc70_ref + +sample_count_1_bc71_ref + +sample_count_1_bc72_ref + +sample_count_1_bc73_ref + +sample_count_1_bc74_ref + +sample_count_1_bc75_ref + +sample_count_1_bc76_ref + +sample_count_1_bc77_ref + +sample_count_1_bc78_ref + +sample_count_1_bc79_ref + +sample_count_1_bc1_alt + +sample_count_1_bc2_alt + +sample_count_1_bc3_alt + +sample_count_1_bc4_alt + +sample_count_1_bc5_alt + +sample_count_1_bc6_alt + +sample_count_1_bc7_alt + +sample_count_1_bc8_alt + +sample_count_1_bc9_alt + +sample_count_1_bc10_alt + +sample_count_1_bc11_alt + +sample_count_1_bc12_alt + +sample_count_1_bc13_alt + +sample_count_1_bc14_alt + +sample_count_1_bc15_alt + +sample_count_1_bc16_alt + +sample_count_1_bc17_alt + +sample_count_1_bc18_alt + +sample_count_1_bc19_alt + +sample_count_1_bc20_alt + +sample_count_1_bc21_alt + +sample_count_1_bc22_alt + +sample_count_1_bc23_alt + +sample_count_1_bc24_alt + +sample_count_1_bc25_alt + +sample_count_1_bc26_alt + +sample_count_1_bc27_alt + +sample_count_1_bc28_alt + +sample_count_1_bc29_alt + +sample_count_1_bc30_alt + +sample_count_1_bc31_alt + +sample_count_1_bc32_alt + +sample_count_1_bc33_alt + +sample_count_1_bc34_alt + +sample_count_1_bc35_alt + +sample_count_1_bc36_alt + +sample_count_1_bc37_alt + +sample_count_1_bc38_alt + +sample_count_1_bc39_alt + +sample_count_1_bc40_alt + +sample_count_1_bc41_alt + +sample_count_1_bc42_alt + +sample_count_1_bc43_alt + +sample_count_1_bc44_alt + +sample_count_1_bc45_alt + +sample_count_1_bc46_alt + +sample_count_1_bc47_alt + +sample_count_1_bc48_alt + +sample_count_1_bc49_alt + +sample_count_1_bc50_alt + +sample_count_1_bc51_alt + +sample_count_1_bc52_alt + +sample_count_1_bc53_alt + +sample_count_1_bc54_alt + +sample_count_1_bc55_alt + +sample_count_1_bc56_alt + +sample_count_1_bc57_alt + +sample_count_1_bc58_alt + +sample_count_1_bc59_alt + +sample_count_1_bc60_alt + +sample_count_1_bc61_alt + +sample_count_1_bc62_alt + +sample_count_1_bc63_alt + +sample_count_1_bc64_alt + +sample_count_1_bc65_alt + +sample_count_1_bc66_alt + +sample_count_1_bc67_alt + +sample_count_1_bc68_alt + +sample_count_1_bc69_alt + +sample_count_1_bc70_alt + +sample_count_1_bc71_alt + +sample_count_1_bc72_alt + +sample_count_1_bc73_alt + +sample_count_1_bc74_alt + +sample_count_1_bc75_alt + +sample_count_1_bc76_alt + +sample_count_1_bc77_alt + +sample_count_1_bc78_alt + +sample_count_1_bc79_alt + +sample_count_2_bc1_ref + +sample_count_2_bc2_ref + +sample_count_2_bc3_ref + +sample_count_2_bc4_ref + +sample_count_2_bc5_ref + +sample_count_2_bc6_ref + +sample_count_2_bc7_ref + +sample_count_2_bc8_ref + +sample_count_2_bc9_ref + +sample_count_2_bc10_ref + +sample_count_2_bc11_ref + +sample_count_2_bc12_ref + +sample_count_2_bc13_ref + +sample_count_2_bc14_ref + +sample_count_2_bc15_ref + +sample_count_2_bc16_ref + +sample_count_2_bc17_ref + +sample_count_2_bc18_ref + +sample_count_2_bc19_ref + +sample_count_2_bc20_ref + +sample_count_2_bc21_ref + +sample_count_2_bc22_ref + +sample_count_2_bc23_ref + +sample_count_2_bc24_ref + +sample_count_2_bc25_ref + +sample_count_2_bc26_ref + +sample_count_2_bc27_ref + +sample_count_2_bc28_ref + +sample_count_2_bc29_ref + +sample_count_2_bc30_ref + +sample_count_2_bc31_ref + +sample_count_2_bc32_ref + +sample_count_2_bc33_ref + +sample_count_2_bc34_ref + +sample_count_2_bc35_ref + +sample_count_2_bc36_ref + +sample_count_2_bc37_ref + +sample_count_2_bc38_ref + +sample_count_2_bc39_ref + +sample_count_2_bc40_ref + +sample_count_2_bc41_ref + +sample_count_2_bc42_ref + +sample_count_2_bc43_ref + +sample_count_2_bc44_ref + +sample_count_2_bc45_ref + +sample_count_2_bc46_ref + +sample_count_2_bc47_ref + +sample_count_2_bc48_ref + +sample_count_2_bc49_ref + +sample_count_2_bc50_ref + +sample_count_2_bc51_ref + +sample_count_2_bc52_ref + +sample_count_2_bc53_ref + +sample_count_2_bc54_ref + +sample_count_2_bc55_ref + +sample_count_2_bc56_ref + +sample_count_2_bc57_ref + +sample_count_2_bc58_ref + +sample_count_2_bc59_ref + +sample_count_2_bc60_ref + +sample_count_2_bc61_ref + +sample_count_2_bc62_ref + +sample_count_2_bc63_ref + +sample_count_2_bc64_ref + +sample_count_2_bc65_ref + +sample_count_2_bc66_ref + +sample_count_2_bc67_ref + +sample_count_2_bc68_ref + +sample_count_2_bc69_ref + +sample_count_2_bc70_ref + +sample_count_2_bc71_ref + +sample_count_2_bc72_ref + +sample_count_2_bc73_ref + +sample_count_2_bc74_ref + +sample_count_2_bc75_ref + +sample_count_2_bc76_ref + +sample_count_2_bc77_ref + +sample_count_2_bc78_ref + +sample_count_2_bc79_ref + +sample_count_2_bc1_alt + +sample_count_2_bc2_alt + +sample_count_2_bc3_alt + +sample_count_2_bc4_alt + +sample_count_2_bc5_alt + +sample_count_2_bc6_alt + +sample_count_2_bc7_alt + +sample_count_2_bc8_alt + +sample_count_2_bc9_alt + +sample_count_2_bc10_alt + +sample_count_2_bc11_alt + +sample_count_2_bc12_alt + +sample_count_2_bc13_alt + +sample_count_2_bc14_alt + +sample_count_2_bc15_alt + +sample_count_2_bc16_alt + +sample_count_2_bc17_alt + +sample_count_2_bc18_alt + +sample_count_2_bc19_alt + +sample_count_2_bc20_alt + +sample_count_2_bc21_alt + +sample_count_2_bc22_alt + +sample_count_2_bc23_alt + +sample_count_2_bc24_alt + +sample_count_2_bc25_alt + +sample_count_2_bc26_alt + +sample_count_2_bc27_alt + +sample_count_2_bc28_alt + +sample_count_2_bc29_alt + +sample_count_2_bc30_alt + +sample_count_2_bc31_alt + +sample_count_2_bc32_alt + +sample_count_2_bc33_alt + +sample_count_2_bc34_alt + +sample_count_2_bc35_alt + +sample_count_2_bc36_alt + +sample_count_2_bc37_alt + +sample_count_2_bc38_alt + +sample_count_2_bc39_alt + +sample_count_2_bc40_alt + +sample_count_2_bc41_alt + +sample_count_2_bc42_alt + +sample_count_2_bc43_alt + +sample_count_2_bc44_alt + +sample_count_2_bc45_alt + +sample_count_2_bc46_alt + +sample_count_2_bc47_alt + +sample_count_2_bc48_alt + +sample_count_2_bc49_alt + +sample_count_2_bc50_alt + +sample_count_2_bc51_alt + +sample_count_2_bc52_alt + +sample_count_2_bc53_alt + +sample_count_2_bc54_alt + +sample_count_2_bc55_alt + +sample_count_2_bc56_alt + +sample_count_2_bc57_alt + +sample_count_2_bc58_alt + +sample_count_2_bc59_alt + +sample_count_2_bc60_alt + +sample_count_2_bc61_alt + +sample_count_2_bc62_alt + +sample_count_2_bc63_alt + +sample_count_2_bc64_alt + +sample_count_2_bc65_alt + +sample_count_2_bc66_alt + +sample_count_2_bc67_alt + +sample_count_2_bc68_alt + +sample_count_2_bc69_alt + +sample_count_2_bc70_alt + +sample_count_2_bc71_alt + +sample_count_2_bc72_alt + +sample_count_2_bc73_alt + +sample_count_2_bc74_alt + +sample_count_2_bc75_alt + +sample_count_2_bc76_alt + +sample_count_2_bc77_alt + +sample_count_2_bc78_alt + +sample_count_2_bc79_alt + +sample_count_3_bc1_ref + +sample_count_3_bc2_ref + +sample_count_3_bc3_ref + +sample_count_3_bc4_ref + +sample_count_3_bc5_ref + +sample_count_3_bc6_ref + +sample_count_3_bc7_ref + +sample_count_3_bc8_ref + +sample_count_3_bc9_ref + +sample_count_3_bc10_ref + +sample_count_3_bc11_ref + +sample_count_3_bc12_ref + +sample_count_3_bc13_ref + +sample_count_3_bc14_ref + +sample_count_3_bc15_ref + +sample_count_3_bc16_ref + +sample_count_3_bc17_ref + +sample_count_3_bc18_ref + +sample_count_3_bc19_ref + +sample_count_3_bc20_ref + +sample_count_3_bc21_ref + +sample_count_3_bc22_ref + +sample_count_3_bc23_ref + +sample_count_3_bc24_ref + +sample_count_3_bc25_ref + +sample_count_3_bc26_ref + +sample_count_3_bc27_ref + +sample_count_3_bc28_ref + +sample_count_3_bc29_ref + +sample_count_3_bc30_ref + +sample_count_3_bc31_ref + +sample_count_3_bc32_ref + +sample_count_3_bc33_ref + +sample_count_3_bc34_ref + +sample_count_3_bc35_ref + +sample_count_3_bc36_ref + +sample_count_3_bc37_ref + +sample_count_3_bc38_ref + +sample_count_3_bc39_ref + +sample_count_3_bc40_ref + +sample_count_3_bc41_ref + +sample_count_3_bc42_ref + +sample_count_3_bc43_ref + +sample_count_3_bc44_ref + +sample_count_3_bc45_ref + +sample_count_3_bc46_ref + +sample_count_3_bc47_ref + +sample_count_3_bc48_ref + +sample_count_3_bc49_ref + +sample_count_3_bc50_ref + +sample_count_3_bc51_ref + +sample_count_3_bc52_ref + +sample_count_3_bc53_ref + +sample_count_3_bc54_ref + +sample_count_3_bc55_ref + +sample_count_3_bc56_ref + +sample_count_3_bc57_ref + +sample_count_3_bc58_ref + +sample_count_3_bc59_ref + +sample_count_3_bc60_ref + +sample_count_3_bc61_ref + +sample_count_3_bc62_ref + +sample_count_3_bc63_ref + +sample_count_3_bc64_ref + +sample_count_3_bc65_ref + +sample_count_3_bc66_ref + +sample_count_3_bc67_ref + +sample_count_3_bc68_ref + +sample_count_3_bc69_ref + +sample_count_3_bc70_ref + +sample_count_3_bc71_ref + +sample_count_3_bc72_ref + +sample_count_3_bc73_ref + +sample_count_3_bc74_ref + +sample_count_3_bc75_ref + +sample_count_3_bc76_ref + +sample_count_3_bc77_ref + +sample_count_3_bc78_ref + +sample_count_3_bc79_ref + +sample_count_3_bc1_alt + +sample_count_3_bc2_alt + +sample_count_3_bc3_alt + +sample_count_3_bc4_alt + +sample_count_3_bc5_alt + +sample_count_3_bc6_alt + +sample_count_3_bc7_alt + +sample_count_3_bc8_alt + +sample_count_3_bc9_alt + +sample_count_3_bc10_alt + +sample_count_3_bc11_alt + +sample_count_3_bc12_alt + +sample_count_3_bc13_alt + +sample_count_3_bc14_alt + +sample_count_3_bc15_alt + +sample_count_3_bc16_alt + +sample_count_3_bc17_alt + +sample_count_3_bc18_alt + +sample_count_3_bc19_alt + +sample_count_3_bc20_alt + +sample_count_3_bc21_alt + +sample_count_3_bc22_alt + +sample_count_3_bc23_alt + +sample_count_3_bc24_alt + +sample_count_3_bc25_alt + +sample_count_3_bc26_alt + +sample_count_3_bc27_alt + +sample_count_3_bc28_alt + +sample_count_3_bc29_alt + +sample_count_3_bc30_alt + +sample_count_3_bc31_alt + +sample_count_3_bc32_alt + +sample_count_3_bc33_alt + +sample_count_3_bc34_alt + +sample_count_3_bc35_alt + +sample_count_3_bc36_alt + +sample_count_3_bc37_alt + +sample_count_3_bc38_alt + +sample_count_3_bc39_alt + +sample_count_3_bc40_alt + +sample_count_3_bc41_alt + +sample_count_3_bc42_alt + +sample_count_3_bc43_alt + +sample_count_3_bc44_alt + +sample_count_3_bc45_alt + +sample_count_3_bc46_alt + +sample_count_3_bc47_alt + +sample_count_3_bc48_alt + +sample_count_3_bc49_alt + +sample_count_3_bc50_alt + +sample_count_3_bc51_alt + +sample_count_3_bc52_alt + +sample_count_3_bc53_alt + +sample_count_3_bc54_alt + +sample_count_3_bc55_alt + +sample_count_3_bc56_alt + +sample_count_3_bc57_alt + +sample_count_3_bc58_alt + +sample_count_3_bc59_alt + +sample_count_3_bc60_alt + +sample_count_3_bc61_alt + +sample_count_3_bc62_alt + +sample_count_3_bc63_alt + +sample_count_3_bc64_alt + +sample_count_3_bc65_alt + +sample_count_3_bc66_alt + +sample_count_3_bc67_alt + +sample_count_3_bc68_alt + +sample_count_3_bc69_alt + +sample_count_3_bc70_alt + +sample_count_3_bc71_alt + +sample_count_3_bc72_alt + +sample_count_3_bc73_alt + +sample_count_3_bc74_alt + +sample_count_3_bc75_alt + +sample_count_3_bc76_alt + +sample_count_3_bc77_alt + +sample_count_3_bc78_alt + +sample_count_3_bc79_alt +
+variant_10 + +7 + +7 + +3 + +1 + +15 + +1 + +18 + +43 + +2 + +22 + +16 + +16 + +4 + +6 + +3 + +17 + +2 + +24 + +3 + +17 + +5 + +16 + +41 + +8 + +12 + +25 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +29 + +5 + +12 + +11 + +3 + +2 + +4 + +2 + +2 + +1 + +4 + +32 + +10 + +2 + +5 + +16 + +6 + +8 + +12 + +8 + +9 + +7 + +13 + +4 + +8 + +4 + +2 + +11 + +1 + +16 + +9 + +8 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +2 + +6 + +1 + +7 + +8 + +2 + +24 + +8 + +3 + +23 + +4 + +7 + +1 + +2 + +13 + +11 + +1 + +4 + +14 + +1 + +4 + +2 + +6 + +10 + +10 + +8 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +27 + +10 + +2 + +32 + +3 + +16 + +35 + +6 + +19 + +17 + +16 + +6 + +5 + +55 + +1 + +13 + +22 + +15 + +17 + +2 + +10 + +34 + +1 + +54 + +6 + +12 + +15 + +2 + +5 + +15 + +11 + +44 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +10 + +22 + +7 + +4 + +4 + +13 + +2 + +31 + +5 + +15 + +27 + +6 + +12 + +49 + +6 + +8 + +12 + +13 + +15 + +7 + +12 + +5 + +5 + +21 + +1 + +23 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +25 + +35 + +17 + +3 + +2 + +18 + +3 + +10 + +14 + +13 + +25 + +25 + +18 + +16 + +10 + +25 + +18 + +2 + +10 + +19 + +2 + +8 + +4 + +27 + +7 + +1 + +10 + +12 + +7 + +15 + +40 + +19 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA +
+variant_100 + +39 + +9 + +21 + +16 + +2 + +5 + +22 + +46 + +23 + +55 + +38 + +23 + +39 + +13 + +21 + +2 + +8 + +31 + +27 + +32 + +5 + +7 + +9 + +19 + +20 + +7 + +14 + +16 + +45 + +1 + +36 + +14 + +7 + +14 + +8 + +3 + +26 + +11 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +4 + +6 + +11 + +1 + +19 + +2 + +7 + +3 + +31 + +6 + +3 + +4 + +2 + +1 + +13 + +2 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +8 + +18 + +12 + +39 + +12 + +15 + +5 + +22 + +17 + +24 + +39 + +20 + +5 + +17 + +30 + +5 + +8 + +23 + +20 + +58 + +18 + +1 + +10 + +2 + +12 + +7 + +8 + +11 + +6 + +13 + +17 + +22 + +64 + +23 + +20 + +11 + +6 + +10 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +11 + +8 + +19 + +11 + +13 + +6 + +5 + +2 + +9 + +20 + +11 + +7 + +1 + +4 + +3 + +21 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +13 + +25 + +19 + +43 + +3 + +41 + +10 + +51 + +3 + +26 + +49 + +8 + +27 + +3 + +5 + +21 + +36 + +5 + +42 + +5 + +10 + +2 + +2 + +26 + +7 + +29 + +2 + +33 + +5 + +5 + +15 + +36 + +115 + +5 + +37 + +4 + +7 + +27 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +3 + +9 + +32 + +27 + +8 + +18 + +4 + +6 + +11 + +3 + +9 + +5 + +4 + +1 + +3 + +1 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA +
+variant_100314 + +1 + +17 + +3 + +6 + +8 + +4 + +4 + +6 + +15 + +12 + +4 + +17 + +7 + +10 + +9 + +11 + +15 + +9 + +16 + +2 + +1 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +5 + +5 + +20 + +11 + +9 + +4 + +2 + +6 + +24 + +5 + +11 + +12 + +3 + +10 + +11 + +2 + +4 + +6 + +29 + +34 + +4 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +3 + +2 + +18 + +11 + +21 + +6 + +1 + +7 + +33 + +10 + +3 + +38 + +2 + +6 + +6 + +2 + +5 + +2 + +2 + +28 + +1 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA +
+variant_100463 + +1 + +2 + +3 + +11 + +2 + +2 + +24 + +3 + +9 + +1 + +2 + +4 + +1 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +3 + +4 + +1 + +4 + +1 + +4 + +9 + +2 + +7 + +8 + +2 + +14 + +10 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +22 + +1 + +9 + +2 + +2 + +2 + +6 + +8 + +3 + +9 + +4 + +6 + +4 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA +
+variant_101 + +7 + +19 + +4 + +28 + +1 + +5 + +1 + +1 + +9 + +1 + +6 + +7 + +5 + +12 + +59 + +13 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +32 + +2 + +12 + +1 + +22 + +19 + +11 + +6 + +45 + +8 + +13 + +2 + +24 + +8 + +51 + +12 + +16 + +4 + +51 + +11 + +25 + +35 + +7 + +6 + +79 + +34 + +19 + +9 + +26 + +4 + +43 + +10 + +11 + +6 + +4 + +18 + +7 + +22 + +1 + +37 + +6 + +58 + +2 + +12 + +41 + +25 + +2 + +16 + +17 + +29 + +19 + +20 + +63 + +16 + +82 + +15 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +12 + +40 + +3 + +16 + +23 + +5 + +3 + +2 + +2 + +6 + +4 + +12 + +5 + +24 + +26 + +8 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +48 + +23 + +39 + +29 + +5 + +84 + +37 + +51 + +27 + +18 + +24 + +20 + +20 + +15 + +13 + +13 + +18 + +6 + +32 + +9 + +23 + +30 + +8 + +38 + +22 + +12 + +49 + +23 + +40 + +6 + +13 + +9 + +32 + +20 + +38 + +5 + +4 + +25 + +31 + +4 + +39 + +5 + +58 + +36 + +16 + +23 + +5 + +61 + +1 + +22 + +4 + +5 + +272 + +8 + +37 + +23 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +21 + +5 + +5 + +3 + +4 + +2 + +4 + +3 + +1 + +2 + +2 + +2 + +16 + +12 + +3 + +6 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +32 + +1 + +37 + +22 + +33 + +45 + +14 + +1 + +23 + +36 + +22 + +5 + +11 + +5 + +53 + +17 + +14 + +10 + +2 + +2 + +22 + +11 + +14 + +62 + +12 + +25 + +6 + +17 + +62 + +7 + +91 + +10 + +25 + +9 + +6 + +1 + +11 + +15 + +58 + +23 + +12 + +24 + +2 + +12 + +106 + +19 + +35 + +51 + +16 + +13 + +26 + +27 + +88 + +28 + +80 + +3 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA +
+variant_101165 + +4 + +13 + +9 + +26 + +13 + +2 + +24 + +2 + +5 + +22 + +4 + +2 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +2 + +3 + +3 + +10 + +4 + +2 + +13 + +1 + +27 + +2 + +3 + +7 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +5 + +1 + +12 + +7 + +3 + +1 + +4 + +3 + +6 + +12 + +7 + +3 + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA + +NA +
+
+

Now we create the MPRAset used as input to BCalm.

+
# create the variant specific MPRAset
+BcVariantMPRASetExample <- mpra::MPRASet(DNA = dna_var, RNA = rna_var, eid = row.names(dna_var), barcode = NULL)
+
+
+

4.2 Element testing

+

The dataset is the same one we used above, but we have to add labels to the data to distinguish between control and test groups, thus allowing us to easily identify and compare these different groups in the analysis later.

+
data(LabelExample)
+table(LabelExample)
+
## LabelExample
+## control  tested 
+##     198    1475
+
kable(head(LabelExample), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%")
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +x +
+oligo_000702 + +tested +
+oligo_000703 + +tested +
+oligo_000706 + +tested +
+oligo_000707 + +tested +
+oligo_000711 + +tested +
+oligo_000713 + +tested +
+
+

Once again, we perform downsampling on this dataset using the downsample_barcodes function.

+
elem_df <- downsample_barcodes(BcSetExample)
+

As before, we use create_dna_df and create_rna_df to format the data correctly for the MPRASet function. However, this time we specify id_column_name = "name" since the default, id_column_name = "variant_id", does not match our data format.

+
dna_elem <- create_dna_df(elem_df, id_column_name="name")
+rna_elem <- create_rna_df(elem_df, id_column_name="name")
+

To compare between test and control, we need to add the labels to the MPRASet.

+
BcLabelMPRASetExample <- BCalm::MPRASet(label = LabelExample, DNA = dna_elem, RNA = rna_elem, eid = row.names(dna_elem), barcode = NULL)
+

With the data prepared and preprocessed, we now have the foundation to conduct our analysis.

+
+
+
+

5 Analysis

+

In this section we get to see the usage of the mpralm and the fit_elements functions. We take the MPRASet created in the preprocessing chapter. BCalm allows us to analyze individual barcode counts as separate samples, capturing additional data variation and potentially increasing statistical power.

+
+

5.1 Variant Analysis

+

We will start with variant testing. In order to achieve this, we employ the mpralm function. Which column belongs to which replicate is described in a blocking vector, also used to normalize the counts per replicate. +The design matrix gives information which count comes from the reference and which from the alternative allele.

+
bcs <- ncol(dna_var) / nr_reps
+design <- data.frame(intcpt = 1, alt = grepl("alt", colnames(BcVariantMPRASetExample)))
+block_vector <- rep(1:nr_reps, each=bcs)
+mpralm_fit_var <- mpralm(object = BcVariantMPRASetExample, design = design, aggregate = "none", normalize = TRUE, model_type = "corr_groups", block = block_vector)
+

+
top_var <- topTable(mpralm_fit_var, coef = 2, number = Inf)
+kable(head(top_var), "html") %>% kable_styling("striped") %>% scroll_box(width = "100%")
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +logFC + +AveExpr + +t + +P.Value + +adj.P.Val + +B +
+variant_826 + +-3.154906 + +0.6724894 + +-20.28882 + +0 + +0 + +163.98241 +
+variant_631 + +2.615803 + +-0.2154056 + +17.23134 + +0 + +0 + +122.25397 +
+variant_168 + +-2.546799 + +0.3222023 + +-16.73891 + +0 + +0 + +115.60955 +
+variant_593 + +-2.347473 + +-0.3006751 + +-15.89282 + +0 + +0 + +105.15961 +
+variant_354 + +2.175092 + +0.2548269 + +15.07989 + +0 + +0 + +95.08313 +
+variant_173 + +-2.256538 + +-0.2743976 + +-14.35225 + +0 + +0 + +85.74157 +
+
+
ggplot(top_var, aes(x = logFC, y = -log10(P.Value))) +
+  geom_point(alpha = 0.6)
+

+
+
+

5.2 Element Analysis

+

BCalm provides the function fit_elements. It takes the MPRASet object as input and applies the statistical modeling. Again the block_vector gives reference which barcode belongs to which replicate. +We again set normalize = TRUE to perform total count normalization on the RNA and DNA libraries.

+
bcs <- ncol(dna_elem) / nr_reps
+block_vector <- rep(1:nr_reps, each=bcs)
+mpralm_fit_elem <- fit_elements(object = BcLabelMPRASetExample, normalize = TRUE, block = block_vector)
+

+
+

5.2.1 Visualisation and results

+

In this section, we will examine the visualization of our analysis results using the mpra_treat and plot_groups functions. +To visualize our results, we utilize the plot_groups function, which allows us to compare logratios for each group. We use the results from fit_elements above. As negative controls we use "control" and as test "tested".

+
plot_groups(mpralm_fit_elem, 0.975, neg_label="control", test_label="tested")
+

+

The mpra_treat() function reimplements the treat() function from the limma package. This function performs a t-test with a specified threshold, making it especially useful for identifying elements with significant differential activity in MPRA data.

+
treat <- mpra_treat(mpralm_fit_elem, 0.975, neg_label="control")
+result <- topTreat(treat, coef = 1, number = Inf)
+head(result)
+
##                 logFC  AveExpr        t       P.Value     adj.P.Val
+## oligo_006626 3.796215 3.799077 31.54178 7.971618e-124 1.333652e-120
+## oligo_006624 3.523239 3.526431 26.49626  7.163815e-97  5.992532e-94
+## oligo_006203 2.898541 2.901016 15.83343  8.760852e-45  4.885635e-42
+## oligo_005287 1.995353 1.997675 14.76786  7.336948e-42  3.068679e-39
+## oligo_006468 2.210699 2.214410 14.76272  1.655208e-41  5.538327e-39
+## oligo_006201 2.005480 2.008380 13.41020  8.509559e-36  2.372749e-33
+
+
+
+
+

6 Session Info

+

R version 4.4.0 (2024-04-24) +Platform: x86_64-conda-linux-gnu +Running under: Ubuntu 22.04.5 LTS

+

Matrix products: default +BLAS/LAPACK: /home/mschubach/miniforge3/envs/BCalm_env/lib/libopenblasp-r0.3.28.so; LAPACK version 3.12.0

+

locale: +[1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8
+[4] LC_COLLATE=C LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8
+[7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C
+[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C

+

time zone: Europe/Berlin +tzcode source: system (glibc)

+

attached base packages: +[1] stats4 stats graphics grDevices utils datasets methods
+[8] base

+

other attached packages: +[1] kableExtra_1.4.0 ggplot2_3.5.2
+[3] dplyr_1.1.4 BCalm_0.99.0
+[5] limma_3.58.1 SummarizedExperiment_1.32.0 +[7] Biobase_2.62.0 GenomicRanges_1.54.1
+[9] GenomeInfoDb_1.38.8 IRanges_2.36.0
+[11] S4Vectors_0.40.2 MatrixGenerics_1.14.0
+[13] matrixStats_1.4.1 BiocGenerics_0.48.1
+[15] BiocStyle_2.30.0

+

loaded via a namespace (and not attached): +[1] gtable_0.3.6 xfun_0.49 bslib_0.8.0
+[4] mpra_1.24.0 lattice_0.22-7 vctrs_0.6.5
+[7] tools_4.4.0 bitops_1.0-9 generics_0.1.3
+[10] tibble_3.2.1 fansi_1.0.6 pkgconfig_2.0.3
+[13] Matrix_1.7-3 RColorBrewer_1.1-3 lifecycle_1.0.4
+[16] GenomeInfoDbData_1.2.11 stringr_1.5.1 compiler_4.4.0
+[19] farver_2.1.2 statmod_1.5.0 htmltools_0.5.8.1
+[22] sass_0.4.9 RCurl_1.98-1.16 yaml_2.3.10
+[25] pillar_1.9.0 crayon_1.5.3 jquerylib_0.1.4
+[28] tidyr_1.3.1 DelayedArray_0.28.0 cachem_1.1.0
+[31] abind_1.4-8 tidyselect_1.2.1 digest_0.6.37
+[34] stringi_1.8.4 purrr_1.0.2 bookdown_0.41
+[37] labeling_0.4.3 fastmap_1.2.0 grid_4.4.0
+[40] colorspace_2.1-1 cli_3.6.3 SparseArray_1.2.4
+[43] magrittr_2.0.3 S4Arrays_1.2.1 utf8_1.2.4
+[46] withr_3.0.2 scales_1.4.0 rmarkdown_2.29
+[49] XVector_0.42.0 evaluate_1.0.1 knitr_1.49
+[52] viridisLite_0.4.2 rlang_1.1.4 glue_1.8.0
+[55] xml2_1.3.6 BiocManager_1.30.25 svglite_2.1.3
+[58] rstudioapi_0.17.1 jsonlite_1.8.9 R6_2.5.1
+[61] systemfonts_1.1.0 zlibbioc_1.48.2

+
+
+

References

+
+
+Csárdi, Gábor, Jim Hester, Hadley Wickham, Winston Chang, Martin Morgan, and Dan Tenenbaum. 2024. README — Cran.r-Project.org.” https://cran.r-project.org/web/packages/remotes/readme/README.html. +
+
+Gordon, M. Grace, Fumitaka Inoue, Beth Martin, Max Schubach, Vikram Agarwal, Sean Whalen, Shiyun Feng, et al. 2020. “lentiMPRA and MPRAflow for High-Throughput Functional Characterization of Gene Regulatory Elements.” Nature Protocols 15 (8): 2387–2412. https://doi.org/10.1038/s41596-020-0333-5. +
+
+Keukeleire, Pia, Jonathan D Rosen, Angelina Gobel-Knapp, Kilian Salomon, Max Schubach, and Martin Kircher. 2025. “Using Individual Barcodes to Increase Quantification Power of Massively Parallel Reporter Assays.” BMC Bioinformatics 26: 52. https://doi.org/10.1186/s12859-025-06065-9. +
+
+Law, Charity W, Yunshun Chen, Wei Shi, and Gordon K Smyth. 2014. “Voom: Precision Weights Unlock Linear Model Analysis Tools for RNA-seq Read Counts.” Genome Biology 15: R29. https://doi.org/10.1186/gb-2014-15-2-r29. +
+
+Myint, Leslie, Dimitrios G Avramopoulos, Loyal A Goff, and Kasper D Hansen. 2019. “Linear Models Enable Powerful Differential Activity Analysis in Massively Parallel Reporter Assays.” BMC Genomics 20: 209. https://doi.org/10.1186/s12864-019-5556-x. +
+
+Wickham, Hadley, Jim Hester, Winston Chang, and Jennifer Bryan. 2022. Devtools: Tools to Make Developing r Packages Easier. +
+
+
+ + + + +
+ + + + + + + + + + + + + + + + + + diff --git a/vignettes/bcalm.bib b/vignettes/bcalm.bib index d769389..94e40f6 100644 --- a/vignettes/bcalm.bib +++ b/vignettes/bcalm.bib @@ -1,3 +1,13 @@ +@ARTICLE{bcalm, + title = "Using individual barcodes to increase quantification power of massively parallel reporter assays", + author = "Keukeleire, Pia and Rosen, Jonathan D and Gobel-Knapp, Angelina and Salomon, Kilian and Schubach, Max and Kircher, Martin", + journal = "BMC Bioinformatics", + volume = 26, + pages = "52", + year = 2025, + doi = "10.1186/s12859-025-06065-9" +} + @ARTICLE{mpralm, title = "Linear models enable powerful differential activity analysis in massively parallel reporter assays", @@ -57,4 +67,4 @@ @article{Gordon2020 year = {2020}, month = jul, pages = {2387–2412} -} \ No newline at end of file +}