Comparison of deepdep to similar packages

Dominik Rafacz

2023-02-20

Comparison to other packages

There are a few already existing solutions to the problem of visualizing dependencies. In this last section, we will compare deepdep to those solutions.

This solutions are (with links to their GitHub repositories):

General advantages of deepdep

First and foremost, our package is the only one that uses ggplot2 and its enhancements, which is currently the most popular way of visualizing anything in R. You can easily modify plots generated with our package.

Secondly, we are trying to keep plots clear and tidy. We’re rather showing general structure of dependencies, their density and also show, which of the dependencies are the most crucial.

At last, deepdep function is able to show levels of dependencies, which is not true for other packages listed here – they either show only first-level dependencies or all possible dependencies


In the following sections we’ll describe why our package is better in some aspects than others, but also features that we’re lacking.

DependenciesGraphs

This package allows creating interactive graphs (using visNetwork) to visualize dependencies between packages and also between functions in those packages.

Advantages:

Disadvantages:

#> an example from the website on github.io
library(devtools, quietly = TRUE)
install_github("datastorm-open/DependenciesGraphs")
library(DependenciesGraphs, quietly = TRUE)

# you mus first loaded the target package using library
library(plyr,quietly = TRUE)

dep <- Pck.load.to.vis("plyr")
plot(dep)

pkgnet

Tool for obtaining information on specified package, especially plotting network of package and function dependencies.

Advantages

Disadvantages

#> opens a report
library(pkgnet)
result <- CreatePackageReport('ggplot2')

miniCRAN

From README.md on Github:

The miniCRAN package makes it possible to create an internally consistent repository consisting of selected packages from CRAN-like repositories. The user specifies a set of desired packages, and miniCRAN recursively reads the dependency tree for these packages, then downloads only this subset.

Advantages:

Disadvantages:

#> an example from official vignette
library(miniCRAN, quietly = TRUE)

tags <- "chron"
pkgDep(tags, availPkgs = cranJuly2014)
#>  [1] "chron"        "RColorBrewer" "dichromat"    "munsell"      "plyr"         "labeling"    
#>  [7] "colorspace"   "Rcpp"         "digest"       "gtable"       "reshape2"     "scales"      
#> [13] "proto"        "MASS"         "stringr"      "ggplot2"

dg <- makeDepGraph(tags, enhances = TRUE, availPkgs = cranJuly2014)
set.seed(1)
plot(dg, legendPosition = c(-1, 1), vertex.size = 20)

plot of chunk miniCRAN # pkgDepTools

Description from official vignette:

The pkgDepTools package provides tools for computing and analysing dependency relationships among R packages. With it, you can build a graph-based representation of the dependencies among all packages in a list of CRAN-style package repositories. There are utilities for computing installation order of a given package and, if the RCurl package is available, estimating the download size required to install a given package and its dependencies.

Advantages:

Disadvantages:

#> code not evaluated due to very long execution time
library(pkgDepTools)
library(Rgraphviz)
graph <- makeDepGraph("http://cran.fhcrc.org", type="source")
plot(graph)