Skip to content

dynamicmultiplex

1.4.0Package record

Tracking Communities in Changing Temporal Networks

0packages depend
814downloads / year
91.1%test coverage
13/13flavors OK

Overview

About

Tools for temporal networks that change over time, where nodes enter and leave, groups form, split, merge and dissolve, and periods differ in size. The temporal fitters track nodes and communities across periods. A community keeps one identifier while it persists, and a newly formed group receives a new one. Two-stage fitters run Louvain or Leiden community detection in each period and link communities in linked periods by Jaccard similarity, the overlap coefficient or node-strength weighted variants. The 'layer_links' argument sets which periods are directly linked, adjacent periods only by default. By default all periods are fitted jointly, so later periods can change earlier labels, and tracking = 'filtered' prevents this. Multislice modularity (Mucha et al. 2010) doi:10.1126/science.1184819 and Hungarian matching are included as comparison methods, and a bootstrap stability score helps choose between the two-stage and multislice approaches.

Changes in 1.4.0

Includes every change listed under 1.3.2 below, which was not released

separately. The same changes are in the Python package dynamic-multiplex

1.4.0.

Breaking changes

  • The bootstrap is kept only for the stability score s used to compare two fits of the same network (for example DynMux against multislice). co_assignment_ci() and community_est() are removed, and partition_stability() now returns only stability, stability_by_layer, stability_mc_se, metric and report: the calibrated accuracy floor, node floors, decided-pair outputs, the decided and calibration_table arguments and the bundled calibration table are removed. Their coverage was not reliable.
Show all changes in 1.4.0Hide the rest of the changes in 1.4.0
  • R fit functions now default to seed = 123, as in the Python package (previously NULL, the caller's random number stream). Pass seed = NULL for unseeded detection. Because bootstrap refits are now seeded, R values of s differ slightly from 1.3.x (for example 0.916 to 0.921 on a test network, within Monte Carlo error).
  • allow_unequal_nodes = TRUE now requires vertex names on every layer even when layers have the same size, since nodes can enter and leave without the size changing. Previously same-size unnamed layers were matched by position. (Python: adjacency matrices are rejected with allow_unequal_nodes=True.)

New features

  • repair_chains and repair_min_similarity (two-stage fit functions, default off). Stage-2 modularity tends to cut a long-lived community into time segments (a resolution-limit effect on chains of communities). With repair_chains = TRUE a group that ends at layer s and one that starts at a linked layer t are joined when their communities are mutual best matches (Kawadia and Sreenivasan 2012) with similarity at least repair_min_similarity (default 0.2; Greene et al. 2010 use a matching threshold). Groups that coexist are never merged. Joins are logged in chain_repairs.
  • tracking = "filtered" (two-stage fit functions; default "smoothed", the previous behaviour). Stage 2 runs forward in time: the meta ids of layers 1..t depend only on layers 1..t, so fitted labels carry no information from later layers. Works with Leiden and Louvain and with repair_chains. Needs a seed (seed = NULL is an error), because unseeded stage-1 fits of later layers would shift the random stream that stage 2 uses.
  • layers_from_membership() builds one weighted layer per time slice from group memberships (wide 0/1 matrices or long node-group tables), with weighting = "count", "size" or "kumar" (Kumar et al. hypergraph reweighting, as in hypernetx 2.4.3). There is no default weighting, each slice is built on its own, and rescale = "mean" puts slices on a common scale for the multislice coupling.
  • bootstrap_multilayer() gains allow_unequal_nodes (nodes entering and leaving) and passes tracking, repair_chains and repair_min_similarity to the refits. Layers with different named node sets now stop with an error unless allow_unequal_nodes = TRUE.

Python only (by design)

  • The two packages deliberately diverge here, because the libraries these rely on exist in Python and not in R. partition_membership_bipartite() partitions membership slices by Barber's bipartite modularity (leidenalg's bipartite construction, Leiden only); partition_membership_strict() by strict (all-or-nothing) hypergraph modularity (hypernetx reference pipeline, optional extra [hypergraph], which needs pandas < 3); fit_multilayer_from_partitions() tracks supplied per-slice partitions with the DynMux second stage or Hungarian matching. They are comparison specifications; in pilot simulations both did worse than the projections in layers_from_membership().

Bug fixes

  • fit_multilayer_identity_ties() (undirected): the multislice local mover scored staying in a community the vertex has no tie into as 0, which could refuse an improving move (the same flaw was fixed for directed slices in 1.3.2). The stay score is now exact. Results on the package's regression networks are unchanged.
  • Python: bootstrap_multilayer() silently paired nodes by position when networkx layers had the same size but different nodes; it now stops unless allow_unequal_nodes=True, which matches nodes by label.

From NEWS.md in the release

Install

Health

CRAN checks
13OK
Slowest check: 2.9 min · r-oldrel-windows-x86_64
Status changes
  • OK13 OKNow
  • OK6 OK2026-08-08
Advisories

none known

Documentation

In release 1.4.0
READMEYes · 771 wordsVignettesNoNEWSYes · 100% structured · mentions 1.4.0Citation fileNoWebsitenot declared in DESCRIPTION
Help pages
14
Examples that run
93%13 run in a plain check (2 of them under a condition) · 1 only when donttest examples are enabled (R CMD check --as-cran)
Exported functions with examples
100%
Documented parameters
98%
Return-value docs
100%
Help pages citing references
0%

Downloads

814
CRAN downloads in the past year
Rank #14,763 · ~2/day · ~68/mo
Daily download trend is not available in this view yet.
37630 days
81490 days
8141 year
Compare downloads with other packages →
Also on19 r2u4 autocran

Repository

1Stars
0Forks
5Open issues
0Open PRs
0Releases
284Commits
7Commit identities
284 commits · Last activity 2026-10-12 · 0% stars, 30d
Responsiveness
How these are sampled
PRs merged (all time)
93%
Median days to close, 50 most recently updated closed issues
62
Median days to close, 50 most recently updated closed PRs
0

Stars over time

2026-08-08 · 02026-08-13 · 1
PracticesBeta

2 development-tooling and community-health practices detected across 1 family in the upstream repository

Checks run against github.com/jfedgerton/dynamic_multiplex on 2026-10-21.

Continuous integration (2)
GitHub ActionsR CMD check workflow

The R CMD check workflow runs on Linux and macOS

How this is detected·Detection ruleset v4 (2026-10-20)
AI coding toolsBeta

This repository shows signs of AI coding tools.

  • Codexfirst seen 2026-02-06
    Pull request it wrote: opened by a project member
  • Claude Codefirst seen 2026-02-28
    Seen in the repository: CLAUDE.md
    Named in .gitignore: .claude
    Pull request it wrote: opened by a project member
    Commits: 45 by its own account · at least 94 crediting it in the message
Models named in its commits
  • Claude Fable 5.137 commits · Sep 2026
  • Claude Opus 5.523 commits · Sep to Oct 2026
  • Claude Opus 4.815 commits · Jul 2026
  • Claude Fable 513 commits · Jul to Sep 2026
  • Claude Opus 4.64 commits · Mar to Apr 2026

1 more model not listed.

Counts are commits, not lines of code. Commits by a tool's accounts count once across all of its accounts. Commits crediting it are the largest count among its credit lines, a minimum.How this is detected·Detection ruleset v4 (updated 2026-09-27)

Dependencies

Declared dependencies
12 external dependencies (excludes base and recommended)

Installing dynamicmultiplex adds 10 packages (7 with compiled code, 8.7 MB of source tarballs). Heaviest: igraph 4.8 MB, vctrs 1.0 MB, rlang 766 KB.

Depends (1)
R >= 4.1.0
Imports (3)
LinkingTo (0)
none
Enhances (0)
none
Reverse dependencies
0direct
0indirect

Nothing depends on this yet.

People & History

People (1)
Author, Maintainer since 1.1.0 (2026)
Releases (3)

Pick two releases to compare their code metrics.

  • 1.4.0Latest
    record
    2026-10-14 · current release · diff ↗ ·
    removed 2 exports
    co_assignment_ci, community_est
    added 1 export
    layers_from_membership
    ·
    listed once in CRAN's queue
    Seen in one reading of CRAN's incoming queue, at 2026-10-14 19:53 UTC, so it stayed less than the time between readings.
  • 1.3.1
    record
    2026-09-24 · diff ↗ ·
    added 1 export
    partition_stability
  • 1.1.0
    record
    2026-08-07
  • R
    R 4.6.0 released · 2026-04-24
Across CRAN, the median accepted release of the past year spent 23 hours in the queue, 90% under 11 days.How queue time is measured

Package metadata

First published
2026-08-07
Total releases
3 / 1 yrs
License
MIT + file LICENSE OSI
Minimum R
≥ 4.1.0
Download size
95 KB

Cite

Cite this package

Run in R for the authors' preferred citation:

citation("dynamicmultiplex")
Edgerton, J. (2026). dynamicmultiplex: Tracking Communities in Changing Temporal Networks (Version 1.4.0) [Computer software]. https://doi.org/10.32614/CRAN.package.dynamicmultiplex

This package has no citation file, so citation() returns this entry built from DESCRIPTION.

Cite the R Observatory

For a number measured here: a download total, a coverage figure, an archival date.

APA

Balamuta, J. J. (2026). R Observatory: Metrics for dynamicmultiplex version 1.4.0 [Data set]. HJJB, LLC. Data release v2026-10-23. https://doi.org/10.5281/zenodo.21843040

From data release v2026-10-23, which the citation names so these numbers can be found later. More on citing and the projects behind them.

Report a problem with this page →

Privacy choices

These apply to this browser and are stored on this device only. Nothing about your choice is sent to us.

Read the privacy policy