The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
splot.netobject now routes on the Nestimate
$method slot rather than just direction. Undirected
sequence-based networks from build_cna() and
wtna(method = "cooccurrence") get oval TNA-family styling
(layout, palette, donuts) with arrows and dotted edge starts
automatically dropped because the matrix is symmetric. Glasso / cor /
pcor / ising networks still get psych_styling = TRUE
(spring layout, Okabe-Ito palette).from_tna() auto-detects integer-valued weight matrices
(ftna, ctna, raw counts) and sets
weight_digits = edge_label_digits = 0 so edge labels render
as 2304 rather than 2304.00. Fractional
weights still format to two decimals. Explicit user-supplied
weight_digits still wins.psych_styling = TRUE is now exported as a first-class
styling preset (undirected counterpart of tna_styling) —
Okabe-Ito palette, spring layout, no arrows — applied by default to
splot.netobject on correlation-family input and to the
$contemporaneous / $between constituents of
net_mlvar.splot() dispatch coverage across the tna and
Nestimate class hierarchies, ensuring tna,
ftna, ctna, group_tna,
tna_bootstrap, group_tna_bootstrap,
tna_permutation, group_tna_permutation,
netobject, netobject_group,
netobject_ml, net_mlvar,
wtna_mixed, net_bootstrap,
net_permutation, boot_glasso,
mcml, net_hon, net_hypa, and
simplicial_complex all reach the correct renderer.detect_duplicate_edges(),
aggregate_duplicate_edges(),
simplify.cograph_network(), and the internal
check_duplicate_edges() helper now respect directed vs
undirected semantics. Previously the canonical (min/max) endpoint key
collapsed A -> B and B -> A into one
edge even on directed graphs, matching igraph::simplify()
ground truth..compute_modularity() replaces a nested for loop with
cluster-wise vectorization
(sum(A[idx, idx]) - sum(k_out[idx]) * sum(k_in[idx]) / m),
per the project “no for loops” rule. Results verified bit-exact against
igraph::modularity().is_directed() now recognises
CographNetwork R6 objects — previously only the
cograph_network list format dispatched correctly.compute_layout_for_cograph() uses
layout$get_type() instead of the removed $name
field on CographLayout.network_small_world() returns 0 (valid: no
triangles means definitively not small-world) instead of
NA_real_ when the observed clustering coefficient is zero
but path length is finite.simplify.cograph_network() threads the directed flag
through to edge aggregation so directed multigraphs collapse
correctly.simplify() performance refactor for large networks plus
a cleaner title-composition path.motifs(), extract_motifs(), and
plot.cograph_motif_analysis examples reworked to use
n_perm = 10L (or significance = FALSE) and
promoted from \dontrun to CRAN-runnable (optional tna
branches stay in \donttest). Retires 320 seconds of latent
CRAN timing risk — every example now runs in under 4 seconds.test-audit-fixes.R — ground-truth regressions for the
directed edge semantics, modularity vectorization, and small-world
behaviour changes.test-integer-weight-labels.R — locks
from_tna() integer-weight auto-detect behaviour and
precedence of explicit weight_digits.test-equiv-{assortativity, cluster-quality, communities, disparity, edge-centrality, network-summary, robustness, standalone-measures}.R
— numerical equivalence against igraph, sna, centiserve, brainGraph,
influenceR, tidygraph, and NetworkX. Gated by
skip_coverage_tests() + skip_on_cran(), so they do not run
on the CRAN pipeline.These measures don’t fit the per-node centrality() data
frame, so they live as standalone functions:
estrada_index() — graph-level spectral invariant: ,
equal to the trace of the matrix exponential of the adjacency.
Equivalently, the sum of subgraph_centrality() across all
nodes. Matches networkx.estrada_index at machine epsilon
(max relative diff ~5e-15 across random test graphs).trophic_incoherence() — graph-level food-web stability
measure (Johnson et al. 2014). Defined as the population standard
deviation of per-edge trophic differences where is the trophic level of
node . Zero for perfectly coherent DAGs (e.g., a pure chain). Matches
networkx.trophic_incoherence_parameter at machine epsilon.
Directed-only; reuses the existing trophic_level
calculator.group_centrality(x, nodes, measure = c("betweenness", "closeness", "degree"))
— Everett-Borgatti (1999) group centrality for a set of nodes.
Returns a scalar. Supports mode = "in"/"out" for
directed-degree variants. Group closeness and group
degree match networkx.group_*_centrality
bit-exact. Group betweenness implements the textbook
Everett-Borgatti / Puzis 2008 definition (fraction of shortest paths
passing through at least one node in the group), which diverges from
networkx.group_betweenness_centrality on some graphs due to
a known quirk in NetworkX’s Puzis-Yahalom-Elovici iterative algorithm.
Verified via an independent Python brute-force: cograph matches the
textbook definition; NX produces larger values on graphs with many
overlapping shortest paths. Documented in the roxygen “Divergence from
NetworkX” section.dispersion(x, u = NULL, v = NULL, normalized = TRUE, alpha = 1, b = 0, c = 0)
— Backstrom-Kleinberg (2014 Facebook) pair-level measure of tie
strength. Counts the number of “well-dispersed” mutual friends of
u and v (pairs of common neighbors that are
not directly connected and share no common neighbor inside
u’s ego network other than u and
v). Matches networkx.dispersion bit-exact
across all 156 edges on the karate club graph. Returns a scalar, named
vector, or data frame depending on which of u,
v are specified.Added the five Gould-Fernandez (1989) brokerage role counts, a
foundational measure in social network analysis (~1500 citations). Each
role is a separate per-node measure requiring a membership
argument (following the same pattern as participation,
within_module_z, gateway), and counts open
directed 2-paths a -> v -> c through broker
v:
centrality_brokerage_coordinator() — all three in
broker’s group (w_I)centrality_brokerage_itinerant() — endpoints same
group, broker different (w_O, “consultant”)centrality_brokerage_representative() — broker + source
same, target different (b_IO)centrality_brokerage_gatekeeper() — broker + target
same, source different (b_OI)centrality_brokerage_liaison() — all three in different
groups (b_O)Bit-exact match against sna::brokerage$raw.nli for all
five roles across 20 random directed graphs. Implemented natively (no
runtime dependency on sna). Key implementation detail: the
Gould-Fernandez counting rule requires open 2-paths
only — triads where a direct edge a -> c
already exists are excluded. This matches sna’s C implementation exactly
and was derived empirically (sna’s .C("brokerage_R", ...)
has no R-level source).
Directed-only; warns and returns NA on undirected
input.
centrality_prestige_domain() — directed-graph prestige
measure: for each node , the number of other nodes that can reach via a
directed path. Classical Wasserman-Faust (1994) measure from
sna::prestige(cmode = "domain"). Bit-exact match against
sna, implemented natively via
igraph::distances(mode = "out") +
colSums(is.finite(D)) - 1 (no runtime dependency on sna).
Directed-only; returns NA with a warning on undirected input.centrality_prestige_domain_proximity() —
distance-weighted variant: R_v^2 / (D_v * (n - 1)) where
R_v is the number of reachers and D_v is the
sum of their geodesic distances to v. Bit-exact match
against sna::prestige(cmode = "domain.proximity") on
strongly connected directed graphs. On graphs with any unreachable pair,
sna has a known bug (FALSE * Inf = NaN collapses the
denominator, producing all-zero output); cograph’s
is.finite()-masked formula produces mathematically correct
values on any directed graph. Directed-only.centrality_katz() — Katz (1953) status index. Bit-exact
match against centiserve::katzcent (cograph mirrors
centiserve’s exact LAPACK call sequence). Also matches
igraph::alpha_centrality(exo = 1) and
networkx.katz_centrality_numpy at machine epsilon. New
katz_alpha parameter (default 0.1).centrality_hubbell() — Hubbell (1965) input-output
centrality. Bit-exact match against centiserve::hubbell
(cograph mirrors centiserve’s full-inverse LAPACK call path). Note:
centiserve’s default (weights = NULL) silently ignores
E(g)$weight; to reproduce cograph’s behavior with
centiserve on weighted graphs, pass
weights = igraph::E(g)$weight explicitly. New
hubbell_weight parameter (default 0.5).centrality_information() — Stephenson-Zelen (1989)
information centrality. Bit-exact match against
sna::infocent on connected undirected graphs (cograph
mirrors sna’s exact construction and solve() call
sequence).centrality_pairwisedis() — Pairwise disconnectivity
(Potapov et al. 2008). Directed-only; fraction of reachable ordered
pairs that become unreachable when each node is removed. Bit-exact match
against centiserve::pairwisedis. Warns and returns
NA on undirected input, matching the convention used by
salsa, leaderrank, and
trophic_level.centrality_reaching_local() /
reaching_global() — Local and global reaching centrality
(Mones, Vicsek & Vicsek 2012). Bit-exact match against
networkx.local_reaching_centrality across the directed
unweighted, undirected unweighted, and weighted branches. Undirected
unweighted LRC coincides with
igraph::harmonic_centrality(normalized = TRUE)
(documented). reaching_global() is a graph-level hierarchy
statistic in [0, 1].plot_simplicial() now accepts tna,
netobject, net_hon, and net_hypa
objects directly — higher-order pathways are auto-built and visualized
with proper state labels, no manual extraction needed. New parameters:
method ("hon" / "hypa"),
max_pathways, ncol. Dismantled mode uses
gridExtra grid layout with scaled nodesprint.cograph_network() now shows a structured summary:
node/edge counts, density, reciprocity, weight range, and top-degree
nodes — replacing the minimal R6 default outputmcml S3 class with as_mcml() generic
for type-safe handling of Markov Chain Multi-Level models — enables
print(), plot(), and method dispatch on MCML
objects%||% operator for R 4.1 compatibility (no
longer requires R 4.4+)$between →
$macro, $within → $clustersas_tna() on MCML objects now returns a flat
group_tna list instead of a nested structureplot_mcml() now suppresses zero-weight edges instead of
drawing invisible lines, and strips leading zeros from edge labels
(.32 instead of 0.32)cluster_summary() are now preserved in
the macro diagonal, reflecting intra-cluster retention ratesoverlay_communities() for drawing community blob
overlays on any network plot — accepts method names, membership vectors,
or pre-computed community objectsplot_simplicial() for higher-order pathway
visualization, rendering simplicial complexes as smooth blobs with
flexible separators and a dismantled view optionvalue_nudge parameter to
plot_transitions() for controlling the distance between
flow labels and nodesbundle_legend_size,
bundle_legend_color, bundle_legend_fontface,
bundle_legend_positionlabel_size,
label_color, label_fontface,
label_hjust) to plot_transitions(),
plot_trajectories(), and plot_alluvial()cluster_summary() for aggregating network weights
at the cluster level, producing between-cluster and within-cluster
matrices from raw transition databuild_mcml() for constructing Markov Chain
Multi-Level models from edge lists or sequence data with automatic
cluster detectioncluster_quality() for modularity-based cluster
quality metrics and cluster_significance() for
permutation-based significance testingas_tna() to convert cluster summaries to TNA
objects for bootstrapping, permutation testing, and plotting with
splot()simplify() for pruning weak edges from networks,
with configurable weight threshold and aggregation methoddisparity_filter() for backbone extraction
(Serrano et al. 2009), with methods for matrices, tna, igraph, and
cograph_network objectsrobustness() for network robustness analysis with
targeted (betweenness, degree) and random attack strategies, plus
ggplot_robustness() for faceted ggplot2 outputtemporal_edge_list() for converting sequence data
to timestamped edge listssupra_adjacency(), supra_layer(),
supra_interlayer() for multilayer supra-adjacency matrix
constructionlayer_similarity(),
layer_similarity_matrix(), and
layer_degree_correlation() for comparing layers in
multilayer networksaggregate_weights() and
aggregate_layers() for weight aggregation across
layersverify_with_igraph() for cross-validating cograph
centrality and network metrics against igraphmotifs() / subgraphs() as a unified
API for triad census (node-exchangeable counts) and instance extraction
(named node triples), with auto-detection of actor/session columns,
rolling/tumbling window support, and exact configuration model
significance testingplot_mcml() for Markov Chain Multi-Level
visualization showing between-cluster summary edges alongside
within-cluster detail, with pie charts, self-loops, and 22 customization
parametersplot_chord() for native chord diagrams with
automatic weight-based arc sizingplot_time_line() for cluster membership timeline
visualizationplot_htna() orientations: "facing"
(tip-to-tip columns) and "circular" (two semicircles), plus
intra_curvature for drawing intra-group edges as dotted
bezier arcsthreshold parameter to all plot functions for
filtering edges/cells below a minimum absolute weightvalue_fontface, value_fontfamily,
and value_halo parameters to plot_heatmap()
for text styling controlscale_nodes_by:
indegree, outdegree, instrength,
outstrength, incloseness,
outcloseness, inharmonic,
outharmonic, ineccentricity,
outeccentricityscale_nodes_scale parameter to
splot() for dampening (< 1) or exaggerating (> 1)
centrality-based node sizing differencessplot(): when
plotting tna objects, qgraph-style parameters (vsize,
asize, edge.color, lty,
shape) are automatically mapped to cograph equivalentsnode_label_format (e.g.,
"{state} (n={count})") for showing counts on transition
plot nodesbundle_size for aggregating
individual trajectories into weighted summary lines in large
datasetsshow_values /
value_position for displaying transition counts on flow
lineslabel_position consistency across ALL columns
(first, middle, last) in trajectory plotsgamer_data,
group_engagement, srl_dataset_node_groups() /
get_node_groups() for managing cluster assignments on
cograph_network objects$meta with
getter/setter functionsgroup_tna support to splot() for
direct plotting of grouped TNA modelscentrality_* wrapper its own focused help
pagesplot() viewport
calculationsplot()’s signature and
silently dropped when dispatchingplot_heatmap() so
high values get dark colorsbuild_mcml() density method crash when weight
vector had no names.collect_dispatch_args() helper to replace 6 copy-paste
dispatch blocks, using match.call() + mget()
for reliable argument capturecentrality() with 23 measures and individual
wrappers: degree, strength, betweenness, closeness, eigenvector,
pagerank, harmonic, authority, hub, alpha, power, kreach, diffusion,
percolation, eccentricity, transitivity, constraint, coreness, load,
subgraph, leverage, laplacian, current-flow betweenness, current-flow
closeness, voterankedge_betweenness() for edge-level centralitydetect_communities() with 11 algorithms: louvain,
walktrap, fast_greedy, label_propagation, leading_eigenvector, infomap,
spinglass, leiden, optimal, edge_betweenness, multilevel — plus
com_* shorthand aliasescluster_significance()
for permutation-based validationnetwork_summary() and
summarize_network() for computing comprehensive
network-level statistics (density, reciprocity, transitivity, diameter,
components, degree distribution)plot_transitions() for alluvial/Sankey flow
diagrams, with plot_alluvial() and
plot_trajectories() wrappersplot_bootstrap() and
plot_permutation() for significance-styled visualization of
bootstrap and permutation test results — significant edges rendered
solid on top, non-significant edges dashed behindplot_mixed_network() for overlaying symmetric
(undirected, straight) and asymmetric (directed, curved) edges on the
same networkplot_heatmap() for adjacency matrix heatmaps with
optional hierarchical clustering and plot_ml_heatmap() for
multilayer 3D perspective heatmapsplot_compare() for difference network
visualization showing edge-weight changes between two networkssplot() S3 methods for tna_bootstrap
and tna_permutation objectsmotif_census(), triad_census(), and
extract_motifs() for triad motif analysis with pattern
filtering, significance testing, and network diagram visualizationfilter_edges(), subset_edges(),
select_nodes(), select_edges() for flexible
network subsettingset_groups() for storing cluster assignments on
cograph_network objects with automatic dispatch to
plot_htna() / plot_mtna()cograph_network objects
as input, in addition to matrices, igraph objects, and tna objectslayout_spring and layout_gephi_fr
algorithms: vectorized attraction forces, edge aggregation for dense
networkspar(pin) error on exit when plot device state was
corruptedx across all
plotting functions:
plot_tna(): input → xplot_htna(): input → x (was
model)plot_mtna(): input → x (was
model)splot() already used xtplot() default margins causing tiny plots
compared to splot()vignettes/qgraph-to-splot.md)The following parameters have been renamed for consistency. The old names still work but emit deprecation warnings:
| Old Name | New Name | Reason |
|---|---|---|
esize |
edge_size |
Add edge_ prefix, expand abbreviation |
cut |
edge_cutoff |
Add edge_ prefix, clarify meaning |
usePCH |
use_pch |
Fix camelCase to snake_case |
positive_color |
edge_positive_color |
Add edge_ prefix (matches theme storage) |
negative_color |
edge_negative_color |
Add edge_ prefix (matches theme storage) |
donut_border_lty |
donut_line_type |
Expand lty abbreviation |
edge_label_fontface now accepts string values (“plain”,
“bold”, “italic”, “bold.italic”) in addition to numeric valuesmlna() for multilevel network visualization with
3D perspectivemtna() for multi-cluster network visualization
with shape-based cluster containersplot_htna() for hierarchical multi-group network
layouts with polygon and circular arrangementstplot() as a qgraph drop-in replacement with
automatic parameter translationarrow_angle parameter for customizable arrowhead
geometryedge_start_dot_density parameter for TNA-style
dotted edge starts indicating directionfrom_tna() —
no manual matrix extraction needednetwork and
qgraph objects as inputpie_values vector to
donut_fill when all values are in [0,1]splot() when other parameters were specifieddonut_shape validation rejecting custom SVG
shapesfrom_qgraph() when a layout
override was providednormalize_coords()from_qgraph() by using a
matrix intermediary for per-edge vector reorderingnrow(el) crash: qgraph’s Edgelist is a list, not
a data.framedonut_empty parameter for rendering unfilled
donut nodesfrom_qgraph() for converting qgraph objects to
cograph format, reading resolved graphAttributes for
accurate parameter extractionlayout_info guard causing errors on certain
device configurationssoplot() for grid/ggplot2-based network plotting
— full feature parity with splot() using a different
rendering backendlayout_oval() for oval/elliptical node
arrangementslayout_scale parameter to expand or contract the
network layout, with "auto" mode for node-count-based
scalingedge_start_style parameter for visually
indicating edge direction via styled start segments (dashed,
dotted)soplot() curve direction and edge defaults
diverging from splot() behaviorrescale_layout distorting oval aspect ratios by
switching to uniform scalingpar(pin) restoration error on plot device
exitsplot() — a base R graphics engine for network
visualization using polygon(), lines(), and
xspline(), providing better performance than grid-based
rendering for large networkssn_save() with
configurable DPIdonut_color API to accept 1 color (fill), 2 colors (fill +
background), or n colors (per-node)These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.