From 5d842dac6db0efac8250d0a3ba147f46a59163e1 Mon Sep 17 00:00:00 2001 From: David Gerard Date: Mon, 6 Nov 2023 11:55:17 -0500 Subject: [PATCH 1/2] Fixes #26. I decided just to convert aes_string() to aes() since that is less work. I might add more base plotting in the future --- DESCRIPTION | 2 +- R/multidog.R | 2 +- R/oracle.R | 5 +++-- R/plot_geno.R | 13 +++++++------ src/Makevars | 8 ++------ src/Makevars.win | 8 ++------ 6 files changed, 16 insertions(+), 22 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 3db9010..113d46c 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -26,7 +26,7 @@ BugReports: https://github.com/dcgerard/updog/issues URL: https://github.com/dcgerard/updog/ Encoding: UTF-8 LazyData: true -RoxygenNote: 7.2.1 +RoxygenNote: 7.2.3 LinkingTo: Rcpp, RcppArmadillo Imports: diff --git a/R/multidog.R b/R/multidog.R index 8a59eb4..4f415ae 100644 --- a/R/multidog.R +++ b/R/multidog.R @@ -741,7 +741,7 @@ export_vcf <- function(obj, filename) { strand=NULL, seqinfo = NULL, names = obj$snpdf$snp), - colData = DataFrame(row.names = indvec), + colData = S4Vectors::DataFrame(row.names = indvec), exptData = list( header = VariantAnnotation::VCFHeader( reference = character(), diff --git a/R/oracle.R b/R/oracle.R index cebac40..7daae22 100644 --- a/R/oracle.R +++ b/R/oracle.R @@ -269,6 +269,7 @@ oracle_mis_vec_from_joint <- function(jd) { #' print(pl) #' oracle_plot <- function(jd) { + .data <- NULL ## stupid work around for ggplot2 and R CMD check mat_text <- format(round(jd, digits = 2), digits = 2) probability_text <- c(sub("0\\.", "\\.", sub("0.00", "0", mat_text))) @@ -279,9 +280,9 @@ oracle_plot <- function(jd) { omiss <- oracle_mis_from_joint(jd = jd) ocorr <- oracle_cor_from_joint(jd = jd) - ggplot2::ggplot(data = dfdat, mapping = ggplot2::aes_string(x = "x", y = "y", fill = "Probability")) + + ggplot2::ggplot(data = dfdat, mapping = ggplot2::aes(x = .data[["x"]], y = .data[["y"]], fill = .data[["Probability"]])) + ggplot2::geom_tile() + - ggplot2::geom_text(ggplot2::aes_string(label = "probability_text")) + + ggplot2::geom_text(ggplot2::aes(label = .data[["probability_text"]])) + ggplot2::xlab("Estimated Genotype") + ggplot2::ylab("True Genotype") + ggplot2::ggtitle(paste0("Misclassification Error Rate: ", diff --git a/R/plot_geno.R b/R/plot_geno.R index f9a6283..94bcee2 100644 --- a/R/plot_geno.R +++ b/R/plot_geno.R @@ -79,6 +79,7 @@ plot_geno <- function(refvec, use_colorblind <- FALSE } + .data <- NULL ## stupid work around for ggplot2 and R CMD check assertthat::assert_that(all(refvec >= 0, na.rm = TRUE)) assertthat::assert_that(all(sizevec >= refvec, na.rm = TRUE)) assertthat::assert_that(ploidy >= 1) @@ -108,14 +109,14 @@ plot_geno <- function(refvec, ## Plot children if (is.null(maxpostprob)) { - pl <- ggplot2::ggplot(data = dfdat, mapping = ggplot2::aes_string(y = "A", x = "a")) + pl <- ggplot2::ggplot(data = dfdat, mapping = ggplot2::aes(y = .data[["A"]], x = .data[["a"]])) } else { - pl <- ggplot2::ggplot(data = dfdat, mapping = ggplot2::aes_string(y = "A", x = "a", alpha = "maxpostprob")) + pl <- ggplot2::ggplot(data = dfdat, mapping = ggplot2::aes(y = .data[["A"]], x = .data[["a"]], alpha = .data[["maxpostprob"]])) } ## add offspring genotypes ------------------------------------------------ if (!is.null(geno)) { - pl <- pl + ggplot2::geom_point(ggplot2::aes_string(color = "genotype")) + pl <- pl + ggplot2::geom_point(ggplot2::aes(color = .data[["genotype"]])) } else { pl <- pl + ggplot2::geom_point() } @@ -125,7 +126,7 @@ plot_geno <- function(refvec, ggplot2::ylim(0, maxcount) + ggplot2::ylab("Counts A") + ggplot2::xlab("Counts a") + - ggplot2::geom_segment(data = df_lines, mapping = ggplot2::aes_string(x = "x", y = "y", xend = "xend", yend = "yend"), + ggplot2::geom_segment(data = df_lines, mapping = ggplot2::aes(x = .data[["x"]], y = .data[["y"]], xend = .data[["xend"]], yend = .data[["yend"]]), lty = 2, alpha = 1/2, color = "black", size = 0.5) ## add parents if we have them @@ -143,7 +144,7 @@ plot_geno <- function(refvec, p1dat <- data.frame(A = p1ref, a = p1size - p1ref) if (!is.null(p1geno)) { p1dat$genotype <- factor(p1geno, levels = 0:ploidy) - pl <- pl + ggplot2::geom_point(data = p1dat, mapping = ggplot2::aes_string(color = "genotype"), + pl <- pl + ggplot2::geom_point(data = p1dat, mapping = ggplot2::aes(color = .data[["genotype"]]), size = 3, pch = 3, alpha = 1, show.legend = FALSE) pl <- pl + ggplot2::geom_point(data = p1dat, size = 1, color = "black", pch = 16, alpha = 1) } else { @@ -164,7 +165,7 @@ plot_geno <- function(refvec, p2dat <- data.frame(A = p2ref, a = p2size - p2ref) if (!is.null(p2geno)) { p2dat$genotype <- factor(p2geno, levels = 0:ploidy) - pl <- pl + ggplot2::geom_point(data = p2dat, mapping = ggplot2::aes_string(color = "genotype"), + pl <- pl + ggplot2::geom_point(data = p2dat, mapping = ggplot2::aes(color = .data[["genotype"]]), size = 3, pch = 4, alpha = 1, show.legend = FALSE) pl <- pl + ggplot2::geom_point(data = p2dat, size = 1, color = "black", pch = 16, alpha = 1) } else { diff --git a/src/Makevars b/src/Makevars index 899a6e7..3a7f8ac 100644 --- a/src/Makevars +++ b/src/Makevars @@ -1,6 +1,2 @@ - -## optional -CXX_STD = CXX11 - -PKG_CXXFLAGS = $(SHLIB_OPENMP_CXXFLAGS) -PKG_LIBS = $(SHLIB_OPENMP_CXXFLAGS) $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) +PKG_CXXFLAGS = $(SHLIB_OPENMP_CXXFLAGS) +PKG_LIBS = $(SHLIB_OPENMP_CXXFLAGS) $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) diff --git a/src/Makevars.win b/src/Makevars.win index 899a6e7..3a7f8ac 100644 --- a/src/Makevars.win +++ b/src/Makevars.win @@ -1,6 +1,2 @@ - -## optional -CXX_STD = CXX11 - -PKG_CXXFLAGS = $(SHLIB_OPENMP_CXXFLAGS) -PKG_LIBS = $(SHLIB_OPENMP_CXXFLAGS) $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) +PKG_CXXFLAGS = $(SHLIB_OPENMP_CXXFLAGS) +PKG_LIBS = $(SHLIB_OPENMP_CXXFLAGS) $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) From e8c27a000d126ae01f6990e2a874124bfb8f0b19 Mon Sep 17 00:00:00 2001 From: David Gerard Date: Mon, 6 Nov 2023 12:01:25 -0500 Subject: [PATCH 2/2] update checks --- .github/workflows/R-CMD-check.yaml | 77 ++++++++---------------------- README.Rmd | 2 +- README.md | 33 +++++++------ 3 files changed, 37 insertions(+), 75 deletions(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index 3cbb0c3..a3ac618 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -1,14 +1,10 @@ -# For help debugging build failures open an issue on the RStudio community with the 'github-actions' tag. -# https://community.rstudio.com/new-topic?category=Package%20development&tags=github-actions +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help on: push: - branches: - - main - - master + branches: [main, master] pull_request: - branches: - - main - - master + branches: [main, master] name: R-CMD-check @@ -22,65 +18,32 @@ jobs: fail-fast: false matrix: config: + - {os: macos-latest, r: 'release'} - {os: windows-latest, r: 'release'} - - {os: macOS-latest, r: 'release'} - - {os: ubuntu-20.04, r: 'release', rspm: "https://packagemanager.rstudio.com/cran/__linux__/focal/latest"} - # - {os: ubuntu-20.04, r: 'devel', rspm: "https://packagemanager.rstudio.com/cran/__linux__/focal/latest"} + - {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} + - {os: ubuntu-latest, r: 'release'} + - {os: ubuntu-latest, r: 'oldrel-1'} env: - R_REMOTES_NO_ERRORS_FROM_WARNINGS: true - RSPM: ${{ matrix.config.rspm }} GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + R_KEEP_PKG_SOURCE: yes steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - - uses: r-lib/actions/setup-r@v1 + - uses: r-lib/actions/setup-pandoc@v2 + + - uses: r-lib/actions/setup-r@v2 with: r-version: ${{ matrix.config.r }} + http-user-agent: ${{ matrix.config.http-user-agent }} + use-public-rspm: true - - uses: r-lib/actions/setup-pandoc@v1 - - - name: Query dependencies - run: | - install.packages('remotes') - saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2) - writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") - shell: Rscript {0} - - - name: Cache R packages - if: runner.os != 'Windows' - uses: actions/cache@v2 + - uses: r-lib/actions/setup-r-dependencies@v2 with: - path: ${{ env.R_LIBS_USER }} - key: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-${{ hashFiles('.github/depends.Rds') }} - restore-keys: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1- - - - name: Install system dependencies - if: runner.os == 'Linux' - run: | - while read -r cmd - do - eval sudo $cmd - done < <(Rscript -e 'writeLines(remotes::system_requirements("ubuntu", "20.04"))') - - - name: Install dependencies - run: | - remotes::install_deps(dependencies = TRUE) - remotes::install_cran("rcmdcheck") - install.packages("BiocManager") - BiocManager::install(c("VariantAnnotation", "GenomicRanges", "S4Vectors", "IRanges")) - shell: Rscript {0} - - - name: Check - env: - _R_CHECK_CRAN_INCOMING_REMOTE_: false - run: rcmdcheck::rcmdcheck(args = c("--no-manual", "--as-cran"), error_on = "warning", check_dir = "check") - shell: Rscript {0} + extra-packages: any::rcmdcheck + needs: check - - name: Upload check results - if: failure() - uses: actions/upload-artifact@main + - uses: r-lib/actions/check-r-package@v2 with: - name: ${{ runner.os }}-r${{ matrix.config.r }}-results - path: check + upload-snapshots: true diff --git a/README.Rmd b/README.Rmd index 437a18c..60fccb9 100644 --- a/README.Rmd +++ b/README.Rmd @@ -14,7 +14,7 @@ knitr::opts_chunk$set( # updog -[![R-CMD-check](https://github.com/dcgerard/updog/workflows/R-CMD-check/badge.svg)](https://github.com/dcgerard/updog/actions) +[![R-CMD-check](https://github.com/dcgerard/updog/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/dcgerard/updog/actions/workflows/R-CMD-check.yaml) [![codecov](https://codecov.io/gh/dcgerard/updog/branch/master/graph/badge.svg?token=zjDBKZWjCs)](https://app.codecov.io/gh/dcgerard/updog) [![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![CRAN_Status_Badge](https://www.r-pkg.org/badges/version/updog)](https://cran.r-project.org/package=updog) diff --git a/README.md b/README.md index ae8fb50..7191fdd 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ # updog -[![R-CMD-check](https://github.com/dcgerard/updog/workflows/R-CMD-check/badge.svg)](https://github.com/dcgerard/updog/actions) +[![R-CMD-check](https://github.com/dcgerard/updog/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/dcgerard/updog/actions/workflows/R-CMD-check.yaml) [![codecov](https://codecov.io/gh/dcgerard/updog/branch/master/graph/badge.svg?token=zjDBKZWjCs)](https://app.codecov.io/gh/dcgerard/updog) [![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) @@ -32,22 +32,21 @@ the data. Also provided are: -- `filter_snp()`: filter out SNPs based on the output of `multidog()`. -- `format_multidog()`: format the output of `multidog()` in terms of a - multidimensional array. -- Plot methods. Both `flexdog()` and `multidog()` have plot methods. - See the help files of `plot.flexdog()` and `plot.multidog()` for - details. -- Functions to simulate genotypes (`rgeno()`) and read-counts - (`rflexdog()`). These support all of the models available in - `flexdog()`. -- Functions to evaluate oracle genotyping performance: - `oracle_joint()`, `oracle_mis()`, `oracle_mis_vec()`, and - `oracle_cor()`. We mean “oracle” in the sense that we assume that - the entire data generation process is known (i.e. the genotype - distribution, sequencing error rate, allele bias, and overdispersion - are all known). These are good approximations when there are a lot - of individuals (but not necessarily large read-depth). +- `filter_snp()`: filter out SNPs based on the output of `multidog()`. +- `format_multidog()`: format the output of `multidog()` in terms of a + multidimensional array. +- Plot methods. Both `flexdog()` and `multidog()` have plot methods. See + the help files of `plot.flexdog()` and `plot.multidog()` for details. +- Functions to simulate genotypes (`rgeno()`) and read-counts + (`rflexdog()`). These support all of the models available in + `flexdog()`. +- Functions to evaluate oracle genotyping performance: `oracle_joint()`, + `oracle_mis()`, `oracle_mis_vec()`, and `oracle_cor()`. We mean + “oracle” in the sense that we assume that the entire data generation + process is known (i.e. the genotype distribution, sequencing error + rate, allele bias, and overdispersion are all known). These are good + approximations when there are a lot of individuals (but not + necessarily large read-depth). The original `updog` package is now named `updogAlpha` and may be found [here](https://github.com/dcgerard/updogAlpha).