GithubHelp home page GithubHelp logo

rajlabmssm / echodeps Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 247 KB

echoverse module: Create package dependency graphs

Home Page: https://rajlabmssm.github.io/echodeps/

R 100.00%
echoverse rpackages dependencies networks

echodeps's People

Contributors

bschilder avatar

Watchers

 avatar  avatar

echodeps's Issues

Explore similar packages

deepdep

https://dominikrafacz.github.io/deepdep/

Great idea, but seems to be broken atm. Also doesn't seem to be able to find reverse depdencies.

Has a helpful pros/cons comparison with other similar packages:
https://dominikrafacz.github.io/deepdep/articles/deepdep-comparison.html

miniCRAN

Useful function for getting CRAN description files:

res <- miniCRAN::getCranDescription(pkgs = "miniCRAN")

Can then convert to desc format :

 dl <- as.list(res)
  d <- desc::description$new("!new")
  for(k in names(dl)){
    if(!is.na(dl[[k]])){ 
      d$set_list(key = k, list_value = dl[[k]])   
    }
  }

However, it only has access to CRAN.

Moreover, it seems like it can only access INSTALLED CRAN packages....so not very useful.

BiocPkgTools

Package dependency graphs and download stats of Bioc packages. Recently updated
https://bioconductor.org/packages/release/bioc/vignettes/BiocPkgTools/inst/doc/BiocPkgTools.html

ALso has access to DESCRIPTION files:
bpi = biocPkgList()

Also has access to anacondaDownloadStats, another repo I should consider incorporating into echodeps for download stats.

Comes with tons of pre-parsed GitHub metadata for each package.

awesome-r-pkgtools

Repo documenting lots of awesome R dev tools, including dep management:
https://github.com/IndrajeetPatil/awesome-r-pkgtools#dependency-management-%EF%B8%8F

pkgdepends

https://r-lib.github.io/pkgdepends/

Not very useful for my case, since you have to download each R package and install it....

Local checks on MacOS fail, despite functions running fine in R console

─ Test failures ─────────────────────── testthat ────

> desc_path <- list.files("../","^DESCRIPTION$",
+                         full.names = TRUE, recursive = TRUE)[1]
> pkg <- read.dcf(desc_path, fields = "Package")[1]
> library(testthat)
> library(pkg, character.only = TRUE)
> 
> test_check(pkg)
Loading required namespace: pkgnet
Generating `pkgnet` package report.
INFO [2022-11-12 03:01:52] Creating package report for package echolocatoR with reporters: SummaryReporter, DependencyReporter, FunctionReporter
INFO [2022-11-12 03:01:53] Rendering package report...
INFO [2022-11-12 03:02:05] Done creating package report! It is available at /var/folders/zq/h7mtybc533b1qzkys_ttgpth0000gn/T//Rtmpv6Wp7q/working_dir/RtmpkJtSMV/echolocatoR8345953adf3.html
Constructing dependency subgraph.
Adding all echoverse modules to metadata search.
Collecting metadata for 13 packages
- echolocatoR
 ----------- FAILURE REPORT -------------- 
 --- failure: length > 1 in coercion to logical ---
 --- srcref --- 
: 
 --- package (from environment) --- 
echodeps
 --- call from context --- 
doTryCatch(return(expr), name, parentenv, handler)
 --- call from argument --- 
!methods::is(d, "data.frame") && is.na(d)
 --- R stacktrace ---
where 1: doTryCatch(return(expr), name, parentenv, handler)
where 2: tryCatchOne(expr, names, parentenv, handlers[[1L]])
where 3: tryCatchList(expr, classes, parentenv, handlers)
where 4: tryCatch({
    messager("-", pkg, v = verbose)
    d <- utils::packageDescription(pkg)
    if (!methods::is(d, "data.frame") && is.na(d)) {
        return(NULL)
    }
    data.table::data.table(t(`names<-`(lapply(fields, function(x) {
        if (is.null(d[[x]])) return(NA)
        parse_deps(d = d, field = x, split = if (x %in% c("Title", 
            "Description")) "______" else ",")
    }), fields)))
}, error = function(e) {
    warning(e)
    NULL
})
where 5: FUN(X[[i]], ...)
where 6: lapply(pkgs, function(pkg) {
    tryCatch({
        messager("-", pkg, v = verbose)
        d <- utils::packageDescription(pkg)
        if (!methods::is(d, "data.frame") && is.na(d)) {
            return(NULL)
        }
        data.table::data.table(t(`names<-`(lapply(fields, function(x) {
            if (is.null(d[[x]])) return(NA)
            parse_deps(d = d, field = x, split = if (x %in% c("Title", 
                "Description")) "______" else ",")
        }), fields)))
    }, error = function(e) {
        warning(e)
        NULL
    })
})
where 7: data.table::rbindlist(lapply(pkgs, function(pkg) {
    tryCatch({
        messager("-", pkg, v = verbose)
        d <- utils::packageDescription(pkg)
        if (!methods::is(d, "data.frame") && is.na(d)) {
            return(NULL)
        }
        data.table::data.table(t(`names<-`(lapply(fields, function(x) {
            if (is.null(d[[x]])) return(NA)
            parse_deps(d = d, field = x, split = if (x %in% c("Title", 
                "Description")) "______" else ",")
        }), fields)))
    }, error = function(e) {
        warning(e)
        NULL
    })
}))
where 8: package_metadata(pkgs = c(pkg_name, deps))
where 9: dep_graph_create(pkg_name = pkg_name, deps = deps, verbose = verbose)
where 10 at test-dep_graph.R#13: echodeps::dep_graph()
where 11: eval(code, test_env)
where 12: eval(code, test_env)
where 13: withCallingHandlers({
    eval(code, test_env)
    if (!handled && !is.null(test)) {
        skip_empty()
    }
}, expectation = handle_expectation, skip = handle_skip, warning = handle_warning, 
    message = handle_message, error = handle_error)
where 14: doTryCatch(return(expr), name, parentenv, handler)
where 15: tryCatchOne(expr, names, parentenv, handlers[[1L]])
where 16: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
where 17: doTryCatch(return(expr), name, parentenv, handler)
where 18: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]), 
    names[nh], parentenv, handlers[[nh]])
where 19: tryCatchList(expr, classes, parentenv, handlers)
where 20: tryCatch(withCallingHandlers({
    eval(code, test_env)
    if (!handled && !is.null(test)) {
        skip_empty()
    }
}, expectation = handle_expectation, skip = handle_skip, warning = handle_warning, 
    message = handle_message, error = handle_error), error = handle_fatal, 
    skip = function(e) {
    })
where 21: test_code(desc, code, env = parent.frame(), reporter = reporter)
where 22 at test-dep_graph.R#1: test_that("dep_graph works", {
    run_tests <- function(res, pkg_name) {
        testthat::expect_true(methods::is(res$plot, "visNetwork"))
        testthat::expect_true(methods::is(res$metadata, "data.frame"))
        testthat::expect_true(methods::is(res$graph, "igraph"))
        testthat::expect_true(methods::is(res$subgraph, "igraph"))
        testthat::expect_true(methods::is(res$pkgnet_report, 
            "PackageReport"))
        testthat::expect_equal(res$pkg_name, pkg_name)
    }
    res <- echodeps::dep_graph()
    run_tests(res = res, pkg_name = "echolocatoR")
    res2 <- echodeps::dep_graph(pkg_name = "dplyr", shape = "hexagon", 
        layout = function(graph, pkg_name) {
            visNetwork::visIgraphLayout(graph = graph, layout = "layout_nicely")
        })
    run_tests(res = res2, pkg_name = "dplyr")
})
where 23: eval(code, test_env)
where 24: eval(code, test_env)
where 25: withCallingHandlers({
    eval(code, test_env)
    if (!handled && !is.null(test)) {
        skip_empty()
    }
}, expectation = handle_expectation, skip = handle_skip, warning = handle_warning, 
    message = handle_message, error = handle_error)
where 26: doTryCatch(return(expr), name, parentenv, handler)
where 27: tryCatchOne(expr, names, parentenv, handlers[[1L]])
where 28: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
where 29: doTryCatch(return(expr), name, parentenv, handler)
where 30: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]), 
    names[nh], parentenv, handlers[[nh]])
where 31: tryCatchList(expr, classes, parentenv, handlers)
where 32: tryCatch(withCallingHandlers({
    eval(code, test_env)
    if (!handled && !is.null(test)) {
        skip_empty()
    }
}, expectation = handle_expectation, skip = handle_skip, warning = handle_warning, 
    message = handle_message, error = handle_error), error = handle_fatal, 
    skip = function(e) {
    })
where 33: test_code(NULL, exprs, env)
where 34: source_file(path, child_env(env), wrap = wrap)
where 35: FUN(X[[i]], ...)
where 36: lapply(test_paths, test_one_file, env = env, wrap = wrap)
where 37: doTryCatch(return(expr), name, parentenv, handler)
where 38: tryCatchOne(expr, names, parentenv, handlers[[1L]])
where 39: tryCatchList(expr, classes, parentenv, handlers)
where 40: tryCatch(code, testthat_abort_reporter = function(cnd) {
    cat(conditionMessage(cnd), "\n")
    NULL
})
where 41: with_reporter(reporters$multi, lapply(test_paths, test_one_file, 
    env = env, wrap = wrap))
where 42: test_files_serial(test_dir = test_dir, test_package = test_package, 
    test_paths = test_paths, load_helpers = load_helpers, reporter = reporter, 
    env = env, stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning, 
    wrap = wrap, load_package = load_package)
where 43: test_files(test_dir = path, test_paths = test_paths, test_package = package, 
    reporter = reporter, load_helpers = load_helpers, env = env, 
    stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning, 
    wrap = wrap, load_package = load_package, parallel = parallel)
where 44: test_dir("testthat", package = package, reporter = reporter, 
    ..., load_package = "installed")
where 45: test_check(pkg)

 --- value of length: 21 type: logical ---
                Package                    Type                   Title 
                  FALSE                   FALSE                   FALSE 
                Version               Authors@R             Description 
                  FALSE                   FALSE                   FALSE 
                License                     URL              BugReports 
                  FALSE                   FALSE                   FALSE 
               Encoding                 Depends               biocViews 
                  FALSE                   FALSE                   FALSE 
                Imports                Suggests                 Remotes 
                  FALSE                   FALSE                   FALSE 
            RoxygenNote         VignetteBuilder Config/testthat/edition 
                  FALSE                   FALSE                   FALSE 
                 Author              Maintainer                   Built 
                  FALSE                   FALSE                   FALSE 
 --- function from context --- 
function (expr, name, parentenv, handler) 
{
    .Internal(.addCondHands(name, list(handler), parentenv, environment(), 
        FALSE))
    expr
}
<bytecode: 0x7fcf6f074ab8>
<environment: 0x7fcf7c4c23a0>
 --- function search by body ---
 ----------- END OF FAILURE REPORT -------------- 
Fatal error: length > 1 in coercion to logical

session info

R version 4.2.1 (2022-06-23)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Monterey 12.4

Matrix products: default
LAPACK: /Library/Frameworks/R.framework/Versions/4.2/Resources/lib/libRlapack.dylib

locale:
[1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8

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

other attached packages:
[1] echolocatoR_2.0.3 echodeps_0.99.2   dplyr_1.0.10      data.table_1.14.4

loaded via a namespace (and not attached):
  [1] rappdirs_0.3.3              rtracklayer_1.58.0          GGally_2.1.2               
  [4] R.methodsS3_1.8.2           tidyr_1.2.1                 echoLD_0.99.8              
  [7] ggplot2_3.4.0               bit64_4.0.5                 knitr_1.40                 
 [10] irlba_2.3.5.1               DelayedArray_0.24.0         R.utils_2.12.2             
 [13] rpart_4.1.19                AnnotationFilter_1.22.0     KEGGREST_1.38.0            
 [16] RCurl_1.98-1.9              generics_0.1.3              BiocGenerics_0.44.0        
 [19] GenomicFeatures_1.50.2      callr_3.7.3                 lambda.r_1.2.4             
 [22] usethis_2.1.6               RSQLite_2.2.18              proxy_0.4-27               
 [25] bit_4.0.4                   tzdb_0.3.0                  xml2_1.3.3                 
 [28] httpuv_1.6.6                SummarizedExperiment_1.28.0 assertthat_0.2.1           
 [31] viridis_0.6.2               xfun_0.34                   hms_1.1.2                  
 [34] jquerylib_0.1.4             evaluate_0.18               promises_1.2.0.1           
 [37] fansi_1.0.3                 restfulr_0.0.15             progress_1.2.2             
 [40] dbplyr_2.2.1                readxl_1.4.1                Rgraphviz_2.42.0           
 [43] igraph_1.3.5                DBI_1.1.3                   htmlwidgets_1.5.4          
 [46] futile.logger_1.4.3         reshape_0.8.9               downloadR_0.99.5           
 [49] stats4_4.2.1                purrr_0.3.5                 ellipsis_0.3.2             
 [52] crosstalk_1.2.0             ggnewscale_0.4.8            backports_1.4.1            
 [55] deldir_1.0-6                biomaRt_2.54.0              MatrixGenerics_1.10.0      
 [58] vctrs_0.5.0                 Biobase_2.58.0              ensembldb_2.22.0           
 [61] remotes_2.4.2               cachem_1.0.6                withr_2.5.0                
 [64] BSgenome_1.66.1             checkmate_2.1.0             GenomicAlignments_1.34.0   
 [67] prettyunits_1.1.1           cluster_2.1.4               ape_5.6-2                  
 [70] dir.expiry_1.6.0            lazyeval_0.2.2              crayon_1.5.2               
 [73] basilisk.utils_1.10.0       crul_1.3                    pkgconfig_2.0.3            
 [76] GenomeInfoDb_1.34.3         ProtGenerics_1.30.0         nlme_3.1-160               
 [79] pkgload_1.3.1               XGR_1.1.8                   pals_1.7                   
 [82] nnet_7.3-18                 gitcreds_0.1.2              devtools_2.4.5             
 [85] rlang_1.0.6                 lifecycle_1.0.3             miniUI_0.1.1.1             
 [88] filelock_1.0.2              httpcode_0.3.0              BiocFileCache_2.6.0        
 [91] rex_1.2.1                   dichromat_2.0-0.1           echotabix_0.99.8           
 [94] cellranger_1.1.0            coloc_5.1.0.1               rprojroot_2.0.3            
 [97] matrixStats_0.62.0          graph_1.76.0                Matrix_1.5-3               
[100] osfr_0.2.9                  boot_1.3-28                 base64enc_0.1-3            
[103] processx_3.8.0              png_0.1-7                   viridisLite_0.4.1          
[106] rjson_0.2.21                rootSolve_1.8.2.3           bitops_1.0-7               
[109] R.oo_1.25.0                 visNetwork_2.1.2            ggnetwork_0.5.10           
[112] Biostrings_2.66.0           blob_1.2.3                  mixsqp_0.3-43              
[115] stringr_1.4.1               echoplot_0.99.6             dnet_1.1.7                 
[118] jpeg_0.1-9                  readr_2.1.3                 S4Vectors_0.36.0           
[121] echodata_0.99.16            scales_1.2.1                memoise_2.0.1              
[124] magrittr_2.0.3              plyr_1.8.8                  hexbin_1.28.2              
[127] pkgnet_0.4.2                zlibbioc_1.44.0             compiler_4.2.1             
[130] echoconda_0.99.8            BiocIO_1.8.0                catalogueR_1.0.0           
[133] RColorBrewer_1.1-3          covr_3.6.1                  Rsamtools_2.14.0           
[136] cli_3.4.1                   XVector_0.38.0              echoannot_0.99.10          
[139] urlchecker_1.0.1            patchwork_1.1.2             ps_1.7.2                   
[142] htmlTable_2.4.1             Formula_1.2-4               formatR_1.12               
[145] MASS_7.3-58.1               tidyselect_1.2.0            stringi_1.7.8              
[148] yaml_2.3.6                  supraHex_1.36.0             latticeExtra_0.6-30        
[151] ggrepel_0.9.2               grid_4.2.1                  sass_0.4.2                 
[154] VariantAnnotation_1.44.0    tools_4.2.1                 lmom_2.9                   
[157] parallel_4.2.1              rstudioapi_0.14             foreign_0.8-83             
[160] piggyback_0.1.4             gridExtra_2.3               gld_2.6.6                  
[163] snpStats_1.48.0             digest_0.6.30               BiocManager_1.30.19        
[166] shiny_1.7.3                 Rcpp_1.0.9                  GenomicRanges_1.50.1       
[169] later_1.3.0                 OrganismDbi_1.40.0          httr_1.4.4                 
[172] AnnotationDbi_1.60.0        biovizBase_1.46.0           RCircos_1.2.2              
[175] ggbio_1.46.0                colorspace_2.0-3            brio_1.1.3                 
[178] XML_3.99-0.12               fs_1.5.2                    reticulate_1.26            
[181] splines_4.2.1               IRanges_2.32.0              RBGL_1.74.0                
[184] expm_0.999-6                gh_1.3.1                    echofinemap_0.99.4         
[187] basilisk_1.10.2             Exact_3.2                   mapproj_1.2.9              
[190] sessioninfo_1.2.2           xtable_1.8-4                jsonlite_1.8.3             
[193] futile.options_1.0.1        echogithub_0.99.0           testthat_3.1.5             
[196] susieR_0.12.27              R6_2.5.1                    Hmisc_4.7-1                
[199] profvis_0.3.7               pillar_1.8.1                htmltools_0.5.3            
[202] mime_0.12                   glue_1.6.2                  fastmap_1.1.0              
[205] DT_0.26                     BiocParallel_1.32.1         class_7.3-20               
[208] codetools_0.2-18            maps_3.4.1                  pkgbuild_1.3.1             
[211] mvtnorm_1.1-3               utf8_1.2.2                  lattice_0.20-45            
[214] bslib_0.4.1                 tibble_3.1.8                curl_4.3.3                 
[217] DescTools_0.99.47           interp_1.1-3                zip_2.2.2                  
[220] openxlsx_4.2.5.1            survival_3.4-0              roxygen2_7.2.2             
[223] rmarkdown_2.18              desc_1.4.2                  munsell_0.5.0              
[226] e1071_1.7-12                GenomeInfoDbData_1.2.9      reshape2_1.4.4             
[229] gtable_0.3.1 
``
</details>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.