Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
7fe186f
Added net_by_cyclicality
jhollway Aug 8, 2026
df6f489
Updated GitHub Actions workflows to latest major action versions
jhollway Aug 8, 2026
57f8249
Removed the CRAN version check from `.onAttach()` making `library(net…
jhollway Aug 8, 2026
e01ce85
Added `node_in_labels()` for label propagation community detection
jhollway Aug 8, 2026
244fd4c
Added `param_cutoff` roxygen template, correctly documenting geodesic…
jhollway Aug 8, 2026
ba48feb
Added `node_x_clique()` returning which maximal cliques each node bel…
jhollway Aug 9, 2026
be50e87
Added node_x_ties(), node_x_alters(), node_x_similarity(), and net_x_…
jhollway Aug 9, 2026
05b08cb
Restructured website
jhollway Aug 9, 2026
7887403
Added `sim_rolesim()` and `sim_rege()`, recursive role similarity met…
jhollway Aug 9, 2026
53e154e
Added `net_by_compactness()` for the average closeness of all pairs o…
jhollway Aug 9, 2026
f65286c
Fixed `node_in_regular()` to compute regular equivalence
jhollway Aug 9, 2026
986c266
Added `net_by_inconsistency()` which scores how far a partition's blo…
jhollway Aug 9, 2026
36afdf9
Added `node_in_block()` for direct blockmodelling
jhollway Aug 9, 2026
4ee40e6
Updated position tutorial to use `node_in_regular()` for regular equi…
jhollway Aug 9, 2026
691c674
Added net/node_by_decay() and net/node_by_integration()
jhollway Aug 9, 2026
94419e5
Improved measures to record what they computed, so results can be int…
jhollway Aug 9, 2026
96da6f1
Added family-wide contract test sweeping every node-level centrality
jhollway Aug 9, 2026
6ce3703
Added `node_by_radiality()` as a shortcut for `node_by_integration(di…
jhollway Aug 9, 2026
051f67f
Added `decay` argument to `node_by_harmonic()`, and added `node_by_de…
jhollway Aug 9, 2026
7c72b38
Improved `node_by_closeness()` to validate `direction` via `match.arg()`
jhollway Aug 9, 2026
067d145
Fixed `node_by_reach()` counting the node itself so normalised scores…
jhollway Aug 9, 2026
7c8fc7b
Fixed how `node_by_vitality()` treats cut nodes
jhollway Aug 9, 2026
d7dbc17
Moved `node_by_posneg()` (PN centrality) to eigenvector doc group
jhollway Aug 9, 2026
c1de2ed
Fixed `node_by_degree()` to default to `alpha = 0` to match documenta…
jhollway Aug 9, 2026
438855d
Fixed `node_by_eigenvector()` discarding tie weights it had computed,…
jhollway Aug 9, 2026
7f6af70
Fixed betweenness centrality measures accepting normalisation and dir…
jhollway Aug 9, 2026
7f74c28
Renamed `scale` argument to `scaled`, the old spelling still works bu…
jhollway Aug 9, 2026
220dcc7
Gated tutorial gifs behind questions
jhollway Aug 9, 2026
78d9f4f
#major bump release
jhollway Aug 9, 2026
876dafa
test finiteness explicitly, since `Inf <= Inf` is TRUE and would othe…
jhollway Aug 9, 2026
ed8879a
Using roxygen2 v8.1 for startup speed
jhollway Aug 10, 2026
32e8063
Updated CONTRIBUTING to be clearer about documentation conventions
jhollway Aug 13, 2026
7a08368
Improved `make_*_measure()` to record what was computed so results ca…
jhollway Aug 13, 2026
383b6e3
Updated to_blocks() to to_blockmodel()
jhollway Aug 13, 2026
69b2e66
Improved consistency by consolidating every per-step discount as `decay`
jhollway Aug 14, 2026
a17a7fe
pushrelease inherits release notes from description
jhollway Aug 16, 2026
a82f38c
Added `net_by_bipartivity()` for how close a network is to being bipa…
jhollway Aug 27, 2026
f3b1886
Tightened some news sections
jhollway Aug 27, 2026
c295535
Improved argument consistency and measure reporting
jhollway Aug 27, 2026
ae4ca7f
Fixed `net_by_balance()` erroring on networks that hold signs as nega…
jhollway Aug 27, 2026
36fc1eb
Fixed `node_x_tie()` erroring on diffusion models, where nodes change…
jhollway Aug 27, 2026
a63eab8
Added `k=` to community detection functions to target a specific numb…
jhollway Aug 27, 2026
b314812
Added coreness methods for core-periphery analysis
jhollway Aug 27, 2026
5155130
Renamed `node_by_coreness()` to `node_by_core()`
jhollway Aug 27, 2026
21f69b3
Improved `node_in_core()`
jhollway Aug 27, 2026
21c2813
Updated topology tutorial with weighted, directed, and continuous cor…
jhollway Aug 27, 2026
6e20bd7
Stop README advertising old functions
jhollway Aug 27, 2026
2fd966e
Added `consensus=` to `node_in_community()` for combining partitions …
jhollway Aug 27, 2026
3b1541f
Added Louvain and consensus examples to community tutorial
jhollway Aug 27, 2026
2126ac5
Renamed coreness_richcore to coreness_rich
jhollway Aug 27, 2026
023414a
Fixed `net_by_diameter()`, `net_by_length()`, and `net_by_compactness…
jhollway Aug 27, 2026
792bfa6
Get around manynet version requirement
jhollway Aug 27, 2026
dcb31f5
Fixed signless call in test
jhollway Aug 28, 2026
3b1873b
Fixed `node_in_fluid()` and `node_in_spinglass()`
jhollway Aug 28, 2026
7242154
Fixed `net_by_independence()` erroring on multilevel networks by meas…
jhollway Aug 28, 2026
8e59fde
Improved `net_x_triad()` by adding a mixed census
jhollway Aug 28, 2026
d8e01a9
Improved `node_x_tie()` erroring on multiplex networks
jhollway Aug 28, 2026
e189d15
Updated CONTRIBUTING from current practice
jhollway Aug 28, 2026
88efcd4
Fixed various test errors for Github CI
jhollway Aug 28, 2026
773ddff
Avoided polluting test output with console output
jhollway Aug 28, 2026
97aebe3
Skip tutorial testing on CRAN
jhollway Aug 28, 2026
46249ae
Cleaned up some easy documentation
jhollway Aug 28, 2026
1cd843e
Added roxygen templates to standardise argument vocabulary
jhollway Aug 28, 2026
15782e9
Added `split_bins()`, `split_quantiles()` and `split_kmeans()`
jhollway Aug 28, 2026
4f733a5
Fixed `net_by_waves()` reporting one wave where waves are held as `time`
jhollway Aug 28, 2026
bcd9946
Avoid using new datasets for testing
jhollway Aug 28, 2026
40c7a5e
Using faster irps_books example in the tutorial instead of irps_blogs
jhollway Aug 28, 2026
f9f5176
Added `connectivity=` for whether strong or weak connectedness matters
jhollway Aug 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .Rbuildignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,4 @@ vignettes/precompile\.R
^\.positai$
^\.claude$
^CLAUDE\.md$
^Rplots\.pdf$
600 changes: 495 additions & 105 deletions .github/CONTRIBUTING.md

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions .github/workflows/prchecks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7

- uses: r-lib/actions/setup-r@v2
with:
Expand Down Expand Up @@ -54,7 +54,7 @@ jobs:
shell: Rscript {0}

- name: Save binary artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: ${{ matrix.config.asset_name }}
path: build/
Expand All @@ -78,7 +78,7 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7

- uses: r-lib/actions/setup-r@v2

Expand All @@ -97,7 +97,7 @@ jobs:
runs-on: macOS-latest

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
fetch-depth: 0

Expand Down
26 changes: 20 additions & 6 deletions .github/workflows/pushrelease.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7

- uses: r-lib/actions/setup-r@v2
with:
Expand Down Expand Up @@ -55,7 +55,7 @@ jobs:
shell: Rscript {0}

- name: Save binary artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: ${{ matrix.config.asset_name }}
path: build/
Expand All @@ -75,7 +75,7 @@ jobs:
contents: write
steps:
- name: Checkout one
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
fetch-depth: '0'
- name: Bump version and push tag
Expand All @@ -87,15 +87,15 @@ jobs:
DEFAULT_BUMP: patch
RELEASE_BRANCHES: main
- name: Checkout two
uses: actions/checkout@v4
uses: actions/checkout@v7

- name: Extract version
run: |
echo "PACKAGE_VERSION=$(grep '^Version' DESCRIPTION | sed 's/.*: *//')" >> $GITHUB_ENV
echo "PACKAGE_NAME=$(grep '^Package' DESCRIPTION | sed 's/.*: *//')" >> $GITHUB_ENV

- name: Download binaries
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8

- name: Rename binaries release
shell: bash
Expand All @@ -107,12 +107,26 @@ jobs:
echo "Renamed files"
ls netrics_*

- name: Extract release notes from NEWS.md
shell: bash
run: |
# Take the NEWS.md section for this version, else the topmost section.
awk -v ver="${{ env.PACKAGE_NAME }} ${{ env.PACKAGE_VERSION }}" '
/^# / { if (found) exit; if (substr($0, 3) == ver) { found = 1; next } }
found { print }
' NEWS.md > RELEASE_NOTES.md
if [ ! -s RELEASE_NOTES.md ]; then
awk 'NR > 1 && /^# / { exit } NR > 1 { print }' NEWS.md > RELEASE_NOTES.md
fi
cat RELEASE_NOTES.md

- name: Create Release and Upload Assets
id: create_release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.newtag.outputs.tag }}
name: Release ${{ steps.newtag.outputs.tag }}
body_path: RELEASE_NOTES.md
draft: false
prerelease: false
fail_on_unmatched_files: true
Expand All @@ -132,7 +146,7 @@ jobs:
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7

- uses: r-lib/actions/setup-r@v2

Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ docs/
working/*
/doc/
/Meta/
Rplots.pdf
tests/testthat/Rplots.pdf
.DS_Store
CRAN-SUBMISSION
Expand Down
8 changes: 4 additions & 4 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Package: netrics
Title: Many Ways to Measure and Classify Membership for Networks, Nodes, and Ties
Version: 0.4.1
Title: Many Marks, Measures, Memberships, and Motifs for Networks
Version: 1.0.0
Description: Many tools for calculating network, node, or tie
marks, measures, motifs and memberships of many different types of networks.
Marks identify structural positions, measures quantify network properties,
Expand All @@ -15,7 +15,7 @@ Encoding: UTF-8
LazyData: true
Depends:
R (>= 4.1.0),
manynet (>= 2.1.2)
manynet (>= 2.2.3)
Imports:
dplyr,
igraph (>= 2.1.0)
Expand Down Expand Up @@ -44,4 +44,4 @@ Config/Needs/website:
Config/testthat/parallel: true
Config/testthat/edition: 3
Config/testthat/start-first: tutorials_netrics, measure_net, member_nodes, measure_nodes
Config/roxygen2/version: 8.0.0
Config/roxygen2/version: 8.1.0
135 changes: 85 additions & 50 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
export(cluster_concor)
export(cluster_cosine)
export(cluster_hierarchical)
export(coreness_correlation)
export(coreness_hub)
export(coreness_rich)
export(coreness_transition)
export(k_elbow)
export(k_gap)
export(k_silhouette)
Expand All @@ -17,12 +21,16 @@ export(net_by_adhesion)
export(net_by_assortativity)
export(net_by_balance)
export(net_by_betweenness)
export(net_by_bipartivity)
export(net_by_closeness)
export(net_by_cohesion)
export(net_by_compactness)
export(net_by_components)
export(net_by_congruency)
export(net_by_connectedness)
export(net_by_core)
export(net_by_cyclicality)
export(net_by_decay)
export(net_by_degree)
export(net_by_density)
export(net_by_diameter)
Expand All @@ -35,11 +43,13 @@ export(net_by_harmonic)
export(net_by_heterophily)
export(net_by_homophily)
export(net_by_immunity)
export(net_by_inconsistency)
export(net_by_indegree)
export(net_by_independence)
export(net_by_infection_complete)
export(net_by_infection_peak)
export(net_by_infection_total)
export(net_by_integration)
export(net_by_length)
export(net_by_modularity)
export(net_by_outdegree)
Expand All @@ -64,6 +74,7 @@ export(net_x_correlation)
export(net_x_dyad)
export(net_x_hazard)
export(net_x_hierarchy)
export(net_x_homophily)
export(net_x_mixed)
export(net_x_stability)
export(net_x_tetrad)
Expand All @@ -80,7 +91,9 @@ export(node_by_brokering_activity)
export(node_by_brokering_exclusivity)
export(node_by_closeness)
export(node_by_constraint)
export(node_by_core)
export(node_by_coreness)
export(node_by_decay)
export(node_by_deg)
export(node_by_degree)
export(node_by_distance)
Expand All @@ -99,6 +112,7 @@ export(node_by_hub)
export(node_by_indegree)
export(node_by_induced)
export(node_by_information)
export(node_by_integration)
export(node_by_kcoreness)
export(node_by_leverage)
export(node_by_multidegree)
Expand All @@ -107,6 +121,7 @@ export(node_by_outdegree)
export(node_by_pagerank)
export(node_by_posneg)
export(node_by_power)
export(node_by_radiality)
export(node_by_randomwalk)
export(node_by_reach)
export(node_by_reciprocity)
Expand All @@ -119,6 +134,7 @@ export(node_by_vitality)
export(node_in_adopter)
export(node_in_automorphic)
export(node_in_betweenness)
export(node_in_block)
export(node_in_brokering)
export(node_in_community)
export(node_in_component)
Expand All @@ -128,8 +144,10 @@ export(node_in_equivalence)
export(node_in_fluid)
export(node_in_greedy)
export(node_in_infomap)
export(node_in_labels)
export(node_in_leiden)
export(node_in_louvain)
export(node_in_motif)
export(node_in_optimal)
export(node_in_partition)
export(node_in_regular)
Expand All @@ -156,13 +174,22 @@ export(node_is_pendant)
export(node_is_random)
export(node_is_recovered)
export(node_is_universal)
export(node_x_alters)
export(node_x_brokerage)
export(node_x_clique)
export(node_x_dyad)
export(node_x_exposure)
export(node_x_path)
export(node_x_similarity)
export(node_x_tetrad)
export(node_x_tie)
export(node_x_ties)
export(node_x_triad)
export(regularity_rege)
export(regularity_rolesim)
export(split_bins)
export(split_kmeans)
export(split_quantiles)
export(tie_by_betweenness)
export(tie_by_closeness)
export(tie_by_cohesion)
Expand All @@ -183,53 +210,61 @@ export(tie_is_simmelian)
export(tie_is_transitive)
export(tie_is_triangular)
export(tie_is_triplet)
importFrom(dplyr,filter)
importFrom(dplyr,group_by)
importFrom(dplyr,mutate)
importFrom(dplyr,select)
importFrom(igraph,V)
importFrom(igraph,adhesion)
importFrom(igraph,all_shortest_paths)
importFrom(igraph,alpha_centrality)
importFrom(igraph,articulation_points)
importFrom(igraph,assortativity_degree)
importFrom(igraph,cohesion)
importFrom(igraph,components)
importFrom(igraph,decompose)
importFrom(igraph,degree)
importFrom(igraph,delete_edges)
importFrom(igraph,delete_vertices)
importFrom(igraph,diameter)
importFrom(igraph,distances)
importFrom(igraph,edge_betweenness)
importFrom(igraph,edge_density)
importFrom(igraph,feedback_arc_set)
importFrom(igraph,fit_power_law)
importFrom(igraph,graph_from_incidence_matrix)
importFrom(igraph,is_bipartite)
importFrom(igraph,ivs_size)
importFrom(igraph,knn)
importFrom(igraph,largest_ivs)
importFrom(igraph,make_ego_graph)
importFrom(igraph,mean_distance)
importFrom(igraph,power_centrality)
importFrom(igraph,reciprocity)
importFrom(igraph,transitivity)
importFrom(igraph,triad_census)
importFrom(igraph,triangles)
importFrom(igraph,vcount)
importFrom(igraph,which_loop)
importFrom(igraph,which_multiple)
importFrom(igraph,which_mutual)
importFrom(manynet,as_igraph)
importFrom(manynet,is_complex)
importFrom(manynet,is_twomode)
importFrom(manynet,is_weighted)
importFrom(manynet,tie_weights)
importFrom(stats,as.dist)
importFrom(stats,coef)
importFrom(stats,complete.cases)
importFrom(stats,cor)
importFrom(stats,cutree)
importFrom(stats,hclust)
importFrom(stats,median)
importFrom(dplyr,
filter,
group_by,
mutate,
select
)
importFrom(igraph,
V,
adhesion,
all_shortest_paths,
alpha_centrality,
articulation_points,
assortativity_degree,
cohesion,
components,
decompose,
degree,
delete_edges,
delete_vertices,
diameter,
distances,
edge_betweenness,
edge_density,
feedback_arc_set,
fit_power_law,
graph_from_incidence_matrix,
is_bipartite,
ivs_size,
knn,
largest_ivs,
make_ego_graph,
mean_distance,
power_centrality,
reciprocity,
transitivity,
triad_census,
triangles,
vcount,
which_loop,
which_multiple,
which_mutual
)
importFrom(manynet,
as_igraph,
is_complex,
is_twomode,
is_weighted,
tie_weights
)
importFrom(stats,
as.dist,
coef,
complete.cases,
cor,
cutree,
hclust,
median
)
Loading