{
  "_id": "6ad2bde96814ce853b657bbb",
  "Package": "netkit",
  "Type": "Package",
  "Title": "Network Topology, Diffusion and Robustness Analysis",
  "Version": "0.1.2",
  "Authors@R": "person(\"Alex\", \"Gallinat\", email = \"alex.gaoc@gmail.com\",\nrole = c(\"aut\", \"cre\"))",
  "Description": "Tools for analyzing and visualizing networks, built on\n'igraph' and returning 'ggplot2' objects rather than drawing\nthem, so that diagnostics can be composed and customized.\nSummarizes global topology and per-node centrality, identifies\nhubs, bottlenecks and community structure, and classifies nodes\ninto connectivity roles following Guimera and Amaral (2005)\n<doi:10.1038/nature03288>. Extracts interpretable subnetworks\naround a set of nodes, including approximate Steiner trees\nafter Kou, Markowsky and Berman (1981)\n<doi:10.1007/BF00288961>. Propagates influence from seed nodes\nusing Laplacian smoothing, heat-kernel and\nrandom-walk-with-restart diffusion, with degree-matched\npermutation nulls, and simulates network robustness under\nprogressive node removal. Observed metrics, including the\nsmall-world coefficient, can be tested against\ndegree-preserving random ensembles for statistical\nsignificance. Edge weights are supported throughout, with an\nexplicit declaration of whether a weight means strength or\ndistance. Matrix operations use sparse representations\nthroughout so that the methods remain usable on large graphs.",
  "License": "MIT + file LICENSE",
  "Encoding": "UTF-8",
  "Language": "en-US",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "7.3.3",
  "VignetteBuilder": "knitr",
  "Config/testthat/edition": "3",
  "URL": "https://agallinat.github.io/netkit,\nhttps://github.com/agallinat/netkit",
  "BugReports": "https://github.com/agallinat/netkit/issues",
  "Config/pak/sysreqs": "cmake libglpk-dev make libuv1-dev libxml2-dev\nzlib1g-dev",
  "Repository": "https://agallinat.r-universe.dev",
  "Date/Publication": "2026-10-16 22:21:11 UTC",
  "RemoteUrl": "https://github.com/agallinat/netkit",
  "RemoteRef": "HEAD",
  "RemoteSha": "2b2e05a4ee78834c9e79e3b3970466feb742b2f4",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-17 00:09:51 UTC",
    "User": "root"
  },
  "Author": "Alex Gallinat [aut, cre]",
  "Maintainer": "Alex Gallinat <alex.gaoc@gmail.com>",
  "_user": "agallinat",
  "_type": "src",
  "_file": "netkit_0.1.2.tar.gz",
  "_fileid": "https://r2.ropensci.org/77ddaefa6e37a82cd157c4d7422c39ec854420d080d4b47e85cbe6101914ece8",
  "_filesize": 1854128,
  "_sha256": "77ddaefa6e37a82cd157c4d7422c39ec854420d080d4b47e85cbe6101914ece8",
  "_expires": "2027-01-25T00:14:30.000Z",
  "_created": "2026-10-17T00:09:51.000Z",
  "_published": "2026-10-17T00:14:32.911Z",
  "_buildurl": "https://github.com/r-universe/agallinat/actions/runs/38984802172",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_jobs": [
    {
      "job": 117254665595,
      "time": 234,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12082534498"
    },
    {
      "job": 117254665597,
      "time": 186,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12083295249"
    },
    {
      "job": 117254665505,
      "time": 208,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "12082791224"
    },
    {
      "job": 117254665569,
      "time": 202,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12082489553"
    },
    {
      "job": 117253726068,
      "time": 217,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12082825813"
    },
    {
      "job": 117254665585,
      "time": 130,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "12081949064"
    },
    {
      "job": 117254665497,
      "time": 155,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12082961385"
    },
    {
      "job": 117254665518,
      "time": 111,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "12082915808"
    },
    {
      "job": 117254665570,
      "time": 121,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12082741280"
    }
  ],
  "_upstream": "https://github.com/agallinat/netkit",
  "_commit": {
    "id": "2b2e05a4ee78834c9e79e3b3970466feb742b2f4",
    "author": "Alex Gallinat <alex.gaoc@gmail.com>",
    "committer": "Alex Gallinat <alex.gaoc@gmail.com>",
    "message": "Derive the degree-matched bin floor instead of fitting it\n\nmatch_pool = NULL defaulted to 10 * n_seeds, a multiplier calibrated on\nfive synthetic scale-free graphs in 0.1.1 and documented as a working\ndefault rather than a settled one. It now follows from the self-seeding\nexclusion that 0.1.2 added, which is the thing that actually makes a\nnarrow pool cost something.\n\nA vertex is tested only against the permutations that did not seed it. So\na vertex seeded in a fraction r of permutations keeps n(1-r) of them, and\nits attainable p-value floor rises from 1/(n+1) to 1/(n(1-r)+1) -- a\nfactor of about 1/(1-r). Holding that inflation within a tolerance t\nbounds r <= t/(1+t), and since a permutation draws n_seeds members from a\nbin of size B, each member is seeded with probability n_seeds/B, giving\n\n    B >= n_seeds * (1 + t) / t.\n\nAt t = 0.1 that is 11 x n_seeds. The fitted 10x was approximating a 10%\ntolerance on the p-value floor, which is both the quantity a caller can\nreason about and the one the exclusion degrades. The default pool is\ntherefore ~10% wider and degree-matched p-values shift slightly.\n\nNo runtime check that the bound holds, because it holds by construction:\nevery bin carries at least match_pool members and a permutation draws\nn_seeds of them. A first version of this commit added one anyway, which\ncould not fire with the derived default and duplicated the existing\ntoo-small-match_pool warning when it could -- two warnings for one cause.\nThe bound is measured in test-diffusion.R instead, by drawing permutations\nand counting how often the most-seeded candidate appears: 0.082 against a\npredicted 0.0909 at 5 seeds on 150 vertices, falling monotonically as the\nfloor rises. That is the check worth having, since it would catch the\nbinning drifting away from what the derivation assumes.\n\nThe too-small-match_pool warning now states both consequences, which run\nin opposite directions and were previously one each: the null goes\nanti-conservative for vertices far fr",
    "time": 1792189271
  },
  "_maintainer": {
    "name": "Alex Gallinat",
    "email": "alex.gaoc@gmail.com",
    "login": "agallinat",
    "description": "",
    "uuid": 125132539
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "igraph",
      "version": ">= 2.1.0",
      "role": "Imports"
    },
    {
      "package": "ineq",
      "role": "Imports"
    },
    {
      "package": "dplyr",
      "role": "Imports"
    },
    {
      "package": "expm",
      "role": "Imports"
    },
    {
      "package": "ggplot2",
      "version": ">= 3.5.0",
      "role": "Imports"
    },
    {
      "package": "ggExtra",
      "role": "Imports"
    },
    {
      "package": "ggrepel",
      "role": "Imports"
    },
    {
      "package": "graphics",
      "role": "Imports"
    },
    {
      "package": "grDevices",
      "role": "Imports"
    },
    {
      "package": "tibble",
      "role": "Imports"
    },
    {
      "package": "scales",
      "role": "Imports"
    },
    {
      "package": "Matrix",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "progress",
      "role": "Imports"
    },
    {
      "package": "pracma",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "role": "Imports"
    },
    {
      "package": "future",
      "role": "Imports"
    },
    {
      "package": "future.apply",
      "role": "Imports"
    },
    {
      "package": "RSpectra",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "spelling",
      "role": "Suggests"
    }
  ],
  "_owner": "agallinat",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-40",
      "n": 15
    },
    {
      "week": "2026-41",
      "n": 8
    },
    {
      "week": "2026-42",
      "n": 5
    }
  ],
  "_tags": [],
  "_topics": [
    "network analysis",
    "graph theory",
    "igraph",
    "centrality",
    "hubs",
    "bottlenecks",
    "community detection",
    "modularity",
    "network diffusion",
    "random walk with restart",
    "heat kernel",
    "network propagation",
    "null models",
    "small-world",
    "network\nrobustness",
    "network visualization",
    "bioinformatics",
    "community-detection",
    "ggplo2",
    "graph-theory",
    "network-analysis",
    "network-diffusion",
    "network-science",
    "network-visualization"
  ],
  "_stars": 1,
  "_contributors": [
    {
      "user": "agallinat",
      "count": 46,
      "uuid": 125132539
    }
  ],
  "_userbio": {
    "uuid": 125132539,
    "type": "user",
    "name": "Alex Gallinat. PhD",
    "followers": 0
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/netkit"
  },
  "_devurl": "https://github.com/agallinat/netkit",
  "_pkgdown": "https://agallinat.github.io/netkit",
  "_searchresults": 0,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/netkit.html",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE"
  ],
  "_cranurl": false,
  "_exports": [
    "assign_attributes",
    "calculate_roles",
    "compare_networks",
    "extract_subnetwork",
    "find_bottlenecks",
    "find_hubs",
    "find_modules",
    "greedy_seed_selection",
    "highlight_nodes",
    "layout_horizontal_tree",
    "metric_significance",
    "network_diffusion",
    "network_diffusion_with_pvalues",
    "node_metrics",
    "null_model",
    "plot_CCDF",
    "plot_Net",
    "prepare_diffusion",
    "robustness_analysis",
    "small_worldness",
    "summarize_graph_metrics"
  ],
  "_help": [
    {
      "page": "assign_attributes",
      "title": "Assign Vertex and Edge Attributes to an igraph Graph",
      "topics": [
        "assign_attributes"
      ]
    },
    {
      "page": "calculate_roles",
      "title": "Calculate Network Roles Based on Within-Module Z-Score and Participation Coefficient",
      "topics": [
        "calculate_roles"
      ]
    },
    {
      "page": "compare_networks",
      "title": "Compare Two Networks",
      "topics": [
        "compare_networks"
      ]
    },
    {
      "page": "extract_subnetwork",
      "title": "Extract an Interpretable Subnetwork Around a Set of Nodes",
      "topics": [
        "extract_subnetwork"
      ]
    },
    {
      "page": "find_bottlenecks",
      "title": "Identify and Bottleneck Nodes in a Network",
      "topics": [
        "find_bottlenecks"
      ]
    },
    {
      "page": "find_hubs",
      "title": "Identify Hub Nodes in a Network",
      "topics": [
        "find_hubs"
      ]
    },
    {
      "page": "find_modules",
      "title": "Detect and Visualize Network Modules (Communities)",
      "topics": [
        "find_modules"
      ]
    },
    {
      "page": "greedy_seed_selection",
      "title": "Greedy Seed Node Selection to Maximize Diffusion Toward Target Nodes",
      "topics": [
        "greedy_seed_selection"
      ]
    },
    {
      "page": "highlight_nodes",
      "title": "Highlight Nodes in a Network Plot",
      "topics": [
        "highlight_nodes"
      ]
    },
    {
      "page": "layout_horizontal_tree",
      "title": "Horizontal Tree Layout for Graph Visualization",
      "topics": [
        "layout_horizontal_tree"
      ]
    },
    {
      "page": "metric_significance",
      "title": "Score an Observed Graph Against a Null Ensemble",
      "topics": [
        "metric_significance"
      ]
    },
    {
      "page": "netkit-print",
      "title": "Printing netkit objects",
      "topics": [
        "netkit-print",
        "print.netkit_kernel",
        "print.netkit_null",
        "print.netkit_result",
        "[.netkit_null"
      ]
    },
    {
      "page": "network_diffusion",
      "title": "Perform Network Diffusion from Seed Nodes",
      "topics": [
        "network_diffusion"
      ]
    },
    {
      "page": "network_diffusion_with_pvalues",
      "title": "Perform Network Diffusion from Seed Nodes",
      "topics": [
        "network_diffusion_with_pvalues"
      ]
    },
    {
      "page": "node_metrics",
      "title": "Compute a Table of Node-Level Centrality Metrics",
      "topics": [
        "node_metrics"
      ]
    },
    {
      "page": "null_model",
      "title": "Generate Null-Model Graphs for Significance Testing",
      "topics": [
        "null_model"
      ]
    },
    {
      "page": "plot_CCDF",
      "title": "Plot Complementary Cumulative Degree Distribution (CCDF)",
      "topics": [
        "plot_CCDF"
      ]
    },
    {
      "page": "plot_Net",
      "title": "Plot an igraph network with customizable node sizes and edge widths",
      "topics": [
        "plot_Net"
      ]
    },
    {
      "page": "robustness_analysis",
      "title": "Network Robustness Analysis via Node Removal Simulation",
      "topics": [
        "robustness_analysis"
      ]
    },
    {
      "page": "small_worldness",
      "title": "Small-World Coefficients",
      "topics": [
        "small_worldness"
      ]
    },
    {
      "page": "summarize_graph_metrics",
      "title": "Summarize Topological Properties of a Graph",
      "topics": [
        "summarize_graph_metrics"
      ]
    }
  ],
  "_pkglogo": "https://github.com/agallinat/netkit/raw/HEAD/man/figures/README-hero.png",
  "_readme": "https://github.com/agallinat/netkit/raw/HEAD/README.md",
  "_rundeps": [
    "base64enc",
    "bslib",
    "cachem",
    "cli",
    "codetools",
    "colourpicker",
    "commonmark",
    "cpp11",
    "crayon",
    "digest",
    "dplyr",
    "evaluate",
    "expm",
    "farver",
    "fastmap",
    "fontawesome",
    "fs",
    "future",
    "future.apply",
    "generics",
    "ggExtra",
    "ggplot2",
    "ggrepel",
    "globals",
    "glue",
    "gtable",
    "highr",
    "hms",
    "htmltools",
    "htmlwidgets",
    "httpuv",
    "igraph",
    "ineq",
    "isoband",
    "jquerylib",
    "jsonlite",
    "knitr",
    "labeling",
    "later",
    "lattice",
    "lifecycle",
    "listenv",
    "magrittr",
    "Matrix",
    "memoise",
    "mime",
    "miniUI",
    "otel",
    "parallelly",
    "pillar",
    "pkgconfig",
    "pracma",
    "prettyunits",
    "progress",
    "promises",
    "R6",
    "rappdirs",
    "RColorBrewer",
    "Rcpp",
    "RcppEigen",
    "rlang",
    "rmarkdown",
    "RSpectra",
    "S7",
    "sass",
    "scales",
    "shiny",
    "shinyjs",
    "sourcetools",
    "tibble",
    "tidyselect",
    "tinytex",
    "utf8",
    "vctrs",
    "viridisLite",
    "withr",
    "xfun",
    "xtable",
    "yaml"
  ],
  "_vignettes": [
    {
      "source": "introduction.Rmd",
      "filename": "introduction.html",
      "title": "Introduction to netkit",
      "engine": "knitr::rmarkdown",
      "headings": [
        "0. Installation",
        "1. Annotate Graphs",
        "2. Network Visualization",
        "3. Topological Analysis",
        "3.1. Global topology",
        "3.2. Node-level metrics",
        "3.3. Is any of this surprising?",
        "3.4. Robustness Analysis",
        "3.5. Hubs",
        "3.6. Bottlenecks",
        "3.7. Calculate Roles",
        "3.8. Modules",
        "4. Extracting a subnetwork",
        "5. Information flow",
        "5.1. Network Diffusion",
        "5.2. Reverse Network Diffusion",
        "6. Credits and Contributions"
      ],
      "created": "2025-07-24 19:25:45",
      "modified": "2026-10-05 18:31:00",
      "commits": 5
    },
    {
      "source": "weighted-networks.Rmd",
      "filename": "weighted-networks.html",
      "title": "Weighted networks: strength or distance?",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The problem",
        "The default is to ignore weights, loudly",
        "What changes when weights are used",
        "Diffusion propagates along strengths",
        "Seeding from a continuous signal",
        "What is not a weight",
        "Reusing a diffusion kernel",
        "Summary"
      ],
      "created": "2026-10-03 17:59:18",
      "modified": "2026-10-03 17:59:18",
      "commits": 1
    }
  ],
  "_score": 3.4771212547196626,
  "_indexed": true,
  "_nocasepkg": "netkit",
  "_universes": [
    "agallinat"
  ],
  "_previous": "0.1.0",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.1.2",
      "date": "2026-10-17T00:12:51.000Z",
      "distro": "resolute",
      "commit": "2b2e05a4ee78834c9e79e3b3970466feb742b2f4",
      "fileid": "https://r2.ropensci.org/fec2eb018bd51590488975389f2d9b406dd0fe3745e424379956c713512e2f2e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/agallinat/actions/runs/38984802172"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.1.2",
      "date": "2026-10-17T00:12:17.000Z",
      "distro": "resolute",
      "commit": "2b2e05a4ee78834c9e79e3b3970466feb742b2f4",
      "fileid": "https://r2.ropensci.org/3a4ced14cfd0575753791c64b7577ec11a175158cec42087d22ade925c6f4cbf",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/agallinat/actions/runs/38984802172"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.1.2",
      "date": "2026-10-17T00:12:15.000Z",
      "commit": "2b2e05a4ee78834c9e79e3b3970466feb742b2f4",
      "fileid": "https://r2.ropensci.org/b23c4978529e846f0cb76a25a52818af9f1875704f0a903ebb829ca0d072b78c",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/agallinat/actions/runs/38984802172"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.1.2",
      "date": "2026-10-17T00:12:05.000Z",
      "commit": "2b2e05a4ee78834c9e79e3b3970466feb742b2f4",
      "fileid": "https://r2.ropensci.org/24026365beae88f14354cfe50632d2fac5464bded44b785d44bc2f54a0b543df",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/agallinat/actions/runs/38984802172"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.1.2",
      "date": "2026-10-17T00:12:26.000Z",
      "commit": "2b2e05a4ee78834c9e79e3b3970466feb742b2f4",
      "fileid": "https://r2.ropensci.org/d52f1f16449df9aba4d43a3315682d57b3d36df68503856f60f6357b6031600d",
      "status": "success",
      "buildurl": "https://github.com/r-universe/agallinat/actions/runs/38984802172"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.1.2",
      "date": "2026-10-17T00:11:14.000Z",
      "commit": "2b2e05a4ee78834c9e79e3b3970466feb742b2f4",
      "fileid": "https://r2.ropensci.org/b71e8e68c2e98865cf8a81bebb34670031cbefaa13995d245a84cf5be4fb6c71",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/agallinat/actions/runs/38984802172"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.1.2",
      "date": "2026-10-17T00:11:08.000Z",
      "commit": "2b2e05a4ee78834c9e79e3b3970466feb742b2f4",
      "fileid": "https://r2.ropensci.org/ef82711ed15c43ab1cf99aa043aecb44c394a848fb97eb40d3af55b5696b9bbb",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/agallinat/actions/runs/38984802172"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.1.2",
      "date": "2026-10-17T00:11:04.000Z",
      "commit": "2b2e05a4ee78834c9e79e3b3970466feb742b2f4",
      "fileid": "https://r2.ropensci.org/36629f6ec5ede91347fa073c1a5fd5d4ad233929d621a0a2bd97d63921b3e869",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/agallinat/actions/runs/38984802172"
    }
  ]
}