Bioconductor / Contributions

Contribute Packages to Bioconductor
135 stars 33 forks source link

regioneReloaded package submission #2741

Closed RMalinverni closed 2 years ago

RMalinverni commented 2 years ago

Update the following URL to point to the GitHub repository of the package you wish to submit to Bioconductor

Confirm the following by editing each check box to '[x]'

I am familiar with the essential aspects of Bioconductor software management, including:

For questions/help about the submission process, including questions about the output of the automatic reports generated by the SPB (Single Package Builder), please use the #package-submission channel of our Community Slack. Follow the link on the home page of the Bioconductor website to sign up.

bioc-issue-bot commented 2 years ago

Hi @RMalinverni

Thanks for submitting your package. We are taking a quick look at it and you will hear back from us soon.

The DESCRIPTION file for this package is:

Package: regioneReloaded
Type: Package
Title: RegioneReloaded: Multiple Association for Genomic Region Sets
Version: 0.99.0
Authors@R: c(
    person(given = "Roberto",
 family = "Malinverni",
 role = c("aut", "cre"),
 email = "roberto.malinverni@gmail.com",
 comment = c(ORCID ="0000-0002-0113-3417")),
    person(given = "David",
 family = "Corujo",
 role = c("aut"),
 email = "dcorujo@carrerasresearch.org"),
    person(given = "Bernat",
 family = "Gel",
 role = c("aut"),
 email = "bgel@igtp.org"))
URL: https://github.com/RMalinverni/regioneReload           
Description: RegioneReloaded is a package that allows simultaneous analysis of associations between genomic region sets, enabling clustering of data and the creation of ready-to-publish graphs. It takes over and expands on all the features of its predecessor regioneR. It also incorporates a strategy to improve p-value calculations and normalize z-scores coming from multiple analysis to allow for their direct comparison. RegioneReloaded builds upon regioneR by adding new plotting functions for obtaining publication-ready graphs. 
License: Artistic-2.0
Encoding: UTF-8
LazyData: false
RoxygenNote: 7.2.1
Roxygen: list(markdown = TRUE)
Depends: 
    R (>= 4.2),
    regioneR
Imports:
    stats,
    RColorBrewer,
    Rtsne,
    GenomicRanges,
    umap,
    ggplot2,
    ggrepel,
    reshape2,
    methods,
    scales,
    cluster,
    grid,
    grDevices
Suggests: 
    rmarkdown,
    knitr,
    testthat (>= 3.0.0)
biocViews: Genetics, ChIPSeq, DNASeq, MethylSeq, CopyNumberVariation, Clustering
VignetteBuilder: knitr
Config/testthat/edition: 3
bioc-issue-bot commented 2 years ago

A reviewer has been assigned to your package. Learn what to expect during the review process.

IMPORTANT: Please read this documentation for setting up remotes to push to git.bioconductor.org. It is required to push a version bump to git.bioconductor.org to trigger a new build.

Bioconductor utilized your github ssh-keys for git.bioconductor.org access. To manage keys and future access you may want to active your Bioconductor Git Credentials Account

bioc-issue-bot commented 2 years ago

Dear Package contributor,

This is the automated single package builder at bioconductor.org.

Your package has been built on Linux, Mac, and Windows.

Congratulations! The package built without errors or warnings on all platforms.

Please see the build report for more details. This link will be active for 21 days.

Remember: if you submitted your package after July 7th, 2020, when making changes to your repository push to git@git.bioconductor.org:packages/regioneReloaded to trigger a new build. A quick tutorial for setting up remotes and pushing to upstream can be found here.

jianhong commented 2 years ago

Package 'regioneReloaded' Review

Thank you for submition your package to Bioconductor. The package passed check and build. However there are several things need to be fixed. Please try to answer the comments line by line when you are ready for a second review.

The NAMESPACE file

R code

Unit tests

bioc-issue-bot commented 2 years ago

Received a valid push on git.bioconductor.org; starting a build for commit id: 50567d4e207045bb03033adc6727956056166927

bioc-issue-bot commented 2 years ago

Dear Package contributor,

This is the automated single package builder at bioconductor.org.

Your package has been built on Linux, Mac, and Windows.

On one or more platforms, the build results were: "WARNINGS". This may mean there is a problem with the package that you need to fix. Or it may mean that there is a problem with the build system itself.

Please see the build report for more details. This link will be active for 21 days.

Remember: if you submitted your package after July 7th, 2020, when making changes to your repository push to git@git.bioconductor.org:packages/regioneReloaded to trigger a new build. A quick tutorial for setting up remotes and pushing to upstream can be found here.

bioc-issue-bot commented 2 years ago

Received a valid push on git.bioconductor.org; starting a build for commit id: e58efe59a37662e1a81fb9d13afdc458731b7880

bioc-issue-bot commented 2 years ago

Dear Package contributor,

This is the automated single package builder at bioconductor.org.

Your package has been built on Linux, Mac, and Windows.

On one or more platforms, the build results were: "WARNINGS". This may mean there is a problem with the package that you need to fix. Or it may mean that there is a problem with the build system itself.

Please see the build report for more details. This link will be active for 21 days.

Remember: if you submitted your package after July 7th, 2020, when making changes to your repository push to git@git.bioconductor.org:packages/regioneReloaded to trigger a new build. A quick tutorial for setting up remotes and pushing to upstream can be found here.

RMalinverni commented 2 years ago

Dear Jianhong Ou, thanks for reviewing our package submission and providing useful commentary. We have addressed most of the raised issues and provide here a point by point response. We have in addition pushed the changes including a version bump to the Bioconductor git repository.

Selective imports using importFrom instead of import all with import. in line 25 import(ggplot2) in line 26 import(regioneR)

We followed suggestions found in the find in “https://contributions.bioconductor.org/index.html” when deciding how to structure the imports for the package. We consider that in this package functions from regioneR and ggplot2 are extensively used and to have a more streamlined code it is reasonable to import all the package. If this is not allowed we will “importFrom” every function as suggested (all other functions are already imported in that manner).

NOTE: Consider adding runnable examples to man pages that document exported objects.

We have changed the number of exported functions and now we have examples for almost all exported functions.

NOTE: :: is not suggested in source code unless you can make sure all the packages are imported. Please note that you need to manully double check the import items when you make any change in the DESCRIPTION file during development.

We apply this solution following the same guideline used in our precedent package and also guided by the “check” function (we have an error if we do not declare all the importFrom functions with ::). If we miss something or misunderstood the guidelines we will change this in the next version, we will be happy to receive suggestions on this issue.

NOTE: no direct slot access with @ or slot() - accessors implemented and used.

We have changed all the code to eliminate the “@” symbol and direct access to S4 objects. Still you pointed out this,

In file R/regioneReloaded_methods.R: at line 15 found ' param = names(x@parameters),' at line 16 found ' value = unlist(x@parameters)[names(x@parameters)]' at line 18 found ' Alist_Sample_slot = names(x@multiOverlaps),' at line 19 found ' matrix_slot = x@matrix$GMat' To eliminate direct access we created a different method (not exported) to access an element of “genomMatriXeR” and “MultilocalZscore” class objects, in the definition of these methods and only here we used direct access.

All other changes are written line by line here: In file R/crosswiseMatrix.R: at line 18 found ' A.obj <- mPT@multiOverlaps' A.obj <- getMultiEvaluation(mPT) In file R/DFformLZ.R: at line 13 found ' nelem <- grep(paste0("\b",RS,"\b"), names(mLZ@multiLocalZscores$shifed_ZSs))' nelem <- grep(paste0("\b",RS,"\b"), names(mlzsMultiLocalZscores(mLZ)$shifed_ZSs))

at line 15 found ' lineLZ <- mLZ@multiLocalZscores$shifed_ZSs[[nelem]]' mlzsMultiLocalZscores(mLZ)$shifed_ZSs[[nelem]] at line 16 found ' nreg <- mLZ@parameters$Nregions' mlzsParameters(mLZ)$Nregions at line 18 found ' zs <- mLZ@multiLocalZscores$resumeTab$z_score[nelem]' zs <- mlzsMultiLocalZscores(mLZ)$resumeTab$z_score[nelem] at line 19 found ' pv <- mLZ@multiLocalZscores$resumeTab$adj.p_value[nelem]' pv <- mlzsMultiLocalZscores(mLZ)$resumeTab$adj.p_value[nelem] at line 20 found ' mLZ@multiLocalZscores$resumeTab$n_overlaps == nreg' mlzsMultiLocalZscores(mLZ)$resumeTab$n_overlaps == nreg at line 27 found ' shift = mLZ@multiLocalZscores$shifts' shift = mlzsMultiLocalZscores(mLZ)$shifts In file R/getHClust.R: at line 53 found ' mod <- rR@matrix$FitRow' mod <- gmxrMatrix(rR)$FitRow at line 58 found ' mod <- rR@matrix$FitCol' mod <- gmxrMatrix(rR)$FitCol at line 60 found ' if (is.null(mod)) { mod <- rR@matrix$FitRow}' if (is.null(mod)) { mod <- gmxrMatrix(rR)$FitRow} at line 68 found ' mod <- rR@matrix$FitRow' mod <- mlzsMatrix(rR)$FitRow In file R/getMatrix.R: at line 52 found ' if (is.null(rR@matrix[[1]])){' if (is.null(gmxrMatrix(rR)[[1]])){ at line 55 found ' GM <- rR@matrix$GMat' GM <- gmxrMatrix(rR)$Gmat at line 59 found ' if (is.null(rR@matrix[[1]])){' if (is.null(mlzsMatrix(rR)[[1]])){ at line 63 found ' GM <- rR@matrix$LZM' GM <- mlzsMatrix(rR)$LZM In file R/getMultiEvaluation.R: at line 45 found ' if (!all(namesRS %in% names(rR@multiOverlaps))) {' if (!all(namesRS %in% names(gmxrMultiOverlaps(rR)))) { at line 49 found ' namesRS <- names(rR@multiOverlaps)' namesRS <- names(gmxrMultiOverlaps(rR)) at line 51 found ' res <- rR@multiOverlaps[namesRS]' res <- gmxrMultiOverlaps(rR)[namesRS] at line 58 found ' if (!all(namesRS %in% names(rR@multiLocalZscores$shifed_ZSs))) {' if (!all(namesRS %in% names(mlzsMultiLocalZscores(rR)$shifed_ZSs))) { at line 62 found ' namesRS <- names(rR@multiLocalZscores$shifed_ZSs)' namesRS <- names(mlzsMultiLocalZscores(rR)$shifed_ZSs) at line 64 found ' resTable<-rR@multiLocalZscores$resumeTab' resTable<-mlzsMultiLocalZscores(rR)$resumeTab at line 68 found ' shifts = rR@multiLocalZscores$shifed_ZSs[namesRS])' shifts = mlzsMultiLocalZscores(rR)$shifed_ZSs[namesRS]) In file R/getParameters.R: at line 38 found ' param <- rR@parameters' param <- gmxrParam(rR) In file R/makeCrosswiseMatrix.R: at line 170 found ' mPT@matrix <- mat1' gmxrMatrix(mPT) <- mat1 In file R/makeLZMatrix.R: at line 54 found ' mat <- vector(length = length(mlZA@multiLocalZscores$shifts))' mat <- vector(length = length(mlzsMultiLocalZscores(mlZA)$shifts)) at line 58 found ' for (i in seq_along(mlZA@multiLocalZscores$shifed_ZSs)) {' for (i in seq_along(mlzsMultiLocalZscores(mlZA)$shifed_ZSs)) { at line 62 found ' mlZA@multiLocalZscores$shifed_ZSs[[i]] / sqrt(mlZA@multiLocalZscores$max_zscores[i])' mlzsMultiLocalZscores(mlZA)$shifed_ZSs[[i]] / sqrt(mlzsMultiLocalZscores(mlZA)$max_zscores[i]) at line 66 found ' for (i in seq_along(mlZA@multiLocalZscores$shifed_ZSs)) {' for (i in seq_along(mlzsMultiLocalZscores(mlZA)$shifed_ZSs)) { at line 67 found ' mat <- rbind(mat, mlZA@multiLocalZscores$shifed_ZSs[[i]])' mat <- rbind(mat, mlzsMultiLocalZscores(mlZA)$shifed_ZSs[[i]]) at line 76 found ' rownames(mat) <- names(mlZA@multiLocalZscores$shifed_ZSs)' rownames(mat) <- names(mlzsMultiLocalZscores(mlZA)$shifed_ZSs) at line 77 found ' colnames(mat) <- mlZA@multiLocalZscores$shifts' colnames(mat) <- mlzsMultiLocalZscores(mlZA)s$shifts at line 110 found ' mlZA@matrix <-' mlzsMatrix(mlZA) <- matL In file R/plotCrosswiseDimRed.R: at line 93 found ' } else if (is.null(mPT@matrix[[1]])) {' stopifnot("The matrix slot of mPT is empty, run first makeCrosswiseMatrix()" = !is.null(gmxrMatrix(mPT)[[1]])) at line 96 found ' GM <- mPT@matrix$GMat' GM <- getMatrix(mPT) at line 110 found ' if(!all(listRS %in% names(mPT@multiOverlaps))) {' if(!all(listRS %in% names(gmxrMultiOverlaps(mPT)))) { at line 116 found ' clust_tab <- stats::cutree(mPT@matrix$FitRow, k = nc)' clust_tab <- stats::cutree(gmxrMatrix(mPT)$FitRow, k = nc) In file R/plotCrosswiseMatrix.R: at line 68 found ' } else if (is.null(mPT@matrix[[1]])) {' stopifnot("The matrix slot of mPT is empty, run first makeCrosswiseMatrix()" = !is.null(gmxrMatrix(mPT)[[1]])) at line 83 found ' GM <- mPT@matrix$GMat' GM <- getMatrix(mPT) at line 98 found ' GM <- mPT@matrix$GMat_corX' GM <- gmxrMatrix(mPT)$GMat_corX at line 101 found ' GM <- mPT@matrix$GMat_corY' GM <- gmxrMatrix(mPT)$GMat_corY at line 156 found ' ggplot2::labs(subtitle = title, title=main, caption = mPT@parameters$ranFUN) +' ggplot2::labs(subtitle = title, title=main, caption = gmxrParam(mPT)$ranFUN) + at line 175 found ' ggplot2::labs(subtitle = title, title=main,caption = mPT@parameters$ranFUN) +' ggplot2::labs(subtitle = title, title=main,caption = gmxrParam(mPT)$ranFUN) + In file R/plotLocalZScoreMatrix.R: at line 61 found ' } else if (is.null(mLZ@matrix[[1]])) {' stopifnot("The matrix slot of mLZ is empty, run first makeCrosswiseMatrix()" = !is.null(mlzsMatrix(mLZ)[[1]])) at line 74 found ' GM <- t(mLZ@matrix$LZM)' GM <- t(getMatrix(mLZ)) at line 92 found ' GM <- mLZ@matrix$LZM_cor' GM <- gmxrMatrix(mLZ)$LZM_cor at line 136 found ' caption = mLZ@parameters$ranFUN' caption = gmxrParam(mLZ)$ranFUN In file R/plotSingleLZ.R: at line 77 found ' } else if (!(all(RS %in% names(mLZ@multiLocalZscores$shifed_ZSs)))) {' stopifnot("One or more elements in RS do not match region set names in mLZ" = all(RS %in% names(mlzsMultiLocalZscores(mLZ)$shifed_ZSs))) at line 85 found ' main <- mLZ@parameters$A' main <- mlzsParam(mLZ)$A at line 87 found ' evfun <- mLZ@parameters$evFUN' evfun <- mlzsParam(mLZ)$evFUN at line 88 found ' ranfun <- mLZ@parameters$ranFUN' ranfun <- mlzsParam(mLZ)$ranFUN at line 92 found ' if (mLZ@parameters$evFUN == "numOverlaps") {' if (mlzsParam(mLZ)$evFUN == "numOverlaps") { at line 93 found ' mLZ@parameters$evFUN <- "N. of overlaps"' mlzsParam(mLZ)$evFUN <- "N. of overlaps" In file R/plotSinglePT.R: at line 60 found ' } else if (!all(c(RS1, RS2) %in% names(mPT@multiOverlaps))) {' stopifnot("RS1 or RS2 do not match region set names in the mPT genoMatriXeR object" = all(c(RS1, RS2) %in% names(gmxrMultiOverlaps(mPT)))) at line 64 found ' if (is.na(xlab) & mPT@parameters$evFUN == "numOverlaps") {' if (is.na(xlab) & gmxrParam(mPT)$evFUN == "numOverlaps") { at line 70 found ' tab <- mPT@multiOverlaps[[RS1]]' tab <- gmxrMultiOverlaps(mPT)[[RS1]] at line 102 found ' caption = paste0("Number of Permutations: ", mPT@parameters$ntimes)' caption = paste0("Number of Permutations: ", gmxrParam(mPT)$ntimes) at line 232 found ' label = mPT@parameters$ranFUN' label = gmxrParam(mPT)$ranFUN

Note: try to use match.arg or stopifnot to replace the codes 'if(!xxx %in% yyy)' for arguments check. We have substituted all stop() with stopifnot() and/or match.arg() all the changes are described line by line here: In file R/cleanCrosswiseMatrix.R: at line 33 found ' if (sum(GM) == 0) {' at line 34 found ' stop("all values of the matrix is 0")' stopifnot("All values of the matrix are 0" = sum(GM) != 0) In file R/crosswisePermTest.R: at line 82 found ' if (!methods::hasArg(Alist)) {' at line 83 found ' stop("Alist is missing")' stopifnot("Alist is missing" = methods::hasArg(Alist)) at line 85 found ' if (!is.logical(sampling)) {' at line 86 found ' stop("sampling must be logical")' stopifnot("sampling must be logical" = is.logical(sampling)) at line 88 found ' if (!is.numeric(fraction)) {' at line 89 found ' stop("fraction must be numeric")' stopifnot("fraction must be numeric" = is.numeric(fraction)) at line 91 found ' if (!is.numeric(min_sampling)) {' at line 92 found ' stop("min_sampling must be numeric")' stopifnot("min_sampling must be numeric" = is.numeric(min_sampling)) at line 94 found ' if (!is.character(ranFUN)) {' at line 95 found ' stop("ranFun must be charachter")' stopifnot("ranFun must be charachter" = is.character(ranFUN)) at line 97 found ' if (!is.character(evFUN)) {' at line 98 found ' stop("evFun must be charachter")' stopifnot("evFun must be charachter" = is.character(evFUN)) at line 100 found ' if (!is.numeric(ntimes)) {' at line 101 found ' stop("ntimes must be numeric")' stopifnot("ntimes must be numeric" = is.numeric(ntimes)) at line 103 found ' if (!is.numeric(min_sampling)) {' at line 104 found ' stop("min_sampling must be numeric")' Removed duplicated code In file R/getHClust.R: at line 36 found ' if (!methods::hasArg(rR)) {' at line 37 found ' stop("rR is missing")' stopifnot("rR is missing" = methods::hasArg(rR)) at line 40 found ' if(!(methods::is(rR , "genoMatriXeR") | methods::is(rR , "multiLocalZScore"))){' at line 41 found ' stop(" class of rR object need to be genoMatriXeR or multiLocalZScore")' stopifnot("rR must be of class genoMatriXeR or multiLocalZScore" = { methods::is(rR , "genoMatriXeR") | methods::is(rR , "multiLocalZScore") }) at line 44 found ' if(!(hctype == "rows" | hctype == "cols")){' at line 45 found ' stop(" hctype need to be rows or cols ")' stopifnot("hctype must be rows or cols" = { hctype == "rows" | hctype == "cols" })

In file R/getMatrix.R: at line 41 found ' if (!methods::hasArg(rR)) {' at line 42 found ' stop("rR is missing")' stopifnot("rR is missing" = methods::hasArg(rR)) at line 45 found ' if(!(methods::is(rR , "genoMatriXeR") | methods::is(rR , "multiLocalZScore"))){' at line 46 found ' stop(" class of rR object need to be genoMatriXeR or multiLocalZScore")' stopifnot("rR must be of class genoMatriXeR or multiLocalZScore" = { methods::is(rR , "genoMatriXeR") | methods::is(rR , "multiLocalZScore") }) at line 50 found ' if (methods::is(rR, "genoMatriXeR")) {' at line 51 found '' at line 52 found ' if (is.null(rR@matrix[[1]])){' at line 53 found ' stop ("no matrix computed for genoMatriXeR object")' if (methods::is(rR, "genoMatriXeR")) { stopifnot("no matrix computed for genoMatriXeR object, run first makeCrosswiseMatrix()" = !is.null(gmxrMatrix(rR)[[1]])) at line 58 found ' if (methods::is(rR, "multiLocalZScore")) {' at line 59 found ' if (is.null(rR@matrix[[1]])){' at line 60 found ' stop ("no matrix computed for multiLocalZScore object")' if (methods::is(rR, "multiLocalZScore")) { stopifnot("no matrix computed for multiLocalZScore object, run first makeLZMatrix()" = !is.null(mlzsMatrix(rR)[[1]])) In file R/getMultiEvaluation.R: at line 34 found ' if (!methods::hasArg(rR)) {' at line 35 found ' stop("rR is missing")' stopifnot("rR is missing" = methods::hasArg(rR)) at line 38 found ' if(!(methods::is(rR , "genoMatriXeR") | methods::is(rR , "multiLocalZScore"))){' at line 39 found ' stop(" class of rR object need to be genoMatriXeR or multiLocalZScore")' stopifnot("rR must be an object of class genoMatriXeR or multiLocalZScore" = { In file R/getParameters.R: at line 32 found ' if (!methods::hasArg(rR)) {' at line 33 found ' stop("rR is missing")' stopifnot("rR is missing" = methods::hasArg(rR)) In addition, added the following line for consistent check: stopifnot("rR must be an object of class genoMatriXeR or multiLocalZScore" = { methods::is(rR , "genoMatriXeR") | methods::is(rR , "multiLocalZScore") }) In file R/makeLZMatrix.R: at line 50 found ' if (!methods::is(mlZA,"multiLocalZScore")) {' at line 51 found ' stop("the object mlZA must be a multiLocalZScore object")' stopifnot("mlZA must be an object of class multiLocalZScore" = methods::is(mlZA,"multiLocalZScore")) In addition, added the following line for consistent check: stopifnot("mlZA is missing" = methods::hasArg(mlZA)) In file R/multiLocalZscore.R: at line 84 found ' if (!methods::hasArg(A)) {' at line 85 found ' stop("Alist is missing")' stopifnot("Alist is missing" = methods::hasArg(Alist)) at line 87 found ' if (!is.logical(sampling)) {' at line 88 found ' stop("sampling must be logical")' stopifnot("sampling must be logical" = is.logical(sampling)) at line 90 found ' if (!is.numeric(fraction)) {' at line 91 found ' stop("fraction must be numeric")' stopifnot("fraction must be numeric" = is.numeric(fraction)) at line 93 found ' if (!is.numeric(min_sampling)) {' at line 94 found ' stop("min_sampling must be numeric")' stopifnot("min_sampling must be numeric" = is.numeric(min_sampling)) at line 96 found ' if (!is.character(ranFUN)) {' at line 97 found ' stop("ranFun must be charachter")' stopifnot("ranFun must be charachter" = is.character(ranFUN)) at line 99 found ' if (!is.character(evFUN)) {' at line 100 found ' stop("evFun must be charachter")' stopifnot("evFun must be charachter" = is.character(evFUN)) at line 105 found ' if (!is.numeric(min_sampling)) {' at line 106 found ' stop("min_sampling must be numeric")' Removed duplicated code In file R/plotCrosswiseDimRed.R: at line 91 found ' if (!methods::hasArg(mPT)) {' at line 92 found ' stop("mPT is missing")' stopifnot("mPT is missing" = methods::hasArg(mPT)) Added at line 93 found ' } else if (is.null(mPT@matrix[[1]])) {' at line 94 found ' stop("The matrix slot of mPT is empty, run first makeCrosswiseMatrix()")' stopifnot("The matrix slot of mPT is empty, run first makeCrosswiseMatrix()" = !is.null(mPT@matrix[[1]])) at line 95 found ' } else if (methods::is(mPT, "genoMatriXeR")) {' at line 96 found ' GM <- mPT@matrix$GMat' at line 97 found ' } else if (is.matrix(mPT)) {' at line 98 found ' GM <- mPT' at line 99 found ' } else {' at line 100 found ' stop("mPT needs to be a genoMatriXeR object or a numeric matrix")' stopifnot("mPT needs to be a genoMatriXeR object or a numeric matrix" = { methods::is(mPT, "genoMatriXeR") | methods::is(mPT, "matrix") }) Moved GM value assignments to lines 102 and 104 at line 104 found ' if (!(type %in% c("PCA", "tSNE", "UMAP"))) {' at line 105 found ' stop("type must be 'PCA', 'tSNE' or 'UMAP'")' stopifnot("type must be 'PCA', 'tSNE' or 'UMAP'" = type %in% c("PCA", "tSNE", "UMAP")) at line 106 found ' } else if (!(clust_met %in% c("hclust", "kmeans", "pam"))) {' at line 107 found ' stop("clust_met must be 'hclust', 'kmeans' or 'pam'")' stopifnot("clust_met must be 'hclust', 'kmeans' or 'pam'" = clust_met %in% c("hclust", "kmeans", "pam")) In file R/plotCrosswiseMatrix.R: at line 64 found ' if (!methods::hasArg(mPT)) {' at line 65 found ' stop("mPT is missing")' stopifnot("mPT is missing" = methods::hasArg(mPT)) stopifnot("mPT needs to be a genoMatriXeR object or a numeric matrix" = { methods::is(mPT, "genoMatriXeR") | methods::is(mPT, "matrix") }) at line 68 found ' } else if (is.null(mPT@matrix[[1]])) {' at line 69 found ' stop("The matrix slot of mPT is empty, run first makeCrosswiseMatrix()")' stopifnot("The matrix slot of mPT is empty, run first makeCrosswiseMatrix()" = !is.null(mPT@matrix[[1]])) at line 70 found ' } else if (!(matrix_type %in% c("association", "correlation"))) {' at line 71 found ' stop("Invalid matrix_type, choose 'association' or 'correlation'")' stopifnot("Invalid matrix_type, choose 'association' or 'correlation'" = matrix_type %in% c("association", "correlation")) at line 72 found ' } else if (!(cor %in% c("row", "col"))) {' at line 73 found ' stop("Invalid cor value, choose 'row' or 'col'")' stopifnot("Invalid cor value, choose 'row' or 'col'" = cor %in% c("row", "col")) at line 74 found ' } else if (!is.na(maxVal)) {' at line 75 found ' if(!(methods::is(maxVal, "numeric") | maxVal == "max")) {' at line 76 found ' stop("maxVal has to be a numerical value, 'max' or NA")' stopifnot("maxVal has to be a numerical value, 'max' or NA" = { is.na(maxVal) | methods::is(maxVal, "numeric") | maxVal == "max" }) In file R/plotLocalZScoreMatrix.R: at line 57 found ' if (!methods::hasArg(mLZ)) {' at line 58 found ' stop("mLZ is missing")' stopifnot("mLZ is missing" = methods::hasArg(mLZ)) at line 59 found ' } else if (!methods::is(mLZ, "multiLocalZScore")) {' at line 60 found ' stop("the object mLZA needs to be an multiLocalZScore object")' stopifnot("mLZ needs to be a multiLocalZScore object" = { methods::is(mLZ, "multiLocalZScore") | methods::is(mLZ, "matrix") }) at line 61 found ' } else if (is.null(mLZ@matrix[[1]])) {' at line 62 found ' stop("The matrix slot of mLZ is empty, run first makeLZMatrix()")' stopifnot("The matrix slot of mLZ is empty, run first makeCrosswiseMatrix()" = !is.null(mLZ@matrix[[1]])) at line 65 found ' if (!(matrix_type %in% c("association", "correlation"))) {' at line 66 found ' stop("Invalid matrix_type, choose 'association' or 'correlation'")' stopifnot("Invalid matrix_type, choose 'association' or 'correlation'" = matrix_type %in% c("association", "correlation")) at line 67 found ' } else if (!is.na(maxVal)) {' at line 68 found ' if(!(methods::is(maxVal, "numeric") | maxVal == "max")) {' at line 69 found ' stop("maxVal has to be a numerical value, 'max' or NA")' stopifnot("maxVal has to be a numerical value, 'max' or NA" = { is.na(maxVal) | methods::is(maxVal, "numeric") | maxVal == "max" }) In file R/plotSingleLZ.R: at line 71 found ' if (!methods::hasArg(mLZ)) {' at line 72 found ' stop("mLZ is missing")' stopifnot("mLZ is missing" = methods::hasArg(mLZ)) at line 73 found ' } else if (!methods::is(mLZ, "multiLocalZScore")) {' at line 74 found ' stop("mLZ needs to be a multiLocalZScore object")' stopifnot("mLZ needs to be a multiLocalZScore object" = methods::is(mLZ, "multiLocalZScore")) at line 75 found ' } else if (!methods::hasArg(RS)) {' at line 76 found ' stop("RS is missing")' stopifnot("RS is missing" = methods::hasArg(RS)) at line 77 found ' } else if (!(all(RS %in% names(mLZ@multiLocalZscores$shifed_ZSs)))) {' at line 78 found ' stop("One or more elements in RS do not match region set names in mLZ")' stopifnot("One or more elements in RS do not match region set names in mLZ" = all(RS %in% names(mLZ@multiLocalZscores$shifed_ZSs))) In file R/plotSinglePT.R: at line 52 found ' if (!methods::hasArg(mPT)) {' at line 53 found ' stop("mPT is missing")' stopifnot("mPT is missing" = methods::hasArg(mPT)) at line 54 found ' } else if (!is(mPT,"genoMatriXeR")) {' at line 55 found ' stop('mPT needs to be a "genoMatriXeR" class object')' stopifnot("mPT needs to be a genoMatriXeR object or a numeric matrix" = methods::is(mPT, "genoMatriXeR")) at line 58 found ' if (!(methods::hasArg(RS1) & methods::hasArg(RS2))) {' at line 59 found ' stop("RS1 and RS2 are required")' stopifnot("RS1 and RS2 are required" = methods::hasArg(RS1) & methods::hasArg(RS2)) at line 60 found ' } else if (!all(c(RS1, RS2) %in% names(mPT@multiOverlaps))) {' at line 61 found ' stop("RS1 or RS2 do not match region set names in the mPT genoMatriXeR object")' stopifnot("RS1 or RS2 do not match region set names in the mPT genoMatriXeR object" = all(c(RS1, RS2) %in% names(mPT@multiOverlaps)))

_Important: Remove unused code._

Unused code has been removed: Here a description of the changes line by line: In file R/crosswisePermTest.R: at line 120 found ' #universe = deparse(substitute(universe)),' removed In file R/multiLocalZscore.R: at line 102 found ' # if (!is.numeric(ntimes)) {' removed at line 103 found ' # stop("ntimes must be numeric")' removed at line 104 found ' # }' removed at line 162 found ' #ntimes = ntimes,' ntimes = ntimes,' at line 175 found ' #ntimes = ntimes,' ntimes = ntimes,' In file R/multiPermTest.R: at line 36 found ' #methods::show(paste0("number of regions: ", length(A)))' removed In file R/plotLocalZScoreMatrix.R: at line 117 found ' #geom_raster(aes(fill = value), interpolate = FALSE, color = "white") +' removed In file R/plotSinglePT.R: at line 155 found ' # hline at y = 0' removed at line 160 found ' # vline at x = 0' removed at line 222 found ' #paste0("Standard Z-score: ", round(tab$std_zscore[n], digits = 2)),' removed Important: Please consider to add drop=FALSE to avoid the reduction of dimension for matrices and arrays. Paramenter drop=FALSE added to all the subsetting
Here a description of the changes line by line In file R/getMultiEvaluation.R: at line 66 found ' resTable <- resTable[,-8]' resTable <- resTable[,-8, drop = FALSE] In file R/makeCrosswiseMatrix.R: at line 89 found ' mat <- mat[indRow, ]' mat <- mat[indRow, , drop = FALSE] at line 90 found ' mat_pv <- mat_pv[indRow, ]' mat_pv <- mat_pv[indRow, , drop = FALSE] at line 95 found ' mat <- mat[, indCol]' mat <- mat[, indCol, drop = FALSE] at line 96 found ' mat_pv <- mat_pv[, indCol]' mat_pv <- mat_pv[, indCol, drop = FALSE] at line 126 found ' mat <- mat[ind, ind]' mat <- mat[ind, ind, drop = FALSE] at line 127 found ' mat_pv <- mat_pv[ind, ind]' mat_pv <- mat_pv[ind, ind, drop = FALSE] at line 137 found ' mat <- mat[ind, ind2]' mat <- mat[ind, ind2, drop = FALSE] at line 138 found ' mat_pv <- mat_pv[ind, ind2]' mat_pv <- mat_pv[ind, ind2, drop = FALSE] In file R/makeLZMatrix.R: at line 71 found ' mat <- mat[-1,]' mat <- mat[-1, , drop = FALSE] at line 90 found ' chooseHclustMet(mat[, seq(st,en)],' chooseHclustMet(mat[, seq(st,en), drop = FALSE], at line 95 found ' mat <- mat[ind,]' mat <- mat[ind, , drop = FALSE] at line 108 found ' mat_corX <- mat_corX[ind, ind]' mat_corX <- mat_corX[ind, ind, drop = FALSE] In file R/multiLocalZscore.R: at line 132 found ' A <- A[sample(length(A), round(length(A) fraction))]' A <- A[sample(length(A), round(length(A) fraction)), drop = FALSE] at line 135 found ' A <- A[sample(length(A), min_sampling)]' A <- A[sample(length(A), min_sampling), drop = FALSE] In file R/plotCrosswiseMatrix.R: at line 131 found ' GM<-GM[ord_mat[[1]],ord_mat[[2]]]' GM<-GM[ord_mat[[1]],ord_mat[[2]],drop = FALSE] In file R/plotLocalZScoreMatrix.R: at line 87 found ' GM <-GM[rev(rownames(GM)),]' GM <-GM[rev(rownames(GM)), , drop = FALSE] at line 141 found ' DF_label <- DF[DF$Y %in% highlight,]' DF_label <- DF[DF$Y %in% highlight, , drop = FALSE] at line 143 found ' DF_label <- DF_label[order(DF_label$Y),]' DF_label <- DF_label[order(DF_label$Y), , drop = FALSE] at line 144 found ' DF_label <- DF_label[!duplicated(DF_label$Y),]' DF_label <- DF_label[!duplicated(DF_label$Y), , drop = FALSE] at line 146 found ' DF_label <- DF[DF$Y %in% highlight & DF$X == 0,]' DF_label <- DF[DF$Y %in% highlight & DF$X == 0, , drop = FALSE] In file R/plotSingleLZ.R: at line 128 found ' df_label <- df_label[order(df_label$shift),]' df_label <- df_label[order(df_label$shift), , drop = FALSE] at line 129 found ' df_label <- df_label[!duplicated(df_label$name),]' df_label <- df_label[!duplicated(df_label$name), , drop = FALSE] at line 131 found ' df_label <- df[df$shift == 0, ]' df_label <- df[df$shift == 0, , drop = FALSE] In file R/subList.R: at line 26 found ' A <- A[sample(length(A), subN)]' A <- A[sample(length(A), subN), drop = FALSE] NOTE: Vectorize: for loops present, try to replace them by *apply funcitons. All the “for” loop were changed by apply and/or do.call family functions: here all the changes line by line In file R/chooseHclustMet.R: at line 66 found ' for (i in seq_along(vecMet)) {' resMetList<- lapply(seq_along(vecMet), FUN = function(i, mat_dist, vecMet){ resMetList<- stats::hclust(d = mat_dist, method = vecMet[[i]]) }, mat_dist, vecMet)

names(resMetList) <- vecMet

resMetVec <- unlist(lapply(seq_along(resMetList),
                           FUN= function(i, mat_dist, resMetList){
                             resMetVec <- stats::cor(x = mat_dist,
                                                     stats::cophenetic(resMetList[[i]]))
                           },
                           mat_dist, resMetList))

names(resMetVec) <- vecMet

In file R/createUniverse.R: at line 29 found ' for (u in seq_along(Alist)) {' uniList <- unlist(as(Alist, "GRangesList")) In file R/crosswiseMatrix.R: at line 21 found ' for (i in seq_along(A.obj)) {' mat <- do.call("cbind",lapply(seq_along(A.obj), FUN = function(i,A.obj, zs.type){ as.numeric(A.obj[[i]][, zs.type]) }, A.obj, zs.type)) In file R/makeLZMatrix.R: at line 58 found ' for (i in seq_along(mlZA@multiLocalZscores$shifed_ZSs)) {' mat <- do.call("rbind",lapply(seq_along(mlzsMultiLocalZscores(mlZA)$shifed_ZSs), FUN = function(i, mlZA){ mlzsMultiLocalZscores(mlZA)$shifed_ZSs[[i]] / sqrt(mlzsMultiLocalZscores(mlZA)$max_zscores[i])}, mlZA)) at line 66 found ' for (i in seq_along(mlZA@multiLocalZscores$shifed_ZSs)) {' mat <- do.call("rbind",lapply(seq_along(mlzsMultiLocalZscores(mlZA)$shifed_ZSs), FUN = function(i, mlZA){ mlzsMultiLocalZscores(mlZA)$shifed_ZSs[[i]]}, mlZA)) In file R/multiPermTest.R: at line 71 found ' for (j in seq_along(pt)) {' tab <- do.call("rbind",lapply(seq_along(pt), FUN = function(j, pt){

                                if (pt[[j]]$zscore == 0 |
                                    is.na(pt[[j]]$zscore) |
                                    is.nan((pt[[j]]$zscore))) {
                                  zscore.norm <- 0
                                } else{
                                  zscore.norm <- pt[[j]]$zscore / sqrt(length(A))
                                }

                                vec <- data.frame(
                                  order.id = j,
                                  name = new.names[j],
                                  n_regionA = length(A),
                                  n_regionB = length(Blist[[j]]),

                                  z_score = pt[[j]]$zscore,
                                  p_value = pt[[j]]$pval,
                                  n_overlaps = pt[[j]]$observed,
                                  mean_perm_test = mean(pt[[j]]$permuted),
                                  sd_perm_test = stats::sd(pt[[j]]$permuted)
                                )

                              }, pt))

In file R/plotCrosswiseDimRed.R: at line 139 found ' for (i in seq_len(nc)) {' df1 <- do.call("rbind", lapply(seq_len(nc), function(i) { nms <- names(clust_tab[clusttab == i]) df <- data.frame( Name = nms, Cluster = rep(paste0("clust", i), length(nms)), ASW = rep(vecSil[i], length(nms)) ) }) at line 192 found ' for (i in seq_along(listRS)) {' at line 193 found ' for (x in seq_along(listRS[[i]])) {' at line 201 found ' for (i in seq_along(sel_clust)) {' We have replaced all these for loops for a merge-based strategy for cluster annotation: anno_clust <- do.call("rbind", mapply(FUN = function(x, y) { data.frame("clust_name" = rep(y, length(x)), "rs_name" = x) }, listRS, names(listRS), SIMPLIFY = FALSE))

  pdr_df <- merge(pdr_df, anno_clust, by.x = "Name", by.y = "rs_name", all.x = TRUE, all.y = FALSE)
  pdr_df$clust1 <- pdr_df$clust_name
  pdr_df$clust1[is.na(pdr_df$clust1)] <- "none"

  sel_clust <- pdr_df$clust[pdr_df$clust1 != "none"]

  pdr_df$clust2 <- pdr_df$clust
  pdr_df$clust2[!(pdr_df$clust %in% sel_clust)] <- "none"
  pdr_df$clust <- pdr_df$clust2
  pdr_df_emph <- pdr_df[pdr_df$clust != "none", ]

In file R/similarRegionSet.R: at line 62 found ' for (i in seq_along(vectorPerc)) {' GRL<-lapply(seq_along(vectorPerc), FUN = function(i, vectorPerc, GR, genome){ GRL <- randomizeRegionsPerc(GR, genome = genome, frac = vectorPerc[i])}, vectorPerc, GR, genome)

Important: vapply instead of sapply.

changed all “sapply” function with “vapply” here the changes described line by line

In file R/getMultiEvaluation.R: at line 52 found ' res <- res[!sapply(res, is.null)]' res <- res[!vapply(res, is.null, TRUE)] at line 69 found ' res[["shifts"]] <- res[["shifts"]][!sapply(res[["shifts"]], is.null)]' res[["shifts"]] <- res[["shifts"]][!vapply(res[["shifts"]], is.null, TRUE)] NOTE: Use is.character/numeric/integer/logical to replace is(, "character/numeric/integer/logical") changed in the code, details here: In file R/plotCrosswiseMatrix.R: at line 75 found ' if(!(methods::is(maxVal, "numeric") | maxVal == "max")) {' stopifnot("maxVal has to be a numerical value, 'max' or NA" = { is.na(maxVal) | is.numeric(maxVal) | maxVal == "max" }) In file R/plotLocalZScoreMatrix.R: at line 68 found ' if(!(methods::is(maxVal, "numeric") | maxVal == "max")) {' stopifnot("maxVal has to be a numerical value, 'max' or NA" = { is.na(maxVal) | is.numeric(maxVal) | maxVal == "max" })

NOTE: Functional programming: code repetition. After replacing all the if statements for stopifnot() function calls, the number of repeated code lines has diminished substantially and argument checks are more streamlined in the functions. Since a few functions use the same type of arguments, we believe a certain degree of code repetition for error handling to be acceptable. Similarly, statistical (crosswisePermTest and multiLocalZscore) and plotting functions that deal with either regular association or local-zscore results have similar code but still have to deal with the particularities of each result type. We have taken the approach to mostly compartmentalize the analysis of each type in different classes and functions. We are however willing to improve this aspect in future versions if deemed important for the quality of the package.

Documentation

Important: Vignette should have an Introduction section. Or rename the first section to Introduction.

We have written an Introduction section following the indications

Important: Vignette should have an Installation section. Important: Please include Bioconductor installation instructions using BiocManager.

We have added an Installation section (eval = FALSE) following BIo cManager::installation directives

Important: Vignette includes motivation for submitting to Bioconductor as part of the abstract/intro of the main

We explained in the Introduction the motivation for submitting the package to Bioconductor

Consider adding more unit tests. Current unit tests only covered <1%

We have increased the test section, the core function now are tested over 90% and globally we have a test coverage using devtools::test_coverage() of 88.85%

bioc-issue-bot commented 2 years ago

Received a valid push on git.bioconductor.org; starting a build for commit id: 7cf549696f8f426da2007fb687f94905b5daaf46

bioc-issue-bot commented 2 years ago

Dear Package contributor,

This is the automated single package builder at bioconductor.org.

Your package has been built on Linux, Mac, and Windows.

Congratulations! The package built without errors or warnings on all platforms.

Please see the build report for more details. This link will be active for 21 days.

Remember: if you submitted your package after July 7th, 2020, when making changes to your repository push to git@git.bioconductor.org:packages/regioneReloaded to trigger a new build. A quick tutorial for setting up remotes and pushing to upstream can be found here.

jianhong commented 2 years ago

Package 'regioneReloaded' Review

Thank you for answering the review comment line by line. The package passed check and build. It is almost there.

General package development

Rd files

R code

bioc-issue-bot commented 2 years ago

Received a valid push on git.bioconductor.org; starting a build for commit id: 9ac3e67015a2797b899ec51cea430ba0b278b729

bioc-issue-bot commented 2 years ago

Dear Package contributor,

This is the automated single package builder at bioconductor.org.

Your package has been built on Linux, Mac, and Windows.

Congratulations! The package built without errors or warnings on all platforms.

Please see the build report for more details. This link will be active for 21 days.

Remember: if you submitted your package after July 7th, 2020, when making changes to your repository push to git@git.bioconductor.org:packages/regioneReloaded to trigger a new build. A quick tutorial for setting up remotes and pushing to upstream can be found here.

RMalinverni commented 2 years ago

Dear Jianhong Ou, thanks for your review. We have addressed all the raised issues and provide here a point by point response in the version 0.99.4.

Best ,

Roberto

Important: '::' or ':::' imports not declared from: ‘BiocStyle’ ‘GenomeInfoDb’

added ‘BiocStyle’ ‘GenomeInfoDb’ as suggestion in the Description file

_NOTE: Rd line widths Rd file 'crosswisePermTest.Rd':

\examples lines wider than 100 characters: regA <- regioneR::createRandomRegions(nregions = 10, length.mean = 10, length.sd = 2, genome = fakeGenome) regB <- regioneR::createRandomRegions(nregions = 10, length.mean = 10, length.sd = 2, genome = fakeGenome) regAs <- similarRegionSet(GR = regA, genome = fakeGenome, name = "A", vectorPerc = seq(0.1, 0.3, by = 0.1)) regBs <- similarRegionSet(GR = regB, genome = fakeGenome, name = "B", vectorPerc = seq(0.1, 0.3, by = 0.1))_

We adjust the line’s length

_Rd file 'makeLZMatrix.Rd':

\usage lines wider than 90 characters: makeLZMatrix(mlZA, normalize = TRUE, clusterize = TRUE, centralize = NA, hc.method = NULL, dist.method = "euclidean",_

We adjust the line’s length

_Rd file 'multiLocalZscore.Rd':

\examples lines wider than 100 characters: regA <- regioneR::createRandomRegions(nregions = 10, length.mean = 10,length.sd = 2,genome = fakeGenome) regB <- regioneR::createRandomRegions(nregions = 10,length.mean = 10,length.sd = 2,genome = fakeGenome) regAs <-similarRegionSet(GR = regA,genome = fakeGenome, name = "A",vectorPerc = seq(0.1,0.3,by =0.1)) regBs <-similarRegionSet(GR = regB,genome = fakeGenome, name = "B", vectorPerc = seq(0.1,0.3,by =0.1))_

We adjust the line’s length

_Rd file 'plotCrosswiseDimRed.Rd':

\usage lines wider than 90 characters: labAll = FALSE, labMaxOverlap = 100, ellipse = TRUE, colPal = NULL, perplexity = 10, theta = 0.1,_

We adjust the line’s length

_Rd file 'similarRegionSet.Rd':

\examples lines wider than 100 characters: similAList <- similarRegionSet(GR = A, genome = AlienGenome,vectorPerc = seq(0.1,0.9,0.2), name = "test") These lines will be truncated in the PDF manual._

We adjust the line’s length

Important: No paste in message(), message, stop In file R/crosswisePermTest.R: at line 143 found ' message(paste0("There was an error when performing the permutation test for: ", nameA))'

change in: ‘ message("There was an error when performing the permutation test for: ", nameA)’

Important: Remove unused code. In file R/multiPermTest.R: at line 36 found ' #methods::show(paste0("number of regions: ", length(A)))'

removed

jianhong commented 2 years ago

@RMalinverni , Thank you for the updates. And sorry for that I missed two points in last review.

[1] "R/crosswisePermTest.R (line 147, column 41)" [2] "R/crosswisePermTest.R (line 175, column 15)" [3] "R/getParameters.R (line 58, column 15)"

bioc-issue-bot commented 2 years ago

Received a valid push on git.bioconductor.org; starting a build for commit id: 948137a5386623f6cbef70fd68f7f96c1de12b94

bioc-issue-bot commented 2 years ago

Dear Package contributor,

This is the automated single package builder at bioconductor.org.

Your package has been built on Linux, Mac, and Windows.

On one or more platforms, the build results were: "WARNINGS". This may mean there is a problem with the package that you need to fix. Or it may mean that there is a problem with the build system itself.

Please see the build report for more details. This link will be active for 21 days.

Remember: if you submitted your package after July 7th, 2020, when making changes to your repository push to git@git.bioconductor.org:packages/regioneReloaded to trigger a new build. A quick tutorial for setting up remotes and pushing to upstream can be found here.

bioc-issue-bot commented 2 years ago

Received a valid push on git.bioconductor.org; starting a build for commit id: 3fb22f2bb198059df0cb862bfce48e1af0a64d10

bioc-issue-bot commented 2 years ago

Dear Package contributor,

This is the automated single package builder at bioconductor.org.

Your package has been built on Linux, Mac, and Windows.

Congratulations! The package built without errors or warnings on all platforms.

Please see the build report for more details. This link will be active for 21 days.

Remember: if you submitted your package after July 7th, 2020, when making changes to your repository push to git@git.bioconductor.org:packages/regioneReloaded to trigger a new build. A quick tutorial for setting up remotes and pushing to upstream can be found here.

RMalinverni commented 2 years ago

Dear Jianhong Ou, here the last changes,

thanks

Roberto

_To avoid the NOTE: Avoid redundant 'stop' and 'warn' in signal conditions in BioCheck, could you please change the word error to other word in [1] "R/crosswisePermTest.R (line 147, column 41)"_

changed word “error” for “issue”

[2] "R/crosswisePermTest.R (line 175, column 15)"

changed word “error” for “issue”

[3] "R/getParameters.R (line 58, column 15)"

changed parameters name “show_error” with “show_err”

_To avoid the * NOTE: Consider adding runnable examples to man pages that documentexported objects. in BiocCheck, could you please add runnable examples to

_[1] "man/genoMatriXeR-class.Rd"__

added example to manual of genoMatriXeR-class

_[_2] "man/multiLocalZScore-class.Rd"__

added example to manual of multiLocalZScore-class

bioc-issue-bot commented 2 years ago

Your package has been accepted. It will be added to the Bioconductor nightly builds.

Thank you for contributing to Bioconductor!

Reviewers for Bioconductor packages are volunteers from the Bioconductor community. If you are interested in becoming a Bioconductor package reviewer, please see Reviewers Expectations.

lshep commented 2 years ago

The master branch of your GitHub repository has been added to Bioconductor's git repository.

To use the git.bioconductor.org repository, we need an 'ssh' key to associate with your github user name. If your GitHub account already has ssh public keys (https://github.com/RMalinverni.keys is not empty), then no further steps are required. Otherwise, do the following:

  1. Add an SSH key to your github account
  2. Submit your SSH key to Bioconductor

See further instructions at

https://bioconductor.org/developers/how-to/git/

for working with this repository. See especially

https://bioconductor.org/developers/how-to/git/new-package-workflow/ https://bioconductor.org/developers/how-to/git/sync-existing-repositories/

to keep your GitHub and Bioconductor repositories in sync.

Your package will be included in the next nigthly 'devel' build (check-out from git at about 6 pm Eastern; build completion around 2pm Eastern the next day) at

https://bioconductor.org/checkResults/

(Builds sometimes fail, so ensure that the date stamps on the main landing page are consistent with the addition of your package). Once the package builds successfully, you package will be available for download in the 'Devel' version of Bioconductor using BiocManager::install("regioneReloaded"). The package 'landing page' will be created at

https://bioconductor.org/packages/regioneReloaded

If you have any questions, please contact the bioc-devel mailing list (https://stat.ethz.ch/mailman/listinfo/bioc-devel); this issue will not be monitored further.