From 2ba80c6f1a0453180c30595859d60fbe7594c9a5 Mon Sep 17 00:00:00 2001 From: Stefano Mangiola Date: Mon, 12 Feb 2024 13:55:57 +1100 Subject: [PATCH 1/3] fix missing formula --- R/functions.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/functions.R b/R/functions.R index ded23a79..067140fc 100755 --- a/R/functions.R +++ b/R/functions.R @@ -767,7 +767,7 @@ get_differential_transcript_abundance_glmmSeq <- function(.data, # Create design matrix for dispersion, removing random effects design = model.matrix( - object = .formula |> eliminate_random_effects(), + object = .formula |> lme4::nobars(), data = metadata ) From e15018d952da28dfa2c9a55f8561056e5ae18753 Mon Sep 17 00:00:00 2001 From: Stefano Mangiola Date: Mon, 12 Feb 2024 14:54:34 +1100 Subject: [PATCH 2/3] replace everywhere one_of --- NAMESPACE | 2 +- R/functions.R | 22 +++++++++++----------- R/methods_SE.R | 2 +- R/tidySummarizedExperiment.R | 14 +++++++------- R/utilities.R | 2 +- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index e9ca7bc4..846b657b 100755 --- a/NAMESPACE +++ b/NAMESPACE @@ -202,7 +202,7 @@ importFrom(tidyr,replace_na) importFrom(tidyr,spread) importFrom(tidyr,unite) importFrom(tidyr,unnest) -importFrom(tidyselect,one_of) +importFrom(tidyselect,any_of) importFrom(ttservice,bind_cols) importFrom(ttservice,bind_rows) importFrom(utils,capture.output) diff --git a/R/functions.R b/R/functions.R index 067140fc..00436838 100755 --- a/R/functions.R +++ b/R/functions.R @@ -118,7 +118,7 @@ create_tt_from_bam_sam_bulk <- genes %>% select( suppressWarnings( - one_of("GeneID", "symbol") + any_of("GeneID", "symbol") ) ) %>% as_tibble() %>% @@ -418,7 +418,7 @@ get_differential_transcript_abundance_bulk <- function(.data, select(!!.transcript, !!.sample, !!.abundance, - one_of(parse_formula(.formula))) %>% + any_of(parse_formula(.formula))) %>% distinct() %>% # drop factors as it can affect design matrix @@ -438,14 +438,14 @@ get_differential_transcript_abundance_bulk <- function(.data, # if ( # # If I have some discrete covariates # df_for_edgeR %>% - # select(one_of(parse_formula(.formula))) %>% + # select(any_of(parse_formula(.formula))) %>% # select_if(function(col) # is.character(col) | is.factor(col) | is.logical(col)) %>% # ncol %>% gt(0) & # # # If I have at least 2 samples per group # df_for_edgeR %>% - # select(!!.sample, one_of(parse_formula(.formula))) %>% + # select(!!.sample, any_of(parse_formula(.formula))) %>% # select_if(function(col) !is.numeric(col) & !is.integer(col) & !is.double(col) ) %>% # distinct %>% # group_by_at(vars(-!!.sample)) %>% @@ -462,7 +462,7 @@ get_differential_transcript_abundance_bulk <- function(.data, design = model.matrix( object = .formula, - data = df_for_edgeR %>% select(!!.sample, one_of(parse_formula(.formula))) %>% distinct %>% arrange(!!.sample) + data = df_for_edgeR %>% select(!!.sample, any_of(parse_formula(.formula))) %>% distinct %>% arrange(!!.sample) ) # Replace `:` with ___ because it creates error with edgeR @@ -884,7 +884,7 @@ get_differential_transcript_abundance_bulk_voom <- function(.data, select(!!.transcript, !!.sample, !!.abundance, - one_of(parse_formula(.formula))) %>% + any_of(parse_formula(.formula))) %>% distinct() %>% # drop factors as it can affect design matrix @@ -895,7 +895,7 @@ get_differential_transcript_abundance_bulk_voom <- function(.data, design = model.matrix( object = .formula, - data = df_for_voom %>% select(!!.sample, one_of(parse_formula(.formula))) %>% distinct %>% arrange(!!.sample) + data = df_for_voom %>% select(!!.sample, any_of(parse_formula(.formula))) %>% distinct %>% arrange(!!.sample) ) # Print the design column names in case I want contrasts @@ -1125,7 +1125,7 @@ get_differential_transcript_abundance_deseq2 <- function(.data, select(!!.transcript, !!.sample, !!.abundance, - one_of(parse_formula(.formula))) %>% + any_of(parse_formula(.formula))) %>% distinct() %>% # drop factors as it can affect design matrix @@ -1521,7 +1521,7 @@ test_gene_enrichment_bulk_EGSEA <- function(.data, # Prepare the data frame select(!!.entrez, !!.sample, !!.abundance, - one_of(parse_formula(.formula))) %>% + any_of(parse_formula(.formula))) %>% distinct() %>% # Add entrez from symbol @@ -1529,7 +1529,7 @@ test_gene_enrichment_bulk_EGSEA <- function(.data, # Check if at least two samples for each group if (df_for_edgeR %>% - select(!!.sample, one_of(parse_formula(.formula))) %>% + select(!!.sample, any_of(parse_formula(.formula))) %>% distinct %>% count(!!as.symbol(parse_formula(.formula))) %>% distinct(n) %>% @@ -1543,7 +1543,7 @@ test_gene_enrichment_bulk_EGSEA <- function(.data, design = model.matrix( object = .formula, - data = df_for_edgeR %>% select(!!.sample, one_of(parse_formula(.formula))) %>% distinct %>% arrange(!!.sample) + data = df_for_edgeR %>% select(!!.sample, any_of(parse_formula(.formula))) %>% distinct %>% arrange(!!.sample) ) # Print the design column names in case I want contrasts diff --git a/R/methods_SE.R b/R/methods_SE.R index b6ba071b..8aa478b5 100755 --- a/R/methods_SE.R +++ b/R/methods_SE.R @@ -1135,7 +1135,7 @@ setMethod("adjust_abundance", new_range_data = new_range_data %>% # I have to use this trick because rowRanges() and rowData() share @elementMetadata - select(-one_of(colnames(new_row_data) %>% outersect(quo_name(.transcript)))) %>% + select(-any_of(colnames(new_row_data) %>% outersect(quo_name(.transcript)))) %>% suppressWarnings() diff --git a/R/tidySummarizedExperiment.R b/R/tidySummarizedExperiment.R index 2a9609bf..87c17489 100644 --- a/R/tidySummarizedExperiment.R +++ b/R/tidySummarizedExperiment.R @@ -1,6 +1,6 @@ eliminate_GRanges_metadata_columns_also_present_in_Rowdata = function(.my_data, se){ .my_data %>% - select(-one_of(colnames(rowData(se)))) %>% + select(-any_of(colnames(rowData(se)))) %>% # In case there is not metadata column suppressWarnings() @@ -8,7 +8,7 @@ eliminate_GRanges_metadata_columns_also_present_in_Rowdata = function(.my_data, #' @importFrom dplyr select -#' @importFrom tidyselect one_of +#' @importFrom tidyselect any_of #' @importFrom tibble as_tibble #' @importFrom tibble tibble #' @importFrom SummarizedExperiment rowRanges @@ -146,7 +146,7 @@ subset_tibble_output = function(.data, count_info, sample_info, gene_info, range sample_info %>% when( colnames(.) %>% intersect(output_colnames) %>% length() %>% equals(0) ~ NULL, - select(., one_of(s_(.data)$name, output_colnames)) %>% + select(., any_of(s_(.data)$name, output_colnames)) %>% suppressWarnings() ) @@ -155,7 +155,7 @@ subset_tibble_output = function(.data, count_info, sample_info, gene_info, range range_info %>% when( colnames(.) %>% intersect(output_colnames) %>% length() %>% equals(0) ~ NULL, - select(., one_of(f_(.data)$name, output_colnames)) %>% + select(., any_of(f_(.data)$name, output_colnames)) %>% suppressWarnings() ) @@ -164,7 +164,7 @@ subset_tibble_output = function(.data, count_info, sample_info, gene_info, range gene_info %>% when( colnames(.) %>% intersect(output_colnames) %>% length() %>% equals(0) ~ NULL, - select(., one_of(f_(.data)$name, output_colnames)) %>% + select(., any_of(f_(.data)$name, output_colnames)) %>% suppressWarnings() ) @@ -173,7 +173,7 @@ subset_tibble_output = function(.data, count_info, sample_info, gene_info, range count_info %>% when( colnames(.) %>% intersect(output_colnames) %>% length() %>% equals(0) ~ NULL, - select(., one_of(f_(.data)$name, s_(.data)$name, output_colnames)) %>% + select(., any_of(f_(.data)$name, s_(.data)$name, output_colnames)) %>% suppressWarnings() ) @@ -206,7 +206,7 @@ subset_tibble_output = function(.data, count_info, sample_info, gene_info, range output_df %>% # Cleanup - select(one_of(output_colnames)) %>% + select(any_of(output_colnames)) %>% suppressWarnings() } diff --git a/R/utilities.R b/R/utilities.R index 1bf9cbe7..4d7f3a1a 100755 --- a/R/utilities.R +++ b/R/utilities.R @@ -306,7 +306,7 @@ scale_design = function(df, .formula) { ungroup() %>% spread(cov, value) %>% arrange(as.integer(sample_idx)) %>% - select(`(Intercept)`, one_of(parse_formula(.formula))) + select(`(Intercept)`, any_of(parse_formula(.formula))) } get_tt_columns = function(.data){ From c7b8625d38f5f2e7e23d30aa68d23da638a788fd Mon Sep 17 00:00:00 2001 From: Stefano Mangiola Date: Mon, 12 Feb 2024 14:55:30 +1100 Subject: [PATCH 3/3] change to rworkflows --- .github/workflows/check-bioc.yml | 278 ------------------------------- .github/workflows/rworkflows.yml | 57 +++++++ 2 files changed, 57 insertions(+), 278 deletions(-) delete mode 100644 .github/workflows/check-bioc.yml create mode 100644 .github/workflows/rworkflows.yml diff --git a/.github/workflows/check-bioc.yml b/.github/workflows/check-bioc.yml deleted file mode 100644 index 7c7151e4..00000000 --- a/.github/workflows/check-bioc.yml +++ /dev/null @@ -1,278 +0,0 @@ -## Read more about GitHub actions the features of this GitHub Actions workflow -## at https://lcolladotor.github.io/biocthis/articles/biocthis.html#use_bioc_github_action -## -## For more details, check the biocthis developer notes vignette at -## https://lcolladotor.github.io/biocthis/articles/biocthis_dev_notes.html -## -## You can add this workflow to other packages using: -## > biocthis::use_bioc_github_action() -## -## Using GitHub Actions exposes you to many details about how R packages are -## compiled and installed in several operating system.s -### If you need help, please follow the steps listed at -## https://github.com/r-lib/actions#where-to-find-help -## -## If you found an issue specific to biocthis's GHA workflow, please report it -## with the information that will make it easier for others to help you. -## Thank you! - -## Acronyms: -## * GHA: GitHub Action -## * OS: operating system - -on: - push: - pull_request: - -name: R-CMD-check-bioc - -## These environment variables control whether to run GHA code later on that is -## specific to testthat, covr, and pkgdown. -## -## If you need to clear the cache of packages, update the number inside -## cache-version as discussed at https://github.com/r-lib/actions/issues/86. -## Note that you can always run a GHA test without the cache by using the word -## "/nocache" in the commit message. -env: - has_testthat: 'false' - run_covr: 'false' - run_pkgdown: 'true' - has_RUnit: 'false' - cache-version: 'cache-v1' - -jobs: - build-check: - runs-on: ${{ matrix.config.os }} - name: ${{ matrix.config.os }} (${{ matrix.config.r }}) - container: ${{ matrix.config.cont }} - ## Environment variables unique to this job. - - strategy: - fail-fast: false - matrix: - config: - - { os: ubuntu-latest, r: '4.2', bioc: '3.16', cont: "bioconductor/bioconductor_docker:RELEASE_3_16", rspm: "https://packagemanager.rstudio.com/cran/__linux__/focal/latest" } - - { os: macOS-latest, r: '4.2', bioc: '3.16'} - - { os: windows-latest, r: '4.2', bioc: '3.16'} - env: - R_REMOTES_NO_ERRORS_FROM_WARNINGS: true - RSPM: ${{ matrix.config.rspm }} - NOT_CRAN: true - TZ: UTC - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} - - steps: - - ## Set the R library to the directory matching the - ## R packages cache step further below when running on Docker (Linux). - - name: Set R Library home on Linux - if: runner.os == 'Linux' - run: | - mkdir /__w/_temp/Library - echo ".libPaths('/__w/_temp/Library')" > ~/.Rprofile - - ## Most of these steps are the same as the ones in - ## https://github.com/r-lib/actions/blob/master/examples/check-standard.yaml - ## If they update their steps, we will also need to update ours. - - name: Checkout Repository - uses: actions/checkout@v2 - - ## R is already included in the Bioconductor docker images - - name: Setup R from r-lib - if: runner.os != 'Linux' - uses: r-lib/actions/setup-r@v2 - with: - r-version: ${{ matrix.config.r }} - - ## pandoc is already included in the Bioconductor docker images - - name: Setup pandoc from r-lib - if: runner.os != 'Linux' - uses: r-lib/actions/setup-pandoc@v2 - - - name: Query dependencies - run: | - install.packages('remotes') - saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2) - shell: Rscript {0} - - - name: Cache R packages - if: "!contains(github.event.head_commit.message, '/nocache') && runner.os != 'Linux'" - uses: actions/cache@v3 - with: - path: ${{ env.R_LIBS_USER }} - key: ${{ env.cache-version }}-${{ runner.os }}-biocversion-RELEASE_3_16-r-4.2-${{ hashFiles('.github/depends.Rds') }} - restore-keys: ${{ env.cache-version }}-${{ runner.os }}-biocversion-RELEASE_3_16-r-4.2- - - - name: Cache R packages on Linux - if: "!contains(github.event.head_commit.message, '/nocache') && runner.os == 'Linux' " - uses: actions/cache@v3 - with: - path: /home/runner/work/_temp/Library - key: ${{ env.cache-version }}-${{ runner.os }}-biocversion-RELEASE_3_16-r-4.2-${{ hashFiles('.github/depends.Rds') }} - restore-keys: ${{ env.cache-version }}-${{ runner.os }}-biocversion-RELEASE_3_16-r-4.2- - - - name: Install Linux system dependencies - if: runner.os == 'Linux' - run: | - sysreqs=$(Rscript -e 'cat("apt-get update -y && apt-get install -y", paste(gsub("apt-get install -y ", "", remotes::system_requirements("ubuntu", "20.04")), collapse = " "))') - echo $sysreqs - sudo -s eval "$sysreqs" - - - name: Install macOS system dependencies - if: matrix.config.os == 'macOS-latest' - run: | - ## Enable installing XML from source if needed - brew install libxml2 - echo "XML_CONFIG=/usr/local/opt/libxml2/bin/xml2-config" >> $GITHUB_ENV - - ## Required to install magick as noted at - ## https://github.com/r-lib/usethis/commit/f1f1e0d10c1ebc75fd4c18fa7e2de4551fd9978f#diff-9bfee71065492f63457918efcd912cf2 - brew install imagemagick@6 - - ## For textshaping, required by ragg, and required by pkgdown - brew install harfbuzz fribidi - - ## For installing usethis's dependency gert - brew install libgit2 - - ## To fix x11/cairo error with tidyHeatmap/Complexheatmap here https://github.com/stemangiola/tidybulk/runs/1388237421?check_suite_focus=true#step:14:2134 - ## Suggested here https://stackoverflow.com/questions/63648591/how-to-install-x11-before-testing-with-github-actions-for-macos - brew install --cask xquartz - - - name: Install Windows system dependencies - if: runner.os == 'Windows' - run: | - ## Edit below if you have any Windows system dependencies - shell: Rscript {0} - - - name: Install BiocManager - run: | - message(paste('****', Sys.time(), 'installing BiocManager ****')) - remotes::install_cran("BiocManager") - shell: Rscript {0} - - - name: Set BiocVersion - run: | - BiocManager::install(version = "${{ matrix.config.bioc }}", ask = FALSE) - shell: Rscript {0} - - - name: Install dependencies pass 1 - run: | - ## Try installing the package dependencies in steps. First the local - ## dependencies, then any remaining dependencies to avoid the - ## issues described at - ## https://stat.ethz.ch/pipermail/bioc-devel/2020-April/016675.html - ## https://github.com/r-lib/remotes/issues/296 - ## Ideally, all dependencies should get installed in the first pass. - - ## Pass #1 at installing dependencies - message(paste('****', Sys.time(), 'pass number 1 at installing dependencies: local dependencies ****')) - remotes::install_local(dependencies = TRUE, repos = BiocManager::repositories(), build_vignettes = TRUE, upgrade = TRUE) - continue-on-error: true - shell: Rscript {0} - - - name: Install dependencies pass 2 - run: | - ## Pass #2 at installing dependencies - message(paste('****', Sys.time(), 'pass number 2 at installing dependencies: any remaining dependencies ****')) - remotes::install_local(dependencies = TRUE, repos = BiocManager::repositories(), build_vignettes = TRUE, upgrade = TRUE) - - ## For running the checks - message(paste('****', Sys.time(), 'installing rcmdcheck and BiocCheck ****')) - remotes::install_cran("rcmdcheck") - BiocManager::install("BiocCheck") - shell: Rscript {0} - - - name: Install BiocGenerics - if: env.has_RUnit == 'true' - run: | - ## Install BiocGenerics - BiocManager::install("BiocGenerics") - shell: Rscript {0} - - - name: Install covr - if: github.ref == 'refs/heads/master' && env.run_covr == 'true' && runner.os == 'Linux' - run: | - remotes::install_cran("covr") - shell: Rscript {0} - - - name: Install pkgdown - if: github.ref == 'refs/heads/master' && env.run_pkgdown == 'true' && runner.os == 'Linux' - run: | - remotes::install_cran("pkgdown") - shell: Rscript {0} - - - name: Session info - run: | - options(width = 100) - pkgs <- installed.packages()[, "Package"] - sessioninfo::session_info(pkgs, include_base = TRUE) - shell: Rscript {0} - - - name: Run CMD check - env: - _R_CHECK_CRAN_INCOMING_: false - run: | - rcmdcheck::rcmdcheck( - args = c("--no-build-vignettes", "--no-manual", "--timings"), - build_args = c("--no-manual", "--no-resave-data"), - error_on = "warning", - check_dir = "check" - ) - shell: Rscript {0} - - ## Might need an to add this to the if: && runner.os == 'Linux' - - name: Reveal testthat details - if: env.has_testthat == 'true' - run: find . -name testthat.Rout -exec cat '{}' ';' - - - name: Run RUnit tests - if: env.has_RUnit == 'true' - run: | - BiocGenerics:::testPackage() - shell: Rscript {0} - - - name: Run BiocCheck - run: | - BiocCheck::BiocCheck( - dir('check', 'tar.gz$', full.names = TRUE), - `quit-with-status` = TRUE, - `no-check-R-ver` = TRUE, - `no-check-bioc-help` = TRUE, - `no-check-library-calls` = TRUE, - `no-check-coding-practices` = TRUE - ) - shell: Rscript {0} - - - name: Test coverage - if: github.ref == 'refs/heads/master' && env.run_covr == 'true' && runner.os == 'Linux' - run: | - covr::codecov() - shell: Rscript {0} - - - name: Install package - if: github.ref == 'refs/heads/master' && env.run_pkgdown == 'true' && runner.os == 'Linux' - run: R CMD INSTALL . - - - name: Deploy package - if: github.ref == 'refs/heads/master' && env.run_pkgdown == 'true' && runner.os == 'Linux' - run: | - ## Temporary workaround for https://github.com/actions/checkout/issues/766 - git config --global --add safe.directory "$GITHUB_WORKSPACE" - - git config --local user.email "actions@github.com" - git config --local user.name "GitHub Actions" - Rscript -e "pkgdown::deploy_to_branch(new_process = FALSE)" - shell: bash {0} - ## Note that you need to run pkgdown::deploy_to_branch(new_process = FALSE) - ## at least one locally before this will work. This creates the gh-pages - ## branch (erasing anything you haven't version controlled!) and - ## makes the git history recognizable by pkgdown. - - - name: Upload check results - if: failure() - uses: actions/upload-artifact@v3 - with: - name: ${{ runner.os }}-biocversion-RELEASE_3_16-r-4.2-results - path: check diff --git a/.github/workflows/rworkflows.yml b/.github/workflows/rworkflows.yml new file mode 100644 index 00000000..94d43eb8 --- /dev/null +++ b/.github/workflows/rworkflows.yml @@ -0,0 +1,57 @@ +name: rworkflows +'on': + push: + branches: + - master + - main + - devel + - RELEASE_** + pull_request: + branches: + - master + - main + - devel + - RELEASE_** +jobs: + rworkflows: + permissions: write-all + runs-on: ${{ matrix.config.os }} + name: ${{ matrix.config.os }} (${{ matrix.config.r }}) + container: ${{ matrix.config.cont }} + strategy: + fail-fast: ${{ false }} + matrix: + config: + - os: ubuntu-latest + bioc: devel + r: auto + cont: ghcr.io/bioconductor/bioconductor_docker:devel + rspm: ~ + - os: macOS-latest + bioc: release + r: auto + cont: ~ + rspm: ~ + - os: windows-latest + bioc: release + r: auto + cont: ~ + rspm: ~ + steps: + - uses: neurogenomics/rworkflows@master + with: + run_bioccheck: ${{ false }} + run_rcmdcheck: ${{ true }} + as_cran: ${{ true }} + run_vignettes: ${{ true }} + has_testthat: ${{ true }} + run_covr: ${{ true }} + run_pkgdown: ${{ true }} + has_runit: ${{ false }} + has_latex: ${{ false }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run_docker: ${{ false }} + DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }} + runner_os: ${{ runner.os }} + cache_version: cache-v1 + docker_registry: ghcr.io